From 899037d8ebd0aadf2efc6e33c14df7e7170f60b4 Mon Sep 17 00:00:00 2001 From: Chris T Date: Tue, 28 Mar 2023 12:44:17 -0700 Subject: [PATCH 01/18] Refactor sdk so that it can be built on vercel (#283) * test * remove copy pasted code * turbo on vercel * sdk graph changes * fix turbo * commit abi * Add turbo:vercel * force update * fix turbo * remove graphclient from functions * cleanup unnecessary abi * Add required ABI * Add vercel.json * Remove *.abi.json * Add ABI * fixes * force vercel build * abi -> out * test edited abi * Add github actions check * Remove test * PR feedback * force vercel update * Update readme * fix typechain imports GitOrigin-RevId: fbc571d7c298aee6f81ba2b5dc8138ccbb4e42bf --- .github/workflows/contracts.yml | 10 + .gitignore | 20 +- .../DrillLightClient.json | 2130 +++ .../DrillTelepathyRouter.json | 2072 +++ out/LightClient.sol/LightClient.json | 11110 ++++++++++++++++ out/LightClientMock.sol/LightClientMock.json | 1471 ++ out/SourceAMB.sol/SourceAMB.json | 4347 ++++++ out/TargetAMB.sol/TargetAMB.json | 9602 +++++++++++++ out/TelepathyPubSub.sol/TelepathyPubSub.json | 1532 +++ .../TelepathyPublisher.json | 6169 +++++++++ out/TelepathyRouter.sol/TelepathyRouter.json | 4505 +++++++ .../TelepathySubscriber.json | 2939 ++++ out/TelepathyValidator.sol/IBasicHomeAMB.json | 3446 +++++ .../TelepathyValidator.json | 4013 ++++++ out/Timelock.sol/Timelock.json | 2330 ++++ package.json | 4 +- 16 files changed, 55695 insertions(+), 5 deletions(-) create mode 100644 out/DrillLightClient.sol/DrillLightClient.json create mode 100644 out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json create mode 100644 out/LightClient.sol/LightClient.json create mode 100644 out/LightClientMock.sol/LightClientMock.json create mode 100644 out/SourceAMB.sol/SourceAMB.json create mode 100644 out/TargetAMB.sol/TargetAMB.json create mode 100644 out/TelepathyPubSub.sol/TelepathyPubSub.json create mode 100644 out/TelepathyPublisher.sol/TelepathyPublisher.json create mode 100644 out/TelepathyRouter.sol/TelepathyRouter.json create mode 100644 out/TelepathySubscriber.sol/TelepathySubscriber.json create mode 100644 out/TelepathyValidator.sol/IBasicHomeAMB.json create mode 100644 out/TelepathyValidator.sol/TelepathyValidator.json create mode 100644 out/Timelock.sol/Timelock.json diff --git a/.github/workflows/contracts.yml b/.github/workflows/contracts.yml index b031b3e..cabf1c0 100644 --- a/.github/workflows/contracts.yml +++ b/.github/workflows/contracts.yml @@ -35,6 +35,16 @@ jobs: working-directory: . run: forge build --sizes --build-info + # Uses https://github.com/tj-actions/verify-changed-files action + # to get any uncommitted changes from previous step + - name: Get changes after last step + id: abi-changes + uses: tj-actions/verify-changed-files@v14 + + - name: Make sure ABI hasn't changed + if: steps.abi-changes.outputs.files_changed == 'true' + run: exit 1 + # TODO most likely stuck on unchecked external calls @ src/oracle/TelepathyOracle.sol:94 # - name: Run Slither # uses: crytic/slither-action@main diff --git a/.gitignore b/.gitignore index d7dbbd7..ef67697 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,21 @@ -out/ -abi/ broadcast/ cache/ logs/ lcov.info -*foundryScriptOutput.json \ No newline at end of file +*foundryScriptOutput.json + +out/* +out/**/*.abi.json +!out/LightClient.sol/ +!out/LightClientMock.sol/ +!out/SourceAMB.sol/ +!out/TargetAMB.sol/ +!out/DrillLightClient.sol/ +!out/DrillTelepathyRouter.sol/ +!out/Guardian.sol/ +!out/Timelock.sol/ +!out/TelepathyRouter.sol/ +!out/TelepathyPubSub.sol/ +!out/TelepathyPublisher.sol/ +!out/TelepathySubscriber.sol/ +!out/TelepathyValidator.sol/ \ No newline at end of file diff --git a/out/DrillLightClient.sol/DrillLightClient.json b/out/DrillLightClient.sol/DrillLightClient.json new file mode 100644 index 0000000..f760edc --- /dev/null +++ b/out/DrillLightClient.sol/DrillLightClient.json @@ -0,0 +1,2130 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "HeadUpdate", + "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": true, + "internalType": "uint256", + "name": "period", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "SyncCommitteeUpdate", + "type": "event" + }, + { + "inputs": [], + "name": "FINALITY_THRESHOLD", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GENESIS_TIME", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GENESIS_VALIDATORS_ROOT", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SECONDS_PER_SLOT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SLOTS_PER_PERIOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SOURCE_CHAIN_ID", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "consistent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + } + ], + "name": "emitFakeHeadUpdateEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_period", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + } + ], + "name": "emitFakeSyncCommitteeUpdateEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "executionStateRoots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "head", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "headers", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientStep", + "name": "step", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "syncCommitteeSSZ", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "syncCommitteePoseidon", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientRotate", + "name": "update", + "type": "tuple" + } + ], + "name": "rotate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientStep", + "name": "update", + "type": "tuple" + } + ], + "name": "step", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "syncCommitteePoseidons", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "timestamps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[65]", + "name": "input", + "type": "uint256[65]" + } + ], + "name": "verifyProofRotate", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[1]", + "name": "input", + "type": "uint256[1]" + } + ], + "name": "verifyProofStep", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004eb538038062004eb5833981016040819052620000459162000264565b6000608081905260a081905260c081905260e0819052610100819052610120819052808080808080806200007a8180620000ae565b50505050505050506200009c620000966200012d60201b60201c565b62000131565b620000a78162000183565b5062000296565b60008281526005602052604090205415801590620000da57506000828152600560205260409020548114155b15620000ee5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200018d62000206565b6001600160a01b038116620001f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620002038162000131565b50565b6006546001600160a01b03163314620002625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001ef565b565b6000602082840312156200027757600080fd5b81516001600160a01b03811681146200028f57600080fd5b9392505050565b60805160a05160c05160e0516101005161012051614bb3620003026000396000818161031c01526109ba0152600061022201526000818161014101526109e50152600081816101980152610dd401526000818161037c0152610df8015260006102c20152614bb36000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea264697066735822122012bf92c5d713803962f9722e65328edf46e1f5b0dc5d4bc42e4580c6d47fca3964736f6c63430008100033", + "sourceMap": "289:466:5:-:0;;;1711:29:113;;;-1:-1:-1;;1711:29:113;1736:4;1711:29;;;;;1824:23;345:118:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;386:1;2873:47:113;;;;2930:26;;;;2966:33;;;;3009;;;;3052:31;;;;3093:38;;;;386:1:5;;;;;;;3141:68:113;386:1:5;;3141:24:113;:68::i;:::-;2573:643;;;;;;;;936:32:49;955:12;:10;;;:12;;:::i;:::-;936:18;:32::i;:::-;430:26:5::2;448:7:::0;430:17:::2;:26::i;:::-;345:118:::0;289:466;;9106:393:113;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:113;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:113;9341:18;;-1:-1:-1;;9341:18:113;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;640:96:68:-;719:10;;640:96::o;2433:187:49:-;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;511:2:145;2161:73:49::1;::::0;::::1;493:21:145::0;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:145;;;633:36;686:19;;2161:73:49::1;;;;;;;;;2244:28;2263:8:::0;2244:18:::1;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;918:2:145;1414:68:49;;;900:21:145;;;937:18;;;930:30;996:34;976:18;;;969:62;1048:18;;1414:68:49;716:356:145;1414:68:49;1359:130::o;14:290:145:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:145;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:145:o;716:356::-;289:466:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea264697066735822122012bf92c5d713803962f9722e65328edf46e1f5b0dc5d4bc42e4580c6d47fca3964736f6c63430008100033", + "sourceMap": "289:466:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:41:113;;;;;;;;160:25:145;;;148:2;133:18;1170:41:113;;;;;;;;1711:29;;;;;;;;;;;;361:14:145;;354:22;336:41;;324:2;309:18;1711:29:113;196:187:145;1123:41:113;;;;;603:150:5;;;;;;:::i;:::-;;:::i;:::-;;4310:457:113;;;;;;:::i;:::-;;:::i;1918:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1831:101:49;;;:::i;26374:712:114:-;;;;;;:::i;:::-;;:::i;1217:39:113:-;;;;;;;;5817:10:145;5805:23;;;5787:42;;5775:2;5760:18;1217:39:113;5643:192:145;2218:54:113;;;;;;:::i;:::-;;;;;;;;;;;;;;2076:45;;;;;;:::i;:::-;;;;;;;;;;;;;;1201:85:49;1273:6;;1201:85;;-1:-1:-1;;;;;1273:6:49;;;5986:51:145;;5974:2;5959:18;1201:85:49;5840:203:145;1824:23:113;;;;;;1026:48;;;;;2365:57;;;;;;:::i;:::-;;;;;;;;;;;;;;3551:577;;;;;;:::i;:::-;;:::i;1262:42::-;;;;;;;;6472:6:145;6460:19;;;6442:38;;6430:2;6415:18;1262:42:113;6298:188:145;469:128:5;;;;;;:::i;:::-;;:::i;11270:699:115:-;;;;;;:::i;:::-;;:::i;1080:37:113:-;;;;;2081:198:49;;;;;;:::i;:::-;;:::i;603:150:5:-;1094:13:49;:11;:13::i;:::-;711:35:5::1;::::0;740:5;;731:7;;711:35:::1;::::0;;;::::1;603:150:::0;;:::o;4310:457:113:-;4414:11;;4378:33;4452:24;4414:11;4452;:24::i;:::-;4435:41;;4486:21;4510:48;4533:10;:24;;;4510:22;:48::i;:::-;4486:72;-1:-1:-1;4568:18:113;4589:17;4486:72;4605:1;4589:17;:::i;:::-;4568:38;;4617:27;4637:6;4617:19;:27::i;:::-;4659:9;4655:106;;;4684:66;4709:10;4721:6;:28;;;4684:24;:66::i;:::-;4368:399;;;;4310:457;:::o;1831:101:49:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;26374:712:114:-;26552:6;26570:24;;:::i;:::-;26614:33;;;;;;;;26636:4;;26614:33;;26636:4;26642;;;;26614:33;;;;26604:43;;;26667:61;;;;;;;26690:4;;:7;26667:61;;;;;;26699:4;;:7;;;26667:61;;;;;;;;;;;;;26710:4;;;;;:7;26667:61;;26719:4;:7;;;26667:61;;;;-1:-1:-1;;;26667:61:114;26657:7;;;:71;26748:33;;;;;;;26770:4;;26748:33;;26776:4;;;;26748:33;;;;26738:7;;;:43;26822:24;;26833:12;26822:24;;;;;;;;;-1:-1:-1;;26822:24:114;;;;;;;;;;;-1:-1:-1;26822:24:114;26791:55;;26861:9;26856:93;26880:12;26876:1;:16;26856:93;;;26930:5;26936:1;26930:8;;;;;;;:::i;:::-;;;;;26913:11;26925:1;26913:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;26894:3;;;;:::i;:::-;;;;26856:93;;;;26962:32;26975:11;26988:5;26962:12;:32::i;:::-;26998:1;26962:37;26958:122;;27022:4;27015:11;;;;;;26958:122;27064:5;27057:12;;;;26374:712;;;;;;;:::o;3551:577:113:-;3615:14;3632:19;3644:6;3632:11;:19::i;:::-;3685;;3615:36;;-1:-1:-1;3666:16:113;:14;:16::i;:::-;:38;3662:115;;;3720:46;;-1:-1:-1;;;3720:46:113;;8686:2:145;3720:46:113;;;8668:21:145;8725:2;8705:18;;;8698:30;8764:34;8744:18;;;8737:62;-1:-1:-1;;;8815:18:145;;;8808:34;8859:19;;3720:46:113;;;;;;;;3662:115;3814:4;;3791:6;:20;;;:27;3787:102;;;3834:44;;-1:-1:-1;;;3834:44:113;;9091:2:145;3834:44:113;;;9073:21:145;9130:2;9110:18;;;9103:30;9169:34;9149:18;;;9142:62;-1:-1:-1;;;9220:18:145;;;9213:32;9262:19;;3834:44:113;8889:398:145;3787:102:113;3903:9;3899:223;;;3928:119;3958:6;:20;;;3980:6;:26;;;4008:6;:25;;;3928:12;:119::i;:::-;3605:523;3551:577;:::o;3899:223::-;4078:33;;-1:-1:-1;;;4078:33:113;;9494:2:145;4078:33:113;;;9476:21:145;9533:2;9513:18;;;9506:30;9572:25;9552:18;;;9545:53;9615:18;;4078:33:113;9292:347:145;469:128:5;1094:13:49;:11;:13::i;:::-;566:24:5::1;::::0;584:5;;577;;566:24:::1;::::0;;;::::1;469:128:::0;;:::o;11270:699:115:-;11445:6;11463:22;;:::i;:::-;11505:31;;;;;;;;11525:4;;11505:31;;11525:4;11531;;;;11505:31;;;;11495:41;;;11556:59;;;;;;;11577:4;;:7;11556:59;;;;;;11586:4;;:7;;;11556:59;;;;;;;;;;;;;11597:4;;;;;:7;11556:59;;11606:4;:7;;;11556:59;;;;-1:-1:-1;;;11556:59:115;11546:7;;;:69;11635:31;;;;;;;11655:4;;11635:31;;11661:4;;;;11635:31;;;;11625:7;;;:41;11707:24;;11533:1;11707:24;;;;;;;;;-1:-1:-1;;11707:24:115;;;;;;11525:4;11707:24;;;;;-1:-1:-1;11707:24:115;11676:55;;11746:9;11741:93;11765:12;11761:1;:16;11741:93;;;11815:5;11821:1;11815:8;;;;;;;:::i;:::-;;;;;11798:11;11810:1;11798:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;11779:3;;;;:::i;:::-;;;;11741:93;;;;11847:30;11858:11;11871:5;11847:10;:30::i;2081:198:49:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;9846:2:145;2161:73:49::1;::::0;::::1;9828:21:145::0;9885:2;9865:18;;;9858:30;9924:34;9904:18;;;9897:62;-1:-1:-1;;;9975:18:145;;;9968:36;10021:19;;2161:73:49::1;9644:402:145::0;2161:73:49::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;10253:2:145;1414:68:49;;;10235:21:145;;;10272:18;;;10265:30;10331:34;10311:18;;;10304:62;10383:18;;1414:68:49;10051:356:145;4850:556:113;4925:4;4941:21;4965:43;4988:6;:19;;;4965:22;:43::i;:::-;5023:37;;;;:22;:37;;;;;;4941:67;;-1:-1:-1;5023:42:113;5019:286;;5081:63;;-1:-1:-1;;;5081:63:113;;10614:2:145;5081:63:113;;;10596:21:145;10653:2;10633:18;;;10626:30;10692:34;10672:18;;;10665:62;-1:-1:-1;;;10743:18:145;;;10736:51;10804:19;;5081:63:113;10412:417:145;5019:286:113;1371:2;5165:6;:20;;;:54;5161:144;;;5235:59;;-1:-1:-1;;;5235:59:113;;11036:2:145;5235:59:113;;;11018:21:145;11075:2;11055:18;;;11048:30;11114:34;11094:18;;;11087:62;-1:-1:-1;;;11165:18:145;;;11158:47;11222:19;;5235:59:113;10834:413:145;5161:144:113;5315:25;5333:6;5315:17;:25::i;:::-;-1:-1:-1;;5358:20:113;;;:41;5381:18;5358:41;-1:-1:-1;5358:41:113;4850:556::o;7603:125::-;7672:7;7698:23;7705:16;7698:4;:23;:::i;:::-;7691:30;7603:125;-1:-1:-1;;7603:125:113:o;6655:882::-;6769:12;;;;6791:25;;:::i;:::-;6869:23;;;;6827:31;6903:183;6927:2;6923:1;:6;6903:183;;;6971:32;6997:6;6971:23;:32;:::i;:::-;6950:6;6957:10;6966:1;6957:6;:10;:::i;:::-;6950:18;;;;;;;:::i;:::-;;;;:53;7043:32;7069:6;7043:23;:32;:::i;:::-;7017:58;-1:-1:-1;6931:3:113;;;;:::i;:::-;;;;6903:183;;;-1:-1:-1;7140:11:113;;:31;;;7095:34;7182:188;7206:2;7202:1;:6;7182:188;;;7246:35;7275:6;7246:26;:35;:::i;:::-;7229:6;7236;7241:1;7236:2;:6;:::i;:::-;7229:14;;;;;;;:::i;:::-;;;;:52;7324:35;7353:6;7324:26;:35;:::i;:::-;7295:64;-1:-1:-1;7210:3:113;;;;:::i;:::-;;;;7182:188;;;-1:-1:-1;7427:28:113;;;;7400:57;;:18;:57::i;:::-;7379:10;;;:79;7495:7;;7386:2;7504:7;;;7513;;;;7477:52;;7495:7;7504;7379:6;7477:17;:52::i;:::-;7469:61;;;;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:113;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:113;9341:18;;-1:-1:-1;;9341:18:113;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;2433:187:49:-;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;25166:1155:114:-;25285:7;25349:77;25285:7;25467:20;:18;:20::i;:::-;25436:51;;25525:2;:5;;;:12;25505:5;:12;25520:1;25505:16;;;;:::i;:::-;:32;25497:63;;;;-1:-1:-1;;;25497:63:114;;11961:2:145;25497:63:114;;;11943:21:145;12000:2;11980:18;;;11973:30;-1:-1:-1;;;12019:18:145;;;12012:48;12077:18;;25497:63:114;11759:342:145;25497:63:114;25653:27;;;;;;;;;25617:33;25653:27;;;;;;;;;25690:240;25714:5;:12;25710:1;:16;25690:240;;;25766:18;25755:5;25761:1;25755:8;;;;;;;;:::i;:::-;;;;;;;:29;25747:73;;;;-1:-1:-1;;;25747:73:114;;12308:2:145;25747:73:114;;;12290:21:145;12347:2;12327:18;;;12320:30;12386:33;12366:18;;;12359:61;12437:18;;25747:73:114;12106:355:145;25747:73:114;25841:78;25864:4;25870:48;25895:2;:5;;;25901:1;25905;25901:5;;;;:::i;:::-;25895:12;;;;;;;;:::i;:::-;;;;;;;25909:5;25915:1;25909:8;;;;;;;;:::i;:::-;;;;;;;25870:24;:48::i;:::-;25841:22;:78::i;:::-;25834:85;-1:-1:-1;25728:3:114;;;;:::i;:::-;;;;25690:240;;;;25946:38;25969:4;25975:2;:5;;;25981:1;25975:8;;;;;;;;:::i;:::-;;;;;;;25946:22;:38::i;:::-;25939:45;;26012:265;26056:29;26077:5;:7;;;26056:20;:29::i;:::-;26103:5;:7;;;26128:2;:8;;;26154:2;:8;;;26180:4;26202:2;:9;;;26229:5;:7;;;26254:2;:9;;;26012:26;:265::i;:::-;25994:302;;26295:1;26288:8;;;;;;;25994:302;-1:-1:-1;26313:1:114;;25166:1155;-1:-1:-1;;;;;25166:1155:114:o;7818:133:113:-;7867:7;7928:16;7894:30;7912:12;7894:15;:30;:::i;:::-;7893:51;;;;:::i;:::-;7886:58;;7818:133;:::o;8310:721::-;8463:1;8438:13;;;:7;:13;;;;;;:27;8434:170;;8485:13;;;;:7;:13;;;;;;:36;;8481:93;;8554:5;8541:18;;-1:-1:-1;;8541:18:113;;;8481:93;8310:721;;;:::o;8434:170::-;8654:1;8617:25;;;:19;:25;;;;;;:39;8613:193;;8676:25;;;;:19;:25;;;;;;:47;;8672:104;;8756:5;8743:18;;-1:-1:-1;;8743:18:113;;;8310:721;;;:::o;8613:193::-;8816:4;:11;;;8837:13;;;;:7;:13;;;;;;;;:35;;;8882:19;:25;;;;;:46;;;8938:10;:16;;;;;;8957:15;8938:34;;8987:37;8853:19;;8823:4;;8987:37;;8837:13;8987:37;8310:721;;;:::o;10084:1133:115:-;10199:7;10263:77;10199:7;10379:18;:16;:18::i;:::-;10350:47;;10435:2;:5;;;:12;10415:5;:12;10430:1;10415:16;;;;:::i;:::-;:32;10407:63;;;;-1:-1:-1;;;10407:63:115;;11961:2:145;10407:63:115;;;11943:21:145;12000:2;11980:18;;;11973:30;-1:-1:-1;;;12019:18:145;;;12012:48;12077:18;;10407:63:115;11759:342:145;10407:63:115;10561:25;;;;;;;;;10527:31;10561:25;;;;;;;;;10596:236;10620:5;:12;10616:1;:16;10596:236;;;10672:18;10661:5;10667:1;10661:8;;;;;;;;:::i;:::-;;;;;;;:29;10653:73;;;;-1:-1:-1;;;10653:73:115;;12308:2:145;10653:73:115;;;12290:21:145;12347:2;12327:18;;;12320:30;12386:33;12366:18;;;12359:61;12437:18;;10653:73:115;12106:355:145;10653:73:115;10747:74;10768:4;10774:46;10797:2;:5;;;10803:1;10807;10803:5;;;;:::i;10747:74::-;10740:81;-1:-1:-1;10634:3:115;;;;:::i;:::-;;;;10596:236;;;;10848:36;10869:4;10875:2;:5;;;10881:1;10875:8;;;;;;;;:::i;10848:36::-;10841:43;;10912:261;10954:27;10973:5;:7;;;10954:18;:27::i;:::-;10999:5;:7;;;11024:2;:8;;;11050:2;:8;;;11076:4;11098:2;:9;;;11125:5;:7;;;11150:2;:9;;;10912:24;:261::i;5509:1064:113:-;5591:22;5616:39;5635:6;:19;;;5616:18;:39::i;:::-;5591:64;;5665:23;5691:40;5710:6;:20;;;5691:18;:40::i;:::-;5665:66;;5741:23;5767:40;5786:6;:20;;;5767:18;:40::i;:::-;5741:66;;5817:21;5841:43;5864:6;:19;;;5841:22;:43::i;:::-;5894:29;5926:37;;;:22;:37;;;;;;;;;6004:45;;;;;12623:19:145;;;12658:12;;;12651:28;;;5926:37:113;;-1:-1:-1;5997:53:113;;12695:12:145;;6004:45:113;;;-1:-1:-1;;6004:45:113;;;;;;;;;;5997:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5993:57;;6064:51;6084:1;6087:6;:26;;;6071:43;;;;;;;;12623:19:145;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6071:43:113;;;;-1:-1:-1;;6071:43:113;;;;;;;;;;6064:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6060:55;;6129:40;6149:1;6152:15;6136:32;;;;;;;;12623:19:145;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6136:32:113;;;;-1:-1:-1;;6136:32:113;;;;;;;;;;6129:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6125:44;;6183:50;6203:1;6206:6;:25;;;6190:42;;;;;;;;12623:19:145;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6190:42:113;;;;-1:-1:-1;;6190:42:113;;;;;;;;;;6183:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:54;;6247:46;6267:1;6270:21;6254:38;;;;;;;;12623:19:145;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6254:38:113;;;;-1:-1:-1;;6254:38:113;;;;;;;;;;6247:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6243:50;-1:-1:-1;6303:9:113;6323:30;6243:50;6323:18;:30::i;:::-;6315:39;-1:-1:-1;6373:23:113;6395:1;-1:-1:-1;;;6373:23:113;:::i;:::-;6436:12;;;;6458:39;;;;;;;;;6368:29;;;;6458:39;;;6531:7;;6540;;;;6549;;;;6368:29;;6436:12;;6515:50;;6531:7;;6458:39;6515:15;:50::i;:::-;6507:59;;;;;;5581:992;;;;;;;;;5509:1064;:::o;315:892:109:-;373:7;567:1;492;496:66;492:70;491:77;;473:1;398;402:66;398:70;397:77;;396:173;392:177;;755:2;680:1;684:66;680:70;679:78;;660:2;585:1;589:66;585:70;584:78;;583:175;579:179;;944:2;869:1;873:66;869:70;868:78;;849:2;774:1;778:66;774:70;773:78;;772:175;768:179;;1133:2;1058:1;1062:66;1058:70;1057:78;;1038:2;963:1;-1:-1:-1;;963:70:109;962:78;;961:175;957:179;;1169:3;1164:1;:8;;1156:3;1151:1;:8;;1150:23;1146:27;;1198:1;1190:10;;1183:17;;315:892;;;:::o;7822:17338:114:-;7875:28;;:::i;:::-;7926:212;;;;;;;;7961:77;7926:212;;8052:76;7926:212;;;;;;;;7915:223;;;8160:465;;;;;;;;8213:76;8160:465;;;;;;8307:76;8160:465;;;;;;;;;;;;;;;;;;8429:77;8160:465;;8524:77;8160:465;;;;-1:-1:-1;;;8160:465:114;8149:8;;;:476;;;;8647:465;;;;;;;8700:77;8647:465;;;;;;8795:77;8647:465;;;;;;;;;;;;;8918:76;8647:465;;9012:76;8647:465;;;;-1:-1:-1;;;8647:465:114;8635:9;;;:477;9134:463;;;;;;;9187:76;9134:463;;;;;;9281:77;9134:463;;;;;;;;;;;;;9404:75;9134:463;;9497:76;9134:463;;;;-1:-1:-1;;;9134:463:114;9122:9;;;:475;9615:31;;9643:2;9615:31;;;;;;;;;;9643:2;9615:31;;;-1:-1:-1;;;;;;;;;;;;;;;;;9615:31:114;;;;;;;;;;;;-1:-1:-1;;9607:5:114;;;:39;;;9668:211;;;;;;;;;9703:76;9668:211;;9793:76;9668:211;;;;9657:5;;:8;;-1:-1:-1;;9657:8:114;;;;:::i;:::-;;;;;;:222;;;;9901:213;;;;;;;;9936:77;9901:213;;;;10027:77;9901:213;;;9890:2;:5;;;9896:1;9890:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10136:213;;;;;;;;10171:77;10136:213;;;;10262:77;10136:213;;;10125:2;:5;;;10131:1;10125:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10371:210;;;;;;;;10406:75;10371:210;;;;10495:76;10371:210;;;10360:2;:5;;;10366:1;10360:8;;;;;;;;:::i;:::-;;;;;;:221;;;;10603:212;;;;;;;;10638:77;10603:212;;;;10729:76;10603:212;;;10592:2;:5;;;10598:1;10592:8;;;;;;;;:::i;:::-;;;;;;:223;;;;10837:211;;;;;;;;10872:77;10837:211;;;;10963:75;10837:211;;;10826:2;:5;;;10832:1;10826:8;;;;;;;;:::i;:::-;;;;;;:222;;;;11070:213;;;;;;;;11105:77;11070:213;;;;11196:77;11070:213;;;11059:2;:5;;;11065:1;11059:8;;;;;;;;:::i;:::-;;;;;;:224;;;;11305:212;;;;;;;;11340:77;11305:212;;;;11431:76;11305:212;;;11294:2;:5;;;11300:1;11294:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11539:212;;;;;;;;11574:77;11539:212;;;;11665:76;11539:212;;;11528:2;:5;;;11534:1;11528:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11773:211;;;;;;;;11808:76;11773:211;;;;11898:76;11773:211;;;11762:2;:5;;;11768:1;11762:8;;;;;;;;:::i;:::-;;;;;;:222;;;;12007:212;;;;;;;;12042:77;12007:212;;;;12133:76;12007:212;;;11995:2;:5;;;12001:2;11995:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12242:213;;;;;;;;12277:77;12242:213;;;;12368:77;12242:213;;;12230:2;:5;;;12236:2;12230:9;;;;;;;;:::i;:::-;;;;;;:225;;;;12478:211;;;;;;;;12513:76;12478:211;;;;12603:76;12478:211;;;12466:2;:5;;;12472:2;12466:9;;;;;;;;:::i;:::-;;;;;;:223;;;;12712:212;;;;;;;;12747:76;12712:212;;;;12837:77;12712:212;;;12700:2;:5;;;12706:2;12700:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12947:211;;;;;;;;12982:76;12947:211;;;;13072:76;12947:211;;;12935:2;:5;;;12941:2;12935:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13181:213;;;;;;;;13216:77;13181:213;;;;13307:77;13181:213;;;13169:2;:5;;;13175:2;13169:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13417:213;;;;;;;;13452:77;13417:213;;;;13543:77;13417:213;;;13405:2;:5;;;13411:2;13405:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13653:211;;;;;;;;13688:76;13653:211;;;;13778:76;13653:211;;;13641:2;:5;;;13647:2;13641:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13887:212;;;;;;;;13922:76;13887:212;;;;14012:77;13887:212;;;13875:2;:5;;;13881:2;13875:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14122:212;;;;;;;;14157:77;14122:212;;;;14248:76;14122:212;;;14110:2;:5;;;14116:2;14110:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14357:211;;;;;;;;14392:77;14357:211;;;;14483:75;14357:211;;;14345:2;:5;;;14351:2;14345:9;;;;;;;;:::i;:::-;;;;;;:223;;;;14591:213;;;;;;;;14626:77;14591:213;;;;14717:77;14591:213;;;14579:2;:5;;;14585:2;14579:9;;;;;;;;:::i;:::-;;;;;;:225;;;;14827:213;;;;;;;;14862:77;14827:213;;;;14953:77;14827:213;;;14815:2;:5;;;14821:2;14815:9;;;;;;;;:::i;:::-;;;;;;:225;;;;15063:210;;;;;;;;15098:75;15063:210;;;;15187:76;15063:210;;;15051:2;:5;;;15057:2;15051:9;;;;;;;;:::i;:::-;;;;;;:222;;;;15296:212;;;;;;;;15331:77;15296:212;;;;15422:76;15296:212;;;15284:2;:5;;;15290:2;15284:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15531:212;;;;;;;;15566:76;15531:212;;;;15656:77;15531:212;;;15519:2;:5;;;15525:2;15519:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15766:212;;;;;;;;15801:77;15766:212;;;;15892:76;15766:212;;;15754:2;:5;;;15760:2;15754:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16001:213;;;;;;;;16036:77;16001:213;;;;16127:77;16001:213;;;15989:2;:5;;;15995:2;15989:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16237:213;;;;;;;;16272:77;16237:213;;;;16363:77;16237:213;;;16225:2;:5;;;16231:2;16225:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16473:213;;;;;;;;16508:77;16473:213;;;;16599:77;16473:213;;;16461:2;:5;;;16467:2;16461:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16709:212;;;;;;;;16744:76;16709:212;;;;16834:77;16709:212;;;16697:2;:5;;;16703:2;16697:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16944:213;;;;;;;;16979:77;16944:213;;;;17070:77;16944:213;;;16932:2;:5;;;16938:2;16932:9;;;;;;;;:::i;:::-;;;;;;:225;;;;17180:211;;;;;;;;17215:76;17180:211;;;;17305:76;17180:211;;;17168:2;:5;;;17174:2;17168:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17414:212;;;;;;;;17449:77;17414:212;;;;17540:76;17414:212;;;17402:2;:5;;;17408:2;17402:9;;;;;;;;:::i;:::-;;;;;;:224;;;;17649:211;;;;;;;;17684:76;17649:211;;;;17774:76;17649:211;;;17637:2;:5;;;17643:2;17637:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17883:212;;;;;;;;17918:77;17883:212;;;;18009:76;17883:212;;;17871:2;:5;;;17877:2;17871:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18118:212;;;;;;;;18153:76;18118:212;;;;18243:77;18118:212;;;18106:2;:5;;;18112:2;18106:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18353:213;;;;;;;;18388:77;18353:213;;;;18479:77;18353:213;;;18341:2;:5;;;18347:2;18341:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18589:213;;;;;;;;18624:77;18589:213;;;;18715:77;18589:213;;;18577:2;:5;;;18583:2;18577:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18825:213;;;;;;;;18860:77;18825:213;;;;18951:77;18825:213;;;18813:2;:5;;;18819:2;18813:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19061:211;;;;;;;;19096:77;19061:211;;;;19187:75;19061:211;;;19049:2;:5;;;19055:2;19049:9;;;;;;;;:::i;:::-;;;;;;:223;;;;19295:213;;;;;;;;19330:77;19295:213;;;;19421:77;19295:213;;;19283:2;:5;;;19289:2;19283:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19531:213;;;;;;;;19566:77;19531:213;;;;19657:77;19531:213;;;19519:2;:5;;;19525:2;19519:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19767:212;;;;;;;;19802:76;19767:212;;;;19892:77;19767:212;;;19755:2;:5;;;19761:2;19755:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20002:211;;;;;;;;20037:76;20002:211;;;;20127:76;20002:211;;;19990:2;:5;;;19996:2;19990:9;;;;;;;;:::i;:::-;;;;;;:223;;;;20236:212;;;;;;;;20271:77;20236:212;;;;20362:76;20236:212;;;20224:2;:5;;;20230:2;20224:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20471:212;;;;;;;;20506:77;20471:212;;;;20597:76;20471:212;;;20459:2;:5;;;20465:2;20459:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20706:213;;;;;;;;20741:77;20706:213;;;;20832:77;20706:213;;;20694:2;:5;;;20700:2;20694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;20942:212;;;;;;;;20977:77;20942:212;;;;21068:76;20942:212;;;20930:2;:5;;;20936:2;20930:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21177:212;;;;;;;;21212:76;21177:212;;;;21302:77;21177:212;;;21165:2;:5;;;21171:2;21165:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21412:213;;;;;;;;21447:77;21412:213;;;;21538:77;21412:213;;;21400:2;:5;;;21406:2;21400:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21648:213;;;;;;;;21683:77;21648:213;;;;21774:77;21648:213;;;21636:2;:5;;;21642:2;21636:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21884:211;;;;;;;;21919:76;21884:211;;;;22009:76;21884:211;;;21872:2;:5;;;21878:2;21872:9;;;;;;;;:::i;:::-;;;;;;:223;;;;22118:213;;;;;;;;22153:77;22118:213;;;;22244:77;22118:213;;;22106:2;:5;;;22112:2;22106:9;;;;;;;;:::i;:::-;;;;;;:225;;;;22354:212;;;;;;;;22389:76;22354:212;;;;22479:77;22354:212;;;22342:2;:5;;;22348:2;22342:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22589:212;;;;;;;;22624:76;22589:212;;;;22714:77;22589:212;;;22577:2;:5;;;22583:2;22577:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22824:212;;;;;;;;22859:76;22824:212;;;;22949:77;22824:212;;;22812:2;:5;;;22818:2;22812:9;;;;;;;;:::i;:::-;;;;;;:224;;;;23059:211;;;;;;;;23094:77;23059:211;;;;23185:75;23059:211;;;23047:2;:5;;;23053:2;23047:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23293:213;;;;;;;;23328:77;23293:213;;;;23419:77;23293:213;;;23281:2;:5;;;23287:2;23281:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23529:213;;;;;;;;23564:77;23529:213;;;;23655:77;23529:213;;;23517:2;:5;;;23523:2;23517:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23765:211;;;;;;;;23800:76;23765:211;;;;23890:76;23765:211;;;23753:2;:5;;;23759:2;23753:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23999:212;;;;;;;;24034:76;23999:212;;;;24124:77;23999:212;;;23987:2;:5;;;23993:2;23987:9;;;;;;;;:::i;:::-;;;;;;:224;;;;24234:213;;;;;;;;24269:77;24234:213;;;;24360:77;24234:213;;;24222:2;:5;;;24228:2;24222:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24470:213;;;;;;;;24505:77;24470:213;;;;24596:77;24470:213;;;24458:2;:5;;;24464:2;24458:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24706:213;;;;;;;;24741:77;24706:213;;;;24832:77;24706:213;;;24694:2;:5;;;24700:2;24694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24942:211;;;;;;;;24977:76;24942:211;;;;25067:76;24942:211;;;24930:2;:5;;;24936:2;24930:9;;;;;;;;:::i;:::-;;;;;;:223;;;;7822:17338;:::o;3929:557::-;-1:-1:-1;;;;;;;;;;;;;;;;;4029:23:114;;:::i;:::-;4073:3;;4062:14;;:8;4097:3;;;;4086:8;;;:14;4110:8;;;:12;;;-1:-1:-1;4300:4:114;4297:1;4291:4;4062:14;4281:1;4274:4;4267:5;4263:16;4252:53;4241:64;-1:-1:-1;4241:64:114;;4375:47;4402:20;4411:9;4375:47;;4449:7;4441:38;;;;-1:-1:-1;;;4441:38:114;;13526:2:145;4441:38:114;;;13508:21:145;13565:2;13545:18;;;13538:30;-1:-1:-1;;;13584:18:145;;;13577:48;13642:18;;4441:38:114;13324:342:145;4441:38:114;4019:467;;3929:557;;;;:::o;3151:622::-;-1:-1:-1;;;;;;;;;;;;;;;;;3286:23:114;;:::i;:::-;3330:4;;3319:15;;:8;3355:4;;;;3344:8;;;:15;3380:4;;3369:8;;;:15;3405:4;;;3394:8;;;;:15;;;;-1:-1:-1;;3584:1:114;3578:4;3319:15;3568:1;3561:4;3554:5;3550:16;3539:53;3528:64;-1:-1:-1;3528:64:114;;3662:47;3689:20;3698:9;3662:47;;3736:7;3728:38;;;;-1:-1:-1;;;3728:38:114;;13873:2:145;3728:38:114;;;13855:21:145;13912:2;13892:18;;;13885:30;-1:-1:-1;;;13931:18:145;;;13924:48;13989:18;;3728:38:114;13671:342:145;2742:357:114;-1:-1:-1;;;;;;;;;;;;;;;;;2982:3:114;;2891:77;;2982:8;:20;;;;-1:-1:-1;2994:3:114;;;;:8;2982:20;2978:71;;;-1:-1:-1;;3025:13:114;;;;;;;;;-1:-1:-1;3025:13:114;;;;;;;;2742:357;-1:-1:-1;2742:357:114:o;2978:71::-;3065:27;;;;;;;;3073:1;:3;;;3065:27;;;;3089:1;3083;:3;;;:7;;;;:::i;:::-;3078:13;;:1;:13;:::i;:::-;3065:27;;3058:34;2742:357;-1:-1:-1;;;2742:357:114:o;6832:568::-;7137:16;;;7151:1;7137:16;;;;;;;;;7099:4;;;;7137:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7137:16:114;;;;;;;;;;;;-1:-1:-1;;7185:16:114;;;7199:1;7185:16;;;;;;;;;7115:38;;-1:-1:-1;7163:19:114;;7185:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7163:38;;7219:2;7211;7214:1;7211:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7239:2;7231;7234:1;7231:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7259:2;7251;7254:1;7251:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7279:2;7271;7274:1;7271:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7299:2;7291;7294:1;7291:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7319:2;7311;7314:1;7311:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7339:2;7331;7334:1;7331:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7359:2;7351;7354:1;7351:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7378:15;7386:2;7390;7378:7;:15::i;:::-;7371:22;6832:568;-1:-1:-1;;;;;;;;;;;6832:568:114:o;7796:2282:115:-;7847:26;;:::i;:::-;7896:210;;;;;;;;7929:77;7896:210;;8020:76;7896:210;;;;;;;;7885:221;;;8128:463;;;;;;;;8179:76;8128:463;;;;;;8273:76;8128:463;;;;;;;;;;;;;;;;;;8395:77;8128:463;;8490:77;8128:463;;;;-1:-1:-1;;;8128:463:115;8117:8;;;:474;;;;8613:463;;;;;;;8664:77;8613:463;;;;;;8759:77;8613:463;;;;;;;;;;;;;8882:76;8613:463;;8976:76;8613:463;;;;-1:-1:-1;;;8613:463:115;8601:9;;;:475;9098:462;;;;;;;9149:76;9098:462;;;;;;9243:77;9098:462;;;;;;;;;;;;;9366:76;9098:462;;9460:76;9098:462;;;;-1:-1:-1;;;9098:462:115;9086:9;;;:474;9578:28;;9604:1;9578:28;;;;;;;;;9604:1;9578:28;;;-1:-1:-1;;;;;;;;;;;;;;;;;9578:28:115;;;;;;;;;;;;-1:-1:-1;;9570:5:115;;;:36;;;9628:210;;;;;;;;;9661:77;9628:210;;9752:76;9628:210;;;;9617:5;;:8;;-1:-1:-1;;9617:8:115;;;;:::i;:::-;;;;;;:221;;;;9860:211;;;;;;;;9893:77;9860:211;;;;9984:77;9860:211;;;9849:2;:5;;;9855:1;9849:8;;;;;;;;:::i;6830:568::-;7135:16;;;7149:1;7135:16;;;;;;;;;7097:4;;;;7135:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7135:16:115;;;;;;;;;;;;-1:-1:-1;;7183:16:115;;;7197:1;7183:16;;;;;;;;;7113:38;;-1:-1:-1;7161:19:115;;7183:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7161:38;;7217:2;7209;7212:1;7209:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7237:2;7229;7232:1;7229:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7257:2;7249;7252:1;7249:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7277:2;7269;7272:1;7269:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7297:2;7289;7292:1;7289:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7317:2;7309;7312:1;7309:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7337:2;7329;7332:1;7329:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7357:2;7349;7352:1;7349:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7376:15;7384:2;7388;7376:7;:15::i;4698:1073:114:-;4780:4;4817:2;:9;4804:2;:9;:22;4796:57;;;;-1:-1:-1;;;4796:57:114;;14220:2:145;4796:57:114;;;14202:21:145;14259:2;14239:18;;;14232:30;-1:-1:-1;;;14278:18:145;;;14271:52;14340:18;;4796:57:114;14018:346:145;4796:57:114;4882:9;;4863:16;4921:12;4882:9;4932:1;4921:12;:::i;:::-;4901:32;;4943:22;4979:9;4968:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4968:21:114;;4943:46;;5004:9;4999:302;5023:8;5019:1;:12;4999:302;;;5071:2;5074:1;5071:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5052:5;5058:1;5062;5058:5;;;;:::i;:::-;:9;;5066:1;5058:9;:::i;:::-;5052:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5111:2;5114:1;5111:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5092:5;5098:1;5102;5098:5;;;;:::i;:::-;:9;;5106:1;5098:9;:::i;:::-;5092:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5151:2;5154:1;5151:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5132:5;5138;:1;5142;5138:5;:::i;:::-;:9;;5146:1;5138:9;:::i;:::-;5132:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5194:2;5197:1;5194:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5175:5;5181;:1;5185;5181:5;:::i;:::-;:9;;5189:1;5181:9;:::i;:::-;5175:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5237:2;5240:1;5237:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5245:1;5237:10;;;;;;;:::i;:::-;;;;;5218:5;5224;:1;5228;5224:5;:::i;:::-;:9;;5232:1;5224:9;:::i;:::-;5218:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5280:2;5283:1;5280:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5288:1;5280:10;;;;;;;:::i;:::-;;;;;5261:5;5267;:1;5271;5267:5;:::i;:::-;:9;;5275:1;5267:9;:::i;:::-;5261:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5033:3;;;;:::i;:::-;;;;4999:302;;;;5310:21;;:::i;:::-;5341:12;5554:4;5549:3;5542:4;5531:9;5527:20;5520:4;5513:5;5509:16;5506:1;5499:4;5492:5;5488:16;5477:82;5450:109;-1:-1:-1;5450:109:114;;5629:47;5656:20;5665:9;5629:47;;5703:7;5695:41;;;;-1:-1:-1;;;5695:41:114;;14744:2:145;5695:41:114;;;14726:21:145;14783:2;14763:18;;;14756:30;-1:-1:-1;;;14802:18:145;;;14795:51;14863:18;;5695:41:114;14542:345:145;5695:41:114;-1:-1:-1;5753:6:114;:11;;;;-1:-1:-1;;;;;;4698:1073:114:o;4696::115:-;4778:4;4815:2;:9;4802:2;:9;:22;4794:57;;;;-1:-1:-1;;;4794:57:115;;14220:2:145;4794:57:115;;;14202:21:145;14259:2;14239:18;;;14232:30;-1:-1:-1;;;14278:18:145;;;14271:52;14340:18;;4794:57:115;14018:346:145;4794:57:115;4880:9;;4861:16;4919:12;4880:9;4930:1;4919:12;:::i;:::-;4899:32;;4941:22;4977:9;4966:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4966:21:115;;4941:46;;5002:9;4997:302;5021:8;5017:1;:12;4997:302;;;5069:2;5072:1;5069:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5050:5;5056:1;5060;5056:5;;;;:::i;:::-;:9;;5064:1;5056:9;:::i;:::-;5050:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5109:2;5112:1;5109:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5090:5;5096:1;5100;5096:5;;;;:::i;:::-;:9;;5104:1;5096:9;:::i;:::-;5090:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5149:2;5152:1;5149:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5130:5;5136;:1;5140;5136:5;:::i;:::-;:9;;5144:1;5136:9;:::i;:::-;5130:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5192:2;5195:1;5192:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5173:5;5179;:1;5183;5179:5;:::i;:::-;:9;;5187:1;5179:9;:::i;:::-;5173:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5235:2;5238:1;5235:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5243:1;5235:10;;;;;;;:::i;:::-;;;;;5216:5;5222;:1;5226;5222:5;:::i;:::-;:9;;5230:1;5222:9;:::i;:::-;5216:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5278:2;5281:1;5278:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5286:1;5278:10;;;;;;;:::i;:::-;;;;;5259:5;5265;:1;5269;5265:5;:::i;:::-;:9;;5273:1;5265:9;:::i;:::-;5259:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5031:3;;;;:::i;:::-;;;;4997:302;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;388:248:145:-;456:6;464;517:2;505:9;496:7;492:23;488:32;485:52;;;533:1;530;523:12;485:52;-1:-1:-1;;556:23:145;;;626:2;611:18;;;598:32;;-1:-1:-1;388:248:145:o;641:127::-;702:10;697:3;693:20;690:1;683:31;733:4;730:1;723:15;757:4;754:1;747:15;773:246;840:2;834:9;;;870:15;;915:18;900:34;;936:22;;;897:62;894:88;;;962:18;;:::i;:::-;998:2;991:22;773:246;:::o;1024:479::-;1074:5;1127:3;1120:4;1112:6;1108:17;1104:27;1094:55;;1145:1;1142;1135:12;1094:55;1169:17;;:::i;:::-;1208:3;1246:2;1238:6;1234:15;1272:3;1264:6;1261:15;1258:35;;;1289:1;1286;1279:12;1258:35;1313:6;1328:146;1344:6;1339:3;1336:15;1328:146;;;1412:17;;1400:30;;1459:4;1450:14;;;;1361;1328:146;;;-1:-1:-1;1492:5:145;;1024:479;-1:-1:-1;;;;;1024:479:145:o;1508:501::-;1564:5;1617:3;1610:4;1602:6;1598:17;1594:27;1584:55;;1635:1;1632;1625:12;1584:55;1659:17;;:::i;:::-;1698:3;1736;1728:6;1724:16;1763:3;1755:6;1752:15;1749:35;;;1780:1;1777;1770:12;1749:35;1804:6;1819:161;1835:6;1830:3;1827:15;1819:161;;;1901:34;1931:3;1926;1901:34;:::i;:::-;1889:47;;1965:4;1956:14;;;;1861:2;1852:12;1819:161;;2014:605;2073:5;2121:6;2109:9;2104:3;2100:19;2096:32;2093:52;;;2141:1;2138;2131:12;2093:52;2174:2;2168:9;2216:4;2208:6;2204:17;2287:6;2275:10;2272:22;2251:18;2239:10;2236:34;2233:62;2230:88;;;2298:18;;:::i;:::-;2334:2;2327:22;2367:6;-1:-1:-1;2367:6:145;2397:40;2433:3;2422:9;2397:40;:::i;:::-;2389:6;2382:56;2473:55;2524:3;2519:2;2508:9;2504:18;2473:55;:::i;:::-;2466:4;2458:6;2454:17;2447:82;2562:50;2608:3;2602;2591:9;2587:19;2562:50;:::i;:::-;2557:2;2549:6;2545:15;2538:75;;2014:605;;;;:::o;2624:773::-;2686:5;2734:6;2722:9;2717:3;2713:19;2709:32;2706:52;;;2754:1;2751;2744:12;2706:52;2787:2;2781:9;2829:4;2821:6;2817:17;2900:6;2888:10;2885:22;2864:18;2852:10;2849:34;2846:62;2843:88;;;2911:18;;:::i;:::-;2951:10;2947:2;2940:22;;2980:6;2971:15;;3023:9;3010:23;3002:6;2995:39;3095:2;3084:9;3080:18;3067:32;3062:2;3054:6;3050:15;3043:57;3161:2;3150:9;3146:18;3133:32;3128:2;3120:6;3116:15;3109:57;3227:2;3216:9;3212:18;3199:32;3194:2;3186:6;3182:15;3175:57;3294:3;3283:9;3279:19;3266:33;3260:3;3252:6;3248:16;3241:59;3334:56;3386:3;3380;3369:9;3365:19;3334:56;:::i;:::-;3328:3;3320:6;3316:16;3309:82;;2624:773;;;;:::o;3402:714::-;3497:6;3550:3;3538:9;3529:7;3525:23;3521:33;3518:53;;;3567:1;3564;3557:12;3518:53;3600:2;3594:9;3642:4;3634:6;3630:17;3713:6;3701:10;3698:22;3677:18;3665:10;3662:34;3659:62;3656:88;;;3724:18;;:::i;:::-;3760:2;3753:22;3799:53;3844:7;3833:9;3799:53;:::i;:::-;3791:6;3784:69;3916:3;3905:9;3901:19;3888:33;3881:4;3873:6;3869:17;3862:60;3983:3;3972:9;3968:19;3955:33;3950:2;3942:6;3938:15;3931:58;4024:60;4076:7;4070:3;4059:9;4055:19;4024:60;:::i;:::-;4017:4;4005:17;;3998:87;4009:6;3402:714;-1:-1:-1;;;3402:714:145:o;4121:180::-;4180:6;4233:2;4221:9;4212:7;4208:23;4204:32;4201:52;;;4249:1;4246;4239:12;4201:52;-1:-1:-1;4272:23:145;;4121:180;-1:-1:-1;4121:180:145:o;4488:1150::-;4690:6;4698;4706;4714;4745:4;4790:2;4778:9;4769:7;4765:23;4761:32;4758:52;;;4806:1;4803;4796:12;4758:52;4829:44;4865:7;4854:9;4829:44;:::i;:::-;4819:54;;4892:59;4943:7;4938:2;4927:9;4923:18;4892:59;:::i;:::-;4882:69;;4970:54;5016:7;5010:3;4999:9;4995:19;4970:54;:::i;:::-;4960:64;;5068:7;5062:3;5051:9;5047:19;5043:33;5033:61;;5090:1;5087;5080:12;5033:61;5123:2;5117:9;5165:4;5157:6;5153:17;5236:6;5224:10;5221:22;5200:18;5188:10;5185:34;5182:62;5179:88;;;5247:18;;:::i;:::-;5283:2;5276:22;5347:18;;;;5318:6;5377:19;;;5374:39;;;5409:1;5406;5399:12;5374:39;5448:3;5437:9;5433:19;5461:146;5477:6;5472:3;5469:15;5461:146;;;5545:17;;5533:30;;5592:4;5583:14;;;;5494;5461:146;;;5465:3;;5626:6;5616:16;;;;4488:1150;;;;;;;:::o;6048:245::-;6141:6;6194:3;6182:9;6173:7;6169:23;6165:33;6162:53;;;6211:1;6208;6201:12;6162:53;6234;6279:7;6268:9;6234:53;:::i;:::-;6224:63;6048:245;-1:-1:-1;;;6048:245:145:o;6491:1163::-;6692:6;6700;6708;6716;6747:3;6791:2;6779:9;6770:7;6766:23;6762:32;6759:52;;;6807:1;6804;6797:12;6759:52;6830:44;6866:7;6855:9;6830:44;:::i;:::-;6820:54;;6893:59;6944:7;6939:2;6928:9;6924:18;6893:59;:::i;:::-;6883:69;;6971:54;7017:7;7011:3;7000:9;6996:19;6971:54;:::i;:::-;6961:64;;7069:7;7063:3;7052:9;7048:19;7044:33;7034:61;;7091:1;7088;7081:12;7034:61;7124:2;7118:9;7146:2;7187;7179:6;7175:15;7256:6;7244:10;7241:22;7220:18;7208:10;7205:34;7202:62;7199:88;;;7267:18;;:::i;:::-;7303:2;7296:22;7367:18;;;;7338:6;7397:19;;;7394:39;;;7429:1;7426;7419:12;7394:39;7468:3;7457:9;7453:19;7481:142;7497:6;7492:3;7489:15;7481:142;;;7563:17;;7551:30;;7601:12;;;;7514;;7481:142;;;-1:-1:-1;6491:1163:145;;;;-1:-1:-1;6491:1163:145;;-1:-1:-1;7642:6:145;-1:-1:-1;;;;6491:1163:145:o;7659:286::-;7718:6;7771:2;7759:9;7750:7;7746:23;7742:32;7739:52;;;7787:1;7784;7777:12;7739:52;7813:23;;-1:-1:-1;;;;;7865:31:145;;7855:42;;7845:70;;7911:1;7908;7901:12;7950:127;8011:10;8006:3;8002:20;7999:1;7992:31;8042:4;8039:1;8032:15;8066:4;8063:1;8056:15;8082:125;8147:9;;;8168:10;;;8165:36;;;8181:18;;:::i;8212:127::-;8273:10;8268:3;8264:20;8261:1;8254:31;8304:4;8301:1;8294:15;8328:4;8325:1;8318:15;8344:135;8383:3;8404:17;;;8401:43;;8424:18;;:::i;:::-;-1:-1:-1;8471:1:145;8460:13;;8344:135::o;11252:127::-;11313:10;11308:3;11304:20;11301:1;11294:31;11344:4;11341:1;11334:15;11368:4;11365:1;11358:15;11384:120;11424:1;11450;11440:35;;11455:18;;:::i;:::-;-1:-1:-1;11489:9:145;;11384:120::o;11509:112::-;11541:1;11567;11557:35;;11572:18;;:::i;:::-;-1:-1:-1;11606:9:145;;11509:112::o;11626:128::-;11693:9;;;11714:11;;;11711:37;;;11728:18;;:::i;12718:412::-;12847:3;12885:6;12879:13;12910:1;12920:129;12934:6;12931:1;12928:13;12920:129;;;13032:4;13016:14;;;13012:25;;13006:32;12993:11;;;12986:53;12949:12;12920:129;;;-1:-1:-1;13104:1:145;13068:16;;13093:13;;;-1:-1:-1;13068:16:145;12718:412;-1:-1:-1;12718:412:145:o;13135:184::-;13205:6;13258:2;13246:9;13237:7;13233:23;13229:32;13226:52;;;13274:1;13271;13264:12;13226:52;-1:-1:-1;13297:16:145;;13135:184;-1:-1:-1;13135:184:145:o;14369:168::-;14409:7;14475:1;14471;14467:6;14463:14;14460:1;14457:21;14452:1;14445:9;14438:17;14434:45;14431:71;;;14482:18;;:::i;:::-;-1:-1:-1;14522:9:145;;14369:168::o", + "linkReferences": {}, + "immutableReferences": { + "44324": [ + { + "start": 706, + "length": 32 + } + ], + "44326": [ + { + "start": 892, + "length": 32 + }, + { + "start": 3576, + "length": 32 + } + ], + "44328": [ + { + "start": 408, + "length": 32 + }, + { + "start": 3540, + "length": 32 + } + ], + "44330": [ + { + "start": 321, + "length": 32 + }, + { + "start": 2533, + "length": 32 + } + ], + "44332": [ + { + "start": 546, + "length": 32 + } + ], + "44334": [ + { + "start": 796, + "length": 32 + }, + { + "start": 2490, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "FINALITY_THRESHOLD()": "da4b05e7", + "GENESIS_TIME()": "f2882461", + "GENESIS_VALIDATORS_ROOT()": "a8769acb", + "SECONDS_PER_SLOT()": "304b9071", + "SLOTS_PER_PERIOD()": "2073ee70", + "SOURCE_CHAIN_ID()": "74be2150", + "consistent()": "2bcccca5", + "emitFakeHeadUpdateEvent(uint256,bytes32)": "e209e863", + "emitFakeSyncCommitteeUpdateEvent(uint256,bytes32)": "474e04de", + "executionStateRoots(uint256)": "7623ee29", + "head()": "8f7dcfa3", + "headers(uint256)": "56f90d79", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": "4b4e4dff", + "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": "cb970952", + "syncCommitteePoseidons(uint256)": "b34711ab", + "timestamps(uint256)": "8bc33af3", + "transferOwnership(address)": "f2fde38b", + "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": "7227d785", + "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": "e5b708fe" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_slot\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeHeadUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeSyncCommitteeUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"DrillLightClient\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillLightClient.sol\":\"DrillLightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillLightClient.sol\":{\"keccak256\":\"0x858baa5e6eadc452f96414ffdab698a5901c22d9153e36cdbb849dd9acf68cd0\",\"urls\":[\"bzz-raw://e3a1bc6eff225e20dc011129ca8edb5f46802f0f3b7610e6180f8b6f053c8823\",\"dweb:/ipfs/QmYAVhKMcgk1MsWyC9qRJuf9JLjUytSQQBcVGZoqL1TqAw\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "HeadUpdate", + "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": "uint256", + "name": "period", + "type": "uint256", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "SyncCommitteeUpdate", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "FINALITY_THRESHOLD", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "GENESIS_TIME", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "GENESIS_VALIDATORS_ROOT", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "SECONDS_PER_SLOT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "SLOTS_PER_PERIOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "SOURCE_CHAIN_ID", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "consistent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "emitFakeHeadUpdateEvent" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_period", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "emitFakeSyncCommitteeUpdateEvent" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "executionStateRoots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "head", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "headers", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "renounceOwnership" + }, + { + "inputs": [ + { + "internalType": "struct LightClientRotate", + "name": "update", + "type": "tuple", + "components": [ + { + "internalType": "struct LightClientStep", + "name": "step", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ] + } + ] + }, + { + "internalType": "bytes32", + "name": "syncCommitteeSSZ", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "syncCommitteePoseidon", + "type": "bytes32" + }, + { + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "rotate" + }, + { + "inputs": [ + { + "internalType": "struct LightClientStep", + "name": "update", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "step" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "syncCommitteePoseidons", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "timestamps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferOwnership" + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[65]", + "name": "input", + "type": "uint256[65]" + } + ], + "stateMutability": "view", + "type": "function", + "name": "verifyProofRotate", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[1]", + "name": "input", + "type": "uint256[1]" + } + ], + "stateMutability": "view", + "type": "function", + "name": "verifyProofStep", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "owner()": { + "details": "Returns the address of the current owner." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { + "details": "A commitment to the the next sync committeee is signed by the current sync committee." + }, + "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { + "details": "The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof" + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + }, + "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": { + "returns": { + "r": " bool true if proof is valid" + } + }, + "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": { + "returns": { + "r": " bool true if proof is valid" + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "consistent()": { + "notice": "Whether the light client has had conflicting variables for the same slot." + }, + "executionStateRoots(uint256)": { + "notice": "Maps from a slot to the current finalized ethereum1 execution state root." + }, + "head()": { + "notice": "The latest slot the light client has a finalized header for." + }, + "headers(uint256)": { + "notice": "Maps from a slot to a beacon block header root." + }, + "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { + "notice": "Sets the sync committee for the next sync committeee period." + }, + "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { + "notice": "Updates the head of the light client to the provided slot." + }, + "syncCommitteePoseidons(uint256)": { + "notice": "Maps from a period to the poseidon commitment for the sync committee." + }, + "timestamps(uint256)": { + "notice": "Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key" + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "examples/drills/DrillLightClient.sol": "DrillLightClient" + }, + "libraries": {} + }, + "sources": { + "examples/drills/DrillLightClient.sol": { + "keccak256": "0x858baa5e6eadc452f96414ffdab698a5901c22d9153e36cdbb849dd9acf68cd0", + "urls": [ + "bzz-raw://e3a1bc6eff225e20dc011129ca8edb5f46802f0f3b7610e6180f8b6f053c8823", + "dweb:/ipfs/QmYAVhKMcgk1MsWyC9qRJuf9JLjUytSQQBcVGZoqL1TqAw" + ], + "license": null + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", + "urls": [ + "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", + "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "src/libraries/SimpleSerialize.sol": { + "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "urls": [ + "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", + "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + ], + "license": null + }, + "src/lightclient/LightClient.sol": { + "keccak256": "0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71", + "urls": [ + "bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806", + "dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa" + ], + "license": null + }, + "src/lightclient/RotateVerifier.sol": { + "keccak256": "0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf", + "urls": [ + "bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0", + "dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8" + ], + "license": "GPL-3.0" + }, + "src/lightclient/StepVerifier.sol": { + "keccak256": "0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418", + "urls": [ + "bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2", + "dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET" + ], + "license": "GPL-3.0" + }, + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "examples/drills/DrillLightClient.sol", + "id": 1010, + "exportedSymbols": { + "DrillLightClient": [ + 1009 + ], + "LightClient": [ + 45032 + ], + "Ownable": [ + 31597 + ] + }, + "nodeType": "SourceUnit", + "src": "0:756:5", + "nodes": [ + { + "id": 947, + "nodeType": "PragmaDirective", + "src": "0:23:5", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 949, + "nodeType": "ImportDirective", + "src": "25:60:5", + "nodes": [], + "absolutePath": "src/lightclient/LightClient.sol", + "file": "src/lightclient/LightClient.sol", + "nameLocation": "-1:-1:-1", + "scope": 1010, + "sourceUnit": 45033, + "symbolAliases": [ + { + "foreign": { + "id": 948, + "name": "LightClient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45032, + "src": "33:11:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 951, + "nodeType": "ImportDirective", + "src": "86:66:5", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "file": "openzeppelin-contracts/access/Ownable.sol", + "nameLocation": "-1:-1:-1", + "scope": 1010, + "sourceUnit": 31598, + "symbolAliases": [ + { + "foreign": { + "id": 950, + "name": "Ownable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31597, + "src": "94:7:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 1009, + "nodeType": "ContractDefinition", + "src": "289:466:5", + "nodes": [ + { + "id": 978, + "nodeType": "FunctionDefinition", + "src": "345:118:5", + "nodes": [], + "body": { + "id": 977, + "nodeType": "Block", + "src": "420:43:5", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 974, + "name": "emitter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 958, + "src": "448:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 973, + "name": "transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31576, + "src": "430:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "430:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 976, + "nodeType": "ExpressionStatement", + "src": "430:26:5" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "386:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 962, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "389:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "392:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "395:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 965, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "398:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "401:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "404:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 968, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "407:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 969, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 960, + "name": "LightClient", + "nameLocations": [ + "374:11:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45032, + "src": "374:11:5" + }, + "nodeType": "ModifierInvocation", + "src": "374:35:5" + }, + { + "arguments": [], + "id": 971, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 970, + "name": "Ownable", + "nameLocations": [ + "410:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31597, + "src": "410:7:5" + }, + "nodeType": "ModifierInvocation", + "src": "410:9:5" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 958, + "mutability": "mutable", + "name": "emitter", + "nameLocation": "365:7:5", + "nodeType": "VariableDeclaration", + "scope": 978, + "src": "357:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 957, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "357:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "356:17:5" + }, + "returnParameters": { + "id": 972, + "nodeType": "ParameterList", + "parameters": [], + "src": "420:0:5" + }, + "scope": 1009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 993, + "nodeType": "FunctionDefinition", + "src": "469:128:5", + "nodes": [], + "body": { + "id": 992, + "nodeType": "Block", + "src": "551:46:5", + "nodes": [], + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 988, + "name": "_slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 980, + "src": "577:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 989, + "name": "_root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "584:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 987, + "name": "HeadUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44383, + "src": "566:10:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (uint256,bytes32)" + } + }, + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "566:24:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 991, + "nodeType": "EmitStatement", + "src": "561:29:5" + } + ] + }, + "functionSelector": "e209e863", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 985, + "kind": "modifierInvocation", + "modifierName": { + "id": 984, + "name": "onlyOwner", + "nameLocations": [ + "541:9:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31516, + "src": "541:9:5" + }, + "nodeType": "ModifierInvocation", + "src": "541:9:5" + } + ], + "name": "emitFakeHeadUpdateEvent", + "nameLocation": "478:23:5", + "parameters": { + "id": 983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 980, + "mutability": "mutable", + "name": "_slot", + "nameLocation": "510:5:5", + "nodeType": "VariableDeclaration", + "scope": 993, + "src": "502:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 979, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "502:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 982, + "mutability": "mutable", + "name": "_root", + "nameLocation": "525:5:5", + "nodeType": "VariableDeclaration", + "scope": 993, + "src": "517:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 981, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "517:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "501:30:5" + }, + "returnParameters": { + "id": 986, + "nodeType": "ParameterList", + "parameters": [], + "src": "551:0:5" + }, + "scope": 1009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 1008, + "nodeType": "FunctionDefinition", + "src": "603:150:5", + "nodes": [], + "body": { + "id": 1007, + "nodeType": "Block", + "src": "696:57:5", + "nodes": [], + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 1003, + "name": "_period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "731:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1004, + "name": "_root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 997, + "src": "740:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1002, + "name": "SyncCommitteeUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44389, + "src": "711:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (uint256,bytes32)" + } + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "711:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1006, + "nodeType": "EmitStatement", + "src": "706:40:5" + } + ] + }, + "functionSelector": "474e04de", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1000, + "kind": "modifierInvocation", + "modifierName": { + "id": 999, + "name": "onlyOwner", + "nameLocations": [ + "686:9:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31516, + "src": "686:9:5" + }, + "nodeType": "ModifierInvocation", + "src": "686:9:5" + } + ], + "name": "emitFakeSyncCommitteeUpdateEvent", + "nameLocation": "612:32:5", + "parameters": { + "id": 998, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 995, + "mutability": "mutable", + "name": "_period", + "nameLocation": "653:7:5", + "nodeType": "VariableDeclaration", + "scope": 1008, + "src": "645:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "645:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 997, + "mutability": "mutable", + "name": "_root", + "nameLocation": "670:5:5", + "nodeType": "VariableDeclaration", + "scope": 1008, + "src": "662:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 996, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "662:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "644:32:5" + }, + "returnParameters": { + "id": 1001, + "nodeType": "ParameterList", + "parameters": [], + "src": "696:0:5" + }, + "scope": 1009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 953, + "name": "LightClient", + "nameLocations": [ + "318:11:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45032, + "src": "318:11:5" + }, + "id": 954, + "nodeType": "InheritanceSpecifier", + "src": "318:11:5" + }, + { + "baseName": { + "id": 955, + "name": "Ownable", + "nameLocations": [ + "331:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31597, + "src": "331:7:5" + }, + "id": 956, + "nodeType": "InheritanceSpecifier", + "src": "331:7:5" + } + ], + "canonicalName": "DrillLightClient", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 952, + "nodeType": "StructuredDocumentation", + "src": "154:135:5", + "text": "@title DrillLightClient\n @dev This contract is used solely for testing purposes and should not be used by production contracts." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 1009, + 31597, + 35292, + 45032, + 46814, + 47828, + 47862 + ], + "name": "DrillLightClient", + "nameLocation": "298:16:5", + "scope": 1010, + "usedErrors": [] + } + ] + }, + "id": 5 +} \ No newline at end of file diff --git a/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json b/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json new file mode 100644 index 0000000..48d1651 --- /dev/null +++ b/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json @@ -0,0 +1,2072 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_guardian", + "type": "address" + }, + { + "internalType": "address", + "name": "_emitter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "ExecutedMessage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "MIN_LIGHT_CLIENT_DELAY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "_msgHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "emitFakeExecutedMessageEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes[]", + "name": "accountProof", + "type": "bytes[]" + }, + { + "internalType": "bytes[]", + "name": "storageProof", + "type": "bytes[]" + } + ], + "name": "executeMessage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + } + ], + "name": "executeMessageFromLog", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "freezeAll", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sourceChainIdsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x60806040523480156200001157600080fd5b5060405162003ed538038062003ed5833981016040819052620000349162000083565b606580546001600160a01b039384166001600160a01b03199182161790915560668054929093169116179055620000bb565b80516001600160a01b03811681146200007e57600080fd5b919050565b600080604083850312156200009757600080fd5b620000a28362000066565b9150620000b26020840162000066565b90509250929050565b613e0a80620000cb6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b610125610113366004613510565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b61014636600461352b565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e61017936600461368b565b6102f7565b005b6101a361018e366004613788565b60076020526000908152604090205460ff1681565b60405161012f91906137b7565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f236600461352b565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d61023336600461352b565b6004602052600090815260409020546001600160a01b031681565b61017e61025c3660046137df565b6105c5565b61012561026f366004613788565b60096020526000908152604090205481565b61017e6108e8565b61029c610297366004613788565b610901565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613897565b61093b565b610125607881565b6102ff6109a2565b60008061030c8b8b6109fb565b9150915061031d8260400151610c65565b61032a8260400151610d97565b6000808e8e81019061033c919061391c565b9150915061034e828560400151610df3565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd919061394f565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b600061046d8b8e8e8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061102c565b9050806104bc5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105218787906104d29190613968565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026111d4565b905081811461056a5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105ac82828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061158792505050565b50506105b86001603355565b5050505050505050505050565b6105cd6109a2565b6000806105da88886109fb565b915091506105eb8260400151610c65565b6105f88260400151610d97565b610606898360400151610df3565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107bd5760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061394f565b9050600081900361076f5760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a361077c898b613968565b60408088015163ffffffff166000908152600560205220546001600160a01b03168361172e565b600083815260096020526040902081905592506107cf9050565b60008181526009602052604090205491505b6000846020015160016040516020016107fd9291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084582856108408a8c613968565b61182a565b905084811461088e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d382828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061158792505050565b50506108df6001603355565b50505050505050565b6065546001600160a01b031633146108ff57600080fd5b565b6003818154811061091157600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095257600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610993929190613a3b565b60405180910390a45050505050565b6002603354036109f45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118c692505050565b905060008585604051610a8c929190613a5f565b60405190819003902090506000808281526007602052604090205460ff166002811115610abb57610abb6137a1565b14610b085760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b505760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9a5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610be5575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c585760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610ccb5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d489190613a6f565b610d945760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d945760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e595760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee6919061394f565b600003610f355760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbf919061394f565b610fc99042613aa2565b905060788110156110275760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b600080826001600160401b0316846001600160401b03160361106a5750600b61105781610200613ab5565b61106390610183613ad4565b90506111bd565b6120006110778486613ae7565b6001600160401b0316116110d95750600b611093816020613ab5565b61109e906006613ad4565b90506110b56120006001600160401b038516613b24565b6110c161200083613ab5565b6110cb9190613ad4565b905061105781610200613ab5565b836001600160401b0316836001600160401b0316101561116b5750600b611101816020613ab5565b61110c906007613ad4565b9050611119816002613ab5565b611124906000613ad4565b905061113b6120006001600160401b038516613b38565b611149630100000083613ab5565b6111539190613ad4565b9050611160816002613ab5565b61109e906001613ad4565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b6064820152608401610420565b6111c98782888861198b565b979650505050505050565b6000806111e2878a8a6119a5565b90506000816000815181106111f9576111f9613b4c565b01602001516001600160f81b03191690506000600160f81b82148061122b5750600160f91b6001600160f81b03198316145b156112385750600161129d565b600360fe1b6001600160f81b03198316106112555750600061129d565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516112bf9190613aa2565b81526020016112ce8585613ad4565b9052905060006112dd82612245565b905080516004146113295760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b600061134e8260038151811061134157611341613b4c565b6020026020010151612245565b905080518c106113a05760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b60006113b7828e8151811061134157611341613b4c565b905080516003146114155760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b600061143a8260008151811061142d5761142d613b4c565b602002602001015161246a565b90508c6001600160a01b0316816001600160a01b0316146114ad5760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b60006114c58360018151811061134157611341613b4c565b90508c6114eb826000815181106114de576114de613b4c565b60200260200101516124de565b1461154e5760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b611570818d8151811061156357611563613b4c565b60200260200101516124e5565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c001516040516024016115b693929190613b62565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116089190613b92565b6000604051808303816000865af19150503d8060008114611645576040519150601f19603f3d011682016040523d82523d6000602084013e61164a565b606091505b508051919550935060009250602003905061168c576000828060200190518101906116759190613bae565b6001600160e01b031916631dee306b60e11b149150505b8280156116965750805b156116b9576000858152600760205260409020805460ff191660021790556116d3565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe8947878760405161171e929190613a3b565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117988260405160200161178291815260200190565b60405160208183030381529060405287866119a5565b905060008151116117e45760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b60006117f76117f2836125e8565b612245565b9050805160041461180757600080fd5b61181d816002815181106114de576114de613b4c565b93505050505b9392505050565b6000806118598560405160200161184391815260200190565b60405160208183030381529060405284866119a5565b905060008151116118ac5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b6118bd6118b8826125e8565b6124de565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a088018190528851909161197a918a9190611975908290613aa2565b61263b565b60c088015250949695505050505050565b600080611999868686612727565b90921495945050505050565b606060008451116119f05760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b60006119fb846128b6565b90506000611a08866129a4565b9050600084604051602001611a1f91815260200190565b60405160208183030381529060405290506000805b84518110156121ee576000858281518110611a5157611a51613b4c565b602002602001015190508451831115611ac35760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611b625780518051602091820120604051611b1192611aeb92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b5d5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611c58565b805151602011611be85780518051602091820120604051611b8c92611aeb92910190815260200190565b611b5d5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611c585760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611c6460106001613ad4565b81602001515103611e115784518303611da9576000611ca08260200151601081518110611c9357611c93613b4c565b6020026020010151612abe565b90506000815111611d195760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611d279190613aa2565b8314611d9b5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b965061182395505050505050565b6000858481518110611dbd57611dbd613b4c565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611de857611de8613b4c565b60200260200101519050611dfb81612be1565b9550611e08600186613ad4565b945050506121db565b600281602001515103612182576000611e2982612c06565b9050600081600081518110611e4057611e40613b4c565b016020015160f81c90506000611e57600283613bd8565b611e62906002613bfa565b90506000611e73848360ff16612c2a565b90506000611e818a89612c2a565b90506000611e8f8383612c60565b905080835114611f075760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611f1c575060ff85166003145b156120c25780825114611f975760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b6000611fb38860200151600181518110611c9357611c93613b4c565b9050600081511161202c5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d5161203a9190613aa2565b89146120ae5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c506118239b505050505050505050505050565b60ff851615806120d5575060ff85166001145b156121145761210187602001516001815181106120f4576120f4613b4c565b6020026020010151612be1565b995061210d818a613ad4565b9850612177565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b5050505050506121db565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b50806121e681613c13565b915050611a34565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b6060600080600061225585612cdf565b919450925090506001816001811115612270576122706137a1565b146122e35760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516122ef8385613ad4565b146123575760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123705790505090506000845b875181101561245e576000806123e36040518060400160405280858d600001516123c79190613aa2565b8152602001858d602001516123dc9190613ad4565b9052612cdf565b5091509150604051806040016040528083836123ff9190613ad4565b8152602001848c602001516124149190613ad4565b81525085858151811061242957612429613b4c565b602090810291909101015261243f600185613ad4565b935061244b8183613ad4565b6124559084613ad4565b9250505061239d565b50815295945050505050565b805160009060010361247e57506000919050565b81516015146124cf5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b6124d8826124de565b92915050565b60006124d8825b600060218260000151111561253c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600080600061254a85612cdf565b919450925090506000816001811115612565576125656137a1565b146125b25760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b60008386602001516125c49190613ad4565b805190915060208410156125de5760208490036101000a90045b9695505050505050565b6040805180820190915260008082526020820152600082511161261d5760405162461bcd60e51b815260040161042090613c2c565b50604080518082019091528151815260209182019181019190915290565b60608161264981601f613ad4565b10156126675760405162461bcd60e51b815260040161042090613c9c565b6126718284613ad4565b845110156126b55760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b6060821580156126d4576040519150600082526020820160405261271e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561270d5780518352602092830192016126f5565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127389190613ad4565b612743906002613da8565b1161274d57600080fd5b8360005b8460011461271e57612764600286613b24565b60010361280357600284828151811061277f5761277f613b4c565b6020026020010151836040516020016127a2929190918252602082015260400190565b60408051601f19818403018152908290526127bc91613b92565b602060405180830381855afa1580156127d9573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127fc919061394f565b9150612897565b60028285838151811061281857612818613b4c565b602002602001015160405160200161283a929190918252602082015260400190565b60408051601f198184030181529082905261285491613b92565b602060405180830381855afa158015612871573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612894919061394f565b91505b6128a2600286613b38565b9450806128ae81613c13565b915050612751565b80516060906000816001600160401b038111156128d5576128d56135d6565b60405190808252806020026020018201604052801561291a57816020015b60408051808201909152606080825260208201528152602001906001900390816128f35790505b50905060005b8281101561299c57604051806040016040528086838151811061294557612945613b4c565b6020026020010151815260200161297487848151811061296757612967613b4c565b60200260200101516133a2565b81525082828151811061298957612989613b4c565b6020908102919091010152600101612920565b509392505050565b805160609060006129b6826002613ab5565b6001600160401b038111156129cd576129cd6135d6565b6040519080825280601f01601f1916602001820160405280156129f7576020820181803683370190505b5090506000805b83811015612ab457858181518110612a1857612a18613b4c565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a40836002613ab5565b81518110612a5057612a50613b4c565b60200101906001600160f81b031916908160001a905350600f60f81b821683612a7a836002613ab5565b612a85906001613ad4565b81518110612a9557612a95613b4c565b60200101906001600160f81b031916908160001a9053506001016129fe565b5090949350505050565b60606000806000612ace85612cdf565b919450925090506000816001811115612ae957612ae96137a1565b14612b5c5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612b668284613ad4565b855114612bd25760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b6118bd856020015184846133b0565b60606020826000015110612bfd57612bf882612abe565b6124d8565b6124d882613450565b60606124d8612c258360200151600081518110611c9357611c93613b4c565b6129a4565b606082518210612c4957506040805160208101909152600081526124d8565b6118238383848651612c5b9190613aa2565b613466565b60008060008351855110612c75578351612c78565b84515b90505b8082108015612ccf5750838281518110612c9757612c97613b4c565b602001015160f81c60f81b6001600160f81b031916858381518110612cbe57612cbe613b4c565b01602001516001600160f81b031916145b1561299c57816001019150612c7b565b600080600080846000015111612d075760405162461bcd60e51b815260040161042090613c2c565b6020840151805160001a607f8111612d2c57600060016000945094509450505061339b565b60b78111612e89576000612d41608083613aa2565b905080876000015111612dc15760405162461bcd60e51b815260206004820152604e6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612dee5750600160ff1b6001600160f81b0319821610155b612e765760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b506001955093506000925061339b915050565b60bf81116130ca576000612e9e60b783613aa2565b905080876000015111612f215760405162461bcd60e51b81526020600482015260516024820152600080516020613db583398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b0319166000819003612fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c6037811161302b5760405162461bcd60e51b81526020600482015260486024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b6130358184613ad4565b8951116130ad5760405162461bcd60e51b815260206004820152604c6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b6130b8836001613ad4565b975095506000945061339b9350505050565b60f7811161316c5760006130df60c083613aa2565b90508087600001511161315b5760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b60019550935084925061339b915050565b600061317960f783613aa2565b9050808760000151116131f85760405162461bcd60e51b815260206004820152604d6024820152600080516020613db583398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b031916600081900361327d5760405162461bcd60e51b81526020600482015260486024820152600080516020613db583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116132fe5760405162461bcd60e51b81526020600482015260466024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133088184613ad4565b89511161337e5760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613389836001613ad4565b975095506001945061339b9350505050565b9193909250565b60606124d86117f2836125e8565b60606000826001600160401b038111156133cc576133cc6135d6565b6040519080825280601f01601f1916602001820160405280156133f6576020820181803683370190505b50905082600003613408579050611823565b60006134148587613ad4565b90506020820160005b8581101561343557828101518282015260200161341d565b85811115613444576000868301525b50919695505050505050565b60606124d88260200151600084600001516133b0565b60608182601f01101561348b5760405162461bcd60e51b815260040161042090613c9c565b8282840110156134ad5760405162461bcd60e51b815260040161042090613c9c565b818301845110156126b55760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b038116811461350b57600080fd5b919050565b60006020828403121561352257600080fd5b611823826134f4565b60006020828403121561353d57600080fd5b813563ffffffff8116811461182357600080fd5b60008083601f84011261356357600080fd5b5081356001600160401b0381111561357a57600080fd5b602083019150836020828501011115610c5e57600080fd5b60008083601f8401126135a457600080fd5b5081356001600160401b038111156135bb57600080fd5b6020830191508360208260051b8501011115610c5e57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613614576136146135d6565b604052919050565b600082601f83011261362d57600080fd5b81356001600160401b03811115613646576136466135d6565b613659601f8201601f19166020016135ec565b81815284602083860101111561366e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156136ac57600080fd5b6001600160401b03808d3511156136c257600080fd5b6136cf8e8e358f01613551565b909c509a5060208d01358110156136e557600080fd5b6136f58e60208f01358f01613551565b909a50985060408d013581101561370b57600080fd5b61371b8e60408f01358f01613592565b909850965060608d0135955060808d013581101561373857600080fd5b6137488e60808f01358f01613592565b909550935060a08d013581101561375e57600080fd5b5061376f8d60a08e01358e0161361c565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561379a57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106137d957634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156137fa57600080fd5b613803886134f4565b965060208801356001600160401b038082111561381f57600080fd5b61382b8b838c01613551565b909850965060408a013591508082111561384457600080fd5b6138508b838c01613592565b909650945060608a013591508082111561386957600080fd5b506138768a828b01613592565b989b979a50959850939692959293505050565b8015158114610d9457600080fd5b600080600080600060a086880312156138af57600080fd5b853561ffff811681146138c157600080fd5b94506138cf602087016134f4565b93506040860135925060608601356001600160401b038111156138f157600080fd5b6138fd8882890161361c565b925050608086013561390e81613889565b809150509295509295909350565b6000806040838503121561392f57600080fd5b613938836134f4565b9150613946602084016134f4565b90509250929050565b60006020828403121561396157600080fd5b5051919050565b60006001600160401b0380841115613982576139826135d6565b8360051b60206139938183016135ec565b8681529185019181810190368411156139ab57600080fd5b865b848110156139df578035868111156139c55760008081fd5b6139d136828b0161361c565b8452509183019183016139ad565b50979650505050505050565b60005b83811015613a065781810151838201526020016139ee565b50506000910152565b60008151808452613a278160208601602086016139eb565b601f01601f19169290920160200192915050565b604081526000613a4e6040830185613a0f565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613a8157600080fd5b815161182381613889565b634e487b7160e01b600052601160045260246000fd5b818103818111156124d8576124d8613a8c565b6000816000190483118215151615613acf57613acf613a8c565b500290565b808201808211156124d8576124d8613a8c565b6001600160401b03828116828216039080821115613b0757613b07613a8c565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082613b3357613b33613b0e565b500690565b600082613b4757613b47613b0e565b500490565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b03831660208201526060604082018190526000906118bd90830184613a0f565b60008251613ba48184602087016139eb565b9190910192915050565b600060208284031215613bc057600080fd5b81516001600160e01b03198116811461182357600080fd5b600060ff831680613beb57613beb613b0e565b8060ff84160691505092915050565b60ff82811682821603908111156124d8576124d8613a8c565b600060018201613c2557613c25613a8c565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613cff578160001904821115613ce557613ce5613a8c565b80851615613cf257918102915b93841c9390800290613cc9565b509250929050565b600082613d16575060016124d8565b81613d23575060006124d8565b8160018114613d395760028114613d4357613d5f565b60019150506124d8565b60ff841115613d5457613d54613a8c565b50506001821b6124d8565b5060208310610133831016604e8410600b8410161715613d82575081810a6124d8565b613d8c8383613cc4565b8060001904821115613da057613da0613a8c565b029392505050565b60006118238383613d0756fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220ffef3fe749371bc9cd6e39e07a20cc763031009832510c7d1e9d1a99c1483f0c64736f6c63430008100033", + "sourceMap": "399:626:6:-:0;;;510:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:8;:20;;-1:-1:-1;;;;;569:20:6;;;-1:-1:-1;;;;;;569:20:6;;;;;;;599:7;:18;;;;;;;;;;;399:626;;14:177:145;93:13;;-1:-1:-1;;;;;135:31:145;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;:::-;399:626:6;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b610125610113366004613510565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b61014636600461352b565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e61017936600461368b565b6102f7565b005b6101a361018e366004613788565b60076020526000908152604090205460ff1681565b60405161012f91906137b7565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f236600461352b565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d61023336600461352b565b6004602052600090815260409020546001600160a01b031681565b61017e61025c3660046137df565b6105c5565b61012561026f366004613788565b60096020526000908152604090205481565b61017e6108e8565b61029c610297366004613788565b610901565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613897565b61093b565b610125607881565b6102ff6109a2565b60008061030c8b8b6109fb565b9150915061031d8260400151610c65565b61032a8260400151610d97565b6000808e8e81019061033c919061391c565b9150915061034e828560400151610df3565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd919061394f565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b600061046d8b8e8e8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061102c565b9050806104bc5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105218787906104d29190613968565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026111d4565b905081811461056a5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105ac82828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061158792505050565b50506105b86001603355565b5050505050505050505050565b6105cd6109a2565b6000806105da88886109fb565b915091506105eb8260400151610c65565b6105f88260400151610d97565b610606898360400151610df3565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107bd5760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061394f565b9050600081900361076f5760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a361077c898b613968565b60408088015163ffffffff166000908152600560205220546001600160a01b03168361172e565b600083815260096020526040902081905592506107cf9050565b60008181526009602052604090205491505b6000846020015160016040516020016107fd9291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084582856108408a8c613968565b61182a565b905084811461088e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d382828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061158792505050565b50506108df6001603355565b50505050505050565b6065546001600160a01b031633146108ff57600080fd5b565b6003818154811061091157600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095257600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610993929190613a3b565b60405180910390a45050505050565b6002603354036109f45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118c692505050565b905060008585604051610a8c929190613a5f565b60405190819003902090506000808281526007602052604090205460ff166002811115610abb57610abb6137a1565b14610b085760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b505760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9a5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610be5575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c585760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610ccb5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d489190613a6f565b610d945760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d945760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e595760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee6919061394f565b600003610f355760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbf919061394f565b610fc99042613aa2565b905060788110156110275760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b600080826001600160401b0316846001600160401b03160361106a5750600b61105781610200613ab5565b61106390610183613ad4565b90506111bd565b6120006110778486613ae7565b6001600160401b0316116110d95750600b611093816020613ab5565b61109e906006613ad4565b90506110b56120006001600160401b038516613b24565b6110c161200083613ab5565b6110cb9190613ad4565b905061105781610200613ab5565b836001600160401b0316836001600160401b0316101561116b5750600b611101816020613ab5565b61110c906007613ad4565b9050611119816002613ab5565b611124906000613ad4565b905061113b6120006001600160401b038516613b38565b611149630100000083613ab5565b6111539190613ad4565b9050611160816002613ab5565b61109e906001613ad4565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b6064820152608401610420565b6111c98782888861198b565b979650505050505050565b6000806111e2878a8a6119a5565b90506000816000815181106111f9576111f9613b4c565b01602001516001600160f81b03191690506000600160f81b82148061122b5750600160f91b6001600160f81b03198316145b156112385750600161129d565b600360fe1b6001600160f81b03198316106112555750600061129d565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516112bf9190613aa2565b81526020016112ce8585613ad4565b9052905060006112dd82612245565b905080516004146113295760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b600061134e8260038151811061134157611341613b4c565b6020026020010151612245565b905080518c106113a05760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b60006113b7828e8151811061134157611341613b4c565b905080516003146114155760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b600061143a8260008151811061142d5761142d613b4c565b602002602001015161246a565b90508c6001600160a01b0316816001600160a01b0316146114ad5760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b60006114c58360018151811061134157611341613b4c565b90508c6114eb826000815181106114de576114de613b4c565b60200260200101516124de565b1461154e5760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b611570818d8151811061156357611563613b4c565b60200260200101516124e5565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c001516040516024016115b693929190613b62565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116089190613b92565b6000604051808303816000865af19150503d8060008114611645576040519150601f19603f3d011682016040523d82523d6000602084013e61164a565b606091505b508051919550935060009250602003905061168c576000828060200190518101906116759190613bae565b6001600160e01b031916631dee306b60e11b149150505b8280156116965750805b156116b9576000858152600760205260409020805460ff191660021790556116d3565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe8947878760405161171e929190613a3b565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117988260405160200161178291815260200190565b60405160208183030381529060405287866119a5565b905060008151116117e45760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b60006117f76117f2836125e8565b612245565b9050805160041461180757600080fd5b61181d816002815181106114de576114de613b4c565b93505050505b9392505050565b6000806118598560405160200161184391815260200190565b60405160208183030381529060405284866119a5565b905060008151116118ac5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b6118bd6118b8826125e8565b6124de565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a088018190528851909161197a918a9190611975908290613aa2565b61263b565b60c088015250949695505050505050565b600080611999868686612727565b90921495945050505050565b606060008451116119f05760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b60006119fb846128b6565b90506000611a08866129a4565b9050600084604051602001611a1f91815260200190565b60405160208183030381529060405290506000805b84518110156121ee576000858281518110611a5157611a51613b4c565b602002602001015190508451831115611ac35760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611b625780518051602091820120604051611b1192611aeb92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b5d5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611c58565b805151602011611be85780518051602091820120604051611b8c92611aeb92910190815260200190565b611b5d5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611c585760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611c6460106001613ad4565b81602001515103611e115784518303611da9576000611ca08260200151601081518110611c9357611c93613b4c565b6020026020010151612abe565b90506000815111611d195760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611d279190613aa2565b8314611d9b5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b965061182395505050505050565b6000858481518110611dbd57611dbd613b4c565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611de857611de8613b4c565b60200260200101519050611dfb81612be1565b9550611e08600186613ad4565b945050506121db565b600281602001515103612182576000611e2982612c06565b9050600081600081518110611e4057611e40613b4c565b016020015160f81c90506000611e57600283613bd8565b611e62906002613bfa565b90506000611e73848360ff16612c2a565b90506000611e818a89612c2a565b90506000611e8f8383612c60565b905080835114611f075760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611f1c575060ff85166003145b156120c25780825114611f975760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b6000611fb38860200151600181518110611c9357611c93613b4c565b9050600081511161202c5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d5161203a9190613aa2565b89146120ae5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c506118239b505050505050505050505050565b60ff851615806120d5575060ff85166001145b156121145761210187602001516001815181106120f4576120f4613b4c565b6020026020010151612be1565b995061210d818a613ad4565b9850612177565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b5050505050506121db565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b50806121e681613c13565b915050611a34565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b6060600080600061225585612cdf565b919450925090506001816001811115612270576122706137a1565b146122e35760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516122ef8385613ad4565b146123575760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123705790505090506000845b875181101561245e576000806123e36040518060400160405280858d600001516123c79190613aa2565b8152602001858d602001516123dc9190613ad4565b9052612cdf565b5091509150604051806040016040528083836123ff9190613ad4565b8152602001848c602001516124149190613ad4565b81525085858151811061242957612429613b4c565b602090810291909101015261243f600185613ad4565b935061244b8183613ad4565b6124559084613ad4565b9250505061239d565b50815295945050505050565b805160009060010361247e57506000919050565b81516015146124cf5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b6124d8826124de565b92915050565b60006124d8825b600060218260000151111561253c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600080600061254a85612cdf565b919450925090506000816001811115612565576125656137a1565b146125b25760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b60008386602001516125c49190613ad4565b805190915060208410156125de5760208490036101000a90045b9695505050505050565b6040805180820190915260008082526020820152600082511161261d5760405162461bcd60e51b815260040161042090613c2c565b50604080518082019091528151815260209182019181019190915290565b60608161264981601f613ad4565b10156126675760405162461bcd60e51b815260040161042090613c9c565b6126718284613ad4565b845110156126b55760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b6060821580156126d4576040519150600082526020820160405261271e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561270d5780518352602092830192016126f5565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127389190613ad4565b612743906002613da8565b1161274d57600080fd5b8360005b8460011461271e57612764600286613b24565b60010361280357600284828151811061277f5761277f613b4c565b6020026020010151836040516020016127a2929190918252602082015260400190565b60408051601f19818403018152908290526127bc91613b92565b602060405180830381855afa1580156127d9573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127fc919061394f565b9150612897565b60028285838151811061281857612818613b4c565b602002602001015160405160200161283a929190918252602082015260400190565b60408051601f198184030181529082905261285491613b92565b602060405180830381855afa158015612871573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612894919061394f565b91505b6128a2600286613b38565b9450806128ae81613c13565b915050612751565b80516060906000816001600160401b038111156128d5576128d56135d6565b60405190808252806020026020018201604052801561291a57816020015b60408051808201909152606080825260208201528152602001906001900390816128f35790505b50905060005b8281101561299c57604051806040016040528086838151811061294557612945613b4c565b6020026020010151815260200161297487848151811061296757612967613b4c565b60200260200101516133a2565b81525082828151811061298957612989613b4c565b6020908102919091010152600101612920565b509392505050565b805160609060006129b6826002613ab5565b6001600160401b038111156129cd576129cd6135d6565b6040519080825280601f01601f1916602001820160405280156129f7576020820181803683370190505b5090506000805b83811015612ab457858181518110612a1857612a18613b4c565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a40836002613ab5565b81518110612a5057612a50613b4c565b60200101906001600160f81b031916908160001a905350600f60f81b821683612a7a836002613ab5565b612a85906001613ad4565b81518110612a9557612a95613b4c565b60200101906001600160f81b031916908160001a9053506001016129fe565b5090949350505050565b60606000806000612ace85612cdf565b919450925090506000816001811115612ae957612ae96137a1565b14612b5c5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612b668284613ad4565b855114612bd25760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b6118bd856020015184846133b0565b60606020826000015110612bfd57612bf882612abe565b6124d8565b6124d882613450565b60606124d8612c258360200151600081518110611c9357611c93613b4c565b6129a4565b606082518210612c4957506040805160208101909152600081526124d8565b6118238383848651612c5b9190613aa2565b613466565b60008060008351855110612c75578351612c78565b84515b90505b8082108015612ccf5750838281518110612c9757612c97613b4c565b602001015160f81c60f81b6001600160f81b031916858381518110612cbe57612cbe613b4c565b01602001516001600160f81b031916145b1561299c57816001019150612c7b565b600080600080846000015111612d075760405162461bcd60e51b815260040161042090613c2c565b6020840151805160001a607f8111612d2c57600060016000945094509450505061339b565b60b78111612e89576000612d41608083613aa2565b905080876000015111612dc15760405162461bcd60e51b815260206004820152604e6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612dee5750600160ff1b6001600160f81b0319821610155b612e765760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b506001955093506000925061339b915050565b60bf81116130ca576000612e9e60b783613aa2565b905080876000015111612f215760405162461bcd60e51b81526020600482015260516024820152600080516020613db583398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b0319166000819003612fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c6037811161302b5760405162461bcd60e51b81526020600482015260486024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b6130358184613ad4565b8951116130ad5760405162461bcd60e51b815260206004820152604c6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b6130b8836001613ad4565b975095506000945061339b9350505050565b60f7811161316c5760006130df60c083613aa2565b90508087600001511161315b5760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b60019550935084925061339b915050565b600061317960f783613aa2565b9050808760000151116131f85760405162461bcd60e51b815260206004820152604d6024820152600080516020613db583398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b031916600081900361327d5760405162461bcd60e51b81526020600482015260486024820152600080516020613db583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116132fe5760405162461bcd60e51b81526020600482015260466024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133088184613ad4565b89511161337e5760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613389836001613ad4565b975095506001945061339b9350505050565b9193909250565b60606124d86117f2836125e8565b60606000826001600160401b038111156133cc576133cc6135d6565b6040519080825280601f01601f1916602001820160405280156133f6576020820181803683370190505b50905082600003613408579050611823565b60006134148587613ad4565b90506020820160005b8581101561343557828101518282015260200161341d565b85811115613444576000868301525b50919695505050505050565b60606124d88260200151600084600001516133b0565b60608182601f01101561348b5760405162461bcd60e51b815260040161042090613c9c565b8282840110156134ad5760405162461bcd60e51b815260040161042090613c9c565b818301845110156126b55760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b038116811461350b57600080fd5b919050565b60006020828403121561352257600080fd5b611823826134f4565b60006020828403121561353d57600080fd5b813563ffffffff8116811461182357600080fd5b60008083601f84011261356357600080fd5b5081356001600160401b0381111561357a57600080fd5b602083019150836020828501011115610c5e57600080fd5b60008083601f8401126135a457600080fd5b5081356001600160401b038111156135bb57600080fd5b6020830191508360208260051b8501011115610c5e57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613614576136146135d6565b604052919050565b600082601f83011261362d57600080fd5b81356001600160401b03811115613646576136466135d6565b613659601f8201601f19166020016135ec565b81815284602083860101111561366e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156136ac57600080fd5b6001600160401b03808d3511156136c257600080fd5b6136cf8e8e358f01613551565b909c509a5060208d01358110156136e557600080fd5b6136f58e60208f01358f01613551565b909a50985060408d013581101561370b57600080fd5b61371b8e60408f01358f01613592565b909850965060608d0135955060808d013581101561373857600080fd5b6137488e60808f01358f01613592565b909550935060a08d013581101561375e57600080fd5b5061376f8d60a08e01358e0161361c565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561379a57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106137d957634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156137fa57600080fd5b613803886134f4565b965060208801356001600160401b038082111561381f57600080fd5b61382b8b838c01613551565b909850965060408a013591508082111561384457600080fd5b6138508b838c01613592565b909650945060608a013591508082111561386957600080fd5b506138768a828b01613592565b989b979a50959850939692959293505050565b8015158114610d9457600080fd5b600080600080600060a086880312156138af57600080fd5b853561ffff811681146138c157600080fd5b94506138cf602087016134f4565b93506040860135925060608601356001600160401b038111156138f157600080fd5b6138fd8882890161361c565b925050608086013561390e81613889565b809150509295509295909350565b6000806040838503121561392f57600080fd5b613938836134f4565b9150613946602084016134f4565b90509250929050565b60006020828403121561396157600080fd5b5051919050565b60006001600160401b0380841115613982576139826135d6565b8360051b60206139938183016135ec565b8681529185019181810190368411156139ab57600080fd5b865b848110156139df578035868111156139c55760008081fd5b6139d136828b0161361c565b8452509183019183016139ad565b50979650505050505050565b60005b83811015613a065781810151838201526020016139ee565b50506000910152565b60008151808452613a278160208601602086016139eb565b601f01601f19169290920160200192915050565b604081526000613a4e6040830185613a0f565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613a8157600080fd5b815161182381613889565b634e487b7160e01b600052601160045260246000fd5b818103818111156124d8576124d8613a8c565b6000816000190483118215151615613acf57613acf613a8c565b500290565b808201808211156124d8576124d8613a8c565b6001600160401b03828116828216039080821115613b0757613b07613a8c565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082613b3357613b33613b0e565b500690565b600082613b4757613b47613b0e565b500490565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b03831660208201526060604082018190526000906118bd90830184613a0f565b60008251613ba48184602087016139eb565b9190910192915050565b600060208284031215613bc057600080fd5b81516001600160e01b03198116811461182357600080fd5b600060ff831680613beb57613beb613b0e565b8060ff84160691505092915050565b60ff82811682821603908111156124d8576124d8613a8c565b600060018201613c2557613c25613a8c565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613cff578160001904821115613ce557613ce5613a8c565b80851615613cf257918102915b93841c9390800290613cc9565b509250929050565b600082613d16575060016124d8565b81613d23575060006124d8565b8160018114613d395760028114613d4357613d5f565b60019150506124d8565b60ff841115613d5457613d54613a8c565b50506001821b6124d8565b5060208310610133831016604e8410600b8410161715613d82575081810a6124d8565b613d8c8383613cc4565b8060001904821115613da057613da0613a8c565b029392505050565b60006118238383613d0756fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220ffef3fe749371bc9cd6e39e07a20cc763031009832510c7d1e9d1a99c1483f0c64736f6c63430008100033", + "sourceMap": "399:626:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:145;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:145;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:145;4866:1891:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:145;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:145;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:145;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:145;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;630:83:6;;;:::i;879:30:103:-;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:145;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:145;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:145;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:145;719:304:6;;;;;;:::i;:::-;;:::i;924:58:100:-;;973:9;924:58;;4866:1891;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:145;;5661:52:100;;::::1;7526:50:145::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:145;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;9330:2:145;5727:58:100::1;::::0;::::1;9312:21:145::0;9369:2;9349:18;;;9342:30;-1:-1:-1;;;9388:18:145;;;9381:51;9449:18;;5727:58:100::1;;;;;;;;;5799:12;5830:84;5853:12;5867:17;;5830:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5886:10:100;;-1:-1:-1;5898:7:100;;-1:-1:-1;5907:6:100;;-1:-1:-1;5830:22:100::1;:84::i;:::-;5799:115;;5936:7;5928:47;;;::::0;-1:-1:-1;;;5928:47:100;;9680:2:145;5928:47:100::1;::::0;::::1;9662:21:145::0;9719:2;9699:18;;;9692:30;9758:29;9738:18;;;9731:57;9805:18;;5928:47:100::1;9478:351:145::0;5928:47:100::1;5462:524;;;;6209:26;6263:320;6309:12;;6263:320;;;;;:::i;:::-;6459:21;::::0;;::::1;::::0;6446:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6343:12;;6377:17;;6416:8;;-1:-1:-1;;;;;6446:35:100::1;1151:46;1484:1;6263:24;:320::i;:::-;6209:388;;6641:11;6619:18;:33;6611:67;;;::::0;-1:-1:-1;;;6611:67:100;;10975:2:145;6611:67:100::1;::::0;::::1;10957:21:145::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:145;;;11026:51;11094:18;;6611:67:100::1;10773:345:145::0;6611:67:100::1;5996:693;6699:51;6715:7;6724:11;6737:12;;6699:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6699:15:100::1;::::0;-1:-1:-1;;;6699:51:100:i:1;:::-;5185:1572;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1891:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;11342:3:145;11320:16;;;;-1:-1:-1;;;;;;11316:43:145;2955:82:100;;::::1;11304:56:145::0;11415:3;11393:16;;;-1:-1:-1;;;;;;11389:51:145;11376:11;;;11369:72;11479:2;11475:15;-1:-1:-1;;11475:15:145;11457:12;;;11450:75;2955:82:100;;;;;;;;;11541:12:145;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:145;;3301:61:100;;::::1;7526:50:145::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:145;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;11766:2:145;3380:67:100::1;::::0;::::1;11748:21:145::0;11805:2;11785:18;;;11778:30;11844:33;11824:18;;;11817:61;11895:18;;3380:67:100::1;11564:355:145::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;12114:31:145;;;;12096:50;;12177:2;12162:18;;12155:34;12084:2;12069:18;;11924:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:145::0;3826:80:100;;;;;;;;;498:18:145;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10975:2:145;4090:31:100::1;::::0;::::1;10957:21:145::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:145;;;11026:51;11094:18;;4090:31:100::1;10773:345:145::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;630:83:6:-;697:8;;-1:-1:-1;;;;;697:8:6;683:10;:22;675:31;;;;;;630:83::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;719:304:6:-;931:7;;-1:-1:-1;;;;;931:7:6;917:10;:21;909:30;;;;;;988:8;980:6;-1:-1:-1;;;;;954:62:6;970:8;954:62;;;998:8;1008:7;954:62;;;;;;;:::i;:::-;;;;;;;;719:304;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;13235:2:145;2704:63:39;;;13217:21:145;13274:2;13254:18;;;13247:30;13313:33;13293:18;;;13286:61;13364:18;;2704:63:39;13033:355:145;2704:63:39;1830:1;2842:7;:18;2580:287::o;7985:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8106:7:100;8129:22;8154:36;8177:12;;8154:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8154:22:100;;-1:-1:-1;;;8154:36:100:i;:::-;8129:61;;8200:19;8232:12;;8222:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8290:26:100;8260;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8256:562;;8332:35;;-1:-1:-1;;;8332:35:100;;13871:2:145;8332:35:100;;;13853:21:145;13910:2;13890:18;;;13883:30;13949:27;13929:18;;;13922:55;13994:18;;8332:35:100;13669:349:145;8256:562:100;8418:13;8388:7;:26;;;:43;;;8384:434;;8447:22;;-1:-1:-1;;;8447:22:100;;14225:2:145;8447:22:100;;;14207:21:145;14264:2;14244:18;;;14237:30;-1:-1:-1;;;14283:18:145;;;14276:42;14335:18;;8447:22:100;14023:336:145;8384:434:100;8509:7;;8490:15;;8509:7;8490:26;;;8509:7;;8490:26;8486:332;;8532:24;;-1:-1:-1;;;8532:24:100;;14566:2:145;8532:24:100;;;14548:21:145;14605:2;14585:18;;;14578:30;-1:-1:-1;;;14624:18:145;;;14617:44;14678:18;;8532:24:100;14364:338:145;8486:332:100;8611:21;;;;;8598:35;;8646:1;8598:35;;;:12;:35;;;;-1:-1:-1;;;;;8598:35:100;8590:58;;:127;;-1:-1:-1;8681:21:100;;;;;8668:35;;8715:1;8668:35;;;:12;:35;;;;-1:-1:-1;;;;;8668:35:100;:49;8590:127;8573:245;;;8742:65;;-1:-1:-1;;;8742:65:100;;14909:2:145;8742:65:100;;;14891:21:145;14948:2;14928:18;;;14921:30;14987:34;14967:18;;;14960:62;15058:25;15038:18;;;15031:53;15101:19;;8742:65:100;14707:419:145;8573:245:100;8835:7;;-1:-1:-1;8844:11:100;-1:-1:-1;7985:878:100;;;;;;:::o;6843:253::-;6938:21;;;6972:1;6938:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6938:21:100;6922:81;;;;-1:-1:-1;;;6922:81:100;;15333:2:145;6922:81:100;;;15315:21:145;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:145;;;15384:54;15455:18;;6922:81:100;15131:348:145;6922:81:100;7021:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7021:34:100;;;;-1:-1:-1;;;;;7021:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7013:76;;;;-1:-1:-1;;;7013:76:100;;15936:2:145;7013:76:100;;;15918:21:145;15975:2;15955:18;;;15948:30;16014:31;15994:18;;;15987:59;16063:18;;7013:76:100;15734:353:145;7013:76:100;6843:253;:::o;7157:121::-;7232:15;;;;;;;:6;:15;;;;;;;;7231:16;7223:48;;;;-1:-1:-1;;;7223:48:100;;16294:2:145;7223:48:100;;;16276:21:145;16333:2;16313:18;;;16306:30;-1:-1:-1;;;16352:18:145;;;16345:49;16411:18;;7223:48:100;16092:343:145;7348:452:100;7450:21;;;7484:1;7450:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7450:21:100;7434:81;;;;-1:-1:-1;;;7434:81:100;;15333:2:145;7434:81:100;;;15315:21:145;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:145;;;15384:54;15455:18;;7434:81:100;15131:348:145;7434:81:100;7533:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7533:38:100;;-1:-1:-1;;;;;7544:31:145;;7533:38:100;;;7526:50:145;;;;-1:-1:-1;;;;;7533:21:100;;;;:32;;7499:18:145;;7533:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7575:1;7533:43;7525:86;;;;-1:-1:-1;;;7525:86:100;;16831:2:145;7525:86:100;;;16813:21:145;16870:2;16850:18;;;16843:30;16909:32;16889:18;;;16882:60;16959:18;;7525:86:100;16629:354:145;7525:86:100;7661:21;;;7621:19;7661:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7661:38:100;;-1:-1:-1;;;;;7544:31:145;;7661:38:100;;;7526:50:145;;;;-1:-1:-1;;;;;7661:21:100;;:32;;7499:18:145;;7661:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7643:56;;:15;:56;:::i;:::-;7621:78;;973:9;7717:11;:37;;7709:84;;;;-1:-1:-1;;;7709:84:100;;17455:2:145;7709:84:100;;;17437:21:145;17494:2;17474:18;;;17467:30;17533:34;17513:18;;;17506:62;-1:-1:-1;;;17584:18:145;;;17577:32;17626:19;;7709:84:100;17253:398:145;7709:84:100;7424:376;7348:452;;:::o;3024:1184:109:-;3230:4;3246:13;3284:6;-1:-1:-1;;;;;3273:17:109;:7;-1:-1:-1;;;;;3273:17:109;;3269:845;;-1:-1:-1;3314:5:109;3341:14;3314:5;3349:6;3341:14;:::i;:::-;:20;;3358:3;3341:20;:::i;:::-;3333:28;;3269:845;;;304:4;3382:16;3392:6;3382:7;:16;:::i;:::-;-1:-1:-1;;;;;3382:45:109;;3378:736;;-1:-1:-1;3451:5:109;3478:14;3451:5;3486:6;3478:14;:::i;:::-;:18;;3495:1;3478:18;:::i;:::-;3470:26;-1:-1:-1;3554:34:109;304:4;-1:-1:-1;;;;;3554:34:109;;;:::i;:::-;3518:33;304:4;3518:5;:33;:::i;:::-;:70;;;;:::i;:::-;3510:78;-1:-1:-1;3610:14:109;3510:78;3618:6;3610:14;:::i;3378:736::-;3660:7;-1:-1:-1;;;;;3651:16:109;:6;-1:-1:-1;;;;;3651:16:109;;3647:467;;;-1:-1:-1;3691:5:109;3718:14;3691:5;3726:6;3718:14;:::i;:::-;:18;;3735:1;3718:18;:::i;:::-;3710:26;-1:-1:-1;3758:9:109;3710:26;3766:1;3758:9;:::i;:::-;:13;;3770:1;3758:13;:::i;:::-;3750:21;-1:-1:-1;3826:34:109;304:4;-1:-1:-1;;;;;3826:34:109;;;:::i;:::-;3793:30;236:8;3793:5;:30;:::i;:::-;:67;;;;:::i;:::-;3785:75;-1:-1:-1;3882:9:109;3785:75;3890:1;3882:9;:::i;:::-;:13;;3894:1;3882:13;:::i;3647:467::-;4060:43;;-1:-1:-1;;;4060:43:109;;18723:2:145;4060:43:109;;;18705:21:145;18762:2;18742:18;;;18735:30;18801:34;18781:18;;;18774:62;-1:-1:-1;;;18852:18:145;;;18845:31;18893:19;;4060:43:109;18521:397:145;3647:467:109;4130:71;4150:12;4164:5;4171:17;4190:10;4130:19;:71::i;:::-;4123:78;3024:1184;-1:-1:-1;;;;;;;3024:1184:109:o;1420:2836:110:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:110;;-1:-1:-1;2441:14:110;-1:-1:-1;;;2469:25:110;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:110;;;2469:54;2465:236;;;-1:-1:-1;2548:1:110;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:110;;;2566:135;;-1:-1:-1;2620:1:110;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:110;;19257:2:145;2652:38:110;;;19239:21:145;19296:2;19276:18;;;19269:30;19335;19315:18;;;19308:58;19383:18;;2652:38:110;19055:352:145;2566:135:110;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:110;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:110;;19614:2:145;3233:58:110;;;19596:21:145;19653:2;19633:18;;;19626:30;-1:-1:-1;;;19672:18:145;;;19665:52;19734:18;;3233:58:110;19412:346:145;3233:58:110;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:110;;19965:2:145;3450:58:110;;;19947:21:145;20004:2;19984:18;;;19977:30;20043:25;20023:18;;;20016:53;20086:18;;3450:58:110;19763:347:145;3450:58:110;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:110;;20317:2:145;3594:70:110;;;20299:21:145;20356:2;20336:18;;;20329:30;20395:34;20375:18;;;20368:62;-1:-1:-1;;;20446:18:145;;;20439:32;20488:19;;3594:70:110;20115:398:145;3594:70:110;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:110;:15;-1:-1:-1;;;;;3811:33:110;;3803:85;;;;-1:-1:-1;;;3803:85:110;;20720:2:145;3803:85:110;;;20702:21:145;20759:2;20739:18;;;20732:30;20798:34;20778:18;;;20771:62;-1:-1:-1;;;20849:18:145;;;20842:37;20896:19;;3803:85:110;20518:403:145;3803:85:110;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:110;;21128:2:145;4057:142:110;;;21110:21:145;21167:2;21147:18;;;21140:30;21206:34;21186:18;;;21179:62;-1:-1:-1;;;21257:18:145;;;21250:43;21310:19;;4057:142:110;20926:409:145;4057:142:110;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9345:1529:100:-;9473:11;9494:17;9535:24;9602:42;;;9662:7;:21;;;9701:7;:21;;;9740:7;:12;;;9562:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9562:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9562:204:100;-1:-1:-1;;;;;;9562:204:100;;;;;;;;;;9822:26;;;;9562:204;;-1:-1:-1;9880:11:100;-1:-1:-1;;;;;9880:16:100;9897:11;9880:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10350:11:100;;9863:46;;-1:-1:-1;9863:46:100;-1:-1:-1;10306:22:100;;-1:-1:-1;10365:2:100;10350:17;;-1:-1:-1;10346:176:100;;10384:12;10411:4;10400:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10460:51:100;-1:-1:-1;;;10460:51:100;;-1:-1:-1;;10346:176:100;10536:6;:27;;;;;10546:17;10536:27;10532:210;;;10579:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10579:62:100;10608:33;10579:62;;;10532:210;;;10672:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10672:59:100;10701:30;10672:59;;;10532:210;10824:11;10809:7;:13;;;-1:-1:-1;;;;;10757:110:100;10786:7;:21;;;10757:110;;;10837:12;10851:6;10757:110;;;;;;;:::i;:::-;;;;;;;;9463:1411;;;9345:1529;;;:::o;735:581:110:-;927:33;;-1:-1:-1;;22481:2:145;22477:15;;;22473:53;927:33:110;;;22461:66:145;872:7:110;;;;22543:12:145;;927:33:110;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;22695:19:145;;22739:2;22730:12;;22566:182;1014:29:110;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:110;;22955:2:145;1072:58:110;;;22937:21:145;22994:2;22974:18;;;22967:30;-1:-1:-1;;;23013:18:145;;;23006:52;23075:18;;1072:58:110;22753:346:145;1072:58:110;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:110;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;22695:19:145;;22739:2;22730:12;;22566:182;538:26:110;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:110;;23306:2:145;601:65:110;;;23288:21:145;23345:2;23325:18;;;23318:30;23384;23364:18;;;23357:58;23432:18;;601:65:110;23104:352:145;601:65:110;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:110:o;4295:1028:107:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:107;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:107;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:107;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:107;;4295:1028;-1:-1:-1;;;;;;4295:1028:107:o;1770:281:109:-;1914:4;1934:26;1963:38;1981:4;1987:5;1994:6;1963:17;:38::i;:::-;2018:26;;;;1770:281;-1:-1:-1;;;;;1770:281:109:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;23663:2:145;3101:49:77;;;23645:21:145;23702:2;23682:18;;;23675:30;-1:-1:-1;;;23721:18:145;;;23714:51;23782:18;;3101:49:77;23461:345:145;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;22695:19:145;;22739:2;22730:12;;22566:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;24013:2:145;3636:134:77;;;23995:21:145;24052:2;24032:18;;;24025:30;24091:34;24071:18;;;24064:62;-1:-1:-1;;;24142:18:145;;;24135:44;24196:19;;3636:134:77;23811:410:145;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;22695:19:145;;;22739:2;22730:12;;22566:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;24428:2:145;3893:176:77;;;24410:21:145;24467:2;24447:18;;;24440:30;24506:31;24486:18;;;24479:59;24555:18;;3893:176:77;24226:353:145;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;22695:19:145;;;22739:2;22730:12;;22566:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;24786:2:145;4222:186:77;;;24768:21:145;24825:2;24805:18;;;24798:30;24864:34;24844:18;;;24837:62;-1:-1:-1;;;24915:18:145;;;24908:37;24962:19;;4222:186:77;24584:403:145;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;25194:2:145;4509:156:77;;;25176:21:145;25233:2;25213:18;;;25206:30;25272:34;25252:18;;;25245:62;-1:-1:-1;;;25323:18:145;;;25316:36;25369:19;;4509:156:77;24992:402:145;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;25601:2:145;5384:158:77;;;25583:21:145;25640:2;25620:18;;;25613:30;25679:34;25659:18;;;25652:62;25750:29;25730:18;;;25723:57;25797:19;;5384:158:77;25399:423:145;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;26029:2:145;5626:162:77;;;26011:21:145;26068:2;26048:18;;;26041:30;26107:34;26087:18;;;26080:62;26178:28;26158:18;;;26151:56;26224:19;;5626:162:77;25827:422:145;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;26774:2:145;7009:171:77;;;26756:21:145;26813:2;26793:18;;;26786:30;26852:34;26832:18;;;26825:62;26923:28;26903:18;;;26896:56;26969:19;;7009:171:77;26572:422:145;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;27201:2:145;7843:185:77;;;27183:21:145;27240:2;27220:18;;;27213:30;27279:34;27259:18;;;27252:62;27350:31;27330:18;;;27323:59;27399:19;;7843:185:77;26999:425:145;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;27631:2:145;8463:156:77;;;27613:21:145;27670:2;27650:18;;;27643:30;27709:34;27689:18;;;27682:62;27780:27;27760:18;;;27753:55;27825:19;;8463:156:77;27429:421:145;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;28057:2:145;8703:160:77;;;28039:21:145;28096:2;28076:18;;;28069:30;28135:34;28115:18;;;28108:62;28206:26;28186:18;;;28179:54;28250:19;;8703:160:77;27855:420:145;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;28482:2:145;9439:60:77;;;28464:21:145;28521:2;28501:18;;;28494:30;28560:34;28540:18;;;28533:62;-1:-1:-1;;;28611:18:145;;;28604:48;28669:19;;9439:60:77;28280:414:145;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;28901:2:145;9556:50:77;;;28883:21:145;28940:2;28920:18;;;28913:30;28979:34;28959:18;;;28952:62;-1:-1:-1;;;29030:18:145;;;29023:38;29078:19;;9556:50:77;28699:404:145;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;29450:2:145;9641:47:77;;;29432:21:145;29489:2;29469:18;;;29462:30;29528:34;29508:18;;;29501:62;-1:-1:-1;;;29579:18:145;;;29572:35;29624:19;;9641:47:77;29248:401:145;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;29856:2:145;2161:136:75;;;29838:21:145;29895:2;29875:18;;;29868:30;29934:34;29914:18;;;29907:62;30005:26;29985:18;;;29978:54;30049:19;;2161:136:75;29654:420:145;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;30281:2:145;2308:134:75;;;30263:21:145;30320:2;30300:18;;;30293:30;30359:34;30339:18;;;30332:62;-1:-1:-1;;;30410:18:145;;;30403:48;30468:19;;2308:134:75;30079:414:145;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;30700:2:145;12579:55:75;;;30682:21:145;30739:2;30719:18;;;30712:30;30778:28;30758:18;;;30751:56;30824:18;;12579:55:75;30498:350:145;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;31055:2:145;11438:55:75;;;31037:21:145;31094:2;31074:18;;;31067:30;31133:28;31113:18;;;31106:56;31179:18;;11438:55:75;30853:350:145;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;31055:2:145;11598:72:75;;;31037:21:145;31094:2;31074:18;;;31067:30;31133:28;31113:18;;;31106:56;31179:18;;11598:72:75;30853:350:145;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:107:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:107;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:107;;32236:2:145;409:63:107;;;32218:21:145;32275:2;32255:18;;;32248:30;-1:-1:-1;;;32294:18:145;;;32287:47;32351:18;;409:63:107;32034:341:145;409:63:107;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:107;;;2803:2;2786:11;-1:-1:-1;;2782:25:107;2776:4;2769:39;-1:-1:-1;617:2736:107;-1:-1:-1;3380:9:107;205:3191;-1:-1:-1;;;;205:3191:107:o;1213:551:109:-;1341:7;1399:5;1378:6;:13;1394:1;1378:17;;;;:::i;:::-;1372:24;;:1;:24;:::i;:::-;:32;1364:41;;;;;;1431:4;1415:13;1468:268;1475:5;1484:1;1475:10;1468:268;;1505:9;1513:1;1505:5;:9;:::i;:::-;1518:1;1505:14;1501:184;;1547:38;1567:6;1574:1;1567:9;;;;;;;;:::i;:::-;;;;;;;1578:5;1554:30;;;;;;;;33911:19:145;;;33955:2;33946:12;;33939:28;33992:2;33983:12;;33754:247;1554:30:109;;;;-1:-1:-1;;1554:30:109;;;;;;;;;;1547:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1539:46;;1501:184;;;1632:38;1652:5;1659:6;1666:1;1659:9;;;;;;;;:::i;:::-;;;;;;;1639:30;;;;;;;;33911:19:145;;;33955:2;33946:12;;33939:28;33992:2;33983:12;;33754:247;1639:30:109;;;;-1:-1:-1;;1639:30:109;;;;;;;;;;1632:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1624:46;;1501:184;1698:10;1707:1;1698:10;;:::i;:::-;;-1:-1:-1;1722:3:109;;;;:::i;:::-;;;;1468:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;34208:2:145;4505:137:75;;;34190:21:145;34247:2;34227:18;;;34220:30;34286:34;34266:18;;;34259:62;34357:27;34337:18;;;34330:55;34402:19;;4505:137:75;34006:421:145;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;34634:2:145;4653:136:75;;;34616:21:145;34673:2;34653:18;;;34646:30;34712:34;34692:18;;;34685:62;-1:-1:-1;;;34763:18:145;;;34756:50;34823:19;;4653:136:75;34432:416:145;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;35055:2:145;6699:156:75;;;35037:21:145;35094:2;35074:18;;;35067:30;-1:-1:-1;;;;;;;;;;;35113:18:145;;;35106:62;35204:34;35184:18;;;35177:62;-1:-1:-1;;;35255:19:145;;;35248:45;35310:19;;6699:156:75;34853:482:145;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;35542:2:145;7025:177:75;;;35524:21:145;35581:2;35561:18;;;35554:30;35620:34;35600:18;;;35593:62;35691:34;35671:18;;;35664:62;-1:-1:-1;;;35742:19:145;;;35735:44;35796:19;;7025:177:75;35340:481:145;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;36028:2:145;7387:164:75;;;36010:21:145;36067:2;36047:18;;;36040:30;-1:-1:-1;;;;;;;;;;;36086:18:145;;;36079:62;36177:34;36157:18;;;36150:62;-1:-1:-1;;;36228:19:145;;;36221:48;36286:19;;7387:164:75;35826:485:145;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;36518:2:145;7721:159:75;;;36500:21:145;36557:2;36537:18;;;36530:30;-1:-1:-1;;;;;;;;;;;36576:18:145;;;36569:62;36667:34;36647:18;;;36640:62;-1:-1:-1;;;36718:19:145;;;36711:41;36769:19;;7721:159:75;36316:478:145;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;37001:2:145;8042:142:75;;;36983:21:145;37040:2;37020:18;;;37013:30;-1:-1:-1;;;;;;;;;;;37059:18:145;;;37052:62;37150:34;37130:18;;;37123:62;-1:-1:-1;;;37201:19:145;;;37194:39;37250:19;;8042:142:75;36799:476:145;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;37482:2:145;8199:168:75;;;37464:21:145;37521:2;37501:18;;;37494:30;-1:-1:-1;;;;;;;;;;;37540:18:145;;;37533:62;37631:34;37611:18;;;37604:62;-1:-1:-1;;;37682:19:145;;;37675:43;37735:19;;8199:168:75;37280:480:145;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;37967:2:145;8617:153:75;;;37949:21:145;38006:2;37986:18;;;37979:30;-1:-1:-1;;;;;;;;;;;38025:18:145;;;38018:62;38116:34;38096:18;;;38089:62;-1:-1:-1;;;38167:19:145;;;38160:41;38218:19;;8617:153:75;37765:478:145;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;38450:2:145;8935:161:75;;;38432:21:145;38489:2;38469:18;;;38462:30;-1:-1:-1;;;;;;;;;;;38508:18:145;;;38501:62;38599:34;38579:18;;;38572:62;-1:-1:-1;;;38650:19:145;;;38643:44;38704:19;;8935:161:75;38248:481:145;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;38936:2:145;9266:157:75;;;38918:21:145;38975:2;38955:18;;;38948:30;-1:-1:-1;;;;;;;;;;;38994:18:145;;;38987:62;39085:34;39065:18;;;39058:62;-1:-1:-1;;;39136:19:145;;;39129:39;39185:19;;9266:157:75;38734:476:145;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;39417:2:145;9588:141:75;;;39399:21:145;39456:2;39436:18;;;39429:30;-1:-1:-1;;;;;;;;;;;39475:18:145;;;39468:62;39566:34;39546:18;;;39539:62;-1:-1:-1;;;39617:19:145;;;39610:37;39664:19;;9588:141:75;39215:474:145;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;39896:2:145;9744:168:75;;;39878:21:145;39935:2;39915:18;;;39908:30;-1:-1:-1;;;;;;;;;;;39954:18:145;;;39947:62;40045:34;40025:18;;;40018:62;-1:-1:-1;;;40096:19:145;;;40089:41;40147:19;;9744:168:75;39694:478:145;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;32236:2:145;989:63:74;;;32218:21:145;32275:2;32255:18;;;32248:30;-1:-1:-1;;;32294:18:145;;;32287:47;32351:18;;989:63:74;32034:341:145;14:171;81:20;;-1:-1:-1;;;;;130:30:145;;120:41;;110:69;;175:1;172;165:12;110:69;14:171;;;:::o;190:184::-;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:145;;-1:-1:-1;;;;;1222:30:145;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:145;;-1:-1:-1;;;;;1586:30:145;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:145;1991:40;;-1:-1:-1;;;;;2046:34:145;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:145:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:145;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:145;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:145:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:145;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:145;-1:-1:-1;3373:2:145;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:145;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:145;-1:-1:-1;3615:2:145;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:145;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:145;-1:-1:-1;3873:2:145;3858:18;;3845:32;;-1:-1:-1;3920:3:145;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:145;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:145;-1:-1:-1;4176:3:145;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:145;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:145;;4362:180;-1:-1:-1;4362:180:145:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:145;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:145;-1:-1:-1;6516:2:145;6501:18;;6488:32;;-1:-1:-1;6532:16:145;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:145;-1:-1:-1;6779:2:145;6764:18;;6751:32;;-1:-1:-1;6795:16:145;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:145;;-1:-1:-1;5840:1155:145;;;;6837:98;;-1:-1:-1;;;5840:1155:145:o;7587:118::-;7673:5;7666:13;7659:21;7652:5;7649:32;7639:60;;7695:1;7692;7685:12;7710:757;7809:6;7817;7825;7833;7841;7894:3;7882:9;7873:7;7869:23;7865:33;7862:53;;;7911:1;7908;7901:12;7862:53;7950:9;7937:23;8000:6;7993:5;7989:18;7982:5;7979:29;7969:57;;8022:1;8019;8012:12;7969:57;8045:5;-1:-1:-1;8069:37:145;8102:2;8087:18;;8069:37;:::i;:::-;8059:47;;8153:2;8142:9;8138:18;8125:32;8115:42;;8208:2;8197:9;8193:18;8180:32;-1:-1:-1;;;;;8227:6:145;8224:30;8221:50;;;8267:1;8264;8257:12;8221:50;8290:49;8331:7;8322:6;8311:9;8307:22;8290:49;:::i;:::-;8280:59;;;8391:3;8380:9;8376:19;8363:33;8405:30;8427:7;8405:30;:::i;:::-;8454:7;8444:17;;;7710:757;;;;;;;;:::o;8472:256::-;8538:6;8546;8599:2;8587:9;8578:7;8574:23;8570:32;8567:52;;;8615:1;8612;8605:12;8567:52;8638:28;8656:9;8638:28;:::i;:::-;8628:38;;8685:37;8718:2;8707:9;8703:18;8685:37;:::i;:::-;8675:47;;8472:256;;;;;:::o;8939:184::-;9009:6;9062:2;9050:9;9041:7;9037:23;9033:32;9030:52;;;9078:1;9075;9068:12;9030:52;-1:-1:-1;9101:16:145;;8939:184;-1:-1:-1;8939:184:145:o;9834:934::-;9970:9;-1:-1:-1;;;;;10045:2:145;10037:6;10034:14;10031:40;;;10051:18;;:::i;:::-;10097:6;10094:1;10090:14;10123:4;10147:28;10171:2;10167;10163:11;10147:28;:::i;:::-;10209:19;;;10279:14;;;;10244:12;;;;10316:14;10305:26;;10302:46;;;10344:1;10341;10334:12;10302:46;10368:5;10382:353;10398:6;10393:3;10390:15;10382:353;;;10484:3;10471:17;10520:2;10507:11;10504:19;10501:109;;;10564:1;10593:2;10589;10582:14;10501:109;10635:57;10677:14;10663:11;10656:5;10652:23;10635:57;:::i;:::-;10623:70;;-1:-1:-1;10713:12:145;;;;10415;;10382:353;;;-1:-1:-1;10757:5:145;9834:934;-1:-1:-1;;;;;;;9834:934:145:o;12200:250::-;12285:1;12295:113;12309:6;12306:1;12303:13;12295:113;;;12385:11;;;12379:18;12366:11;;;12359:39;12331:2;12324:10;12295:113;;;-1:-1:-1;;12442:1:145;12424:16;;12417:27;12200:250::o;12455:270::-;12496:3;12534:5;12528:12;12561:6;12556:3;12549:19;12577:76;12646:6;12639:4;12634:3;12630:14;12623:4;12616:5;12612:16;12577:76;:::i;:::-;12707:2;12686:15;-1:-1:-1;;12682:29:145;12673:39;;;;12714:4;12669:50;;12455:270;-1:-1:-1;;12455:270:145:o;12730:298::-;12899:2;12888:9;12881:21;12862:4;12919:44;12959:2;12948:9;12944:18;12936:6;12919:44;:::i;:::-;12911:52;;13013:6;13006:14;12999:22;12994:2;12983:9;12979:18;12972:50;12730:298;;;;;:::o;13393:271::-;13576:6;13568;13563:3;13550:33;13532:3;13602:16;;13627:13;;;13602:16;13393:271;-1:-1:-1;13393:271:145:o;15484:245::-;15551:6;15604:2;15592:9;15583:7;15579:23;15575:32;15572:52;;;15620:1;15617;15610:12;15572:52;15652:9;15646:16;15671:28;15693:5;15671:28;:::i;16988:127::-;17049:10;17044:3;17040:20;17037:1;17030:31;17080:4;17077:1;17070:15;17104:4;17101:1;17094:15;17120:128;17187:9;;;17208:11;;;17205:37;;;17222:18;;:::i;17656:168::-;17696:7;17762:1;17758;17754:6;17750:14;17747:1;17744:21;17739:1;17732:9;17725:17;17721:45;17718:71;;;17769:18;;:::i;:::-;-1:-1:-1;17809:9:145;;17656:168::o;17829:125::-;17894:9;;;17915:10;;;17912:36;;;17928:18;;:::i;17959:183::-;-1:-1:-1;;;;;18078:10:145;;;18066;;;18062:27;;18101:12;;;18098:38;;;18116:18;;:::i;:::-;18098:38;17959:183;;;;:::o;18147:127::-;18208:10;18203:3;18199:20;18196:1;18189:31;18239:4;18236:1;18229:15;18263:4;18260:1;18253:15;18279:112;18311:1;18337;18327:35;;18342:18;;:::i;:::-;-1:-1:-1;18376:9:145;;18279:112::o;18396:120::-;18436:1;18462;18452:35;;18467:18;;:::i;:::-;-1:-1:-1;18501:9:145;;18396:120::o;18923:127::-;18984:10;18979:3;18975:20;18972:1;18965:31;19015:4;19012:1;19005:15;19039:4;19036:1;19029:15;21340:400;21553:10;21541:23;;21523:42;;-1:-1:-1;;;;;21601:32:145;;21596:2;21581:18;;21574:60;21670:2;21665;21650:18;;21643:30;;;-1:-1:-1;;21690:44:145;;21715:18;;21707:6;21690:44;:::i;21745:287::-;21874:3;21912:6;21906:13;21928:66;21987:6;21982:3;21975:4;21967:6;21963:17;21928:66;:::i;:::-;22010:16;;;;;21745:287;-1:-1:-1;;21745:287:145:o;22037:290::-;22106:6;22159:2;22147:9;22138:7;22134:23;22130:32;22127:52;;;22175:1;22172;22165:12;22127:52;22201:16;;-1:-1:-1;;;;;;22246:32:145;;22236:43;;22226:71;;22293:1;22290;22283:12;26254:157;26284:1;26318:4;26315:1;26311:12;26342:3;26332:37;;26349:18;;:::i;:::-;26401:3;26394:4;26391:1;26387:12;26383:22;26378:27;;;26254:157;;;;:::o;26416:151::-;26506:4;26499:12;;;26485;;;26481:31;;26524:14;;26521:40;;;26541:18;;:::i;29108:135::-;29147:3;29168:17;;;29165:43;;29188:18;;:::i;:::-;-1:-1:-1;29235:1:145;29224:13;;29108:135::o;31208:478::-;31410:2;31392:21;;;31449:2;31429:18;;;31422:30;31488:34;31483:2;31468:18;;31461:62;31559:34;31554:2;31539:18;;31532:62;-1:-1:-1;;;31625:3:145;31610:19;;31603:41;31676:3;31661:19;;31208:478::o;31691:338::-;31893:2;31875:21;;;31932:2;31912:18;;;31905:30;-1:-1:-1;;;31966:2:145;31951:18;;31944:44;32020:2;32005:18;;31691:338::o;32380:422::-;32469:1;32512:5;32469:1;32526:270;32547:7;32537:8;32534:21;32526:270;;;32606:4;32602:1;32598:6;32594:17;32588:4;32585:27;32582:53;;;32615:18;;:::i;:::-;32665:7;32655:8;32651:22;32648:55;;;32685:16;;;;32648:55;32764:22;;;;32724:15;;;;32526:270;;;32530:3;32380:422;;;;;:::o;32807:806::-;32856:5;32886:8;32876:80;;-1:-1:-1;32927:1:145;32941:5;;32876:80;32975:4;32965:76;;-1:-1:-1;33012:1:145;33026:5;;32965:76;33057:4;33075:1;33070:59;;;;33143:1;33138:130;;;;33050:218;;33070:59;33100:1;33091:10;;33114:5;;;33138:130;33175:3;33165:8;33162:17;33159:43;;;33182:18;;:::i;:::-;-1:-1:-1;;33238:1:145;33224:16;;33253:5;;33050:218;;33352:2;33342:8;33339:16;33333:3;33327:4;33324:13;33320:36;33314:2;33304:8;33301:16;33296:2;33290:4;33287:12;33283:35;33280:77;33277:159;;;-1:-1:-1;33389:19:145;;;33421:5;;33277:159;33468:34;33493:8;33487:4;33468:34;:::i;:::-;33538:6;33534:1;33530:6;33526:19;33517:7;33514:32;33511:58;;;33549:18;;:::i;:::-;33587:20;;32807:806;-1:-1:-1;;;32807:806:145:o;33618:131::-;33678:5;33707:36;33734:8;33728:4;33707:36;:::i", + "linkReferences": {} + }, + "methodIdentifiers": { + "MIN_LIGHT_CLIENT_DELAY()": "e4407b15", + "broadcasters(uint32)": "59f89787", + "emitFakeExecutedMessageEvent(uint16,uint64,bytes32,bytes,bool)": "bd6a0134", + "executeMessage(uint64,bytes,bytes[],bytes[])": "7acc6754", + "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": "37d5af84", + "freezeAll()": "99464c89", + "frozen(uint32)": "36ae7c18", + "lightClients(uint32)": "7599735c", + "messageStatus(bytes32)": "3c6cf473", + "messages(uint64)": "029d6713", + "nonce()": "affed0e0", + "sendingEnabled()": "3e99e9ce", + "sourceChainIds(uint256)": "9efeff1c", + "sourceChainIdsLength()": "4552f563", + "storageRootCache(bytes32)": "8d080d1d", + "version()": "54fd4d50" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_chainId\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"emitFakeExecutedMessageEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"title\":\"DrillTelepathy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillTelepathyRouter.sol\":\"DrillTelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillTelepathyRouter.sol\":{\"keccak256\":\"0x8fd77f1ceb7b9b93a7ab6cdd7968dcec008dbe3e4c95a16beda0229dfcd877b1\",\"urls\":[\"bzz-raw://037194f122d0feb30b2b15795d6f15fd44fbff86a063784c2b6eb974f2055a66\",\"dweb:/ipfs/QmfDEUKppow33XTcGSyHGxj62yE31HCSwQJYky5RdCnWWp\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_guardian", + "type": "address" + }, + { + "internalType": "address", + "name": "_emitter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32", + "indexed": true + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes", + "indexed": false + }, + { + "internalType": "bool", + "name": "status", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "ExecutedMessage", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "version", + "type": "uint8", + "indexed": false + } + ], + "type": "event", + "name": "Initialized", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "MIN_LIGHT_CLIENT_DELAY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "_msgHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "emitFakeExecutedMessageEvent" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes[]", + "name": "accountProof", + "type": "bytes[]" + }, + { + "internalType": "bytes[]", + "name": "storageProof", + "type": "bytes[]" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "executeMessage" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "executeMessageFromLog" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "freezeAll" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function", + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "sourceChainIdsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "executeMessage(uint64,bytes,bytes[],bytes[])": { + "params": { + "accountProof": "Used to prove the broadcaster's state root.", + "messageBytes": "The message we want to execute provided as bytes.", + "slot": "Specifies which execution state root should be read from the light client.", + "storageProof": "Used to prove the existence of the message root inside the broadcaster." + } + }, + "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { + "params": { + "logIndex": "The index of the event in our transaction.", + "messageBytes": "The message we want to execute provided as bytes.", + "receiptsRoot": "The receipts root which contains our \"SentMessage\" event.", + "receiptsRootProof": "A merkle proof proving the receiptsRoot in the block header.", + "srcSlotTxSlotPack": "The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.", + "txIndexRLPEncoded": "The index of our transaction inside the block RLP encoded." + } + }, + "sourceChainIdsLength()": { + "returns": { + "_0": "The length of the sourceChainIds array." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "MIN_LIGHT_CLIENT_DELAY()": { + "notice": "The minimum delay for using any information from the light client." + }, + "broadcasters(uint32)": { + "notice": "Mapping between source chainId and the address of the Telepathy broadcaster on that chain." + }, + "executeMessage(uint64,bytes,bytes[],bytes[])": { + "notice": "Executes a message given a storage proof." + }, + "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { + "notice": "Executes a message given an event proof." + }, + "frozen(uint32)": { + "notice": "Mapping between a source chainId and whether it's frozen." + }, + "lightClients(uint32)": { + "notice": "Mapping between source chainId and the corresponding light client." + }, + "messageStatus(bytes32)": { + "notice": "Mapping between a message root and its status." + }, + "messages(uint64)": { + "notice": "Mapping between a nonce and a message root." + }, + "nonce()": { + "notice": "Keeps track of the next nonce to be used." + }, + "sendingEnabled()": { + "notice": "Whether sending is enabled or not." + }, + "sourceChainIds(uint256)": { + "notice": "All sourceChainIds." + }, + "sourceChainIdsLength()": { + "notice": "Gets the length of the sourceChainIds array." + }, + "storageRootCache(bytes32)": { + "notice": "Storage root cache." + }, + "version()": { + "notice": "Returns current contract version." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "examples/drills/DrillTelepathyRouter.sol": "DrillTelepathyRouter" + }, + "libraries": {} + }, + "sources": { + "examples/drills/DrillTelepathyRouter.sol": { + "keccak256": "0x8fd77f1ceb7b9b93a7ab6cdd7968dcec008dbe3e4c95a16beda0229dfcd877b1", + "urls": [ + "bzz-raw://037194f122d0feb30b2b15795d6f15fd44fbff86a063784c2b6eb974f2055a66", + "dweb:/ipfs/QmfDEUKppow33XTcGSyHGxj62yE31HCSwQJYky5RdCnWWp" + ], + "license": null + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", + "urls": [ + "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", + "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { + "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", + "urls": [ + "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", + "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", + "urls": [ + "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", + "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { + "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", + "urls": [ + "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", + "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { + "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", + "urls": [ + "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", + "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", + "urls": [ + "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", + "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { + "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", + "urls": [ + "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", + "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", + "urls": [ + "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", + "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { + "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", + "urls": [ + "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", + "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { + "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", + "urls": [ + "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", + "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", + "urls": [ + "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", + "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/Bytes.sol": { + "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", + "urls": [ + "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", + "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { + "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", + "urls": [ + "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", + "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { + "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", + "urls": [ + "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", + "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { + "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", + "urls": [ + "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", + "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" + ], + "license": "MIT" + }, + "src/amb/TargetAMB.sol": { + "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "urls": [ + "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", + "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + ], + "license": null + }, + "src/amb/TelepathyAccess.sol": { + "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", + "urls": [ + "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", + "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" + ], + "license": null + }, + "src/amb/TelepathyStorage.sol": { + "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", + "urls": [ + "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", + "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" + ], + "license": null + }, + "src/amb/interfaces/ITelepathy.sol": { + "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", + "urls": [ + "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", + "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" + ], + "license": null + }, + "src/libraries/MessageEncoding.sol": { + "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", + "urls": [ + "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", + "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" + ], + "license": null + }, + "src/libraries/SimpleSerialize.sol": { + "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "urls": [ + "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", + "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + ], + "license": null + }, + "src/libraries/StateProofHelper.sol": { + "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", + "urls": [ + "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", + "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" + ], + "license": null + }, + "src/libraries/Typecast.sol": { + "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", + "urls": [ + "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", + "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" + ], + "license": "MIT OR Apache-2.0" + }, + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "examples/drills/DrillTelepathyRouter.sol", + "id": 1086, + "exportedSymbols": { + "DrillTelepathyRouter": [ + 1085 + ], + "Ownable": [ + 31597 + ], + "TargetAMB": [ + 42115 + ], + "TelepathyAccess": [ + 42407 + ], + "TelepathyStorage": [ + 42625 + ] + }, + "nodeType": "SourceUnit", + "src": "0:1026:6", + "nodes": [ + { + "id": 1011, + "nodeType": "PragmaDirective", + "src": "0:23:6", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 1013, + "nodeType": "ImportDirective", + "src": "25:48:6", + "nodes": [], + "absolutePath": "src/amb/TargetAMB.sol", + "file": "src/amb/TargetAMB.sol", + "nameLocation": "-1:-1:-1", + "scope": 1086, + "sourceUnit": 42116, + "symbolAliases": [ + { + "foreign": { + "id": 1012, + "name": "TargetAMB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42115, + "src": "33:9:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 1015, + "nodeType": "ImportDirective", + "src": "74:62:6", + "nodes": [], + "absolutePath": "src/amb/TelepathyStorage.sol", + "file": "src/amb/TelepathyStorage.sol", + "nameLocation": "-1:-1:-1", + "scope": 1086, + "sourceUnit": 42626, + "symbolAliases": [ + { + "foreign": { + "id": 1014, + "name": "TelepathyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42625, + "src": "82:16:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 1017, + "nodeType": "ImportDirective", + "src": "137:60:6", + "nodes": [], + "absolutePath": "src/amb/TelepathyAccess.sol", + "file": "src/amb/TelepathyAccess.sol", + "nameLocation": "-1:-1:-1", + "scope": 1086, + "sourceUnit": 42408, + "symbolAliases": [ + { + "foreign": { + "id": 1016, + "name": "TelepathyAccess", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42407, + "src": "145:15:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 1019, + "nodeType": "ImportDirective", + "src": "198:66:6", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "file": "openzeppelin-contracts/access/Ownable.sol", + "nameLocation": "-1:-1:-1", + "scope": 1086, + "sourceUnit": 31598, + "symbolAliases": [ + { + "foreign": { + "id": 1018, + "name": "Ownable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31597, + "src": "206:7:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 1085, + "nodeType": "ContractDefinition", + "src": "399:626:6", + "nodes": [ + { + "id": 1026, + "nodeType": "VariableDeclaration", + "src": "466:16:6", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "guardian", + "nameLocation": "474:8:6", + "scope": 1085, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1025, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "466:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "id": 1028, + "nodeType": "VariableDeclaration", + "src": "488:15:6", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "emitter", + "nameLocation": "496:7:6", + "scope": 1085, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1027, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "488:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "id": 1044, + "nodeType": "FunctionDefinition", + "src": "510:114:6", + "nodes": [], + "body": { + "id": 1043, + "nodeType": "Block", + "src": "559:65:6", + "nodes": [], + "statements": [ + { + "expression": { + "id": 1037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1035, + "name": "guardian", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "569:8:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1036, + "name": "_guardian", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1030, + "src": "580:9:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "569:20:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1038, + "nodeType": "ExpressionStatement", + "src": "569:20:6" + }, + { + "expression": { + "id": 1041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1039, + "name": "emitter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1028, + "src": "599:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1040, + "name": "_emitter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "609:8:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "599:18:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1042, + "nodeType": "ExpressionStatement", + "src": "599:18:6" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 1033, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1030, + "mutability": "mutable", + "name": "_guardian", + "nameLocation": "530:9:6", + "nodeType": "VariableDeclaration", + "scope": 1044, + "src": "522:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1029, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "522:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1032, + "mutability": "mutable", + "name": "_emitter", + "nameLocation": "549:8:6", + "nodeType": "VariableDeclaration", + "scope": 1044, + "src": "541:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1031, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "541:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "521:37:6" + }, + "returnParameters": { + "id": 1034, + "nodeType": "ParameterList", + "parameters": [], + "src": "559:0:6" + }, + "scope": 1085, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 1055, + "nodeType": "FunctionDefinition", + "src": "630:83:6", + "nodes": [], + "body": { + "id": 1054, + "nodeType": "Block", + "src": "665:48:6", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1048, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "683:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "687:6:6", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "683:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1050, + "name": "guardian", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "697:8:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "683:22:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1047, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "675:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "675:31:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1053, + "nodeType": "ExpressionStatement", + "src": "675:31:6" + } + ] + }, + "functionSelector": "99464c89", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "freezeAll", + "nameLocation": "639:9:6", + "parameters": { + "id": 1045, + "nodeType": "ParameterList", + "parameters": [], + "src": "648:2:6" + }, + "returnParameters": { + "id": 1046, + "nodeType": "ParameterList", + "parameters": [], + "src": "665:0:6" + }, + "scope": 1085, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 1084, + "nodeType": "FunctionDefinition", + "src": "719:304:6", + "nodes": [], + "body": { + "id": 1083, + "nodeType": "Block", + "src": "899:124:6", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1069, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "917:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "921:6:6", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "917:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1071, + "name": "emitter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1028, + "src": "931:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "917:21:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1068, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "909:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "909:30:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1074, + "nodeType": "ExpressionStatement", + "src": "909:30:6" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1076, + "name": "_chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "970:8:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 1077, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1059, + "src": "980:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 1078, + "name": "_msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "988:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1079, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1063, + "src": "998:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 1080, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1065, + "src": "1008:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1075, + "name": "ExecutedMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42711, + "src": "954:15:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (uint32,uint64,bytes32,bytes memory,bool)" + } + }, + "id": 1081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "954:62:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1082, + "nodeType": "EmitStatement", + "src": "949:67:6" + } + ] + }, + "functionSelector": "bd6a0134", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "emitFakeExecutedMessageEvent", + "nameLocation": "728:28:6", + "parameters": { + "id": 1066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1057, + "mutability": "mutable", + "name": "_chainId", + "nameLocation": "773:8:6", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "766:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 1056, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "766:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1059, + "mutability": "mutable", + "name": "_nonce", + "nameLocation": "798:6:6", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "791:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 1058, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "791:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1061, + "mutability": "mutable", + "name": "_msgHash", + "nameLocation": "822:8:6", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "814:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1060, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "814:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1063, + "mutability": "mutable", + "name": "_message", + "nameLocation": "853:8:6", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "840:21:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1062, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "840:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1065, + "mutability": "mutable", + "name": "_status", + "nameLocation": "876:7:6", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "871:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1064, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "871:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "756:133:6" + }, + "returnParameters": { + "id": 1067, + "nodeType": "ParameterList", + "parameters": [], + "src": "899:0:6" + }, + "scope": 1085, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1021, + "name": "TelepathyStorage", + "nameLocations": [ + "432:16:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42625, + "src": "432:16:6" + }, + "id": 1022, + "nodeType": "InheritanceSpecifier", + "src": "432:16:6" + }, + { + "baseName": { + "id": 1023, + "name": "TargetAMB", + "nameLocations": [ + "450:9:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42115, + "src": "450:9:6" + }, + "id": 1024, + "nodeType": "InheritanceSpecifier", + "src": "450:9:6" + } + ], + "canonicalName": "DrillTelepathyRouter", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1020, + "nodeType": "StructuredDocumentation", + "src": "266:133:6", + "text": "@title DrillTelepathy\n @dev This contract is used solely for testing purposes and should not be used by production contracts." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 1085, + 42115, + 42744, + 29613, + 29404, + 42625 + ], + "name": "DrillTelepathyRouter", + "nameLocation": "408:20:6", + "scope": 1086, + "usedErrors": [] + } + ] + }, + "id": 6 +} \ No newline at end of file diff --git a/out/LightClient.sol/LightClient.json b/out/LightClient.sol/LightClient.json new file mode 100644 index 0000000..aab5f39 --- /dev/null +++ b/out/LightClient.sol/LightClient.json @@ -0,0 +1,11110 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "genesisValidatorsRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "genesisTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "secondsPerSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "slotsPerPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "syncCommitteePeriod", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "syncCommitteePoseidon", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "finalityThreshold", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "HeadUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "period", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "SyncCommitteeUpdate", + "type": "event" + }, + { + "inputs": [], + "name": "FINALITY_THRESHOLD", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GENESIS_TIME", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GENESIS_VALIDATORS_ROOT", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SECONDS_PER_SLOT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SLOTS_PER_PERIOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SOURCE_CHAIN_ID", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "consistent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "executionStateRoots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "head", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "headers", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientStep", + "name": "step", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "syncCommitteeSSZ", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "syncCommitteePoseidon", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientRotate", + "name": "update", + "type": "tuple" + } + ], + "name": "rotate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientStep", + "name": "update", + "type": "tuple" + } + ], + "name": "step", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "syncCommitteePoseidons", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "timestamps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[65]", + "name": "input", + "type": "uint256[65]" + } + ], + "name": "verifyProofRotate", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[1]", + "name": "input", + "type": "uint256[1]" + } + ], + "name": "verifyProofStep", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004b2338038062004b23833981016040819052620000459162000106565b608088905260a087905260c086905260e085905263ffffffff82166101005261ffff81166101205262000079848462000087565b50505050505050506200018d565b60008281526005602052604090205415801590620000b357506000828152600560205260409020548114155b15620000c75750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600080600080600080600080610100898b0312156200012457600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015163ffffffff811681146200016357600080fd5b60e08a015190925061ffff811681146200017c57600080fd5b809150509295985092959890939650565b60805160a05160c05160e051610100516101205161492a620001f9600039600081816102af01526107ce015260006101d001526000818161010a01526107f90152600081816101610152610b960152600081816102fc0152610bba01526000610255015261492a6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea26469706673582212201e59f8679821e529da3d4fec8c2cbc8ef41b0db11363ac187531a3289e61ce2c64736f6c63430008100033", + "sourceMap": "953:8548:113:-:0;;;1711:29;;;-1:-1:-1;;1711:29:113;1736:4;1711:29;;;;;1824:23;2573:643;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2873:47;;;;2930:26;;;;2966:33;;;;3009;;;;3052:31;;;;;3093:38;;;;;3141:68;3166:19;3187:21;3141:24;:68::i;:::-;2573:643;;;;;;;;953:8548;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:113;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:113;9341:18;;-1:-1:-1;;9341:18:113;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;14:812:145:-;145:6;153;161;169;177;185;193;201;254:3;242:9;233:7;229:23;225:33;222:53;;;271:1;268;261:12;222:53;300:9;294:16;284:26;;350:2;339:9;335:18;329:25;319:35;;394:2;383:9;379:18;373:25;363:35;;438:2;427:9;423:18;417:25;407:35;;482:3;471:9;467:19;461:26;451:36;;527:3;516:9;512:19;506:26;496:36;;575:3;564:9;560:19;554:26;620:10;613:5;609:22;602:5;599:33;589:61;;646:1;643;636:12;589:61;719:3;704:19;;698:26;669:5;;-1:-1:-1;768:6:145;755:20;;743:33;;733:61;;790:1;787;780:12;733:61;813:7;803:17;;;14:812;;;;;;;;;;;:::o;:::-;953:8548:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea26469706673582212201e59f8679821e529da3d4fec8c2cbc8ef41b0db11363ac187531a3289e61ce2c64736f6c63430008100033", + "sourceMap": "953:8548:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:41;;;;;;;;160:25:145;;;148:2;133:18;1170:41:113;;;;;;;;1711:29;;;;;;;;;;;;361:14:145;;354:22;336:41;;324:2;309:18;1711:29:113;196:187:145;1123:41:113;;;;;4310:457;;;;;;:::i;:::-;;:::i;:::-;;1918:42;;;;;;:::i;:::-;;;;;;;;;;;;;;26374:712:114;;;;;;:::i;:::-;;:::i;1217:39:113:-;;;;;;;;5564:10:145;5552:23;;;5534:42;;5522:2;5507:18;1217:39:113;5390:192:145;2218:54:113;;;;;;:::i;:::-;;;;;;;;;;;;;;2076:45;;;;;;:::i;:::-;;;;;;;;;;;;;;1824:23;;;;;;1026:48;;;;;2365:57;;;;;;:::i;:::-;;;;;;;;;;;;;;3551:577;;;;;;:::i;:::-;;:::i;1262:42::-;;;;;;;;6011:6:145;5999:19;;;5981:38;;5969:2;5954:18;1262:42:113;5837:188:145;11270:699:115;;;;;;:::i;:::-;;:::i;1080:37:113:-;;;;;4310:457;4414:11;;4378:33;4452:24;4414:11;4452;:24::i;:::-;4435:41;;4486:21;4510:48;4533:10;:24;;;4510:22;:48::i;:::-;4486:72;-1:-1:-1;4568:18:113;4589:17;4486:72;4605:1;4589:17;:::i;:::-;4568:38;;4617:27;4637:6;4617:19;:27::i;:::-;4659:9;4655:106;;;4684:66;4709:10;4721:6;:28;;;4684:24;:66::i;:::-;4368:399;;;;4310:457;:::o;26374:712:114:-;26552:6;26570:24;;:::i;:::-;26614:33;;;;;;;;26636:4;;26614:33;;26636:4;26642;;;;26614:33;;;;26604:43;;;26667:61;;;;;;;26690:4;;:7;26667:61;;;;;;26699:4;;:7;;;26667:61;;;;;;;;;;;;;26710:4;;;;;:7;26667:61;;26719:4;:7;;;26667:61;;;;-1:-1:-1;;;26667:61:114;26657:7;;;:71;26748:33;;;;;;;26770:4;;26748:33;;26776:4;;;;26748:33;;;;26738:7;;;:43;26822:24;;26833:12;26822:24;;;;;;;;;-1:-1:-1;;26822:24:114;;;;;;;;;;;-1:-1:-1;26822:24:114;26791:55;;26861:9;26856:93;26880:12;26876:1;:16;26856:93;;;26930:5;26936:1;26930:8;;;;;;;:::i;:::-;;;;;26913:11;26925:1;26913:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;26894:3;;;;:::i;:::-;;;;26856:93;;;;26962:32;26975:11;26988:5;26962:12;:32::i;:::-;26998:1;26962:37;26958:122;;27022:4;27015:11;;;;;;26958:122;27064:5;27057:12;;;;26374:712;;;;;;;:::o;3551:577:113:-;3615:14;3632:19;3644:6;3632:11;:19::i;:::-;3685;;3615:36;;-1:-1:-1;3666:16:113;:14;:16::i;:::-;:38;3662:115;;;3720:46;;-1:-1:-1;;;3720:46:113;;7934:2:145;3720:46:113;;;7916:21:145;7973:2;7953:18;;;7946:30;8012:34;7992:18;;;7985:62;-1:-1:-1;;;8063:18:145;;;8056:34;8107:19;;3720:46:113;;;;;;;;3662:115;3814:4;;3791:6;:20;;;:27;3787:102;;;3834:44;;-1:-1:-1;;;3834:44:113;;8339:2:145;3834:44:113;;;8321:21:145;8378:2;8358:18;;;8351:30;8417:34;8397:18;;;8390:62;-1:-1:-1;;;8468:18:145;;;8461:32;8510:19;;3834:44:113;8137:398:145;3787:102:113;3903:9;3899:223;;;3928:119;3958:6;:20;;;3980:6;:26;;;4008:6;:25;;;3928:12;:119::i;:::-;3605:523;3551:577;:::o;3899:223::-;4078:33;;-1:-1:-1;;;4078:33:113;;8742:2:145;4078:33:113;;;8724:21:145;8781:2;8761:18;;;8754:30;8820:25;8800:18;;;8793:53;8863:18;;4078:33:113;8540:347:145;11270:699:115;11445:6;11463:22;;:::i;:::-;11505:31;;;;;;;;11525:4;;11505:31;;11525:4;11531;;;;11505:31;;;;11495:41;;;11556:59;;;;;;;11577:4;;:7;11556:59;;;;;;11586:4;;:7;;;11556:59;;;;;;;;;;;;;11597:4;;;;;:7;11556:59;;11606:4;:7;;;11556:59;;;;-1:-1:-1;;;11556:59:115;11546:7;;;:69;11635:31;;;;;;;11655:4;;11635:31;;11661:4;;;;11635:31;;;;11625:7;;;:41;11707:24;;11533:1;11707:24;;;;;;;;;-1:-1:-1;;11707:24:115;;;;;;11525:4;11707:24;;;;;-1:-1:-1;11707:24:115;11676:55;;11746:9;11741:93;11765:12;11761:1;:16;11741:93;;;11815:5;11821:1;11815:8;;;;;;;:::i;:::-;;;;;11798:11;11810:1;11798:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;11779:3;;;;:::i;:::-;;;;11741:93;;;;11847:30;11858:11;11871:5;11847:10;:30::i;4850:556:113:-;4925:4;4941:21;4965:43;4988:6;:19;;;4965:22;:43::i;:::-;5023:37;;;;:22;:37;;;;;;4941:67;;-1:-1:-1;5023:42:113;5019:286;;5081:63;;-1:-1:-1;;;5081:63:113;;9094:2:145;5081:63:113;;;9076:21:145;9133:2;9113:18;;;9106:30;9172:34;9152:18;;;9145:62;-1:-1:-1;;;9223:18:145;;;9216:51;9284:19;;5081:63:113;8892:417:145;5019:286:113;1371:2;5165:6;:20;;;:54;5161:144;;;5235:59;;-1:-1:-1;;;5235:59:113;;9516:2:145;5235:59:113;;;9498:21:145;9555:2;9535:18;;;9528:30;9594:34;9574:18;;;9567:62;-1:-1:-1;;;9645:18:145;;;9638:47;9702:19;;5235:59:113;9314:413:145;5161:144:113;5315:25;5333:6;5315:17;:25::i;:::-;-1:-1:-1;;5358:20:113;;;:41;5381:18;5358:41;-1:-1:-1;5358:41:113;4850:556::o;7603:125::-;7672:7;7698:23;7705:16;7698:4;:23;:::i;:::-;7691:30;7603:125;-1:-1:-1;;7603:125:113:o;6655:882::-;6769:12;;;;6791:25;;:::i;:::-;6869:23;;;;6827:31;6903:183;6927:2;6923:1;:6;6903:183;;;6971:32;6997:6;6971:23;:32;:::i;:::-;6950:6;6957:10;6966:1;6957:6;:10;:::i;:::-;6950:18;;;;;;;:::i;:::-;;;;:53;7043:32;7069:6;7043:23;:32;:::i;:::-;7017:58;-1:-1:-1;6931:3:113;;;;:::i;:::-;;;;6903:183;;;-1:-1:-1;7140:11:113;;:31;;;7095:34;7182:188;7206:2;7202:1;:6;7182:188;;;7246:35;7275:6;7246:26;:35;:::i;:::-;7229:6;7236;7241:1;7236:2;:6;:::i;:::-;7229:14;;;;;;;:::i;:::-;;;;:52;7324:35;7353:6;7324:26;:35;:::i;:::-;7295:64;-1:-1:-1;7210:3:113;;;;:::i;:::-;;;;7182:188;;;-1:-1:-1;7427:28:113;;;;7400:57;;:18;:57::i;:::-;7379:10;;;:79;7495:7;;7386:2;7504:7;;;7513;;;;7477:52;;7495:7;7504;7379:6;7477:17;:52::i;:::-;7469:61;;;;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:113;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:113;9341:18;;-1:-1:-1;;9341:18:113;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;25166:1155:114:-;25285:7;25349:77;25285:7;25467:20;:18;:20::i;:::-;25436:51;;25525:2;:5;;;:12;25505:5;:12;25520:1;25505:16;;;;:::i;:::-;:32;25497:63;;;;-1:-1:-1;;;25497:63:114;;10441:2:145;25497:63:114;;;10423:21:145;10480:2;10460:18;;;10453:30;-1:-1:-1;;;10499:18:145;;;10492:48;10557:18;;25497:63:114;10239:342:145;25497:63:114;25653:27;;;;;;;;;25617:33;25653:27;;;;;;;;;25690:240;25714:5;:12;25710:1;:16;25690:240;;;25766:18;25755:5;25761:1;25755:8;;;;;;;;:::i;:::-;;;;;;;:29;25747:73;;;;-1:-1:-1;;;25747:73:114;;10788:2:145;25747:73:114;;;10770:21:145;10827:2;10807:18;;;10800:30;10866:33;10846:18;;;10839:61;10917:18;;25747:73:114;10586:355:145;25747:73:114;25841:78;25864:4;25870:48;25895:2;:5;;;25901:1;25905;25901:5;;;;:::i;:::-;25895:12;;;;;;;;:::i;:::-;;;;;;;25909:5;25915:1;25909:8;;;;;;;;:::i;:::-;;;;;;;25870:24;:48::i;:::-;25841:22;:78::i;:::-;25834:85;-1:-1:-1;25728:3:114;;;;:::i;:::-;;;;25690:240;;;;25946:38;25969:4;25975:2;:5;;;25981:1;25975:8;;;;;;;;:::i;:::-;;;;;;;25946:22;:38::i;:::-;25939:45;;26012:265;26056:29;26077:5;:7;;;26056:20;:29::i;:::-;26103:5;:7;;;26128:2;:8;;;26154:2;:8;;;26180:4;26202:2;:9;;;26229:5;:7;;;26254:2;:9;;;26012:26;:265::i;:::-;25994:302;;26295:1;26288:8;;;;;;;25994:302;-1:-1:-1;26313:1:114;;25166:1155;-1:-1:-1;;;;;25166:1155:114:o;7818:133:113:-;7867:7;7928:16;7894:30;7912:12;7894:15;:30;:::i;:::-;7893:51;;;;:::i;:::-;7886:58;;7818:133;:::o;8310:721::-;8463:1;8438:13;;;:7;:13;;;;;;:27;8434:170;;8485:13;;;;:7;:13;;;;;;:36;;8481:93;;8554:5;8541:18;;-1:-1:-1;;8541:18:113;;;8481:93;8310:721;;;:::o;8434:170::-;8654:1;8617:25;;;:19;:25;;;;;;:39;8613:193;;8676:25;;;;:19;:25;;;;;;:47;;8672:104;;8756:5;8743:18;;-1:-1:-1;;8743:18:113;;;8310:721;;;:::o;8613:193::-;8816:4;:11;;;8837:13;;;;:7;:13;;;;;;;;:35;;;8882:19;:25;;;;;:46;;;8938:10;:16;;;;;;8957:15;8938:34;;8987:37;8853:19;;8823:4;;8987:37;;8837:13;8987:37;8310:721;;;:::o;10084:1133:115:-;10199:7;10263:77;10199:7;10379:18;:16;:18::i;:::-;10350:47;;10435:2;:5;;;:12;10415:5;:12;10430:1;10415:16;;;;:::i;:::-;:32;10407:63;;;;-1:-1:-1;;;10407:63:115;;10441:2:145;10407:63:115;;;10423:21:145;10480:2;10460:18;;;10453:30;-1:-1:-1;;;10499:18:145;;;10492:48;10557:18;;10407:63:115;10239:342:145;10407:63:115;10561:25;;;;;;;;;10527:31;10561:25;;;;;;;;;10596:236;10620:5;:12;10616:1;:16;10596:236;;;10672:18;10661:5;10667:1;10661:8;;;;;;;;:::i;:::-;;;;;;;:29;10653:73;;;;-1:-1:-1;;;10653:73:115;;10788:2:145;10653:73:115;;;10770:21:145;10827:2;10807:18;;;10800:30;10866:33;10846:18;;;10839:61;10917:18;;10653:73:115;10586:355:145;10653:73:115;10747:74;10768:4;10774:46;10797:2;:5;;;10803:1;10807;10803:5;;;;:::i;10747:74::-;10740:81;-1:-1:-1;10634:3:115;;;;:::i;:::-;;;;10596:236;;;;10848:36;10869:4;10875:2;:5;;;10881:1;10875:8;;;;;;;;:::i;10848:36::-;10841:43;;10912:261;10954:27;10973:5;:7;;;10954:18;:27::i;:::-;10999:5;:7;;;11024:2;:8;;;11050:2;:8;;;11076:4;11098:2;:9;;;11125:5;:7;;;11150:2;:9;;;10912:24;:261::i;5509:1064:113:-;5591:22;5616:39;5635:6;:19;;;5616:18;:39::i;:::-;5591:64;;5665:23;5691:40;5710:6;:20;;;5691:18;:40::i;:::-;5665:66;;5741:23;5767:40;5786:6;:20;;;5767:18;:40::i;:::-;5741:66;;5817:21;5841:43;5864:6;:19;;;5841:22;:43::i;:::-;5894:29;5926:37;;;:22;:37;;;;;;;;;6004:45;;;;;11103:19:145;;;11138:12;;;11131:28;;;5926:37:113;;-1:-1:-1;5997:53:113;;11175:12:145;;6004:45:113;;;-1:-1:-1;;6004:45:113;;;;;;;;;;5997:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5993:57;;6064:51;6084:1;6087:6;:26;;;6071:43;;;;;;;;11103:19:145;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6071:43:113;;;;-1:-1:-1;;6071:43:113;;;;;;;;;;6064:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6060:55;;6129:40;6149:1;6152:15;6136:32;;;;;;;;11103:19:145;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6136:32:113;;;;-1:-1:-1;;6136:32:113;;;;;;;;;;6129:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6125:44;;6183:50;6203:1;6206:6;:25;;;6190:42;;;;;;;;11103:19:145;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6190:42:113;;;;-1:-1:-1;;6190:42:113;;;;;;;;;;6183:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:54;;6247:46;6267:1;6270:21;6254:38;;;;;;;;11103:19:145;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6254:38:113;;;;-1:-1:-1;;6254:38:113;;;;;;;;;;6247:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6243:50;-1:-1:-1;6303:9:113;6323:30;6243:50;6323:18;:30::i;:::-;6315:39;-1:-1:-1;6373:23:113;6395:1;-1:-1:-1;;;6373:23:113;:::i;:::-;6436:12;;;;6458:39;;;;;;;;;6368:29;;;;6458:39;;;6531:7;;6540;;;;6549;;;;6368:29;;6436:12;;6515:50;;6531:7;;6458:39;6515:15;:50::i;:::-;6507:59;;;;;;5581:992;;;;;;;;;5509:1064;:::o;315:892:109:-;373:7;567:1;492;496:66;492:70;491:77;;473:1;398;402:66;398:70;397:77;;396:173;392:177;;755:2;680:1;684:66;680:70;679:78;;660:2;585:1;589:66;585:70;584:78;;583:175;579:179;;944:2;869:1;873:66;869:70;868:78;;849:2;774:1;778:66;774:70;773:78;;772:175;768:179;;1133:2;1058:1;1062:66;1058:70;1057:78;;1038:2;963:1;-1:-1:-1;;963:70:109;962:78;;961:175;957:179;;1169:3;1164:1;:8;;1156:3;1151:1;:8;;1150:23;1146:27;;1198:1;1190:10;;1183:17;;315:892;;;:::o;7822:17338:114:-;7875:28;;:::i;:::-;7926:212;;;;;;;;7961:77;7926:212;;8052:76;7926:212;;;;;;;;7915:223;;;8160:465;;;;;;;;8213:76;8160:465;;;;;;8307:76;8160:465;;;;;;;;;;;;;;;;;;8429:77;8160:465;;8524:77;8160:465;;;;-1:-1:-1;;;8160:465:114;8149:8;;;:476;;;;8647:465;;;;;;;8700:77;8647:465;;;;;;8795:77;8647:465;;;;;;;;;;;;;8918:76;8647:465;;9012:76;8647:465;;;;-1:-1:-1;;;8647:465:114;8635:9;;;:477;9134:463;;;;;;;9187:76;9134:463;;;;;;9281:77;9134:463;;;;;;;;;;;;;9404:75;9134:463;;9497:76;9134:463;;;;-1:-1:-1;;;9134:463:114;9122:9;;;:475;9615:31;;9643:2;9615:31;;;;;;;;;;9643:2;9615:31;;;-1:-1:-1;;;;;;;;;;;;;;;;;9615:31:114;;;;;;;;;;;;-1:-1:-1;;9607:5:114;;;:39;;;9668:211;;;;;;;;;9703:76;9668:211;;9793:76;9668:211;;;;9657:5;;:8;;-1:-1:-1;;9657:8:114;;;;:::i;:::-;;;;;;:222;;;;9901:213;;;;;;;;9936:77;9901:213;;;;10027:77;9901:213;;;9890:2;:5;;;9896:1;9890:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10136:213;;;;;;;;10171:77;10136:213;;;;10262:77;10136:213;;;10125:2;:5;;;10131:1;10125:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10371:210;;;;;;;;10406:75;10371:210;;;;10495:76;10371:210;;;10360:2;:5;;;10366:1;10360:8;;;;;;;;:::i;:::-;;;;;;:221;;;;10603:212;;;;;;;;10638:77;10603:212;;;;10729:76;10603:212;;;10592:2;:5;;;10598:1;10592:8;;;;;;;;:::i;:::-;;;;;;:223;;;;10837:211;;;;;;;;10872:77;10837:211;;;;10963:75;10837:211;;;10826:2;:5;;;10832:1;10826:8;;;;;;;;:::i;:::-;;;;;;:222;;;;11070:213;;;;;;;;11105:77;11070:213;;;;11196:77;11070:213;;;11059:2;:5;;;11065:1;11059:8;;;;;;;;:::i;:::-;;;;;;:224;;;;11305:212;;;;;;;;11340:77;11305:212;;;;11431:76;11305:212;;;11294:2;:5;;;11300:1;11294:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11539:212;;;;;;;;11574:77;11539:212;;;;11665:76;11539:212;;;11528:2;:5;;;11534:1;11528:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11773:211;;;;;;;;11808:76;11773:211;;;;11898:76;11773:211;;;11762:2;:5;;;11768:1;11762:8;;;;;;;;:::i;:::-;;;;;;:222;;;;12007:212;;;;;;;;12042:77;12007:212;;;;12133:76;12007:212;;;11995:2;:5;;;12001:2;11995:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12242:213;;;;;;;;12277:77;12242:213;;;;12368:77;12242:213;;;12230:2;:5;;;12236:2;12230:9;;;;;;;;:::i;:::-;;;;;;:225;;;;12478:211;;;;;;;;12513:76;12478:211;;;;12603:76;12478:211;;;12466:2;:5;;;12472:2;12466:9;;;;;;;;:::i;:::-;;;;;;:223;;;;12712:212;;;;;;;;12747:76;12712:212;;;;12837:77;12712:212;;;12700:2;:5;;;12706:2;12700:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12947:211;;;;;;;;12982:76;12947:211;;;;13072:76;12947:211;;;12935:2;:5;;;12941:2;12935:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13181:213;;;;;;;;13216:77;13181:213;;;;13307:77;13181:213;;;13169:2;:5;;;13175:2;13169:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13417:213;;;;;;;;13452:77;13417:213;;;;13543:77;13417:213;;;13405:2;:5;;;13411:2;13405:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13653:211;;;;;;;;13688:76;13653:211;;;;13778:76;13653:211;;;13641:2;:5;;;13647:2;13641:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13887:212;;;;;;;;13922:76;13887:212;;;;14012:77;13887:212;;;13875:2;:5;;;13881:2;13875:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14122:212;;;;;;;;14157:77;14122:212;;;;14248:76;14122:212;;;14110:2;:5;;;14116:2;14110:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14357:211;;;;;;;;14392:77;14357:211;;;;14483:75;14357:211;;;14345:2;:5;;;14351:2;14345:9;;;;;;;;:::i;:::-;;;;;;:223;;;;14591:213;;;;;;;;14626:77;14591:213;;;;14717:77;14591:213;;;14579:2;:5;;;14585:2;14579:9;;;;;;;;:::i;:::-;;;;;;:225;;;;14827:213;;;;;;;;14862:77;14827:213;;;;14953:77;14827:213;;;14815:2;:5;;;14821:2;14815:9;;;;;;;;:::i;:::-;;;;;;:225;;;;15063:210;;;;;;;;15098:75;15063:210;;;;15187:76;15063:210;;;15051:2;:5;;;15057:2;15051:9;;;;;;;;:::i;:::-;;;;;;:222;;;;15296:212;;;;;;;;15331:77;15296:212;;;;15422:76;15296:212;;;15284:2;:5;;;15290:2;15284:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15531:212;;;;;;;;15566:76;15531:212;;;;15656:77;15531:212;;;15519:2;:5;;;15525:2;15519:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15766:212;;;;;;;;15801:77;15766:212;;;;15892:76;15766:212;;;15754:2;:5;;;15760:2;15754:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16001:213;;;;;;;;16036:77;16001:213;;;;16127:77;16001:213;;;15989:2;:5;;;15995:2;15989:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16237:213;;;;;;;;16272:77;16237:213;;;;16363:77;16237:213;;;16225:2;:5;;;16231:2;16225:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16473:213;;;;;;;;16508:77;16473:213;;;;16599:77;16473:213;;;16461:2;:5;;;16467:2;16461:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16709:212;;;;;;;;16744:76;16709:212;;;;16834:77;16709:212;;;16697:2;:5;;;16703:2;16697:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16944:213;;;;;;;;16979:77;16944:213;;;;17070:77;16944:213;;;16932:2;:5;;;16938:2;16932:9;;;;;;;;:::i;:::-;;;;;;:225;;;;17180:211;;;;;;;;17215:76;17180:211;;;;17305:76;17180:211;;;17168:2;:5;;;17174:2;17168:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17414:212;;;;;;;;17449:77;17414:212;;;;17540:76;17414:212;;;17402:2;:5;;;17408:2;17402:9;;;;;;;;:::i;:::-;;;;;;:224;;;;17649:211;;;;;;;;17684:76;17649:211;;;;17774:76;17649:211;;;17637:2;:5;;;17643:2;17637:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17883:212;;;;;;;;17918:77;17883:212;;;;18009:76;17883:212;;;17871:2;:5;;;17877:2;17871:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18118:212;;;;;;;;18153:76;18118:212;;;;18243:77;18118:212;;;18106:2;:5;;;18112:2;18106:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18353:213;;;;;;;;18388:77;18353:213;;;;18479:77;18353:213;;;18341:2;:5;;;18347:2;18341:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18589:213;;;;;;;;18624:77;18589:213;;;;18715:77;18589:213;;;18577:2;:5;;;18583:2;18577:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18825:213;;;;;;;;18860:77;18825:213;;;;18951:77;18825:213;;;18813:2;:5;;;18819:2;18813:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19061:211;;;;;;;;19096:77;19061:211;;;;19187:75;19061:211;;;19049:2;:5;;;19055:2;19049:9;;;;;;;;:::i;:::-;;;;;;:223;;;;19295:213;;;;;;;;19330:77;19295:213;;;;19421:77;19295:213;;;19283:2;:5;;;19289:2;19283:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19531:213;;;;;;;;19566:77;19531:213;;;;19657:77;19531:213;;;19519:2;:5;;;19525:2;19519:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19767:212;;;;;;;;19802:76;19767:212;;;;19892:77;19767:212;;;19755:2;:5;;;19761:2;19755:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20002:211;;;;;;;;20037:76;20002:211;;;;20127:76;20002:211;;;19990:2;:5;;;19996:2;19990:9;;;;;;;;:::i;:::-;;;;;;:223;;;;20236:212;;;;;;;;20271:77;20236:212;;;;20362:76;20236:212;;;20224:2;:5;;;20230:2;20224:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20471:212;;;;;;;;20506:77;20471:212;;;;20597:76;20471:212;;;20459:2;:5;;;20465:2;20459:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20706:213;;;;;;;;20741:77;20706:213;;;;20832:77;20706:213;;;20694:2;:5;;;20700:2;20694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;20942:212;;;;;;;;20977:77;20942:212;;;;21068:76;20942:212;;;20930:2;:5;;;20936:2;20930:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21177:212;;;;;;;;21212:76;21177:212;;;;21302:77;21177:212;;;21165:2;:5;;;21171:2;21165:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21412:213;;;;;;;;21447:77;21412:213;;;;21538:77;21412:213;;;21400:2;:5;;;21406:2;21400:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21648:213;;;;;;;;21683:77;21648:213;;;;21774:77;21648:213;;;21636:2;:5;;;21642:2;21636:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21884:211;;;;;;;;21919:76;21884:211;;;;22009:76;21884:211;;;21872:2;:5;;;21878:2;21872:9;;;;;;;;:::i;:::-;;;;;;:223;;;;22118:213;;;;;;;;22153:77;22118:213;;;;22244:77;22118:213;;;22106:2;:5;;;22112:2;22106:9;;;;;;;;:::i;:::-;;;;;;:225;;;;22354:212;;;;;;;;22389:76;22354:212;;;;22479:77;22354:212;;;22342:2;:5;;;22348:2;22342:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22589:212;;;;;;;;22624:76;22589:212;;;;22714:77;22589:212;;;22577:2;:5;;;22583:2;22577:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22824:212;;;;;;;;22859:76;22824:212;;;;22949:77;22824:212;;;22812:2;:5;;;22818:2;22812:9;;;;;;;;:::i;:::-;;;;;;:224;;;;23059:211;;;;;;;;23094:77;23059:211;;;;23185:75;23059:211;;;23047:2;:5;;;23053:2;23047:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23293:213;;;;;;;;23328:77;23293:213;;;;23419:77;23293:213;;;23281:2;:5;;;23287:2;23281:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23529:213;;;;;;;;23564:77;23529:213;;;;23655:77;23529:213;;;23517:2;:5;;;23523:2;23517:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23765:211;;;;;;;;23800:76;23765:211;;;;23890:76;23765:211;;;23753:2;:5;;;23759:2;23753:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23999:212;;;;;;;;24034:76;23999:212;;;;24124:77;23999:212;;;23987:2;:5;;;23993:2;23987:9;;;;;;;;:::i;:::-;;;;;;:224;;;;24234:213;;;;;;;;24269:77;24234:213;;;;24360:77;24234:213;;;24222:2;:5;;;24228:2;24222:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24470:213;;;;;;;;24505:77;24470:213;;;;24596:77;24470:213;;;24458:2;:5;;;24464:2;24458:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24706:213;;;;;;;;24741:77;24706:213;;;;24832:77;24706:213;;;24694:2;:5;;;24700:2;24694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24942:211;;;;;;;;24977:76;24942:211;;;;25067:76;24942:211;;;24930:2;:5;;;24936:2;24930:9;;;;;;;;:::i;:::-;;;;;;:223;;;;7822:17338;:::o;3929:557::-;-1:-1:-1;;;;;;;;;;;;;;;;;4029:23:114;;:::i;:::-;4073:3;;4062:14;;:8;4097:3;;;;4086:8;;;:14;4110:8;;;:12;;;-1:-1:-1;4300:4:114;4297:1;4291:4;4062:14;4281:1;4274:4;4267:5;4263:16;4252:53;4241:64;-1:-1:-1;4241:64:114;;4375:47;4402:20;4411:9;4375:47;;4449:7;4441:38;;;;-1:-1:-1;;;4441:38:114;;12006:2:145;4441:38:114;;;11988:21:145;12045:2;12025:18;;;12018:30;-1:-1:-1;;;12064:18:145;;;12057:48;12122:18;;4441:38:114;11804:342:145;4441:38:114;4019:467;;3929:557;;;;:::o;3151:622::-;-1:-1:-1;;;;;;;;;;;;;;;;;3286:23:114;;:::i;:::-;3330:4;;3319:15;;:8;3355:4;;;;3344:8;;;:15;3380:4;;3369:8;;;:15;3405:4;;;3394:8;;;;:15;;;;-1:-1:-1;;3584:1:114;3578:4;3319:15;3568:1;3561:4;3554:5;3550:16;3539:53;3528:64;-1:-1:-1;3528:64:114;;3662:47;3689:20;3698:9;3662:47;;3736:7;3728:38;;;;-1:-1:-1;;;3728:38:114;;12353:2:145;3728:38:114;;;12335:21:145;12392:2;12372:18;;;12365:30;-1:-1:-1;;;12411:18:145;;;12404:48;12469:18;;3728:38:114;12151:342:145;2742:357:114;-1:-1:-1;;;;;;;;;;;;;;;;;2982:3:114;;2891:77;;2982:8;:20;;;;-1:-1:-1;2994:3:114;;;;:8;2982:20;2978:71;;;-1:-1:-1;;3025:13:114;;;;;;;;;-1:-1:-1;3025:13:114;;;;;;;;2742:357;-1:-1:-1;2742:357:114:o;2978:71::-;3065:27;;;;;;;;3073:1;:3;;;3065:27;;;;3089:1;3083;:3;;;:7;;;;:::i;:::-;3078:13;;:1;:13;:::i;:::-;3065:27;;3058:34;2742:357;-1:-1:-1;;;2742:357:114:o;6832:568::-;7137:16;;;7151:1;7137:16;;;;;;;;;7099:4;;;;7137:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7137:16:114;;;;;;;;;;;;-1:-1:-1;;7185:16:114;;;7199:1;7185:16;;;;;;;;;7115:38;;-1:-1:-1;7163:19:114;;7185:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7163:38;;7219:2;7211;7214:1;7211:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7239:2;7231;7234:1;7231:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7259:2;7251;7254:1;7251:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7279:2;7271;7274:1;7271:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7299:2;7291;7294:1;7291:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7319:2;7311;7314:1;7311:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7339:2;7331;7334:1;7331:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7359:2;7351;7354:1;7351:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7378:15;7386:2;7390;7378:7;:15::i;:::-;7371:22;6832:568;-1:-1:-1;;;;;;;;;;;6832:568:114:o;7796:2282:115:-;7847:26;;:::i;:::-;7896:210;;;;;;;;7929:77;7896:210;;8020:76;7896:210;;;;;;;;7885:221;;;8128:463;;;;;;;;8179:76;8128:463;;;;;;8273:76;8128:463;;;;;;;;;;;;;;;;;;8395:77;8128:463;;8490:77;8128:463;;;;-1:-1:-1;;;8128:463:115;8117:8;;;:474;;;;8613:463;;;;;;;8664:77;8613:463;;;;;;8759:77;8613:463;;;;;;;;;;;;;8882:76;8613:463;;8976:76;8613:463;;;;-1:-1:-1;;;8613:463:115;8601:9;;;:475;9098:462;;;;;;;9149:76;9098:462;;;;;;9243:77;9098:462;;;;;;;;;;;;;9366:76;9098:462;;9460:76;9098:462;;;;-1:-1:-1;;;9098:462:115;9086:9;;;:474;9578:28;;9604:1;9578:28;;;;;;;;;9604:1;9578:28;;;-1:-1:-1;;;;;;;;;;;;;;;;;9578:28:115;;;;;;;;;;;;-1:-1:-1;;9570:5:115;;;:36;;;9628:210;;;;;;;;;9661:77;9628:210;;9752:76;9628:210;;;;9617:5;;:8;;-1:-1:-1;;9617:8:115;;;;:::i;:::-;;;;;;:221;;;;9860:211;;;;;;;;9893:77;9860:211;;;;9984:77;9860:211;;;9849:2;:5;;;9855:1;9849:8;;;;;;;;:::i;6830:568::-;7135:16;;;7149:1;7135:16;;;;;;;;;7097:4;;;;7135:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7135:16:115;;;;;;;;;;;;-1:-1:-1;;7183:16:115;;;7197:1;7183:16;;;;;;;;;7113:38;;-1:-1:-1;7161:19:115;;7183:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7161:38;;7217:2;7209;7212:1;7209:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7237:2;7229;7232:1;7229:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7257:2;7249;7252:1;7249:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7277:2;7269;7272:1;7269:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7297:2;7289;7292:1;7289:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7317:2;7309;7312:1;7309:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7337:2;7329;7332:1;7329:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7357:2;7349;7352:1;7349:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7376:15;7384:2;7388;7376:7;:15::i;4698:1073:114:-;4780:4;4817:2;:9;4804:2;:9;:22;4796:57;;;;-1:-1:-1;;;4796:57:114;;12700:2:145;4796:57:114;;;12682:21:145;12739:2;12719:18;;;12712:30;-1:-1:-1;;;12758:18:145;;;12751:52;12820:18;;4796:57:114;12498:346:145;4796:57:114;4882:9;;4863:16;4921:12;4882:9;4932:1;4921:12;:::i;:::-;4901:32;;4943:22;4979:9;4968:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4968:21:114;;4943:46;;5004:9;4999:302;5023:8;5019:1;:12;4999:302;;;5071:2;5074:1;5071:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5052:5;5058:1;5062;5058:5;;;;:::i;:::-;:9;;5066:1;5058:9;:::i;:::-;5052:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5111:2;5114:1;5111:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5092:5;5098:1;5102;5098:5;;;;:::i;:::-;:9;;5106:1;5098:9;:::i;:::-;5092:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5151:2;5154:1;5151:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5132:5;5138;:1;5142;5138:5;:::i;:::-;:9;;5146:1;5138:9;:::i;:::-;5132:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5194:2;5197:1;5194:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5175:5;5181;:1;5185;5181:5;:::i;:::-;:9;;5189:1;5181:9;:::i;:::-;5175:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5237:2;5240:1;5237:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5245:1;5237:10;;;;;;;:::i;:::-;;;;;5218:5;5224;:1;5228;5224:5;:::i;:::-;:9;;5232:1;5224:9;:::i;:::-;5218:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5280:2;5283:1;5280:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5288:1;5280:10;;;;;;;:::i;:::-;;;;;5261:5;5267;:1;5271;5267:5;:::i;:::-;:9;;5275:1;5267:9;:::i;:::-;5261:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5033:3;;;;:::i;:::-;;;;4999:302;;;;5310:21;;:::i;:::-;5341:12;5554:4;5549:3;5542:4;5531:9;5527:20;5520:4;5513:5;5509:16;5506:1;5499:4;5492:5;5488:16;5477:82;5450:109;-1:-1:-1;5450:109:114;;5629:47;5656:20;5665:9;5629:47;;5703:7;5695:41;;;;-1:-1:-1;;;5695:41:114;;13224:2:145;5695:41:114;;;13206:21:145;13263:2;13243:18;;;13236:30;-1:-1:-1;;;13282:18:145;;;13275:51;13343:18;;5695:41:114;13022:345:145;5695:41:114;-1:-1:-1;5753:6:114;:11;;;;-1:-1:-1;;;;;;4698:1073:114:o;4696::115:-;4778:4;4815:2;:9;4802:2;:9;:22;4794:57;;;;-1:-1:-1;;;4794:57:115;;12700:2:145;4794:57:115;;;12682:21:145;12739:2;12719:18;;;12712:30;-1:-1:-1;;;12758:18:145;;;12751:52;12820:18;;4794:57:115;12498:346:145;4794:57:115;4880:9;;4861:16;4919:12;4880:9;4930:1;4919:12;:::i;:::-;4899:32;;4941:22;4977:9;4966:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4966:21:115;;4941:46;;5002:9;4997:302;5021:8;5017:1;:12;4997:302;;;5069:2;5072:1;5069:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5050:5;5056:1;5060;5056:5;;;;:::i;:::-;:9;;5064:1;5056:9;:::i;:::-;5050:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5109:2;5112:1;5109:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5090:5;5096:1;5100;5096:5;;;;:::i;:::-;:9;;5104:1;5096:9;:::i;:::-;5090:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5149:2;5152:1;5149:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5130:5;5136;:1;5140;5136:5;:::i;:::-;:9;;5144:1;5136:9;:::i;:::-;5130:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5192:2;5195:1;5192:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5173:5;5179;:1;5183;5179:5;:::i;:::-;:9;;5187:1;5179:9;:::i;:::-;5173:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5235:2;5238:1;5235:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5243:1;5235:10;;;;;;;:::i;:::-;;;;;5216:5;5222;:1;5226;5222:5;:::i;:::-;:9;;5230:1;5222:9;:::i;:::-;5216:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5278:2;5281:1;5278:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5286:1;5278:10;;;;;;;:::i;:::-;;;;;5259:5;5265;:1;5269;5265:5;:::i;:::-;:9;;5273:1;5265:9;:::i;:::-;5259:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5031:3;;;;:::i;:::-;;;;4997:302;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;388:127:145:-;449:10;444:3;440:20;437:1;430:31;480:4;477:1;470:15;504:4;501:1;494:15;520:246;587:2;581:9;;;617:15;;662:18;647:34;;683:22;;;644:62;641:88;;;709:18;;:::i;:::-;745:2;738:22;520:246;:::o;771:479::-;821:5;874:3;867:4;859:6;855:17;851:27;841:55;;892:1;889;882:12;841:55;916:17;;:::i;:::-;955:3;993:2;985:6;981:15;1019:3;1011:6;1008:15;1005:35;;;1036:1;1033;1026:12;1005:35;1060:6;1075:146;1091:6;1086:3;1083:15;1075:146;;;1159:17;;1147:30;;1206:4;1197:14;;;;1108;1075:146;;;-1:-1:-1;1239:5:145;;771:479;-1:-1:-1;;;;;771:479:145:o;1255:501::-;1311:5;1364:3;1357:4;1349:6;1345:17;1341:27;1331:55;;1382:1;1379;1372:12;1331:55;1406:17;;:::i;:::-;1445:3;1483;1475:6;1471:16;1510:3;1502:6;1499:15;1496:35;;;1527:1;1524;1517:12;1496:35;1551:6;1566:161;1582:6;1577:3;1574:15;1566:161;;;1648:34;1678:3;1673;1648:34;:::i;:::-;1636:47;;1712:4;1703:14;;;;1608:2;1599:12;1566:161;;1761:605;1820:5;1868:6;1856:9;1851:3;1847:19;1843:32;1840:52;;;1888:1;1885;1878:12;1840:52;1921:2;1915:9;1963:4;1955:6;1951:17;2034:6;2022:10;2019:22;1998:18;1986:10;1983:34;1980:62;1977:88;;;2045:18;;:::i;:::-;2081:2;2074:22;2114:6;-1:-1:-1;2114:6:145;2144:40;2180:3;2169:9;2144:40;:::i;:::-;2136:6;2129:56;2220:55;2271:3;2266:2;2255:9;2251:18;2220:55;:::i;:::-;2213:4;2205:6;2201:17;2194:82;2309:50;2355:3;2349;2338:9;2334:19;2309:50;:::i;:::-;2304:2;2296:6;2292:15;2285:75;;1761:605;;;;:::o;2371:773::-;2433:5;2481:6;2469:9;2464:3;2460:19;2456:32;2453:52;;;2501:1;2498;2491:12;2453:52;2534:2;2528:9;2576:4;2568:6;2564:17;2647:6;2635:10;2632:22;2611:18;2599:10;2596:34;2593:62;2590:88;;;2658:18;;:::i;:::-;2698:10;2694:2;2687:22;;2727:6;2718:15;;2770:9;2757:23;2749:6;2742:39;2842:2;2831:9;2827:18;2814:32;2809:2;2801:6;2797:15;2790:57;2908:2;2897:9;2893:18;2880:32;2875:2;2867:6;2863:15;2856:57;2974:2;2963:9;2959:18;2946:32;2941:2;2933:6;2929:15;2922:57;3041:3;3030:9;3026:19;3013:33;3007:3;2999:6;2995:16;2988:59;3081:56;3133:3;3127;3116:9;3112:19;3081:56;:::i;:::-;3075:3;3067:6;3063:16;3056:82;;2371:773;;;;:::o;3149:714::-;3244:6;3297:3;3285:9;3276:7;3272:23;3268:33;3265:53;;;3314:1;3311;3304:12;3265:53;3347:2;3341:9;3389:4;3381:6;3377:17;3460:6;3448:10;3445:22;3424:18;3412:10;3409:34;3406:62;3403:88;;;3471:18;;:::i;:::-;3507:2;3500:22;3546:53;3591:7;3580:9;3546:53;:::i;:::-;3538:6;3531:69;3663:3;3652:9;3648:19;3635:33;3628:4;3620:6;3616:17;3609:60;3730:3;3719:9;3715:19;3702:33;3697:2;3689:6;3685:15;3678:58;3771:60;3823:7;3817:3;3806:9;3802:19;3771:60;:::i;:::-;3764:4;3752:17;;3745:87;3756:6;3149:714;-1:-1:-1;;;3149:714:145:o;3868:180::-;3927:6;3980:2;3968:9;3959:7;3955:23;3951:32;3948:52;;;3996:1;3993;3986:12;3948:52;-1:-1:-1;4019:23:145;;3868:180;-1:-1:-1;3868:180:145:o;4235:1150::-;4437:6;4445;4453;4461;4492:4;4537:2;4525:9;4516:7;4512:23;4508:32;4505:52;;;4553:1;4550;4543:12;4505:52;4576:44;4612:7;4601:9;4576:44;:::i;:::-;4566:54;;4639:59;4690:7;4685:2;4674:9;4670:18;4639:59;:::i;:::-;4629:69;;4717:54;4763:7;4757:3;4746:9;4742:19;4717:54;:::i;:::-;4707:64;;4815:7;4809:3;4798:9;4794:19;4790:33;4780:61;;4837:1;4834;4827:12;4780:61;4870:2;4864:9;4912:4;4904:6;4900:17;4983:6;4971:10;4968:22;4947:18;4935:10;4932:34;4929:62;4926:88;;;4994:18;;:::i;:::-;5030:2;5023:22;5094:18;;;;5065:6;5124:19;;;5121:39;;;5156:1;5153;5146:12;5121:39;5195:3;5184:9;5180:19;5208:146;5224:6;5219:3;5216:15;5208:146;;;5292:17;;5280:30;;5339:4;5330:14;;;;5241;5208:146;;;5212:3;;5373:6;5363:16;;;;4235:1150;;;;;;;:::o;5587:245::-;5680:6;5733:3;5721:9;5712:7;5708:23;5704:33;5701:53;;;5750:1;5747;5740:12;5701:53;5773;5818:7;5807:9;5773:53;:::i;:::-;5763:63;5587:245;-1:-1:-1;;;5587:245:145:o;6030:1163::-;6231:6;6239;6247;6255;6286:3;6330:2;6318:9;6309:7;6305:23;6301:32;6298:52;;;6346:1;6343;6336:12;6298:52;6369:44;6405:7;6394:9;6369:44;:::i;:::-;6359:54;;6432:59;6483:7;6478:2;6467:9;6463:18;6432:59;:::i;:::-;6422:69;;6510:54;6556:7;6550:3;6539:9;6535:19;6510:54;:::i;:::-;6500:64;;6608:7;6602:3;6591:9;6587:19;6583:33;6573:61;;6630:1;6627;6620:12;6573:61;6663:2;6657:9;6685:2;6726;6718:6;6714:15;6795:6;6783:10;6780:22;6759:18;6747:10;6744:34;6741:62;6738:88;;;6806:18;;:::i;:::-;6842:2;6835:22;6906:18;;;;6877:6;6936:19;;;6933:39;;;6968:1;6965;6958:12;6933:39;7007:3;6996:9;6992:19;7020:142;7036:6;7031:3;7028:15;7020:142;;;7102:17;;7090:30;;7140:12;;;;7053;;7020:142;;;-1:-1:-1;6030:1163:145;;;;-1:-1:-1;6030:1163:145;;-1:-1:-1;7181:6:145;-1:-1:-1;;;;6030:1163:145:o;7198:127::-;7259:10;7254:3;7250:20;7247:1;7240:31;7290:4;7287:1;7280:15;7314:4;7311:1;7304:15;7330:125;7395:9;;;7416:10;;;7413:36;;;7429:18;;:::i;7460:127::-;7521:10;7516:3;7512:20;7509:1;7502:31;7552:4;7549:1;7542:15;7576:4;7573:1;7566:15;7592:135;7631:3;7652:17;;;7649:43;;7672:18;;:::i;:::-;-1:-1:-1;7719:1:145;7708:13;;7592:135::o;9732:127::-;9793:10;9788:3;9784:20;9781:1;9774:31;9824:4;9821:1;9814:15;9848:4;9845:1;9838:15;9864:120;9904:1;9930;9920:35;;9935:18;;:::i;:::-;-1:-1:-1;9969:9:145;;9864:120::o;9989:112::-;10021:1;10047;10037:35;;10052:18;;:::i;:::-;-1:-1:-1;10086:9:145;;9989:112::o;10106:128::-;10173:9;;;10194:11;;;10191:37;;;10208:18;;:::i;11198:412::-;11327:3;11365:6;11359:13;11390:1;11400:129;11414:6;11411:1;11408:13;11400:129;;;11512:4;11496:14;;;11492:25;;11486:32;11473:11;;;11466:53;11429:12;11400:129;;;-1:-1:-1;11584:1:145;11548:16;;11573:13;;;-1:-1:-1;11548:16:145;11198:412;-1:-1:-1;11198:412:145:o;11615:184::-;11685:6;11738:2;11726:9;11717:7;11713:23;11709:32;11706:52;;;11754:1;11751;11744:12;11706:52;-1:-1:-1;11777:16:145;;11615:184;-1:-1:-1;11615:184:145:o;12849:168::-;12889:7;12955:1;12951;12947:6;12943:14;12940:1;12937:21;12932:1;12925:9;12918:17;12914:45;12911:71;;;12962:18;;:::i;:::-;-1:-1:-1;13002:9:145;;12849:168::o", + "linkReferences": {}, + "immutableReferences": { + "44324": [ + { + "start": 597, + "length": 32 + } + ], + "44326": [ + { + "start": 764, + "length": 32 + }, + { + "start": 3002, + "length": 32 + } + ], + "44328": [ + { + "start": 353, + "length": 32 + }, + { + "start": 2966, + "length": 32 + } + ], + "44330": [ + { + "start": 266, + "length": 32 + }, + { + "start": 2041, + "length": 32 + } + ], + "44332": [ + { + "start": 464, + "length": 32 + } + ], + "44334": [ + { + "start": 687, + "length": 32 + }, + { + "start": 1998, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "FINALITY_THRESHOLD()": "da4b05e7", + "GENESIS_TIME()": "f2882461", + "GENESIS_VALIDATORS_ROOT()": "a8769acb", + "SECONDS_PER_SLOT()": "304b9071", + "SLOTS_PER_PERIOD()": "2073ee70", + "SOURCE_CHAIN_ID()": "74be2150", + "consistent()": "2bcccca5", + "executionStateRoots(uint256)": "7623ee29", + "head()": "8f7dcfa3", + "headers(uint256)": "56f90d79", + "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": "4b4e4dff", + "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": "cb970952", + "syncCommitteePoseidons(uint256)": "b34711ab", + "timestamps(uint256)": "8bc33af3", + "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": "7227d785", + "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": "e5b708fe" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"genesisValidatorsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"genesisTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondsPerSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slotsPerPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"syncCommitteePeriod\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"finalityThreshold\",\"type\":\"uint16\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"Light Client\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"notice\":\"Uses Ethereum 2's Sync Committee Protocol to keep up-to-date with block headers from a Beacon Chain. This is done in a gas-efficient manner using zero-knowledge proofs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/lightclient/LightClient.sol\":\"LightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "genesisValidatorsRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "genesisTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "secondsPerSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "slotsPerPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "syncCommitteePeriod", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "syncCommitteePoseidon", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "finalityThreshold", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "HeadUpdate", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "period", + "type": "uint256", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "SyncCommitteeUpdate", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "FINALITY_THRESHOLD", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "GENESIS_TIME", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "GENESIS_VALIDATORS_ROOT", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "SECONDS_PER_SLOT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "SLOTS_PER_PERIOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "SOURCE_CHAIN_ID", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "consistent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "executionStateRoots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "head", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "headers", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "struct LightClientRotate", + "name": "update", + "type": "tuple", + "components": [ + { + "internalType": "struct LightClientStep", + "name": "step", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ] + } + ] + }, + { + "internalType": "bytes32", + "name": "syncCommitteeSSZ", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "syncCommitteePoseidon", + "type": "bytes32" + }, + { + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "rotate" + }, + { + "inputs": [ + { + "internalType": "struct LightClientStep", + "name": "update", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "step" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "syncCommitteePoseidons", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "timestamps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[65]", + "name": "input", + "type": "uint256[65]" + } + ], + "stateMutability": "view", + "type": "function", + "name": "verifyProofRotate", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[1]", + "name": "input", + "type": "uint256[1]" + } + ], + "stateMutability": "view", + "type": "function", + "name": "verifyProofStep", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { + "details": "A commitment to the the next sync committeee is signed by the current sync committee." + }, + "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { + "details": "The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof" + }, + "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": { + "returns": { + "r": " bool true if proof is valid" + } + }, + "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": { + "returns": { + "r": " bool true if proof is valid" + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "consistent()": { + "notice": "Whether the light client has had conflicting variables for the same slot." + }, + "executionStateRoots(uint256)": { + "notice": "Maps from a slot to the current finalized ethereum1 execution state root." + }, + "head()": { + "notice": "The latest slot the light client has a finalized header for." + }, + "headers(uint256)": { + "notice": "Maps from a slot to a beacon block header root." + }, + "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { + "notice": "Sets the sync committee for the next sync committeee period." + }, + "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { + "notice": "Updates the head of the light client to the provided slot." + }, + "syncCommitteePoseidons(uint256)": { + "notice": "Maps from a period to the poseidon commitment for the sync committee." + }, + "timestamps(uint256)": { + "notice": "Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key" + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/lightclient/LightClient.sol": "LightClient" + }, + "libraries": {} + }, + "sources": { + "src/libraries/SimpleSerialize.sol": { + "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "urls": [ + "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", + "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + ], + "license": null + }, + "src/lightclient/LightClient.sol": { + "keccak256": "0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71", + "urls": [ + "bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806", + "dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa" + ], + "license": null + }, + "src/lightclient/RotateVerifier.sol": { + "keccak256": "0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf", + "urls": [ + "bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0", + "dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8" + ], + "license": "GPL-3.0" + }, + "src/lightclient/StepVerifier.sol": { + "keccak256": "0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418", + "urls": [ + "bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2", + "dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET" + ], + "license": "GPL-3.0" + }, + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/lightclient/LightClient.sol", + "id": 45033, + "exportedSymbols": { + "Groth16Proof": [ + 44290 + ], + "ILightClient": [ + 47862 + ], + "LightClient": [ + 45032 + ], + "LightClientRotate": [ + 44315 + ], + "LightClientStep": [ + 44304 + ], + "RotateVerifier": [ + 46814 + ], + "SSZ": [ + 43867 + ], + "StepVerifier": [ + 47828 + ] + }, + "nodeType": "SourceUnit", + "src": "0:9502:113", + "nodes": [ + { + "id": 44267, + "nodeType": "PragmaDirective", + "src": "0:23:113", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 44269, + "nodeType": "ImportDirective", + "src": "25:54:113", + "nodes": [], + "absolutePath": "src/libraries/SimpleSerialize.sol", + "file": "src/libraries/SimpleSerialize.sol", + "nameLocation": "-1:-1:-1", + "scope": 45033, + "sourceUnit": 43868, + "symbolAliases": [ + { + "foreign": { + "id": 44268, + "name": "SSZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43867, + "src": "33:3:113", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 44271, + "nodeType": "ImportDirective", + "src": "81:73:113", + "nodes": [], + "absolutePath": "src/lightclient/interfaces/ILightClient.sol", + "file": "src/lightclient/interfaces/ILightClient.sol", + "nameLocation": "-1:-1:-1", + "scope": 45033, + "sourceUnit": 47863, + "symbolAliases": [ + { + "foreign": { + "id": 44270, + "name": "ILightClient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47862, + "src": "89:12:113", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 44273, + "nodeType": "ImportDirective", + "src": "155:62:113", + "nodes": [], + "absolutePath": "src/lightclient/StepVerifier.sol", + "file": "src/lightclient/StepVerifier.sol", + "nameLocation": "-1:-1:-1", + "scope": 45033, + "sourceUnit": 47829, + "symbolAliases": [ + { + "foreign": { + "id": 44272, + "name": "StepVerifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47828, + "src": "163:12:113", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 44275, + "nodeType": "ImportDirective", + "src": "218:66:113", + "nodes": [], + "absolutePath": "src/lightclient/RotateVerifier.sol", + "file": "src/lightclient/RotateVerifier.sol", + "nameLocation": "-1:-1:-1", + "scope": 45033, + "sourceUnit": 46815, + "symbolAliases": [ + { + "foreign": { + "id": 44274, + "name": "RotateVerifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46814, + "src": "226:14:113", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 44290, + "nodeType": "StructDefinition", + "src": "286:80:113", + "nodes": [], + "canonicalName": "Groth16Proof", + "members": [ + { + "constant": false, + "id": 44279, + "mutability": "mutable", + "name": "a", + "nameLocation": "323:1:113", + "nodeType": "VariableDeclaration", + "scope": 44290, + "src": "312:12:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + }, + "typeName": { + "baseType": { + "id": 44276, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "312:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44278, + "length": { + "hexValue": "32", + "id": 44277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "320:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "312:10:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44285, + "mutability": "mutable", + "name": "b", + "nameLocation": "344:1:113", + "nodeType": "VariableDeclaration", + "scope": 44290, + "src": "330:15:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_uint256_$2_storage_$2_storage_ptr", + "typeString": "uint256[2][2]" + }, + "typeName": { + "baseType": { + "baseType": { + "id": 44280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "330:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44282, + "length": { + "hexValue": "32", + "id": 44281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "338:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "330:10:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + } + }, + "id": 44284, + "length": { + "hexValue": "32", + "id": 44283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "341:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "330:13:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_uint256_$2_storage_$2_storage_ptr", + "typeString": "uint256[2][2]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44289, + "mutability": "mutable", + "name": "c", + "nameLocation": "362:1:113", + "nodeType": "VariableDeclaration", + "scope": 44290, + "src": "351:12:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + }, + "typeName": { + "baseType": { + "id": 44286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "351:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44288, + "length": { + "hexValue": "32", + "id": 44287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "359:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "351:10:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + } + }, + "visibility": "internal" + } + ], + "name": "Groth16Proof", + "nameLocation": "293:12:113", + "scope": 45033, + "visibility": "public" + }, + { + "id": 44304, + "nodeType": "StructDefinition", + "src": "368:195:113", + "nodes": [], + "canonicalName": "LightClientStep", + "members": [ + { + "constant": false, + "id": 44292, + "mutability": "mutable", + "name": "attestedSlot", + "nameLocation": "405:12:113", + "nodeType": "VariableDeclaration", + "scope": 44304, + "src": "397:20:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "397:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44294, + "mutability": "mutable", + "name": "finalizedSlot", + "nameLocation": "431:13:113", + "nodeType": "VariableDeclaration", + "scope": 44304, + "src": "423:21:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44293, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "423:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44296, + "mutability": "mutable", + "name": "participation", + "nameLocation": "458:13:113", + "nodeType": "VariableDeclaration", + "scope": 44304, + "src": "450:21:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "450:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44298, + "mutability": "mutable", + "name": "finalizedHeaderRoot", + "nameLocation": "485:19:113", + "nodeType": "VariableDeclaration", + "scope": 44304, + "src": "477:27:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44297, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "477:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44300, + "mutability": "mutable", + "name": "executionStateRoot", + "nameLocation": "518:18:113", + "nodeType": "VariableDeclaration", + "scope": 44304, + "src": "510:26:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44299, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "510:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44303, + "mutability": "mutable", + "name": "proof", + "nameLocation": "555:5:113", + "nodeType": "VariableDeclaration", + "scope": 44304, + "src": "542:18:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeString": "struct Groth16Proof" + }, + "typeName": { + "id": 44302, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44301, + "name": "Groth16Proof", + "nameLocations": [ + "542:12:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 44290, + "src": "542:12:113" + }, + "referencedDeclaration": 44290, + "src": "542:12:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeString": "struct Groth16Proof" + } + }, + "visibility": "internal" + } + ], + "name": "LightClientStep", + "nameLocation": "375:15:113", + "scope": 45033, + "visibility": "public" + }, + { + "id": 44315, + "nodeType": "StructDefinition", + "src": "565:143:113", + "nodes": [], + "canonicalName": "LightClientRotate", + "members": [ + { + "constant": false, + "id": 44307, + "mutability": "mutable", + "name": "step", + "nameLocation": "612:4:113", + "nodeType": "VariableDeclaration", + "scope": 44315, + "src": "596:20:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeString": "struct LightClientStep" + }, + "typeName": { + "id": 44306, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44305, + "name": "LightClientStep", + "nameLocations": [ + "596:15:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 44304, + "src": "596:15:113" + }, + "referencedDeclaration": 44304, + "src": "596:15:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeString": "struct LightClientStep" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44309, + "mutability": "mutable", + "name": "syncCommitteeSSZ", + "nameLocation": "630:16:113", + "nodeType": "VariableDeclaration", + "scope": 44315, + "src": "622:24:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44308, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "622:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44311, + "mutability": "mutable", + "name": "syncCommitteePoseidon", + "nameLocation": "660:21:113", + "nodeType": "VariableDeclaration", + "scope": 44315, + "src": "652:29:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44310, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "652:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44314, + "mutability": "mutable", + "name": "proof", + "nameLocation": "700:5:113", + "nodeType": "VariableDeclaration", + "scope": 44315, + "src": "687:18:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeString": "struct Groth16Proof" + }, + "typeName": { + "id": 44313, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44312, + "name": "Groth16Proof", + "nameLocations": [ + "687:12:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 44290, + "src": "687:12:113" + }, + "referencedDeclaration": 44290, + "src": "687:12:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeString": "struct Groth16Proof" + } + }, + "visibility": "internal" + } + ], + "name": "LightClientRotate", + "nameLocation": "572:17:113", + "scope": 45033, + "visibility": "public" + }, + { + "id": 45032, + "nodeType": "ContractDefinition", + "src": "953:8548:113", + "nodes": [ + { + "id": 44324, + "nodeType": "VariableDeclaration", + "src": "1026:48:113", + "nodes": [], + "constant": false, + "functionSelector": "a8769acb", + "mutability": "immutable", + "name": "GENESIS_VALIDATORS_ROOT", + "nameLocation": "1051:23:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44323, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1026:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "id": 44326, + "nodeType": "VariableDeclaration", + "src": "1080:37:113", + "nodes": [], + "constant": false, + "functionSelector": "f2882461", + "mutability": "immutable", + "name": "GENESIS_TIME", + "nameLocation": "1105:12:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1080:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "id": 44328, + "nodeType": "VariableDeclaration", + "src": "1123:41:113", + "nodes": [], + "constant": false, + "functionSelector": "304b9071", + "mutability": "immutable", + "name": "SECONDS_PER_SLOT", + "nameLocation": "1148:16:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1123:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "id": 44330, + "nodeType": "VariableDeclaration", + "src": "1170:41:113", + "nodes": [], + "constant": false, + "functionSelector": "2073ee70", + "mutability": "immutable", + "name": "SLOTS_PER_PERIOD", + "nameLocation": "1195:16:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1170:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "id": 44332, + "nodeType": "VariableDeclaration", + "src": "1217:39:113", + "nodes": [], + "constant": false, + "functionSelector": "74be2150", + "mutability": "immutable", + "name": "SOURCE_CHAIN_ID", + "nameLocation": "1241:15:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 44331, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1217:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "public" + }, + { + "id": 44334, + "nodeType": "VariableDeclaration", + "src": "1262:42:113", + "nodes": [], + "constant": false, + "functionSelector": "da4b05e7", + "mutability": "immutable", + "name": "FINALITY_THRESHOLD", + "nameLocation": "1286:18:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 44333, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1262:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "public" + }, + { + "id": 44337, + "nodeType": "VariableDeclaration", + "src": "1311:62:113", + "nodes": [], + "constant": true, + "mutability": "constant", + "name": "MIN_SYNC_COMMITTEE_PARTICIPANTS", + "nameLocation": "1337:31:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44335, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1311:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3130", + "id": 44336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1371:2:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "visibility": "internal" + }, + { + "id": 44340, + "nodeType": "VariableDeclaration", + "src": "1379:51:113", + "nodes": [], + "constant": true, + "mutability": "constant", + "name": "SYNC_COMMITTEE_SIZE", + "nameLocation": "1405:19:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1379:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "353132", + "id": 44339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1427:3:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_512_by_1", + "typeString": "int_const 512" + }, + "value": "512" + }, + "visibility": "internal" + }, + { + "id": 44343, + "nodeType": "VariableDeclaration", + "src": "1436:52:113", + "nodes": [], + "constant": true, + "mutability": "constant", + "name": "FINALIZED_ROOT_INDEX", + "nameLocation": "1462:20:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44341, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1436:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313035", + "id": 44342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1485:3:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_105_by_1", + "typeString": "int_const 105" + }, + "value": "105" + }, + "visibility": "internal" + }, + { + "id": 44346, + "nodeType": "VariableDeclaration", + "src": "1494:56:113", + "nodes": [], + "constant": true, + "mutability": "constant", + "name": "NEXT_SYNC_COMMITTEE_INDEX", + "nameLocation": "1520:25:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44344, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1494:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3535", + "id": 44345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1548:2:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_55_by_1", + "typeString": "int_const 55" + }, + "value": "55" + }, + "visibility": "internal" + }, + { + "id": 44349, + "nodeType": "VariableDeclaration", + "src": "1556:58:113", + "nodes": [], + "constant": true, + "mutability": "constant", + "name": "EXECUTION_STATE_ROOT_INDEX", + "nameLocation": "1582:26:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44347, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1556:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "343032", + "id": 44348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1611:3:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_402_by_1", + "typeString": "int_const 402" + }, + "value": "402" + }, + "visibility": "internal" + }, + { + "id": 44353, + "nodeType": "VariableDeclaration", + "src": "1711:29:113", + "nodes": [], + "baseFunctions": [ + 47835 + ], + "constant": false, + "documentation": { + "id": 44350, + "nodeType": "StructuredDocumentation", + "src": "1621:85:113", + "text": "@notice Whether the light client has had conflicting variables for the same slot." + }, + "functionSelector": "2bcccca5", + "mutability": "mutable", + "name": "consistent", + "nameLocation": "1723:10:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 44351, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1711:4:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": { + "hexValue": "74727565", + "id": 44352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1736:4:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "visibility": "public" + }, + { + "id": 44357, + "nodeType": "VariableDeclaration", + "src": "1824:23:113", + "nodes": [], + "baseFunctions": [ + 47840 + ], + "constant": false, + "documentation": { + "id": 44354, + "nodeType": "StructuredDocumentation", + "src": "1747:72:113", + "text": "@notice The latest slot the light client has a finalized header for." + }, + "functionSelector": "8f7dcfa3", + "mutability": "mutable", + "name": "head", + "nameLocation": "1839:4:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1824:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30", + "id": 44356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1846:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "public" + }, + { + "id": 44362, + "nodeType": "VariableDeclaration", + "src": "1918:42:113", + "nodes": [], + "baseFunctions": [ + 47847 + ], + "constant": false, + "documentation": { + "id": 44358, + "nodeType": "StructuredDocumentation", + "src": "1854:59:113", + "text": "@notice Maps from a slot to a beacon block header root." + }, + "functionSelector": "56f90d79", + "mutability": "mutable", + "name": "headers", + "nameLocation": "1953:7:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + }, + "typeName": { + "id": 44361, + "keyType": { + "id": 44359, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1926:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1918:27:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + }, + "valueType": { + "id": 44360, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1937:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "visibility": "public" + }, + { + "id": 44367, + "nodeType": "VariableDeclaration", + "src": "2076:45:113", + "nodes": [], + "baseFunctions": [ + 47861 + ], + "constant": false, + "documentation": { + "id": 44363, + "nodeType": "StructuredDocumentation", + "src": "1967:104:113", + "text": "@notice Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key" + }, + "functionSelector": "8bc33af3", + "mutability": "mutable", + "name": "timestamps", + "nameLocation": "2111:10:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 44366, + "keyType": { + "id": 44364, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2084:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2076:27:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 44365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2095:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "id": 44372, + "nodeType": "VariableDeclaration", + "src": "2218:54:113", + "nodes": [], + "baseFunctions": [ + 47854 + ], + "constant": false, + "documentation": { + "id": 44368, + "nodeType": "StructuredDocumentation", + "src": "2128:85:113", + "text": "@notice Maps from a slot to the current finalized ethereum1 execution state root." + }, + "functionSelector": "7623ee29", + "mutability": "mutable", + "name": "executionStateRoots", + "nameLocation": "2253:19:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + }, + "typeName": { + "id": 44371, + "keyType": { + "id": 44369, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2226:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2218:27:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + }, + "valueType": { + "id": 44370, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2237:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "visibility": "public" + }, + { + "id": 44377, + "nodeType": "VariableDeclaration", + "src": "2365:57:113", + "nodes": [], + "constant": false, + "documentation": { + "id": 44373, + "nodeType": "StructuredDocumentation", + "src": "2279:81:113", + "text": "@notice Maps from a period to the poseidon commitment for the sync committee." + }, + "functionSelector": "b34711ab", + "mutability": "mutable", + "name": "syncCommitteePoseidons", + "nameLocation": "2400:22:113", + "scope": 45032, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + }, + "typeName": { + "id": 44376, + "keyType": { + "id": 44374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2373:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2365:27:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + }, + "valueType": { + "id": 44375, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2384:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "visibility": "public" + }, + { + "id": 44383, + "nodeType": "EventDefinition", + "src": "2429:61:113", + "nodes": [], + "anonymous": false, + "eventSelector": "fefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a02", + "name": "HeadUpdate", + "nameLocation": "2435:10:113", + "parameters": { + "id": 44382, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44379, + "indexed": true, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2462:4:113", + "nodeType": "VariableDeclaration", + "scope": 44383, + "src": "2446:20:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2446:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44381, + "indexed": true, + "mutability": "mutable", + "name": "root", + "nameLocation": "2484:4:113", + "nodeType": "VariableDeclaration", + "scope": 44383, + "src": "2468:20:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44380, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2468:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2445:44:113" + } + }, + { + "id": 44389, + "nodeType": "EventDefinition", + "src": "2495:72:113", + "nodes": [], + "anonymous": false, + "eventSelector": "783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f", + "name": "SyncCommitteeUpdate", + "nameLocation": "2501:19:113", + "parameters": { + "id": 44388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44385, + "indexed": true, + "mutability": "mutable", + "name": "period", + "nameLocation": "2537:6:113", + "nodeType": "VariableDeclaration", + "scope": 44389, + "src": "2521:22:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2521:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44387, + "indexed": true, + "mutability": "mutable", + "name": "root", + "nameLocation": "2561:4:113", + "nodeType": "VariableDeclaration", + "scope": 44389, + "src": "2545:20:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44386, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2545:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2520:46:113" + } + }, + { + "id": 44438, + "nodeType": "FunctionDefinition", + "src": "2573:643:113", + "nodes": [], + "body": { + "id": 44437, + "nodeType": "Block", + "src": "2863:353:113", + "nodes": [], + "statements": [ + { + "expression": { + "id": 44410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44408, + "name": "GENESIS_VALIDATORS_ROOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44324, + "src": "2873:23:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 44409, + "name": "genesisValidatorsRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44391, + "src": "2899:21:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2873:47:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 44411, + "nodeType": "ExpressionStatement", + "src": "2873:47:113" + }, + { + "expression": { + "id": 44414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44412, + "name": "GENESIS_TIME", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44326, + "src": "2930:12:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 44413, + "name": "genesisTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44393, + "src": "2945:11:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2930:26:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44415, + "nodeType": "ExpressionStatement", + "src": "2930:26:113" + }, + { + "expression": { + "id": 44418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44416, + "name": "SECONDS_PER_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44328, + "src": "2966:16:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 44417, + "name": "secondsPerSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44395, + "src": "2985:14:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2966:33:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44419, + "nodeType": "ExpressionStatement", + "src": "2966:33:113" + }, + { + "expression": { + "id": 44422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44420, + "name": "SLOTS_PER_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44330, + "src": "3009:16:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 44421, + "name": "slotsPerPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44397, + "src": "3028:14:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3009:33:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44423, + "nodeType": "ExpressionStatement", + "src": "3009:33:113" + }, + { + "expression": { + "id": 44426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44424, + "name": "SOURCE_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44332, + "src": "3052:15:113", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 44425, + "name": "sourceChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44403, + "src": "3070:13:113", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "3052:31:113", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 44427, + "nodeType": "ExpressionStatement", + "src": "3052:31:113" + }, + { + "expression": { + "id": 44430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44428, + "name": "FINALITY_THRESHOLD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44334, + "src": "3093:18:113", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 44429, + "name": "finalityThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44405, + "src": "3114:17:113", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "3093:38:113", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 44431, + "nodeType": "ExpressionStatement", + "src": "3093:38:113" + }, + { + "expression": { + "arguments": [ + { + "id": 44433, + "name": "syncCommitteePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44399, + "src": "3166:19:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 44434, + "name": "syncCommitteePoseidon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44401, + "src": "3187:21:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 44432, + "name": "setSyncCommitteePoseidon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45031, + "src": "3141:24:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (uint256,bytes32)" + } + }, + "id": 44435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3141:68:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44436, + "nodeType": "ExpressionStatement", + "src": "3141:68:113" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 44406, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44391, + "mutability": "mutable", + "name": "genesisValidatorsRoot", + "nameLocation": "2602:21:113", + "nodeType": "VariableDeclaration", + "scope": 44438, + "src": "2594:29:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44390, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2594:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44393, + "mutability": "mutable", + "name": "genesisTime", + "nameLocation": "2641:11:113", + "nodeType": "VariableDeclaration", + "scope": 44438, + "src": "2633:19:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2633:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44395, + "mutability": "mutable", + "name": "secondsPerSlot", + "nameLocation": "2670:14:113", + "nodeType": "VariableDeclaration", + "scope": 44438, + "src": "2662:22:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44394, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2662:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44397, + "mutability": "mutable", + "name": "slotsPerPeriod", + "nameLocation": "2702:14:113", + "nodeType": "VariableDeclaration", + "scope": 44438, + "src": "2694:22:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2694:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44399, + "mutability": "mutable", + "name": "syncCommitteePeriod", + "nameLocation": "2734:19:113", + "nodeType": "VariableDeclaration", + "scope": 44438, + "src": "2726:27:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44398, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2726:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44401, + "mutability": "mutable", + "name": "syncCommitteePoseidon", + "nameLocation": "2771:21:113", + "nodeType": "VariableDeclaration", + "scope": 44438, + "src": "2763:29:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44400, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2763:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44403, + "mutability": "mutable", + "name": "sourceChainId", + "nameLocation": "2809:13:113", + "nodeType": "VariableDeclaration", + "scope": 44438, + "src": "2802:20:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 44402, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2802:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44405, + "mutability": "mutable", + "name": "finalityThreshold", + "nameLocation": "2839:17:113", + "nodeType": "VariableDeclaration", + "scope": 44438, + "src": "2832:24:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 44404, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2832:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "2584:278:113" + }, + "returnParameters": { + "id": 44407, + "nodeType": "ParameterList", + "parameters": [], + "src": "2863:0:113" + }, + "scope": 45032, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 44490, + "nodeType": "FunctionDefinition", + "src": "3551:577:113", + "nodes": [], + "body": { + "id": 44489, + "nodeType": "Block", + "src": "3605:523:113", + "nodes": [], + "statements": [ + { + "assignments": [ + 44446 + ], + "declarations": [ + { + "constant": false, + "id": 44446, + "mutability": "mutable", + "name": "finalized", + "nameLocation": "3620:9:113", + "nodeType": "VariableDeclaration", + "scope": 44489, + "src": "3615:14:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 44445, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3615:4:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 44450, + "initialValue": { + "arguments": [ + { + "id": 44448, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44442, + "src": "3644:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + ], + "id": 44447, + "name": "processStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44584, + "src": "3632:11:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44304_memory_ptr_$returns$_t_bool_$", + "typeString": "function (struct LightClientStep memory) view returns (bool)" + } + }, + "id": 44449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3632:19:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3615:36:113" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 44451, + "name": "getCurrentSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44907, + "src": "3666:14:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 44452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3666:16:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 44453, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44442, + "src": "3685:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44454, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3692:12:113", + "memberName": "attestedSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44292, + "src": "3685:19:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3666:38:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44461, + "nodeType": "IfStatement", + "src": "3662:115:113", + "trueBody": { + "id": 44460, + "nodeType": "Block", + "src": "3706:71:113", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "55706461746520736c6f7420697320746f6f2066617220696e2074686520667574757265", + "id": 44457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3727:38:113", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9d5b6907988bae42b7e613bf07235f2e4f54b11455dcdb40bb4ef279eae7a76f", + "typeString": "literal_string \"Update slot is too far in the future\"" + }, + "value": "Update slot is too far in the future" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9d5b6907988bae42b7e613bf07235f2e4f54b11455dcdb40bb4ef279eae7a76f", + "typeString": "literal_string \"Update slot is too far in the future\"" + } + ], + "id": 44456, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "3720:6:113", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 44458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3720:46:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44459, + "nodeType": "ExpressionStatement", + "src": "3720:46:113" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 44462, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44442, + "src": "3791:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44463, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3798:13:113", + "memberName": "finalizedSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44294, + "src": "3791:20:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 44464, + "name": "head", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44357, + "src": "3814:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3791:27:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44471, + "nodeType": "IfStatement", + "src": "3787:102:113", + "trueBody": { + "id": 44470, + "nodeType": "Block", + "src": "3820:69:113", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "55706461746520736c6f74206c657373207468616e2063757272656e742068656164", + "id": 44467, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3841:36:113", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6c291bcab9e481c31fc21f7d3aa8b374c3aabd0b9471c965073c10d2045016c4", + "typeString": "literal_string \"Update slot less than current head\"" + }, + "value": "Update slot less than current head" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_6c291bcab9e481c31fc21f7d3aa8b374c3aabd0b9471c965073c10d2045016c4", + "typeString": "literal_string \"Update slot less than current head\"" + } + ], + "id": 44466, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "3834:6:113", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 44468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3834:44:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44469, + "nodeType": "ExpressionStatement", + "src": "3834:44:113" + } + ] + } + }, + { + "condition": { + "id": 44472, + "name": "finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44446, + "src": "3903:9:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 44487, + "nodeType": "Block", + "src": "4064:58:113", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "4e6f7420656e6f756768207061727469636970616e7473", + "id": 44484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4085:25:113", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8979aa78e11231d286d47a92f052b8a41cf7d9d818a58b8b574dd67335800648", + "typeString": "literal_string \"Not enough participants\"" + }, + "value": "Not enough participants" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8979aa78e11231d286d47a92f052b8a41cf7d9d818a58b8b574dd67335800648", + "typeString": "literal_string \"Not enough participants\"" + } + ], + "id": 44483, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "4078:6:113", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 44485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4078:33:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44486, + "nodeType": "ExpressionStatement", + "src": "4078:33:113" + } + ] + }, + "id": 44488, + "nodeType": "IfStatement", + "src": "3899:223:113", + "trueBody": { + "id": 44482, + "nodeType": "Block", + "src": "3914:144:113", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 44474, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44442, + "src": "3958:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44475, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3965:13:113", + "memberName": "finalizedSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44294, + "src": "3958:20:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 44476, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44442, + "src": "3980:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44477, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3987:19:113", + "memberName": "finalizedHeaderRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44298, + "src": "3980:26:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 44478, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44442, + "src": "4008:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44479, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4015:18:113", + "memberName": "executionStateRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44300, + "src": "4008:25:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 44473, + "name": "setSlotRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44990, + "src": "3928:12:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (uint256,bytes32,bytes32)" + } + }, + "id": 44480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3928:119:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44481, + "nodeType": "ExpressionStatement", + "src": "3928:119:113" + } + ] + } + } + ] + }, + "documentation": { + "id": 44439, + "nodeType": "StructuredDocumentation", + "src": "3222:324:113", + "text": "@notice Updates the head of the light client to the provided slot.\n @dev The conditions for updating the head of the light client involve checking:\n 1) Enough signatures from the current sync committee for n=512\n 2) A valid finality proof\n 3) A valid execution state root proof" + }, + "functionSelector": "cb970952", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "step", + "nameLocation": "3560:4:113", + "parameters": { + "id": 44443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44442, + "mutability": "mutable", + "name": "update", + "nameLocation": "3588:6:113", + "nodeType": "VariableDeclaration", + "scope": 44490, + "src": "3565:29:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep" + }, + "typeName": { + "id": 44441, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44440, + "name": "LightClientStep", + "nameLocations": [ + "3565:15:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 44304, + "src": "3565:15:113" + }, + "referencedDeclaration": 44304, + "src": "3565:15:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeString": "struct LightClientStep" + } + }, + "visibility": "internal" + } + ], + "src": "3564:31:113" + }, + "returnParameters": { + "id": 44444, + "nodeType": "ParameterList", + "parameters": [], + "src": "3605:0:113" + }, + "scope": 45032, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 44537, + "nodeType": "FunctionDefinition", + "src": "4310:457:113", + "nodes": [], + "body": { + "id": 44536, + "nodeType": "Block", + "src": "4368:399:113", + "nodes": [], + "statements": [ + { + "assignments": [ + 44499 + ], + "declarations": [ + { + "constant": false, + "id": 44499, + "mutability": "mutable", + "name": "stepUpdate", + "nameLocation": "4401:10:113", + "nodeType": "VariableDeclaration", + "scope": 44536, + "src": "4378:33:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep" + }, + "typeName": { + "id": 44498, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44497, + "name": "LightClientStep", + "nameLocations": [ + "4378:15:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 44304, + "src": "4378:15:113" + }, + "referencedDeclaration": 44304, + "src": "4378:15:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeString": "struct LightClientStep" + } + }, + "visibility": "internal" + } + ], + "id": 44502, + "initialValue": { + "expression": { + "id": 44500, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44494, + "src": "4414:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeString": "struct LightClientRotate memory" + } + }, + "id": 44501, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4421:4:113", + "memberName": "step", + "nodeType": "MemberAccess", + "referencedDeclaration": 44307, + "src": "4414:11:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4378:47:113" + }, + { + "assignments": [ + 44504 + ], + "declarations": [ + { + "constant": false, + "id": 44504, + "mutability": "mutable", + "name": "finalized", + "nameLocation": "4440:9:113", + "nodeType": "VariableDeclaration", + "scope": 44536, + "src": "4435:14:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 44503, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4435:4:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 44509, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 44506, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44494, + "src": "4464:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeString": "struct LightClientRotate memory" + } + }, + "id": 44507, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4471:4:113", + "memberName": "step", + "nodeType": "MemberAccess", + "referencedDeclaration": 44307, + "src": "4464:11:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + ], + "id": 44505, + "name": "processStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44584, + "src": "4452:11:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44304_memory_ptr_$returns$_t_bool_$", + "typeString": "function (struct LightClientStep memory) view returns (bool)" + } + }, + "id": 44508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4452:24:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4435:41:113" + }, + { + "assignments": [ + 44511 + ], + "declarations": [ + { + "constant": false, + "id": 44511, + "mutability": "mutable", + "name": "currentPeriod", + "nameLocation": "4494:13:113", + "nodeType": "VariableDeclaration", + "scope": 44536, + "src": "4486:21:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44510, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4486:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 44516, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 44513, + "name": "stepUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44499, + "src": "4533:10:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44514, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4544:13:113", + "memberName": "finalizedSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44294, + "src": "4533:24:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44512, + "name": "getSyncCommitteePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44892, + "src": "4510:22:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 44515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4510:48:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4486:72:113" + }, + { + "assignments": [ + 44518 + ], + "declarations": [ + { + "constant": false, + "id": 44518, + "mutability": "mutable", + "name": "nextPeriod", + "nameLocation": "4576:10:113", + "nodeType": "VariableDeclaration", + "scope": 44536, + "src": "4568:18:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44517, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4568:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 44522, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 44519, + "name": "currentPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44511, + "src": "4589:13:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 44520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4605:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4589:17:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4568:38:113" + }, + { + "expression": { + "arguments": [ + { + "id": 44524, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44494, + "src": "4637:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeString": "struct LightClientRotate memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeString": "struct LightClientRotate memory" + } + ], + "id": 44523, + "name": "zkLightClientRotate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44879, + "src": "4617:19:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientRotate_$44315_memory_ptr_$returns$__$", + "typeString": "function (struct LightClientRotate memory) view" + } + }, + "id": 44525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4617:27:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44526, + "nodeType": "ExpressionStatement", + "src": "4617:27:113" + }, + { + "condition": { + "id": 44527, + "name": "finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44504, + "src": "4659:9:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44535, + "nodeType": "IfStatement", + "src": "4655:106:113", + "trueBody": { + "id": 44534, + "nodeType": "Block", + "src": "4670:91:113", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 44529, + "name": "nextPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44518, + "src": "4709:10:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 44530, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44494, + "src": "4721:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeString": "struct LightClientRotate memory" + } + }, + "id": 44531, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4728:21:113", + "memberName": "syncCommitteePoseidon", + "nodeType": "MemberAccess", + "referencedDeclaration": 44311, + "src": "4721:28:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 44528, + "name": "setSyncCommitteePoseidon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45031, + "src": "4684:24:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (uint256,bytes32)" + } + }, + "id": 44532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4684:66:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44533, + "nodeType": "ExpressionStatement", + "src": "4684:66:113" + } + ] + } + } + ] + }, + "documentation": { + "id": 44491, + "nodeType": "StructuredDocumentation", + "src": "4134:171:113", + "text": "@notice Sets the sync committee for the next sync committeee period.\n @dev A commitment to the the next sync committeee is signed by the current sync committee." + }, + "functionSelector": "4b4e4dff", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "rotate", + "nameLocation": "4319:6:113", + "parameters": { + "id": 44495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44494, + "mutability": "mutable", + "name": "update", + "nameLocation": "4351:6:113", + "nodeType": "VariableDeclaration", + "scope": 44537, + "src": "4326:31:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeString": "struct LightClientRotate" + }, + "typeName": { + "id": 44493, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44492, + "name": "LightClientRotate", + "nameLocations": [ + "4326:17:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 44315, + "src": "4326:17:113" + }, + "referencedDeclaration": 44315, + "src": "4326:17:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_storage_ptr", + "typeString": "struct LightClientRotate" + } + }, + "visibility": "internal" + } + ], + "src": "4325:33:113" + }, + "returnParameters": { + "id": 44496, + "nodeType": "ParameterList", + "parameters": [], + "src": "4368:0:113" + }, + "scope": 45032, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 44584, + "nodeType": "FunctionDefinition", + "src": "4850:556:113", + "nodes": [], + "body": { + "id": 44583, + "nodeType": "Block", + "src": "4931:475:113", + "nodes": [], + "statements": [ + { + "assignments": [ + 44547 + ], + "declarations": [ + { + "constant": false, + "id": 44547, + "mutability": "mutable", + "name": "currentPeriod", + "nameLocation": "4949:13:113", + "nodeType": "VariableDeclaration", + "scope": 44583, + "src": "4941:21:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4941:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 44552, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 44549, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44541, + "src": "4988:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44550, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4995:12:113", + "memberName": "attestedSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44292, + "src": "4988:19:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44548, + "name": "getSyncCommitteePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44892, + "src": "4965:22:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 44551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4965:43:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4941:67:113" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 44557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 44553, + "name": "syncCommitteePoseidons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44377, + "src": "5023:22:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 44555, + "indexExpression": { + "id": 44554, + "name": "currentPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44547, + "src": "5046:13:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5023:37:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 44556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5064:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5023:42:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 44563, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44541, + "src": "5165:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44564, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5172:13:113", + "memberName": "participation", + "nodeType": "MemberAccess", + "referencedDeclaration": 44296, + "src": "5165:20:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 44565, + "name": "MIN_SYNC_COMMITTEE_PARTICIPANTS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44337, + "src": "5188:31:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5165:54:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44572, + "nodeType": "IfStatement", + "src": "5161:144:113", + "trueBody": { + "id": 44571, + "nodeType": "Block", + "src": "5221:84:113", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041525449434950414e5453207369676e65642e", + "id": 44568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5242:51:113", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cae0be8985b78a6c0f9dfa91efa4accdc18ad2daf0009e8f2dec9f1b45d87605", + "typeString": "literal_string \"Less than MIN_SYNC_COMMITTEE_PARTICIPANTS signed.\"" + }, + "value": "Less than MIN_SYNC_COMMITTEE_PARTICIPANTS signed." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_cae0be8985b78a6c0f9dfa91efa4accdc18ad2daf0009e8f2dec9f1b45d87605", + "typeString": "literal_string \"Less than MIN_SYNC_COMMITTEE_PARTICIPANTS signed.\"" + } + ], + "id": 44567, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "5235:6:113", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 44569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5235:59:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44570, + "nodeType": "ExpressionStatement", + "src": "5235:59:113" + } + ] + } + }, + "id": 44573, + "nodeType": "IfStatement", + "src": "5019:286:113", + "trueBody": { + "id": 44562, + "nodeType": "Block", + "src": "5067:88:113", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "53796e6320636f6d6d697474656520666f722063757272656e7420706572696f64206973206e6f7420696e697469616c697a65642e", + "id": 44559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5088:55:113", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e8780d403efa266a60b69589365396827d2cfe370ce2d6818315948fc218b935", + "typeString": "literal_string \"Sync committee for current period is not initialized.\"" + }, + "value": "Sync committee for current period is not initialized." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e8780d403efa266a60b69589365396827d2cfe370ce2d6818315948fc218b935", + "typeString": "literal_string \"Sync committee for current period is not initialized.\"" + } + ], + "id": 44558, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "5081:6:113", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 44560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5081:63:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44561, + "nodeType": "ExpressionStatement", + "src": "5081:63:113" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 44575, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44541, + "src": "5333:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + ], + "id": 44574, + "name": "zkLightClientStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44747, + "src": "5315:17:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44304_memory_ptr_$returns$__$", + "typeString": "function (struct LightClientStep memory) view" + } + }, + "id": 44576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5315:25:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44577, + "nodeType": "ExpressionStatement", + "src": "5315:25:113" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 44578, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44541, + "src": "5358:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44579, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5365:13:113", + "memberName": "participation", + "nodeType": "MemberAccess", + "referencedDeclaration": 44296, + "src": "5358:20:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 44580, + "name": "FINALITY_THRESHOLD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44334, + "src": "5381:18:113", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "5358:41:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 44545, + "id": 44582, + "nodeType": "Return", + "src": "5351:48:113" + } + ] + }, + "documentation": { + "id": 44538, + "nodeType": "StructuredDocumentation", + "src": "4773:72:113", + "text": "@notice Verifies that the header has enough signatures for finality." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "processStep", + "nameLocation": "4859:11:113", + "parameters": { + "id": 44542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44541, + "mutability": "mutable", + "name": "update", + "nameLocation": "4894:6:113", + "nodeType": "VariableDeclaration", + "scope": 44584, + "src": "4871:29:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep" + }, + "typeName": { + "id": 44540, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44539, + "name": "LightClientStep", + "nameLocations": [ + "4871:15:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 44304, + "src": "4871:15:113" + }, + "referencedDeclaration": 44304, + "src": "4871:15:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeString": "struct LightClientStep" + } + }, + "visibility": "internal" + } + ], + "src": "4870:31:113" + }, + "returnParameters": { + "id": 44545, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44544, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 44584, + "src": "4925:4:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 44543, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4925:4:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4924:6:113" + }, + "scope": 45032, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 44747, + "nodeType": "FunctionDefinition", + "src": "5509:1064:113", + "nodes": [], + "body": { + "id": 44746, + "nodeType": "Block", + "src": "5581:992:113", + "nodes": [], + "statements": [ + { + "assignments": [ + 44592 + ], + "declarations": [ + { + "constant": false, + "id": 44592, + "mutability": "mutable", + "name": "attestedSlotLE", + "nameLocation": "5599:14:113", + "nodeType": "VariableDeclaration", + "scope": 44746, + "src": "5591:22:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44591, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5591:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 44598, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 44595, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44588, + "src": "5635:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44596, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5642:12:113", + "memberName": "attestedSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44292, + "src": "5635:19:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 44593, + "name": "SSZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43867, + "src": "5616:3:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeString": "type(library SSZ)" + } + }, + "id": 44594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5620:14:113", + "memberName": "toLittleEndian", + "nodeType": "MemberAccess", + "referencedDeclaration": 43478, + "src": "5616:18:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) pure returns (bytes32)" + } + }, + "id": 44597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5616:39:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5591:64:113" + }, + { + "assignments": [ + 44600 + ], + "declarations": [ + { + "constant": false, + "id": 44600, + "mutability": "mutable", + "name": "finalizedSlotLE", + "nameLocation": "5673:15:113", + "nodeType": "VariableDeclaration", + "scope": 44746, + "src": "5665:23:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44599, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5665:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 44606, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 44603, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44588, + "src": "5710:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44604, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5717:13:113", + "memberName": "finalizedSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44294, + "src": "5710:20:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 44601, + "name": "SSZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43867, + "src": "5691:3:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeString": "type(library SSZ)" + } + }, + "id": 44602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5695:14:113", + "memberName": "toLittleEndian", + "nodeType": "MemberAccess", + "referencedDeclaration": 43478, + "src": "5691:18:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) pure returns (bytes32)" + } + }, + "id": 44605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5691:40:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5665:66:113" + }, + { + "assignments": [ + 44608 + ], + "declarations": [ + { + "constant": false, + "id": 44608, + "mutability": "mutable", + "name": "participationLE", + "nameLocation": "5749:15:113", + "nodeType": "VariableDeclaration", + "scope": 44746, + "src": "5741:23:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44607, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5741:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 44614, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 44611, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44588, + "src": "5786:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44612, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5793:13:113", + "memberName": "participation", + "nodeType": "MemberAccess", + "referencedDeclaration": 44296, + "src": "5786:20:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 44609, + "name": "SSZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43867, + "src": "5767:3:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeString": "type(library SSZ)" + } + }, + "id": 44610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5771:14:113", + "memberName": "toLittleEndian", + "nodeType": "MemberAccess", + "referencedDeclaration": 43478, + "src": "5767:18:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) pure returns (bytes32)" + } + }, + "id": 44613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5767:40:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5741:66:113" + }, + { + "assignments": [ + 44616 + ], + "declarations": [ + { + "constant": false, + "id": 44616, + "mutability": "mutable", + "name": "currentPeriod", + "nameLocation": "5825:13:113", + "nodeType": "VariableDeclaration", + "scope": 44746, + "src": "5817:21:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44615, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5817:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 44621, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 44618, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44588, + "src": "5864:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44619, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5871:12:113", + "memberName": "attestedSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44292, + "src": "5864:19:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44617, + "name": "getSyncCommitteePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44892, + "src": "5841:22:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 44620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5841:43:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5817:67:113" + }, + { + "assignments": [ + 44623 + ], + "declarations": [ + { + "constant": false, + "id": 44623, + "mutability": "mutable", + "name": "syncCommitteePoseidon", + "nameLocation": "5902:21:113", + "nodeType": "VariableDeclaration", + "scope": 44746, + "src": "5894:29:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44622, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5894:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 44627, + "initialValue": { + "baseExpression": { + "id": 44624, + "name": "syncCommitteePoseidons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44377, + "src": "5926:22:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 44626, + "indexExpression": { + "id": 44625, + "name": "currentPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44616, + "src": "5949:13:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5926:37:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5894:69:113" + }, + { + "assignments": [ + 44629 + ], + "declarations": [ + { + "constant": false, + "id": 44629, + "mutability": "mutable", + "name": "h", + "nameLocation": "5982:1:113", + "nodeType": "VariableDeclaration", + "scope": 44746, + "src": "5974:9:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44628, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5974:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 44630, + "nodeType": "VariableDeclarationStatement", + "src": "5974:9:113" + }, + { + "expression": { + "id": 44640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44631, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44629, + "src": "5993:1:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 44636, + "name": "attestedSlotLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44592, + "src": "6017:14:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 44637, + "name": "finalizedSlotLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44600, + "src": "6033:15:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 44634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6004:5:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 44633, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6004:5:113", + "typeDescriptions": {} + } + }, + "id": 44635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6010:6:113", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "6004:12:113", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 44638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6004:45:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 44632, + "name": "sha256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -22, + "src": "5997:6:113", + "typeDescriptions": { + "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 44639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5997:53:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5993:57:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 44641, + "nodeType": "ExpressionStatement", + "src": "5993:57:113" + }, + { + "expression": { + "id": 44652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44642, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44629, + "src": "6060:1:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 44647, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44629, + "src": "6084:1:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 44648, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44588, + "src": "6087:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44649, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6094:19:113", + "memberName": "finalizedHeaderRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44298, + "src": "6087:26:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 44645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6071:5:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 44644, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6071:5:113", + "typeDescriptions": {} + } + }, + "id": 44646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6077:6:113", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "6071:12:113", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 44650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6071:43:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 44643, + "name": "sha256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -22, + "src": "6064:6:113", + "typeDescriptions": { + "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 44651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6064:51:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6060:55:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 44653, + "nodeType": "ExpressionStatement", + "src": "6060:55:113" + }, + { + "expression": { + "id": 44663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44654, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44629, + "src": "6125:1:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 44659, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44629, + "src": "6149:1:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 44660, + "name": "participationLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44608, + "src": "6152:15:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 44657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6136:5:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 44656, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6136:5:113", + "typeDescriptions": {} + } + }, + "id": 44658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6142:6:113", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "6136:12:113", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 44661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6136:32:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 44655, + "name": "sha256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -22, + "src": "6129:6:113", + "typeDescriptions": { + "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 44662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6129:40:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6125:44:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 44664, + "nodeType": "ExpressionStatement", + "src": "6125:44:113" + }, + { + "expression": { + "id": 44675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44665, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44629, + "src": "6179:1:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 44670, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44629, + "src": "6203:1:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 44671, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44588, + "src": "6206:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44672, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6213:18:113", + "memberName": "executionStateRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44300, + "src": "6206:25:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 44668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6190:5:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 44667, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6190:5:113", + "typeDescriptions": {} + } + }, + "id": 44669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6196:6:113", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "6190:12:113", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 44673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6190:42:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 44666, + "name": "sha256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -22, + "src": "6183:6:113", + "typeDescriptions": { + "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 44674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6183:50:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6179:54:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 44676, + "nodeType": "ExpressionStatement", + "src": "6179:54:113" + }, + { + "expression": { + "id": 44686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44677, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44629, + "src": "6243:1:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 44682, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44629, + "src": "6267:1:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 44683, + "name": "syncCommitteePoseidon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44623, + "src": "6270:21:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 44680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6254:5:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 44679, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6254:5:113", + "typeDescriptions": {} + } + }, + "id": 44681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6260:6:113", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "6254:12:113", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 44684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6254:38:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 44678, + "name": "sha256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -22, + "src": "6247:6:113", + "typeDescriptions": { + "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 44685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6247:46:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6243:50:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 44687, + "nodeType": "ExpressionStatement", + "src": "6243:50:113" + }, + { + "assignments": [ + 44689 + ], + "declarations": [ + { + "constant": false, + "id": 44689, + "mutability": "mutable", + "name": "t", + "nameLocation": "6311:1:113", + "nodeType": "VariableDeclaration", + "scope": 44746, + "src": "6303:9:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44688, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6303:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 44700, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 44696, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44629, + "src": "6350:1:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 44695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6342:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 44694, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6342:7:113", + "typeDescriptions": {} + } + }, + "id": 44697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6342:10:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 44692, + "name": "SSZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43867, + "src": "6323:3:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeString": "type(library SSZ)" + } + }, + "id": 44693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6327:14:113", + "memberName": "toLittleEndian", + "nodeType": "MemberAccess", + "referencedDeclaration": 43478, + "src": "6323:18:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) pure returns (bytes32)" + } + }, + "id": 44698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6323:30:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 44691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6315:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 44690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6315:7:113", + "typeDescriptions": {} + } + }, + "id": 44699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6315:39:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6303:51:113" + }, + { + "expression": { + "id": 44714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44701, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44689, + "src": "6364:1:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 44702, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44689, + "src": "6368:1:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "hexValue": "31", + "id": 44705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6382:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 44704, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6374:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 44703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6374:7:113", + "typeDescriptions": {} + } + }, + "id": 44706, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6374:10:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "323533", + "id": 44707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6388:3:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_253_by_1", + "typeString": "int_const 253" + }, + "value": "253" + }, + "src": "6374:17:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44709, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6373:19:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 44710, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6395:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6373:23:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44712, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6372:25:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6368:29:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6364:33:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44715, + "nodeType": "ExpressionStatement", + "src": "6364:33:113" + }, + { + "assignments": [ + 44718 + ], + "declarations": [ + { + "constant": false, + "id": 44718, + "mutability": "mutable", + "name": "proof", + "nameLocation": "6428:5:113", + "nodeType": "VariableDeclaration", + "scope": 44746, + "src": "6408:25:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeString": "struct Groth16Proof" + }, + "typeName": { + "id": 44717, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44716, + "name": "Groth16Proof", + "nameLocations": [ + "6408:12:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 44290, + "src": "6408:12:113" + }, + "referencedDeclaration": 44290, + "src": "6408:12:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeString": "struct Groth16Proof" + } + }, + "visibility": "internal" + } + ], + "id": 44721, + "initialValue": { + "expression": { + "id": 44719, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44588, + "src": "6436:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6443:5:113", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 44303, + "src": "6436:12:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeString": "struct Groth16Proof memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6408:40:113" + }, + { + "assignments": [ + 44727 + ], + "declarations": [ + { + "constant": false, + "id": 44727, + "mutability": "mutable", + "name": "inputs", + "nameLocation": "6476:6:113", + "nodeType": "VariableDeclaration", + "scope": 44746, + "src": "6458:24:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr", + "typeString": "uint256[1]" + }, + "typeName": { + "baseType": { + "id": 44725, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6458:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44726, + "length": { + "hexValue": "31", + "id": 44724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6466:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "ArrayTypeName", + "src": "6458:10:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$1_storage_ptr", + "typeString": "uint256[1]" + } + }, + "visibility": "internal" + } + ], + "id": 44733, + "initialValue": { + "components": [ + { + "arguments": [ + { + "id": 44730, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44689, + "src": "6494:1:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6486:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 44728, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6486:7:113", + "typeDescriptions": {} + } + }, + "id": 44731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6486:10:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44732, + "isConstant": false, + "isInlineArray": true, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6485:12:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr", + "typeString": "uint256[1] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6458:39:113" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 44736, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44718, + "src": "6531:5:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeString": "struct Groth16Proof memory" + } + }, + "id": 44737, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6537:1:113", + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 44279, + "src": "6531:7:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + { + "expression": { + "id": 44738, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44718, + "src": "6540:5:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeString": "struct Groth16Proof memory" + } + }, + "id": 44739, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6546:1:113", + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 44285, + "src": "6540:7:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr", + "typeString": "uint256[2] memory[2] memory" + } + }, + { + "expression": { + "id": 44740, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44718, + "src": "6549:5:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeString": "struct Groth16Proof memory" + } + }, + "id": 44741, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6555:1:113", + "memberName": "c", + "nodeType": "MemberAccess", + "referencedDeclaration": 44289, + "src": "6549:7:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + { + "id": 44742, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44727, + "src": "6558:6:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr", + "typeString": "uint256[1] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + }, + { + "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr", + "typeString": "uint256[2] memory[2] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr", + "typeString": "uint256[1] memory" + } + ], + "id": 44735, + "name": "verifyProofStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47827, + "src": "6515:15:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr_$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_uint256_$1_memory_ptr_$returns$_t_bool_$", + "typeString": "function (uint256[2] memory,uint256[2] memory[2] memory,uint256[2] memory,uint256[1] memory) view returns (bool)" + } + }, + "id": 44743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6515:50:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 44734, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6507:7:113", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 44744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6507:59:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44745, + "nodeType": "ExpressionStatement", + "src": "6507:59:113" + } + ] + }, + "documentation": { + "id": 44585, + "nodeType": "StructuredDocumentation", + "src": "5412:92:113", + "text": "@notice Serializes the public inputs into a compressed form and verifies the step proof." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "zkLightClientStep", + "nameLocation": "5518:17:113", + "parameters": { + "id": 44589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44588, + "mutability": "mutable", + "name": "update", + "nameLocation": "5559:6:113", + "nodeType": "VariableDeclaration", + "scope": 44747, + "src": "5536:29:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep" + }, + "typeName": { + "id": 44587, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44586, + "name": "LightClientStep", + "nameLocations": [ + "5536:15:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 44304, + "src": "5536:15:113" + }, + "referencedDeclaration": 44304, + "src": "5536:15:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeString": "struct LightClientStep" + } + }, + "visibility": "internal" + } + ], + "src": "5535:31:113" + }, + "returnParameters": { + "id": 44590, + "nodeType": "ParameterList", + "parameters": [], + "src": "5581:0:113" + }, + "scope": 45032, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 44879, + "nodeType": "FunctionDefinition", + "src": "6655:882:113", + "nodes": [], + "body": { + "id": 44878, + "nodeType": "Block", + "src": "6731:806:113", + "nodes": [], + "statements": [ + { + "assignments": [ + 44756 + ], + "declarations": [ + { + "constant": false, + "id": 44756, + "mutability": "mutable", + "name": "proof", + "nameLocation": "6761:5:113", + "nodeType": "VariableDeclaration", + "scope": 44878, + "src": "6741:25:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeString": "struct Groth16Proof" + }, + "typeName": { + "id": 44755, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44754, + "name": "Groth16Proof", + "nameLocations": [ + "6741:12:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 44290, + "src": "6741:12:113" + }, + "referencedDeclaration": 44290, + "src": "6741:12:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeString": "struct Groth16Proof" + } + }, + "visibility": "internal" + } + ], + "id": 44759, + "initialValue": { + "expression": { + "id": 44757, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44751, + "src": "6769:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeString": "struct LightClientRotate memory" + } + }, + "id": 44758, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6776:5:113", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 44314, + "src": "6769:12:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeString": "struct Groth16Proof memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6741:40:113" + }, + { + "assignments": [ + 44765 + ], + "declarations": [ + { + "constant": false, + "id": 44765, + "mutability": "mutable", + "name": "inputs", + "nameLocation": "6810:6:113", + "nodeType": "VariableDeclaration", + "scope": 44878, + "src": "6791:25:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", + "typeString": "uint256[65]" + }, + "typeName": { + "baseType": { + "id": 44763, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6791:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44764, + "length": { + "hexValue": "3635", + "id": 44762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6799:2:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "nodeType": "ArrayTypeName", + "src": "6791:11:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$65_storage_ptr", + "typeString": "uint256[65]" + } + }, + "visibility": "internal" + } + ], + "id": 44766, + "nodeType": "VariableDeclarationStatement", + "src": "6791:25:113" + }, + { + "assignments": [ + 44768 + ], + "declarations": [ + { + "constant": false, + "id": 44768, + "mutability": "mutable", + "name": "syncCommitteeSSZNumeric", + "nameLocation": "6835:23:113", + "nodeType": "VariableDeclaration", + "scope": 44878, + "src": "6827:31:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44767, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6827:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 44774, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 44771, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44751, + "src": "6869:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeString": "struct LightClientRotate memory" + } + }, + "id": 44772, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6876:16:113", + "memberName": "syncCommitteeSSZ", + "nodeType": "MemberAccess", + "referencedDeclaration": 44309, + "src": "6869:23:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 44770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6861:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 44769, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6861:7:113", + "typeDescriptions": {} + } + }, + "id": 44773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6861:32:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6827:66:113" + }, + { + "body": { + "id": 44807, + "nodeType": "Block", + "src": "6936:150:113", + "statements": [ + { + "expression": { + "id": 44797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 44785, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44765, + "src": "6950:6:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", + "typeString": "uint256[65] memory" + } + }, + "id": 44791, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_rational_31_by_1", + "typeString": "int_const 31" + }, + "id": 44788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3332", + "id": 44786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6957:2:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 44787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6962:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6957:6:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_31_by_1", + "typeString": "int_const 31" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 44789, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44776, + "src": "6966:1:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6957:10:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6950:18:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 44792, + "name": "syncCommitteeSSZNumeric", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44768, + "src": "6971:23:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "id": 44795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 44793, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6997:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "38", + "id": 44794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7002:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "6997:6:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + }, + "src": "6971:32:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6950:53:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44798, + "nodeType": "ExpressionStatement", + "src": "6950:53:113" + }, + { + "expression": { + "id": 44805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44799, + "name": "syncCommitteeSSZNumeric", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44768, + "src": "7017:23:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 44800, + "name": "syncCommitteeSSZNumeric", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44768, + "src": "7043:23:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "id": 44803, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 44801, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7069:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "38", + "id": 44802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7074:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "7069:6:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + }, + "src": "7043:32:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7017:58:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44806, + "nodeType": "ExpressionStatement", + "src": "7017:58:113" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 44779, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44776, + "src": "6923:1:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "3332", + "id": 44780, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6927:2:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "6923:6:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44808, + "initializationExpression": { + "assignments": [ + 44776 + ], + "declarations": [ + { + "constant": false, + "id": 44776, + "mutability": "mutable", + "name": "i", + "nameLocation": "6916:1:113", + "nodeType": "VariableDeclaration", + "scope": 44808, + "src": "6908:9:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6908:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 44778, + "initialValue": { + "hexValue": "30", + "id": 44777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6920:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6908:13:113" + }, + "loopExpression": { + "expression": { + "id": 44783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6931:3:113", + "subExpression": { + "id": 44782, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44776, + "src": "6931:1:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44784, + "nodeType": "ExpressionStatement", + "src": "6931:3:113" + }, + "nodeType": "ForStatement", + "src": "6903:183:113" + }, + { + "assignments": [ + 44810 + ], + "declarations": [ + { + "constant": false, + "id": 44810, + "mutability": "mutable", + "name": "finalizedHeaderRootNumeric", + "nameLocation": "7103:26:113", + "nodeType": "VariableDeclaration", + "scope": 44878, + "src": "7095:34:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44809, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7095:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 44817, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "id": 44813, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44751, + "src": "7140:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeString": "struct LightClientRotate memory" + } + }, + "id": 44814, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7147:4:113", + "memberName": "step", + "nodeType": "MemberAccess", + "referencedDeclaration": 44307, + "src": "7140:11:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeString": "struct LightClientStep memory" + } + }, + "id": 44815, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7152:19:113", + "memberName": "finalizedHeaderRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 44298, + "src": "7140:31:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 44812, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7132:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 44811, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7132:7:113", + "typeDescriptions": {} + } + }, + "id": 44816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7132:40:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7095:77:113" + }, + { + "body": { + "id": 44848, + "nodeType": "Block", + "src": "7215:155:113", + "statements": [ + { + "expression": { + "id": 44838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 44828, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44765, + "src": "7229:6:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", + "typeString": "uint256[65] memory" + } + }, + "id": 44832, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3634", + "id": 44829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7236:2:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 44830, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44819, + "src": "7241:1:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7236:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7229:14:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 44833, + "name": "finalizedHeaderRootNumeric", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44810, + "src": "7246:26:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "id": 44836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 44834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7275:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "38", + "id": 44835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7280:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "7275:6:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + }, + "src": "7246:35:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7229:52:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44839, + "nodeType": "ExpressionStatement", + "src": "7229:52:113" + }, + { + "expression": { + "id": 44846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44840, + "name": "finalizedHeaderRootNumeric", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44810, + "src": "7295:26:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 44841, + "name": "finalizedHeaderRootNumeric", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44810, + "src": "7324:26:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "id": 44844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 44842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7353:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "38", + "id": 44843, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7358:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "7353:6:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + }, + "src": "7324:35:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7295:64:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44847, + "nodeType": "ExpressionStatement", + "src": "7295:64:113" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 44822, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44819, + "src": "7202:1:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "3332", + "id": 44823, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7206:2:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "7202:6:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44849, + "initializationExpression": { + "assignments": [ + 44819 + ], + "declarations": [ + { + "constant": false, + "id": 44819, + "mutability": "mutable", + "name": "i", + "nameLocation": "7195:1:113", + "nodeType": "VariableDeclaration", + "scope": 44849, + "src": "7187:9:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44818, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7187:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 44821, + "initialValue": { + "hexValue": "30", + "id": 44820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7199:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "7187:13:113" + }, + "loopExpression": { + "expression": { + "id": 44826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "7210:3:113", + "subExpression": { + "id": 44825, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44819, + "src": "7210:1:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44827, + "nodeType": "ExpressionStatement", + "src": "7210:3:113" + }, + "nodeType": "ForStatement", + "src": "7182:188:113" + }, + { + "expression": { + "id": 44864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 44850, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44765, + "src": "7379:6:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", + "typeString": "uint256[65] memory" + } + }, + "id": 44852, + "indexExpression": { + "hexValue": "3332", + "id": 44851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7386:2:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7379:10:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 44859, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44751, + "src": "7427:6:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeString": "struct LightClientRotate memory" + } + }, + "id": 44860, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7434:21:113", + "memberName": "syncCommitteePoseidon", + "nodeType": "MemberAccess", + "referencedDeclaration": 44311, + "src": "7427:28:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 44858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7419:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 44857, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7419:7:113", + "typeDescriptions": {} + } + }, + "id": 44861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7419:37:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 44855, + "name": "SSZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43867, + "src": "7400:3:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeString": "type(library SSZ)" + } + }, + "id": 44856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7404:14:113", + "memberName": "toLittleEndian", + "nodeType": "MemberAccess", + "referencedDeclaration": 43478, + "src": "7400:18:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) pure returns (bytes32)" + } + }, + "id": 44862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7400:57:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 44854, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7392:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 44853, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7392:7:113", + "typeDescriptions": {} + } + }, + "id": 44863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7392:66:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7379:79:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44865, + "nodeType": "ExpressionStatement", + "src": "7379:79:113" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 44868, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44756, + "src": "7495:5:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeString": "struct Groth16Proof memory" + } + }, + "id": 44869, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7501:1:113", + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 44279, + "src": "7495:7:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + { + "expression": { + "id": 44870, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44756, + "src": "7504:5:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeString": "struct Groth16Proof memory" + } + }, + "id": 44871, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7510:1:113", + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 44285, + "src": "7504:7:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr", + "typeString": "uint256[2] memory[2] memory" + } + }, + { + "expression": { + "id": 44872, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44756, + "src": "7513:5:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeString": "struct Groth16Proof memory" + } + }, + "id": 44873, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7519:1:113", + "memberName": "c", + "nodeType": "MemberAccess", + "referencedDeclaration": 44289, + "src": "7513:7:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + { + "id": 44874, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44765, + "src": "7522:6:113", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", + "typeString": "uint256[65] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + }, + { + "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr", + "typeString": "uint256[2] memory[2] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", + "typeString": "uint256[65] memory" + } + ], + "id": 44867, + "name": "verifyProofRotate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46813, + "src": "7477:17:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr_$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_uint256_$65_memory_ptr_$returns$_t_bool_$", + "typeString": "function (uint256[2] memory,uint256[2] memory[2] memory,uint256[2] memory,uint256[65] memory) view returns (bool)" + } + }, + "id": 44875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7477:52:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 44866, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7469:7:113", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 44876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7469:61:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44877, + "nodeType": "ExpressionStatement", + "src": "7469:61:113" + } + ] + }, + "documentation": { + "id": 44748, + "nodeType": "StructuredDocumentation", + "src": "6579:71:113", + "text": "@notice Serializes the public inputs and verifies the rotate proof." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "zkLightClientRotate", + "nameLocation": "6664:19:113", + "parameters": { + "id": 44752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44751, + "mutability": "mutable", + "name": "update", + "nameLocation": "6709:6:113", + "nodeType": "VariableDeclaration", + "scope": 44879, + "src": "6684:31:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeString": "struct LightClientRotate" + }, + "typeName": { + "id": 44750, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44749, + "name": "LightClientRotate", + "nameLocations": [ + "6684:17:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 44315, + "src": "6684:17:113" + }, + "referencedDeclaration": 44315, + "src": "6684:17:113", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LightClientRotate_$44315_storage_ptr", + "typeString": "struct LightClientRotate" + } + }, + "visibility": "internal" + } + ], + "src": "6683:33:113" + }, + "returnParameters": { + "id": 44753, + "nodeType": "ParameterList", + "parameters": [], + "src": "6731:0:113" + }, + "scope": 45032, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 44892, + "nodeType": "FunctionDefinition", + "src": "7603:125:113", + "nodes": [], + "body": { + "id": 44891, + "nodeType": "Block", + "src": "7681:47:113", + "nodes": [], + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 44887, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44882, + "src": "7698:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 44888, + "name": "SLOTS_PER_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44330, + "src": "7705:16:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7698:23:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44886, + "id": 44890, + "nodeType": "Return", + "src": "7691:30:113" + } + ] + }, + "documentation": { + "id": 44880, + "nodeType": "StructuredDocumentation", + "src": "7543:55:113", + "text": "@notice Gets the sync committee period from a slot." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSyncCommitteePeriod", + "nameLocation": "7612:22:113", + "parameters": { + "id": 44883, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44882, + "mutability": "mutable", + "name": "slot", + "nameLocation": "7643:4:113", + "nodeType": "VariableDeclaration", + "scope": 44892, + "src": "7635:12:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44881, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7635:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7634:14:113" + }, + "returnParameters": { + "id": 44886, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44885, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 44892, + "src": "7672:7:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44884, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7672:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7671:9:113" + }, + "scope": 45032, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 44907, + "nodeType": "FunctionDefinition", + "src": "7818:133:113", + "nodes": [], + "body": { + "id": 44906, + "nodeType": "Block", + "src": "7876:75:113", + "nodes": [], + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 44898, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "7894:5:113", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 44899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7900:9:113", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "7894:15:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 44900, + "name": "GENESIS_TIME", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44326, + "src": "7912:12:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7894:30:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44902, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7893:32:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 44903, + "name": "SECONDS_PER_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44328, + "src": "7928:16:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7893:51:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44897, + "id": 44905, + "nodeType": "Return", + "src": "7886:58:113" + } + ] + }, + "documentation": { + "id": 44893, + "nodeType": "StructuredDocumentation", + "src": "7734:79:113", + "text": "@notice Gets the current slot for the chain the light client is reflecting." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCurrentSlot", + "nameLocation": "7827:14:113", + "parameters": { + "id": 44894, + "nodeType": "ParameterList", + "parameters": [], + "src": "7841:2:113" + }, + "returnParameters": { + "id": 44897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44896, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 44907, + "src": "7867:7:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44895, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7867:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7866:9:113" + }, + "scope": 45032, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 44990, + "nodeType": "FunctionDefinition", + "src": "8310:721:113", + "nodes": [], + "body": { + "id": 44989, + "nodeType": "Block", + "src": "8424:607:113", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 44924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 44917, + "name": "headers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44362, + "src": "8438:7:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 44919, + "indexExpression": { + "id": 44918, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44910, + "src": "8446:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8438:13:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 44922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8463:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 44921, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8455:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 44920, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8455:7:113", + "typeDescriptions": {} + } + }, + "id": 44923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8455:10:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8438:27:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44938, + "nodeType": "IfStatement", + "src": "8434:170:113", + "trueBody": { + "id": 44937, + "nodeType": "Block", + "src": "8467:137:113", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 44929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 44925, + "name": "headers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44362, + "src": "8485:7:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 44927, + "indexExpression": { + "id": 44926, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44910, + "src": "8493:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8485:13:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 44928, + "name": "finalizedHeaderRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44912, + "src": "8502:19:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8485:36:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44935, + "nodeType": "IfStatement", + "src": "8481:93:113", + "trueBody": { + "id": 44934, + "nodeType": "Block", + "src": "8523:51:113", + "statements": [ + { + "expression": { + "id": 44932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44930, + "name": "consistent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44353, + "src": "8541:10:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 44931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8554:5:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "8541:18:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44933, + "nodeType": "ExpressionStatement", + "src": "8541:18:113" + } + ] + } + }, + { + "functionReturnParameters": 44916, + "id": 44936, + "nodeType": "Return", + "src": "8587:7:113" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 44946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 44939, + "name": "executionStateRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44372, + "src": "8617:19:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 44941, + "indexExpression": { + "id": 44940, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44910, + "src": "8637:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8617:25:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 44944, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8654:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 44943, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8646:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 44942, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8646:7:113", + "typeDescriptions": {} + } + }, + "id": 44945, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8646:10:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8617:39:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44960, + "nodeType": "IfStatement", + "src": "8613:193:113", + "trueBody": { + "id": 44959, + "nodeType": "Block", + "src": "8658:148:113", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 44951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 44947, + "name": "executionStateRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44372, + "src": "8676:19:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 44949, + "indexExpression": { + "id": 44948, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44910, + "src": "8696:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8676:25:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 44950, + "name": "executionStateRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44914, + "src": "8705:18:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8676:47:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44957, + "nodeType": "IfStatement", + "src": "8672:104:113", + "trueBody": { + "id": 44956, + "nodeType": "Block", + "src": "8725:51:113", + "statements": [ + { + "expression": { + "id": 44954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44952, + "name": "consistent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44353, + "src": "8743:10:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 44953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8756:5:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "8743:18:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44955, + "nodeType": "ExpressionStatement", + "src": "8743:18:113" + } + ] + } + }, + { + "functionReturnParameters": 44916, + "id": 44958, + "nodeType": "Return", + "src": "8789:7:113" + } + ] + } + }, + { + "expression": { + "id": 44963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44961, + "name": "head", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44357, + "src": "8816:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 44962, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44910, + "src": "8823:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8816:11:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44964, + "nodeType": "ExpressionStatement", + "src": "8816:11:113" + }, + { + "expression": { + "id": 44969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 44965, + "name": "headers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44362, + "src": "8837:7:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 44967, + "indexExpression": { + "id": 44966, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44910, + "src": "8845:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8837:13:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 44968, + "name": "finalizedHeaderRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44912, + "src": "8853:19:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8837:35:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 44970, + "nodeType": "ExpressionStatement", + "src": "8837:35:113" + }, + { + "expression": { + "id": 44975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 44971, + "name": "executionStateRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44372, + "src": "8882:19:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 44973, + "indexExpression": { + "id": 44972, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44910, + "src": "8902:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8882:25:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 44974, + "name": "executionStateRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44914, + "src": "8910:18:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8882:46:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 44976, + "nodeType": "ExpressionStatement", + "src": "8882:46:113" + }, + { + "expression": { + "id": 44982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 44977, + "name": "timestamps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44367, + "src": "8938:10:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 44979, + "indexExpression": { + "id": 44978, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44910, + "src": "8949:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8938:16:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 44980, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "8957:5:113", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 44981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8963:9:113", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "8957:15:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8938:34:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44983, + "nodeType": "ExpressionStatement", + "src": "8938:34:113" + }, + { + "eventCall": { + "arguments": [ + { + "id": 44985, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44910, + "src": "8998:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 44986, + "name": "finalizedHeaderRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44912, + "src": "9004:19:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 44984, + "name": "HeadUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44383, + "src": "8987:10:113", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (uint256,bytes32)" + } + }, + "id": 44987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8987:37:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44988, + "nodeType": "EmitStatement", + "src": "8982:42:113" + } + ] + }, + "documentation": { + "id": 44908, + "nodeType": "StructuredDocumentation", + "src": "7957:348:113", + "text": "@notice Sets the current slot for the chain the light client is reflecting.\n @dev Checks if roots exists for the slot already. If there is, check for a conflict between\n the given roots and the existing roots. If there is an existing header but no\n conflict, do nothing. This avoids timestamp renewal DoS attacks." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setSlotRoots", + "nameLocation": "8319:12:113", + "parameters": { + "id": 44915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44910, + "mutability": "mutable", + "name": "slot", + "nameLocation": "8340:4:113", + "nodeType": "VariableDeclaration", + "scope": 44990, + "src": "8332:12:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44909, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8332:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44912, + "mutability": "mutable", + "name": "finalizedHeaderRoot", + "nameLocation": "8354:19:113", + "nodeType": "VariableDeclaration", + "scope": 44990, + "src": "8346:27:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44911, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8346:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44914, + "mutability": "mutable", + "name": "executionStateRoot", + "nameLocation": "8383:18:113", + "nodeType": "VariableDeclaration", + "scope": 44990, + "src": "8375:26:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44913, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8375:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8331:71:113" + }, + "returnParameters": { + "id": 44916, + "nodeType": "ParameterList", + "parameters": [], + "src": "8424:0:113" + }, + "scope": 45032, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "id": 45031, + "nodeType": "FunctionDefinition", + "src": "9106:393:113", + "nodes": [], + "body": { + "id": 45030, + "nodeType": "Block", + "src": "9183:316:113", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 45011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 45005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 44998, + "name": "syncCommitteePoseidons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44377, + "src": "9210:22:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 45000, + "indexExpression": { + "id": 44999, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44993, + "src": "9233:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9210:30:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 45003, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9252:1:113", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 45002, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9244:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 45001, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9244:7:113", + "typeDescriptions": {} + } + }, + "id": 45004, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9244:10:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9210:44:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 45010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 45006, + "name": "syncCommitteePoseidons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44377, + "src": "9274:22:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 45008, + "indexExpression": { + "id": 45007, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44993, + "src": "9297:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9274:30:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 45009, + "name": "poseidon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44995, + "src": "9308:8:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9274:42:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9210:106:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 45018, + "nodeType": "IfStatement", + "src": "9193:197:113", + "trueBody": { + "id": 45017, + "nodeType": "Block", + "src": "9327:63:113", + "statements": [ + { + "expression": { + "id": 45014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 45012, + "name": "consistent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44353, + "src": "9341:10:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 45013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9354:5:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "9341:18:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 45015, + "nodeType": "ExpressionStatement", + "src": "9341:18:113" + }, + { + "functionReturnParameters": 44997, + "id": 45016, + "nodeType": "Return", + "src": "9373:7:113" + } + ] + } + }, + { + "expression": { + "id": 45023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 45019, + "name": "syncCommitteePoseidons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44377, + "src": "9399:22:113", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 45021, + "indexExpression": { + "id": 45020, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44993, + "src": "9422:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9399:30:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 45022, + "name": "poseidon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44995, + "src": "9432:8:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9399:41:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 45024, + "nodeType": "ExpressionStatement", + "src": "9399:41:113" + }, + { + "eventCall": { + "arguments": [ + { + "id": 45026, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44993, + "src": "9475:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 45027, + "name": "poseidon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44995, + "src": "9483:8:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 45025, + "name": "SyncCommitteeUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44389, + "src": "9455:19:113", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (uint256,bytes32)" + } + }, + "id": 45028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9455:37:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 45029, + "nodeType": "EmitStatement", + "src": "9450:42:113" + } + ] + }, + "documentation": { + "id": 44991, + "nodeType": "StructuredDocumentation", + "src": "9037:64:113", + "text": "@notice Sets the sync committee poseidon for a given period." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setSyncCommitteePoseidon", + "nameLocation": "9115:24:113", + "parameters": { + "id": 44996, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44993, + "mutability": "mutable", + "name": "period", + "nameLocation": "9148:6:113", + "nodeType": "VariableDeclaration", + "scope": 45031, + "src": "9140:14:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44992, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9140:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44995, + "mutability": "mutable", + "name": "poseidon", + "nameLocation": "9164:8:113", + "nodeType": "VariableDeclaration", + "scope": 45031, + "src": "9156:16:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44994, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9156:7:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "9139:34:113" + }, + "returnParameters": { + "id": 44997, + "nodeType": "ParameterList", + "parameters": [], + "src": "9183:0:113" + }, + "scope": 45032, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 44317, + "name": "ILightClient", + "nameLocations": [ + "977:12:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47862, + "src": "977:12:113" + }, + "id": 44318, + "nodeType": "InheritanceSpecifier", + "src": "977:12:113" + }, + { + "baseName": { + "id": 44319, + "name": "StepVerifier", + "nameLocations": [ + "991:12:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47828, + "src": "991:12:113" + }, + "id": 44320, + "nodeType": "InheritanceSpecifier", + "src": "991:12:113" + }, + { + "baseName": { + "id": 44321, + "name": "RotateVerifier", + "nameLocations": [ + "1005:14:113" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46814, + "src": "1005:14:113" + }, + "id": 44322, + "nodeType": "InheritanceSpecifier", + "src": "1005:14:113" + } + ], + "canonicalName": "LightClient", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 44316, + "nodeType": "StructuredDocumentation", + "src": "710:243:113", + "text": "@title Light Client\n @author Succinct Labs\n @notice Uses Ethereum 2's Sync Committee Protocol to keep up-to-date with block headers from a\n Beacon Chain. This is done in a gas-efficient manner using zero-knowledge proofs." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 45032, + 46814, + 47828, + 47862 + ], + "name": "LightClient", + "nameLocation": "962:11:113", + "scope": 45033, + "usedErrors": [] + } + ] + }, + "id": 113 +} \ No newline at end of file diff --git a/out/LightClientMock.sol/LightClientMock.json b/out/LightClientMock.sol/LightClientMock.json new file mode 100644 index 0000000..b6d2e75 --- /dev/null +++ b/out/LightClientMock.sol/LightClientMock.json @@ -0,0 +1,1471 @@ +{ + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "HeadUpdate", + "type": "event" + }, + { + "inputs": [], + "name": "consistent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "executionStateRoots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "head", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "headers", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "executionRoot", + "type": "bytes32" + } + ], + "name": "setExecutionRoot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "headerRoot", + "type": "bytes32" + } + ], + "name": "setHeader", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "timestamps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x60806040526000805460ff1916600117905534801561001d57600080fd5b506102568061002d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637623ee291161005b5780637623ee29146100e75780638bc33af3146101075780638f7dcfa314610127578063955cbb2b1461013057600080fd5b806303247e7c146100825780632bcccca51461009757806356f90d79146100b9575b600080fd5b6100956100903660046101e5565b610143565b005b6000546100a49060ff1681565b60405190151581526020015b60405180910390f35b6100d96100c7366004610207565b60026020526000908152604090205481565b6040519081526020016100b0565b6100d96100f5366004610207565b60036020526000908152604090205481565b6100d9610115366004610207565b60046020526000908152604090205481565b6100d960015481565b61009561013e3660046101e5565b610194565b60008281526003602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b60008281526002602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b600080604083850312156101f857600080fd5b50508035926020909101359150565b60006020828403121561021957600080fd5b503591905056fea264697066735822122046799f8b4de9028af946ca44115f076d489391e741964eb3a3706d9bf6b39f0064736f6c63430008100033", + "sourceMap": "266:800:128:-:0;;;317:29;;;-1:-1:-1;;317:29:128;342:4;317:29;;;266:800;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80637623ee291161005b5780637623ee29146100e75780638bc33af3146101075780638f7dcfa314610127578063955cbb2b1461013057600080fd5b806303247e7c146100825780632bcccca51461009757806356f90d79146100b9575b600080fd5b6100956100903660046101e5565b610143565b005b6000546100a49060ff1681565b60405190151581526020015b60405180910390f35b6100d96100c7366004610207565b60026020526000908152604090205481565b6040519081526020016100b0565b6100d96100f5366004610207565b60036020526000908152604090205481565b6100d9610115366004610207565b60046020526000908152604090205481565b6100d960015481565b61009561013e3660046101e5565b610194565b60008281526003602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b60008281526002602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b600080604083850312156101f857600080fd5b50508035926020909101359150565b60006020828403121561021957600080fd5b503591905056fea264697066735822122046799f8b4de9028af946ca44115f076d489391e741964eb3a3706d9bf6b39f0064736f6c63430008100033", + "sourceMap": "266:800:128:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:241;;;;;;:::i;:::-;;:::i;:::-;;317:29;;;;;;;;;;;;432:14:145;;425:22;407:41;;395:2;380:18;317:29:128;;;;;;;;377:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;790:25:145;;;778:2;763:18;377:42:128;644:177:145;425:54:128;;;;;;:::i;:::-;;;;;;;;;;;;;;485:45;;;;;;:::i;:::-;;;;;;;;;;;;;;352:19;;;;;;604:213;;;;;;:::i;:::-;;:::i;823:241::-;905:25;;;;:19;:25;;;;;;;;:41;;;956:10;:16;;;;;;975:15;956:34;;1000:4;:11;;;1026:31;933:13;;925:4;;1026:31;;905:25;1026:31;823:241;;:::o;604:213::-;676:13;;;;:7;:13;;;;;;;;:26;;;712:10;:16;;;;;;731:15;712:34;;756:4;:11;;;782:28;692:10;;684:4;;782:28;;676:13;782:28;604:213;;:::o;14:248:145:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:145;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:145:o;459:180::-;518:6;571:2;559:9;550:7;546:23;542:32;539:52;;;587:1;584;577:12;539:52;-1:-1:-1;610:23:145;;459:180;-1:-1:-1;459:180:145:o", + "linkReferences": {} + }, + "methodIdentifiers": { + "consistent()": "2bcccca5", + "executionStateRoots(uint256)": "7623ee29", + "head()": "8f7dcfa3", + "headers(uint256)": "56f90d79", + "setExecutionRoot(uint256,bytes32)": "03247e7c", + "setHeader(uint256,bytes32)": "955cbb2b", + "timestamps(uint256)": "8bc33af3" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"executionRoot\",\"type\":\"bytes32\"}],\"name\":\"setExecutionRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"headerRoot\",\"type\":\"bytes32\"}],\"name\":\"setHeader\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/amb/LightClientMock.sol\":\"LightClientMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"test/amb/LightClientMock.sol\":{\"keccak256\":\"0x4f15939ebfad6faf5fdf615bdc1e57889c4b41114aac8d797a25fb09799ed81d\",\"urls\":[\"bzz-raw://a96f5645c5582f4bc53c75af076892df6dd9df3afb89cf0484f521809097fb70\",\"dweb:/ipfs/QmdLpHYxipfEgJyTC7zioRHkjUgUrDAMH1MwUwCANXuKHA\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "HeadUpdate", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "consistent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "executionStateRoots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "head", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "headers", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "executionRoot", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setExecutionRoot" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "headerRoot", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setHeader" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "timestamps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "test/amb/LightClientMock.sol": "LightClientMock" + }, + "libraries": {} + }, + "sources": { + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + }, + "test/amb/LightClientMock.sol": { + "keccak256": "0x4f15939ebfad6faf5fdf615bdc1e57889c4b41114aac8d797a25fb09799ed81d", + "urls": [ + "bzz-raw://a96f5645c5582f4bc53c75af076892df6dd9df3afb89cf0484f521809097fb70", + "dweb:/ipfs/QmdLpHYxipfEgJyTC7zioRHkjUgUrDAMH1MwUwCANXuKHA" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "test/amb/LightClientMock.sol", + "id": 49377, + "exportedSymbols": { + "ILightClientMock": [ + 47862 + ], + "LightClientMock": [ + 49376 + ] + }, + "nodeType": "SourceUnit", + "src": "0:1067:128", + "nodes": [ + { + "id": 49288, + "nodeType": "PragmaDirective", + "src": "0:23:128", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 49290, + "nodeType": "ImportDirective", + "src": "171:93:128", + "nodes": [], + "absolutePath": "src/lightclient/interfaces/ILightClient.sol", + "file": "src/lightclient/interfaces/ILightClient.sol", + "nameLocation": "-1:-1:-1", + "scope": 49377, + "sourceUnit": 47863, + "symbolAliases": [ + { + "foreign": { + "id": 49289, + "name": "ILightClient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47862, + "src": "179:12:128", + "typeDescriptions": {} + }, + "local": "ILightClientMock", + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 49376, + "nodeType": "ContractDefinition", + "src": "266:800:128", + "nodes": [ + { + "id": 49295, + "nodeType": "VariableDeclaration", + "src": "317:29:128", + "nodes": [], + "baseFunctions": [ + 47835 + ], + "constant": false, + "functionSelector": "2bcccca5", + "mutability": "mutable", + "name": "consistent", + "nameLocation": "329:10:128", + "scope": 49376, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 49293, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "317:4:128", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": { + "hexValue": "74727565", + "id": 49294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "342:4:128", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "visibility": "public" + }, + { + "id": 49297, + "nodeType": "VariableDeclaration", + "src": "352:19:128", + "nodes": [], + "baseFunctions": [ + 47840 + ], + "constant": false, + "functionSelector": "8f7dcfa3", + "mutability": "mutable", + "name": "head", + "nameLocation": "367:4:128", + "scope": 49376, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 49296, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "352:7:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "id": 49301, + "nodeType": "VariableDeclaration", + "src": "377:42:128", + "nodes": [], + "baseFunctions": [ + 47847 + ], + "constant": false, + "functionSelector": "56f90d79", + "mutability": "mutable", + "name": "headers", + "nameLocation": "412:7:128", + "scope": 49376, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + }, + "typeName": { + "id": 49300, + "keyType": { + "id": 49298, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "385:7:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "377:27:128", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + }, + "valueType": { + "id": 49299, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "396:7:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "visibility": "public" + }, + { + "id": 49305, + "nodeType": "VariableDeclaration", + "src": "425:54:128", + "nodes": [], + "baseFunctions": [ + 47854 + ], + "constant": false, + "functionSelector": "7623ee29", + "mutability": "mutable", + "name": "executionStateRoots", + "nameLocation": "460:19:128", + "scope": 49376, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + }, + "typeName": { + "id": 49304, + "keyType": { + "id": 49302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "433:7:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "425:27:128", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + }, + "valueType": { + "id": 49303, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "444:7:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "visibility": "public" + }, + { + "id": 49309, + "nodeType": "VariableDeclaration", + "src": "485:45:128", + "nodes": [], + "baseFunctions": [ + 47861 + ], + "constant": false, + "functionSelector": "8bc33af3", + "mutability": "mutable", + "name": "timestamps", + "nameLocation": "520:10:128", + "scope": 49376, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 49308, + "keyType": { + "id": 49306, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "493:7:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "485:27:128", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 49307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "504:7:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "id": 49315, + "nodeType": "EventDefinition", + "src": "537:61:128", + "nodes": [], + "anonymous": false, + "eventSelector": "fefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a02", + "name": "HeadUpdate", + "nameLocation": "543:10:128", + "parameters": { + "id": 49314, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49311, + "indexed": true, + "mutability": "mutable", + "name": "slot", + "nameLocation": "570:4:128", + "nodeType": "VariableDeclaration", + "scope": 49315, + "src": "554:20:128", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 49310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "554:7:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 49313, + "indexed": true, + "mutability": "mutable", + "name": "root", + "nameLocation": "592:4:128", + "nodeType": "VariableDeclaration", + "scope": 49315, + "src": "576:20:128", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 49312, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "576:7:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "553:44:128" + } + }, + { + "id": 49345, + "nodeType": "FunctionDefinition", + "src": "604:213:128", + "nodes": [], + "body": { + "id": 49344, + "nodeType": "Block", + "src": "666:151:128", + "nodes": [], + "statements": [ + { + "expression": { + "id": 49326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 49322, + "name": "headers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49301, + "src": "676:7:128", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 49324, + "indexExpression": { + "id": 49323, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49317, + "src": "684:4:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "676:13:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 49325, + "name": "headerRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49319, + "src": "692:10:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "676:26:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 49327, + "nodeType": "ExpressionStatement", + "src": "676:26:128" + }, + { + "expression": { + "id": 49333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 49328, + "name": "timestamps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49309, + "src": "712:10:128", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 49330, + "indexExpression": { + "id": 49329, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49317, + "src": "723:4:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "712:16:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 49331, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "731:5:128", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 49332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "737:9:128", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "731:15:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "712:34:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 49334, + "nodeType": "ExpressionStatement", + "src": "712:34:128" + }, + { + "expression": { + "id": 49337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 49335, + "name": "head", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49297, + "src": "756:4:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 49336, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49317, + "src": "763:4:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "756:11:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 49338, + "nodeType": "ExpressionStatement", + "src": "756:11:128" + }, + { + "eventCall": { + "arguments": [ + { + "id": 49340, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49317, + "src": "793:4:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 49341, + "name": "headerRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49319, + "src": "799:10:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 49339, + "name": "HeadUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49315, + "src": "782:10:128", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (uint256,bytes32)" + } + }, + "id": 49342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "782:28:128", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 49343, + "nodeType": "EmitStatement", + "src": "777:33:128" + } + ] + }, + "functionSelector": "955cbb2b", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setHeader", + "nameLocation": "613:9:128", + "parameters": { + "id": 49320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49317, + "mutability": "mutable", + "name": "slot", + "nameLocation": "631:4:128", + "nodeType": "VariableDeclaration", + "scope": 49345, + "src": "623:12:128", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 49316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "623:7:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 49319, + "mutability": "mutable", + "name": "headerRoot", + "nameLocation": "645:10:128", + "nodeType": "VariableDeclaration", + "scope": 49345, + "src": "637:18:128", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 49318, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "637:7:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "622:34:128" + }, + "returnParameters": { + "id": 49321, + "nodeType": "ParameterList", + "parameters": [], + "src": "666:0:128" + }, + "scope": 49376, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 49375, + "nodeType": "FunctionDefinition", + "src": "823:241:128", + "nodes": [], + "body": { + "id": 49374, + "nodeType": "Block", + "src": "895:169:128", + "nodes": [], + "statements": [ + { + "expression": { + "id": 49356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 49352, + "name": "executionStateRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49305, + "src": "905:19:128", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", + "typeString": "mapping(uint256 => bytes32)" + } + }, + "id": 49354, + "indexExpression": { + "id": 49353, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49347, + "src": "925:4:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "905:25:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 49355, + "name": "executionRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49349, + "src": "933:13:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "905:41:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 49357, + "nodeType": "ExpressionStatement", + "src": "905:41:128" + }, + { + "expression": { + "id": 49363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 49358, + "name": "timestamps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49309, + "src": "956:10:128", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 49360, + "indexExpression": { + "id": 49359, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49347, + "src": "967:4:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "956:16:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 49361, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "975:5:128", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 49362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "981:9:128", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "975:15:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "956:34:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 49364, + "nodeType": "ExpressionStatement", + "src": "956:34:128" + }, + { + "expression": { + "id": 49367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 49365, + "name": "head", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49297, + "src": "1000:4:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 49366, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49347, + "src": "1007:4:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1000:11:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 49368, + "nodeType": "ExpressionStatement", + "src": "1000:11:128" + }, + { + "eventCall": { + "arguments": [ + { + "id": 49370, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49347, + "src": "1037:4:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 49371, + "name": "executionRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49349, + "src": "1043:13:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 49369, + "name": "HeadUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49315, + "src": "1026:10:128", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (uint256,bytes32)" + } + }, + "id": 49372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1026:31:128", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 49373, + "nodeType": "EmitStatement", + "src": "1021:36:128" + } + ] + }, + "functionSelector": "03247e7c", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setExecutionRoot", + "nameLocation": "832:16:128", + "parameters": { + "id": 49350, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49347, + "mutability": "mutable", + "name": "slot", + "nameLocation": "857:4:128", + "nodeType": "VariableDeclaration", + "scope": 49375, + "src": "849:12:128", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 49346, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "849:7:128", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 49349, + "mutability": "mutable", + "name": "executionRoot", + "nameLocation": "871:13:128", + "nodeType": "VariableDeclaration", + "scope": 49375, + "src": "863:21:128", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 49348, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "863:7:128", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "848:37:128" + }, + "returnParameters": { + "id": 49351, + "nodeType": "ParameterList", + "parameters": [], + "src": "895:0:128" + }, + "scope": 49376, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 49291, + "name": "ILightClientMock", + "nameLocations": [ + "294:16:128" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47862, + "src": "294:16:128" + }, + "id": 49292, + "nodeType": "InheritanceSpecifier", + "src": "294:16:128" + } + ], + "canonicalName": "LightClientMock", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 49376, + 47862 + ], + "name": "LightClientMock", + "nameLocation": "275:15:128", + "scope": 49377, + "usedErrors": [] + } + ] + }, + "id": 128 +} \ No newline at end of file diff --git a/out/SourceAMB.sol/SourceAMB.json b/out/SourceAMB.sol/SourceAMB.json new file mode 100644 index 0000000..1a73ff0 --- /dev/null +++ b/out/SourceAMB.sol/SourceAMB.json @@ -0,0 +1,4347 @@ +{ + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "SentMessage", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x608060405234801561001057600080fd5b50610949806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806368346a921161008c5780638d080d1d116100665780638d080d1d146102545780639efeff1c14610274578063a96a2e921461029c578063affed0e0146102af57600080fd5b806368346a92146102055780636fdbccbf146102185780637599735c1461022b57600080fd5b80633c6cf473116100c85780633c6cf473146101685780633e99e9ce1461019857806354fd4d50146101a557806359f89787146101c457600080fd5b8063029d6713146100ef578063147bce491461012257806336ae7c1814610135575b600080fd5b61010f6100fd3660046105fc565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61010f61013036600461068d565b6102da565b6101586101433660046106fb565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61018b610176366004610716565b60076020526000908152604090205460ff1681565b604051610119919061072f565b6000546101589060ff1681565b6008546101b29060ff1681565b60405160ff9091168152602001610119565b6101ed6101d23660046106fb565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61010f61021336600461068d565b6103e7565b61010f610226366004610757565b610466565b6101ed6102393660046106fb565b6004602052600090815260409020546001600160a01b031681565b61010f610262366004610716565b60096020526000908152604090205481565b610287610282366004610716565b6104bd565b60405163ffffffff9091168152602001610119565b61010f6102aa366004610757565b6104f7565b6002546102c2906001600160401b031681565b6040516001600160401b039091168152602001610119565b6000805460ff166103065760405162461bcd60e51b81526004016102fd90610798565b60405180910390fd5b468563ffffffff160361032b5760405162461bcd60e51b81526004016102fd906107c5565b600080610344876001600160a01b0388165b878761054a565b600280546001600160401b039081166000908152600160205260408120849055825494965092945084931691610379836107fc565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516103d59190610854565b60405180910390a39695505050505050565b6000805460ff1661040a5760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff160361042f5760405162461bcd60e51b81526004016102fd906107c5565b600080610445876001600160a01b03881661033d565b6002805492945090925082916001600160401b0316906000610379836107fc565b6000805460ff166104895760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff16036104ae5760405162461bcd60e51b81526004016102fd906107c5565b6000806103448787878761054a565b600381815481106104cd57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff1661051a5760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff160361053f5760405162461bcd60e51b81526004016102fd906107c5565b600080610445878787875b600854600254604080516020601f86018190048102820181019092528481526060936000936105ad9360ff909216926001600160401b0390911691469133918c918c918c908c90819084018382808284376000920191909152506105c192505050565b805160208201209097909650945050505050565b6060878787878787876040516020016105e09796959493929190610887565b6040516020818303038152906040529050979650505050505050565b60006020828403121561060e57600080fd5b81356001600160401b038116811461062557600080fd5b9392505050565b803563ffffffff8116811461064057600080fd5b919050565b60008083601f84011261065757600080fd5b5081356001600160401b0381111561066e57600080fd5b60208301915083602082850101111561068657600080fd5b9250929050565b600080600080606085870312156106a357600080fd5b6106ac8561062c565b935060208501356001600160a01b03811681146106c857600080fd5b925060408501356001600160401b038111156106e357600080fd5b6106ef87828801610645565b95989497509550505050565b60006020828403121561070d57600080fd5b6106258261062c565b60006020828403121561072857600080fd5b5035919050565b602081016003831061075157634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806060858703121561076d57600080fd5b6107768561062c565b93506020850135925060408501356001600160401b038111156106e357600080fd5b60208082526013908201527214d95b991a5b99c81a5cc8191a5cd8589b1959606a1b604082015260600190565b60208082526019908201527f43616e6e6f742073656e6420746f2073616d6520636861696e00000000000000604082015260600190565b60006001600160401b0380831681810361082657634e487b7160e01b600052601160045260246000fd5b6001019392505050565b60005b8381101561084b578181015183820152602001610833565b50506000910152565b6020815260008251806020840152610873816040850160208701610830565b601f01601f19169190910160400192915050565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526bffffffffffffffffffffffff19606088901b16600d84015285901b166021820152602581018390528151600090610900816045850160208701610830565b919091016045019897505050505050505056fea2646970667358221220fce48af7de822a4f3957651609012de83de5db78d9aad2750b5f3497339caf7464736f6c63430008100033", + "sourceMap": "699:4255:99:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806368346a921161008c5780638d080d1d116100665780638d080d1d146102545780639efeff1c14610274578063a96a2e921461029c578063affed0e0146102af57600080fd5b806368346a92146102055780636fdbccbf146102185780637599735c1461022b57600080fd5b80633c6cf473116100c85780633c6cf473146101685780633e99e9ce1461019857806354fd4d50146101a557806359f89787146101c457600080fd5b8063029d6713146100ef578063147bce491461012257806336ae7c1814610135575b600080fd5b61010f6100fd3660046105fc565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61010f61013036600461068d565b6102da565b6101586101433660046106fb565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61018b610176366004610716565b60076020526000908152604090205460ff1681565b604051610119919061072f565b6000546101589060ff1681565b6008546101b29060ff1681565b60405160ff9091168152602001610119565b6101ed6101d23660046106fb565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61010f61021336600461068d565b6103e7565b61010f610226366004610757565b610466565b6101ed6102393660046106fb565b6004602052600090815260409020546001600160a01b031681565b61010f610262366004610716565b60096020526000908152604090205481565b610287610282366004610716565b6104bd565b60405163ffffffff9091168152602001610119565b61010f6102aa366004610757565b6104f7565b6002546102c2906001600160401b031681565b6040516001600160401b039091168152602001610119565b6000805460ff166103065760405162461bcd60e51b81526004016102fd90610798565b60405180910390fd5b468563ffffffff160361032b5760405162461bcd60e51b81526004016102fd906107c5565b600080610344876001600160a01b0388165b878761054a565b600280546001600160401b039081166000908152600160205260408120849055825494965092945084931691610379836107fc565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516103d59190610854565b60405180910390a39695505050505050565b6000805460ff1661040a5760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff160361042f5760405162461bcd60e51b81526004016102fd906107c5565b600080610445876001600160a01b03881661033d565b6002805492945090925082916001600160401b0316906000610379836107fc565b6000805460ff166104895760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff16036104ae5760405162461bcd60e51b81526004016102fd906107c5565b6000806103448787878761054a565b600381815481106104cd57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff1661051a5760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff160361053f5760405162461bcd60e51b81526004016102fd906107c5565b600080610445878787875b600854600254604080516020601f86018190048102820181019092528481526060936000936105ad9360ff909216926001600160401b0390911691469133918c918c918c908c90819084018382808284376000920191909152506105c192505050565b805160208201209097909650945050505050565b6060878787878787876040516020016105e09796959493929190610887565b6040516020818303038152906040529050979650505050505050565b60006020828403121561060e57600080fd5b81356001600160401b038116811461062557600080fd5b9392505050565b803563ffffffff8116811461064057600080fd5b919050565b60008083601f84011261065757600080fd5b5081356001600160401b0381111561066e57600080fd5b60208301915083602082850101111561068657600080fd5b9250929050565b600080600080606085870312156106a357600080fd5b6106ac8561062c565b935060208501356001600160a01b03811681146106c857600080fd5b925060408501356001600160401b038111156106e357600080fd5b6106ef87828801610645565b95989497509550505050565b60006020828403121561070d57600080fd5b6106258261062c565b60006020828403121561072857600080fd5b5035919050565b602081016003831061075157634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806060858703121561076d57600080fd5b6107768561062c565b93506020850135925060408501356001600160401b038111156106e357600080fd5b60208082526013908201527214d95b991a5b99c81a5cc8191a5cd8589b1959606a1b604082015260600190565b60208082526019908201527f43616e6e6f742073656e6420746f2073616d6520636861696e00000000000000604082015260600190565b60006001600160401b0380831681810361082657634e487b7160e01b600052601160045260246000fd5b6001019392505050565b60005b8381101561084b578181015183820152602001610833565b50506000910152565b6020815260008251806020840152610873816040850160208701610830565b601f01601f19169190910160400192915050565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526bffffffffffffffffffffffff19606088901b16600d84015285901b166021820152602581018390528151600090610900816045850160208701610830565b919091016045019897505050505050505056fea2646970667358221220fce48af7de822a4f3957651609012de83de5db78d9aad2750b5f3497339caf7464736f6c63430008100033", + "sourceMap": "699:4255:99:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;449:25:145;;;437:2;422:18;527:42:103;;;;;;;;3356:541:99;;;;;;:::i;:::-;;:::i;1291:37:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2019:14:145;;2012:22;1994:41;;1982:2;1967:18;1291:37:103;1854:187:145;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1690:20;;;;;;;;;;;;2755:4:145;2743:17;;;2725:36;;2713:2;2698:18;1690:20:103;2583:184:145;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;2936:32:145;;;2918:51;;2906:2;2891:18;1164:46:103;2772:203:145;1778:490:99;;;;;;:::i;:::-;;:::i;2830:520::-;;;;;;:::i;:::-;;:::i;999:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;1936;;;;;;:::i;:::-;;;;;;;;;;;;;;879:30;;;;;;:::i;:::-;;:::i;:::-;;;4123:10:145;4111:23;;;4093:42;;4081:2;4066:18;879:30:103;3949:192:145;1303:469:99;;;;;;:::i;:::-;;:::i;634:19:103:-;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;4308:31:145;;;4290:50;;4278:2;4263:18;634:19:103;4146:200:145;3356:541:99;3521:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;;;;;;;;;3570:13:::1;3548:18;:35;;::::0;3540:73:::1;;;;-1:-1:-1::0;;;3540:73:99::1;;;;;;;:::i;:::-;3624:20;::::0;3681:85:::1;3700:18:::0;-1:-1:-1;;;;;337:22:112;;3720:39:99::1;3761:4;;3681:18;:85::i;:::-;3785:5;::::0;;-1:-1:-1;;;;;3785:5:99;;::::1;3776:15;::::0;;;:8:::1;:15;::::0;;;;:29;;;3832:7;;3623:143;;-1:-1:-1;3623:143:99;;-1:-1:-1;3623:143:99;;3832:7:::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;3832:7:99::1;;;;;-1:-1:-1::0;;;;;3832:7:99::1;;;;;;-1:-1:-1::0;;;;;3820:42:99::1;;3854:7;3820:42;;;;;;:::i;:::-;;;;;;;;3879:11:::0;3356:541;-1:-1:-1;;;;;;3356:541:99:o;1778:490::-;1927:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;1980:13:::1;1958:18;:35;;::::0;1950:73:::1;;;;-1:-1:-1::0;;;1950:73:99::1;;;;;;;:::i;:::-;2034:20;::::0;2091:85:::1;2110:18:::0;-1:-1:-1;;;;;337:22:112;;2130:39:99::1;245:122:112::0;2091:85:99::1;2203:5;:7:::0;;2033:143;;-1:-1:-1;2033:143:99;;-1:-1:-1;2033:143:99;;-1:-1:-1;;;;;2203:7:99::1;::::0;:5:::1;:7;::::0;::::1;:::i;2830:520::-:0;2995:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;3044:13:::1;3022:18;:35;;::::0;3014:73:::1;;;;-1:-1:-1::0;;;3014:73:99::1;;;;;;;:::i;:::-;3098:20;3120:19:::0;3155:64:::1;3174:18;3194;3214:4;;3155:18;:64::i;879:30:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1303:469:99:-;1452:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;1505:13:::1;1483:18;:35;;::::0;1475:73:::1;;;;-1:-1:-1::0;;;1475:73:99::1;;;;;;;:::i;:::-;1559:20;1581:19:::0;1616:64:::1;1635:18;1655;1675:4;;4455:497:::0;4721:7;;4742:5;;4685:213;;;;;;;;;;;;;;;;;;;;;;4612:25;;4639:19;;4685:213;;4721:7;;;;;-1:-1:-1;;;;;4742:5:99;;;;4768:13;;4796:10;;4820:18;;4852;;4884:4;;;;;;4685:213;;4884:4;;;;4685:213;;;;;;;;;-1:-1:-1;4685:22:99;;-1:-1:-1;;;4685:213:99:i;:::-;4922:23;;;;;;4670:228;;4922:23;;-1:-1:-1;4455:497:99;-1:-1:-1;;;;;4455:497:99:o;3800:489:107:-;4049:12;4110:7;4131:5;4150:13;4177;4204:18;4236;4268:4;4080:202;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4073:209;;3800:489;;;;;;;;;:::o;14:284:145:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;-1:-1:-1;;;;;223:5:145;219:30;212:5;209:41;199:69;;264:1;261;254:12;199:69;287:5;14:284;-1:-1:-1;;;14:284:145:o;485:163::-;552:20;;612:10;601:22;;591:33;;581:61;;638:1;635;628:12;581:61;485:163;;;:::o;653:347::-;704:8;714:6;768:3;761:4;753:6;749:17;745:27;735:55;;786:1;783;776:12;735:55;-1:-1:-1;809:20:145;;-1:-1:-1;;;;;841:30:145;;838:50;;;884:1;881;874:12;838:50;921:4;913:6;909:17;897:29;;973:3;966:4;957:6;949;945:19;941:30;938:39;935:59;;;990:1;987;980:12;935:59;653:347;;;;;:::o;1005:655::-;1092:6;1100;1108;1116;1169:2;1157:9;1148:7;1144:23;1140:32;1137:52;;;1185:1;1182;1175:12;1137:52;1208:28;1226:9;1208:28;:::i;:::-;1198:38;-1:-1:-1;1286:2:145;1271:18;;1258:32;-1:-1:-1;;;;;1319:31:145;;1309:42;;1299:70;;1365:1;1362;1355:12;1299:70;1388:5;-1:-1:-1;1444:2:145;1429:18;;1416:32;-1:-1:-1;;;;;1460:30:145;;1457:50;;;1503:1;1500;1493:12;1457:50;1542:58;1592:7;1583:6;1572:9;1568:22;1542:58;:::i;:::-;1005:655;;;;-1:-1:-1;1619:8:145;-1:-1:-1;;;;1005:655:145:o;1665:184::-;1723:6;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1815:28;1833:9;1815:28;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:145;;2046:180;-1:-1:-1;2046:180:145:o;2231:347::-;2382:2;2367:18;;2415:1;2404:13;;2394:144;;2460:10;2455:3;2451:20;2448:1;2441:31;2495:4;2492:1;2485:15;2523:4;2520:1;2513:15;2394:144;2547:25;;;2231:347;:::o;2980:549::-;3067:6;3075;3083;3091;3144:2;3132:9;3123:7;3119:23;3115:32;3112:52;;;3160:1;3157;3150:12;3112:52;3183:28;3201:9;3183:28;:::i;:::-;3173:38;;3258:2;3247:9;3243:18;3230:32;3220:42;;3313:2;3302:9;3298:18;3285:32;-1:-1:-1;;;;;3332:6:145;3329:30;3326:50;;;3372:1;3369;3362:12;4351:343;4553:2;4535:21;;;4592:2;4572:18;;;4565:30;-1:-1:-1;;;4626:2:145;4611:18;;4604:49;4685:2;4670:18;;4351:343::o;4699:349::-;4901:2;4883:21;;;4940:2;4920:18;;;4913:30;4979:27;4974:2;4959:18;;4952:55;5039:2;5024:18;;4699:349::o;5053:306::-;5091:3;-1:-1:-1;;;;;5172:2:145;5165:5;5161:14;5199:2;5190:7;5187:15;5184:138;;5244:10;5239:3;5235:20;5232:1;5225:31;5279:4;5276:1;5269:15;5307:4;5304:1;5297:15;5184:138;5351:1;5338:15;;5053:306;-1:-1:-1;;;5053:306:145:o;5364:250::-;5449:1;5459:113;5473:6;5470:1;5467:13;5459:113;;;5549:11;;;5543:18;5530:11;;;5523:39;5495:2;5488:10;5459:113;;;-1:-1:-1;;5606:1:145;5588:16;;5581:27;5364:250::o;5619:394::-;5766:2;5755:9;5748:21;5729:4;5798:6;5792:13;5841:6;5836:2;5825:9;5821:18;5814:34;5857:79;5929:6;5924:2;5913:9;5909:18;5904:2;5896:6;5892:15;5857:79;:::i;:::-;5997:2;5976:15;-1:-1:-1;;5972:29:145;5957:45;;;;6004:2;5953:54;;5619:394;-1:-1:-1;;5619:394:145:o;6018:873::-;-1:-1:-1;;;;;;6361:3:145;6339:16;;;6335:36;6323:49;;-1:-1:-1;;;;;;6427:3:145;6405:16;;;6401:51;6397:1;6388:11;;6381:72;-1:-1:-1;;;;;;6476:3:145;6525:16;;;6521:25;;6517:1;6508:11;;6501:46;-1:-1:-1;;6585:2:145;6581:15;;;6577:53;6572:2;6563:12;;6556:75;6665:16;;;6661:25;6656:2;6647:12;;6640:47;6712:2;6703:12;;6696:28;;;6747:13;;-1:-1:-1;;6769:75:145;6747:13;6832:2;6823:12;;6816:4;6804:17;;6769:75;:::i;:::-;6864:16;;;;6882:2;6860:25;;6018:873;-1:-1:-1;;;;;;;;6018:873:145:o", + "linkReferences": {} + }, + "methodIdentifiers": { + "broadcasters(uint32)": "59f89787", + "frozen(uint32)": "36ae7c18", + "lightClients(uint32)": "7599735c", + "messageStatus(bytes32)": "3c6cf473", + "messages(uint64)": "029d6713", + "nonce()": "affed0e0", + "send(uint32,address,bytes)": "68346a92", + "send(uint32,bytes32,bytes)": "a96a2e92", + "sendViaStorage(uint32,address,bytes)": "147bce49", + "sendViaStorage(uint32,bytes32,bytes)": "6fdbccbf", + "sendingEnabled()": "3e99e9ce", + "sourceChainIds(uint256)": "9efeff1c", + "storageRootCache(bytes32)": "8d080d1d", + "version()": "54fd4d50" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"send(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"sendViaStorage(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}}},\"title\":\"Source Arbitrary Message Bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"send(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.\"},\"sendViaStorage(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"This contract is the entrypoint for sending messages to other chains.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/SourceAMB.sol\":\"SourceAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes", + "indexed": false + } + ], + "type": "event", + "name": "SentMessage", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function", + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "send(uint32,bytes32,bytes)": { + "params": { + "data": "The data passed to the contract on the other chain", + "destinationAddress": "The contract address that will be called on the destination chain.", + "destinationChainId": "The chain id that specifies the destination chain." + }, + "returns": { + "_0": "bytes32 A unique identifier for a message." + } + }, + "sendViaStorage(uint32,bytes32,bytes)": { + "params": { + "data": "The data passed to the contract on the other chain", + "destinationAddress": "The contract address that will be called on the destination chain.", + "destinationChainId": "The chain id that specifies the destination chain." + }, + "returns": { + "_0": "bytes32 A unique identifier for a message." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "broadcasters(uint32)": { + "notice": "Mapping between source chainId and the address of the Telepathy broadcaster on that chain." + }, + "frozen(uint32)": { + "notice": "Mapping between a source chainId and whether it's frozen." + }, + "lightClients(uint32)": { + "notice": "Mapping between source chainId and the corresponding light client." + }, + "messageStatus(bytes32)": { + "notice": "Mapping between a message root and its status." + }, + "messages(uint64)": { + "notice": "Mapping between a nonce and a message root." + }, + "nonce()": { + "notice": "Keeps track of the next nonce to be used." + }, + "send(uint32,bytes32,bytes)": { + "notice": "Sends a message to a destination chain." + }, + "sendViaStorage(uint32,bytes32,bytes)": { + "notice": "Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas." + }, + "sendingEnabled()": { + "notice": "Whether sending is enabled or not." + }, + "sourceChainIds(uint256)": { + "notice": "All sourceChainIds." + }, + "storageRootCache(bytes32)": { + "notice": "Storage root cache." + }, + "version()": { + "notice": "Returns current contract version." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/amb/SourceAMB.sol": "SourceAMB" + }, + "libraries": {} + }, + "sources": { + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", + "urls": [ + "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", + "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { + "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", + "urls": [ + "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", + "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { + "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", + "urls": [ + "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", + "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { + "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", + "urls": [ + "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", + "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { + "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", + "urls": [ + "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", + "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { + "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", + "urls": [ + "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", + "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", + "urls": [ + "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", + "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { + "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", + "urls": [ + "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", + "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { + "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", + "urls": [ + "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", + "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", + "urls": [ + "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", + "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { + "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", + "urls": [ + "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", + "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { + "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", + "urls": [ + "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", + "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", + "urls": [ + "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", + "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { + "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", + "urls": [ + "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", + "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { + "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", + "urls": [ + "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", + "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" + ], + "license": "MIT" + }, + "src/amb/SourceAMB.sol": { + "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "urls": [ + "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", + "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + ], + "license": null + }, + "src/amb/TelepathyAccess.sol": { + "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", + "urls": [ + "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", + "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" + ], + "license": null + }, + "src/amb/TelepathyStorage.sol": { + "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", + "urls": [ + "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", + "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" + ], + "license": null + }, + "src/amb/interfaces/ITelepathy.sol": { + "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", + "urls": [ + "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", + "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" + ], + "license": null + }, + "src/libraries/MessageEncoding.sol": { + "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", + "urls": [ + "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", + "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" + ], + "license": null + }, + "src/libraries/Typecast.sol": { + "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", + "urls": [ + "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", + "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" + ], + "license": "MIT OR Apache-2.0" + }, + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/amb/SourceAMB.sol", + "id": 41474, + "exportedSymbols": { + "Bytes32": [ + 44265 + ], + "ITelepathyRouter": [ + 42699 + ], + "Message": [ + 42646 + ], + "MessageEncoding": [ + 43343 + ], + "OwnableUpgradeable": [ + 28846 + ], + "SourceAMB": [ + 41473 + ], + "TelepathyAccess": [ + 42407 + ], + "TelepathyStorage": [ + 42625 + ], + "UUPSUpgradeable": [ + 29540 + ] + }, + "nodeType": "SourceUnit", + "src": "0:4955:99", + "nodes": [ + { + "id": 41219, + "nodeType": "PragmaDirective", + "src": "0:23:99", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 41221, + "nodeType": "ImportDirective", + "src": "25:99:99", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "file": "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "nameLocation": "-1:-1:-1", + "scope": 41474, + "sourceUnit": 29541, + "symbolAliases": [ + { + "foreign": { + "id": 41220, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29540, + "src": "33:15:99", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41223, + "nodeType": "ImportDirective", + "src": "125:100:99", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "file": "openzeppelin-contracts-upgradeable/access/OwnableUpgradeable.sol", + "nameLocation": "-1:-1:-1", + "scope": 41474, + "sourceUnit": 28847, + "symbolAliases": [ + { + "foreign": { + "id": 41222, + "name": "OwnableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28846, + "src": "133:18:99", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41225, + "nodeType": "ImportDirective", + "src": "227:51:99", + "nodes": [], + "absolutePath": "src/libraries/Typecast.sol", + "file": "src/libraries/Typecast.sol", + "nameLocation": "-1:-1:-1", + "scope": 41474, + "sourceUnit": 44266, + "symbolAliases": [ + { + "foreign": { + "id": 41224, + "name": "Bytes32", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44265, + "src": "235:7:99", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41227, + "nodeType": "ImportDirective", + "src": "279:66:99", + "nodes": [], + "absolutePath": "src/libraries/MessageEncoding.sol", + "file": "src/libraries/MessageEncoding.sol", + "nameLocation": "-1:-1:-1", + "scope": 41474, + "sourceUnit": 43344, + "symbolAliases": [ + { + "foreign": { + "id": 41226, + "name": "MessageEncoding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43343, + "src": "287:15:99", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41230, + "nodeType": "ImportDirective", + "src": "346:76:99", + "nodes": [], + "absolutePath": "src/amb/interfaces/ITelepathy.sol", + "file": "src/amb/interfaces/ITelepathy.sol", + "nameLocation": "-1:-1:-1", + "scope": 41474, + "sourceUnit": 42757, + "symbolAliases": [ + { + "foreign": { + "id": 41228, + "name": "ITelepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42699, + "src": "354:16:99", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 41229, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42646, + "src": "372:7:99", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41232, + "nodeType": "ImportDirective", + "src": "423:60:99", + "nodes": [], + "absolutePath": "src/amb/TelepathyAccess.sol", + "file": "src/amb/TelepathyAccess.sol", + "nameLocation": "-1:-1:-1", + "scope": 41474, + "sourceUnit": 42408, + "symbolAliases": [ + { + "foreign": { + "id": 41231, + "name": "TelepathyAccess", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42407, + "src": "431:15:99", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41234, + "nodeType": "ImportDirective", + "src": "484:62:99", + "nodes": [], + "absolutePath": "src/amb/TelepathyStorage.sol", + "file": "src/amb/TelepathyStorage.sol", + "nameLocation": "-1:-1:-1", + "scope": 41474, + "sourceUnit": 42626, + "symbolAliases": [ + { + "foreign": { + "id": 41233, + "name": "TelepathyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42625, + "src": "492:16:99", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41473, + "nodeType": "ContractDefinition", + "src": "699:4255:99", + "nodes": [ + { + "id": 41249, + "nodeType": "ModifierDefinition", + "src": "823:102:99", + "nodes": [], + "body": { + "id": 41248, + "nodeType": "Block", + "src": "851:74:99", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 41243, + "name": "sendingEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42577, + "src": "869:14:99", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "53656e64696e672069732064697361626c6564", + "id": 41244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "885:21:99", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_436ec06d7787a61e0375bb38248042d4cacd1c4428d2ace4b77dcc57e78cac0b", + "typeString": "literal_string \"Sending is disabled\"" + }, + "value": "Sending is disabled" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_436ec06d7787a61e0375bb38248042d4cacd1c4428d2ace4b77dcc57e78cac0b", + "typeString": "literal_string \"Sending is disabled\"" + } + ], + "id": 41242, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "861:7:99", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "861:46:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41246, + "nodeType": "ExpressionStatement", + "src": "861:46:99" + }, + { + "id": 41247, + "nodeType": "PlaceholderStatement", + "src": "917:1:99" + } + ] + }, + "documentation": { + "id": 41240, + "nodeType": "StructuredDocumentation", + "src": "762:56:99", + "text": "@notice Modifier to require that sending is enabled." + }, + "name": "isSendingEnabled", + "nameLocation": "832:16:99", + "parameters": { + "id": 41241, + "nodeType": "ParameterList", + "parameters": [], + "src": "848:2:99" + }, + "virtual": false, + "visibility": "internal" + }, + { + "id": 41291, + "nodeType": "FunctionDefinition", + "src": "1303:469:99", + "nodes": [], + "body": { + "id": 41290, + "nodeType": "Block", + "src": "1465:307:99", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41264, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41252, + "src": "1483:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 41265, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "1505:5:99", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 41266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1511:7:99", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "1505:13:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1483:35:99", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "43616e6e6f742073656e6420746f2073616d6520636861696e", + "id": 41268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1520:27:99", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", + "typeString": "literal_string \"Cannot send to same chain\"" + }, + "value": "Cannot send to same chain" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", + "typeString": "literal_string \"Cannot send to same chain\"" + } + ], + "id": 41263, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1475:7:99", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1475:73:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41270, + "nodeType": "ExpressionStatement", + "src": "1475:73:99" + }, + { + "assignments": [ + 41272, + 41274 + ], + "declarations": [ + { + "constant": false, + "id": 41272, + "mutability": "mutable", + "name": "message", + "nameLocation": "1572:7:99", + "nodeType": "VariableDeclaration", + "scope": 41290, + "src": "1559:20:99", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41271, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1559:5:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41274, + "mutability": "mutable", + "name": "messageRoot", + "nameLocation": "1589:11:99", + "nodeType": "VariableDeclaration", + "scope": 41290, + "src": "1581:19:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41273, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1581:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41280, + "initialValue": { + "arguments": [ + { + "id": 41276, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41252, + "src": "1635:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "id": 41277, + "name": "destinationAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41254, + "src": "1655:18:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41278, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41256, + "src": "1675:4:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 41275, + "name": "_getMessageAndRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41472, + "src": "1616:18:99", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", + "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" + } + }, + "id": 41279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1616:64:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", + "typeString": "tuple(bytes memory,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1558:122:99" + }, + { + "eventCall": { + "arguments": [ + { + "id": 41283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1707:7:99", + "subExpression": { + "id": 41282, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42585, + "src": "1707:5:99", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 41284, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41274, + "src": "1716:11:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41285, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41272, + "src": "1729:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 41281, + "name": "SentMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42654, + "src": "1695:11:99", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint64,bytes32,bytes memory)" + } + }, + "id": 41286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1695:42:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41287, + "nodeType": "EmitStatement", + "src": "1690:47:99" + }, + { + "expression": { + "id": 41288, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41274, + "src": "1754:11:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 41262, + "id": 41289, + "nodeType": "Return", + "src": "1747:18:99" + } + ] + }, + "baseFunctions": [ + 42665 + ], + "documentation": { + "id": 41250, + "nodeType": "StructuredDocumentation", + "src": "931:367:99", + "text": "@notice Sends a message to a destination chain.\n @param destinationChainId The chain id that specifies the destination chain.\n @param destinationAddress The contract address that will be called on the destination chain.\n @param data The data passed to the contract on the other chain\n @return bytes32 A unique identifier for a message." + }, + "functionSelector": "a96a2e92", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 41259, + "kind": "modifierInvocation", + "modifierName": { + "id": 41258, + "name": "isSendingEnabled", + "nameLocations": [ + "1418:16:99" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 41249, + "src": "1418:16:99" + }, + "nodeType": "ModifierInvocation", + "src": "1418:16:99" + } + ], + "name": "send", + "nameLocation": "1312:4:99", + "parameters": { + "id": 41257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41252, + "mutability": "mutable", + "name": "destinationChainId", + "nameLocation": "1324:18:99", + "nodeType": "VariableDeclaration", + "scope": 41291, + "src": "1317:25:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 41251, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1317:6:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41254, + "mutability": "mutable", + "name": "destinationAddress", + "nameLocation": "1352:18:99", + "nodeType": "VariableDeclaration", + "scope": 41291, + "src": "1344:26:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41253, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1344:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41256, + "mutability": "mutable", + "name": "data", + "nameLocation": "1387:4:99", + "nodeType": "VariableDeclaration", + "scope": 41291, + "src": "1372:19:99", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41255, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1372:5:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1316:76:99" + }, + "returnParameters": { + "id": 41262, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41261, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 41291, + "src": "1452:7:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41260, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1452:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1451:9:99" + }, + "scope": 41473, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 41335, + "nodeType": "FunctionDefinition", + "src": "1778:490:99", + "nodes": [], + "body": { + "id": 41334, + "nodeType": "Block", + "src": "1940:328:99", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41305, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41293, + "src": "1958:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 41306, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "1980:5:99", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 41307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1986:7:99", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "1980:13:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1958:35:99", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "43616e6e6f742073656e6420746f2073616d6520636861696e", + "id": 41309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1995:27:99", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", + "typeString": "literal_string \"Cannot send to same chain\"" + }, + "value": "Cannot send to same chain" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", + "typeString": "literal_string \"Cannot send to same chain\"" + } + ], + "id": 41304, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1950:7:99", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1950:73:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41311, + "nodeType": "ExpressionStatement", + "src": "1950:73:99" + }, + { + "assignments": [ + 41313, + 41315 + ], + "declarations": [ + { + "constant": false, + "id": 41313, + "mutability": "mutable", + "name": "message", + "nameLocation": "2047:7:99", + "nodeType": "VariableDeclaration", + "scope": 41334, + "src": "2034:20:99", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41312, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2034:5:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41315, + "mutability": "mutable", + "name": "messageRoot", + "nameLocation": "2064:11:99", + "nodeType": "VariableDeclaration", + "scope": 41334, + "src": "2056:19:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41314, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2056:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41324, + "initialValue": { + "arguments": [ + { + "id": 41317, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41293, + "src": "2110:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "arguments": [ + { + "id": 41320, + "name": "destinationAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41295, + "src": "2150:18:99", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 41318, + "name": "Bytes32", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44265, + "src": "2130:7:99", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Bytes32_$44265_$", + "typeString": "type(library Bytes32)" + } + }, + "id": 41319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2138:11:99", + "memberName": "fromAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 44264, + "src": "2130:19:99", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 41321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2130:39:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41322, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41297, + "src": "2171:4:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 41316, + "name": "_getMessageAndRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41472, + "src": "2091:18:99", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", + "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" + } + }, + "id": 41323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2091:85:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", + "typeString": "tuple(bytes memory,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2033:143:99" + }, + { + "eventCall": { + "arguments": [ + { + "id": 41327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2203:7:99", + "subExpression": { + "id": 41326, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42585, + "src": "2203:5:99", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 41328, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41315, + "src": "2212:11:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41329, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41313, + "src": "2225:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 41325, + "name": "SentMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42654, + "src": "2191:11:99", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint64,bytes32,bytes memory)" + } + }, + "id": 41330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2191:42:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41331, + "nodeType": "EmitStatement", + "src": "2186:47:99" + }, + { + "expression": { + "id": 41332, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41315, + "src": "2250:11:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 41303, + "id": 41333, + "nodeType": "Return", + "src": "2243:18:99" + } + ] + }, + "baseFunctions": [ + 42676 + ], + "functionSelector": "68346a92", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 41300, + "kind": "modifierInvocation", + "modifierName": { + "id": 41299, + "name": "isSendingEnabled", + "nameLocations": [ + "1893:16:99" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 41249, + "src": "1893:16:99" + }, + "nodeType": "ModifierInvocation", + "src": "1893:16:99" + } + ], + "name": "send", + "nameLocation": "1787:4:99", + "parameters": { + "id": 41298, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41293, + "mutability": "mutable", + "name": "destinationChainId", + "nameLocation": "1799:18:99", + "nodeType": "VariableDeclaration", + "scope": 41335, + "src": "1792:25:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 41292, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1792:6:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41295, + "mutability": "mutable", + "name": "destinationAddress", + "nameLocation": "1827:18:99", + "nodeType": "VariableDeclaration", + "scope": 41335, + "src": "1819:26:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 41294, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1819:7:99", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41297, + "mutability": "mutable", + "name": "data", + "nameLocation": "1862:4:99", + "nodeType": "VariableDeclaration", + "scope": 41335, + "src": "1847:19:99", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41296, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1847:5:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1791:76:99" + }, + "returnParameters": { + "id": 41303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41302, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 41335, + "src": "1927:7:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41301, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1927:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1926:9:99" + }, + "scope": 41473, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 41383, + "nodeType": "FunctionDefinition", + "src": "2830:520:99", + "nodes": [], + "body": { + "id": 41382, + "nodeType": "Block", + "src": "3004:346:99", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41350, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41338, + "src": "3022:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 41351, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3044:5:99", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 41352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3050:7:99", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "3044:13:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3022:35:99", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "43616e6e6f742073656e6420746f2073616d6520636861696e", + "id": 41354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3059:27:99", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", + "typeString": "literal_string \"Cannot send to same chain\"" + }, + "value": "Cannot send to same chain" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", + "typeString": "literal_string \"Cannot send to same chain\"" + } + ], + "id": 41349, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3014:7:99", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3014:73:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41356, + "nodeType": "ExpressionStatement", + "src": "3014:73:99" + }, + { + "assignments": [ + 41358, + 41360 + ], + "declarations": [ + { + "constant": false, + "id": 41358, + "mutability": "mutable", + "name": "message", + "nameLocation": "3111:7:99", + "nodeType": "VariableDeclaration", + "scope": 41382, + "src": "3098:20:99", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41357, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3098:5:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41360, + "mutability": "mutable", + "name": "messageRoot", + "nameLocation": "3128:11:99", + "nodeType": "VariableDeclaration", + "scope": 41382, + "src": "3120:19:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41359, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3120:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41366, + "initialValue": { + "arguments": [ + { + "id": 41362, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41338, + "src": "3174:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "id": 41363, + "name": "destinationAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41340, + "src": "3194:18:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41364, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41342, + "src": "3214:4:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 41361, + "name": "_getMessageAndRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41472, + "src": "3155:18:99", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", + "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" + } + }, + "id": 41365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3155:64:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", + "typeString": "tuple(bytes memory,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3097:122:99" + }, + { + "expression": { + "id": 41371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 41367, + "name": "messages", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42582, + "src": "3229:8:99", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_bytes32_$", + "typeString": "mapping(uint64 => bytes32)" + } + }, + "id": 41369, + "indexExpression": { + "id": 41368, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42585, + "src": "3238:5:99", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3229:15:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 41370, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41360, + "src": "3247:11:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3229:29:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 41372, + "nodeType": "ExpressionStatement", + "src": "3229:29:99" + }, + { + "eventCall": { + "arguments": [ + { + "id": 41375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3285:7:99", + "subExpression": { + "id": 41374, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42585, + "src": "3285:5:99", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 41376, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41360, + "src": "3294:11:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41377, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41358, + "src": "3307:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 41373, + "name": "SentMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42654, + "src": "3273:11:99", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint64,bytes32,bytes memory)" + } + }, + "id": 41378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3273:42:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41379, + "nodeType": "EmitStatement", + "src": "3268:47:99" + }, + { + "expression": { + "id": 41380, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41360, + "src": "3332:11:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 41348, + "id": 41381, + "nodeType": "Return", + "src": "3325:18:99" + } + ] + }, + "baseFunctions": [ + 42687 + ], + "documentation": { + "id": 41336, + "nodeType": "StructuredDocumentation", + "src": "2274:551:99", + "text": "@notice Sends a message to a destination chain.\n @notice This method is more expensive than the `send` method as it requires adding to\n contract storage. Use `send` when interacting with Telepathy to save gas.\n @param destinationChainId The chain id that specifies the destination chain.\n @param destinationAddress The contract address that will be called on the destination chain.\n @param data The data passed to the contract on the other chain\n @return bytes32 A unique identifier for a message." + }, + "functionSelector": "6fdbccbf", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 41345, + "kind": "modifierInvocation", + "modifierName": { + "id": 41344, + "name": "isSendingEnabled", + "nameLocations": [ + "2969:16:99" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 41249, + "src": "2969:16:99" + }, + "nodeType": "ModifierInvocation", + "src": "2969:16:99" + } + ], + "name": "sendViaStorage", + "nameLocation": "2839:14:99", + "parameters": { + "id": 41343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41338, + "mutability": "mutable", + "name": "destinationChainId", + "nameLocation": "2870:18:99", + "nodeType": "VariableDeclaration", + "scope": 41383, + "src": "2863:25:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 41337, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2863:6:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41340, + "mutability": "mutable", + "name": "destinationAddress", + "nameLocation": "2906:18:99", + "nodeType": "VariableDeclaration", + "scope": 41383, + "src": "2898:26:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41339, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2898:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41342, + "mutability": "mutable", + "name": "data", + "nameLocation": "2949:4:99", + "nodeType": "VariableDeclaration", + "scope": 41383, + "src": "2934:19:99", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41341, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2934:5:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2853:106:99" + }, + "returnParameters": { + "id": 41348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41347, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 41383, + "src": "2995:7:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41346, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2995:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2994:9:99" + }, + "scope": 41473, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 41433, + "nodeType": "FunctionDefinition", + "src": "3356:541:99", + "nodes": [], + "body": { + "id": 41432, + "nodeType": "Block", + "src": "3530:367:99", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41397, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41385, + "src": "3548:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 41398, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3570:5:99", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 41399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3576:7:99", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "3570:13:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3548:35:99", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "43616e6e6f742073656e6420746f2073616d6520636861696e", + "id": 41401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3585:27:99", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", + "typeString": "literal_string \"Cannot send to same chain\"" + }, + "value": "Cannot send to same chain" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", + "typeString": "literal_string \"Cannot send to same chain\"" + } + ], + "id": 41396, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3540:7:99", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3540:73:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41403, + "nodeType": "ExpressionStatement", + "src": "3540:73:99" + }, + { + "assignments": [ + 41405, + 41407 + ], + "declarations": [ + { + "constant": false, + "id": 41405, + "mutability": "mutable", + "name": "message", + "nameLocation": "3637:7:99", + "nodeType": "VariableDeclaration", + "scope": 41432, + "src": "3624:20:99", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41404, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3624:5:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41407, + "mutability": "mutable", + "name": "messageRoot", + "nameLocation": "3654:11:99", + "nodeType": "VariableDeclaration", + "scope": 41432, + "src": "3646:19:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41406, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3646:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41416, + "initialValue": { + "arguments": [ + { + "id": 41409, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41385, + "src": "3700:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "arguments": [ + { + "id": 41412, + "name": "destinationAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41387, + "src": "3740:18:99", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 41410, + "name": "Bytes32", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44265, + "src": "3720:7:99", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Bytes32_$44265_$", + "typeString": "type(library Bytes32)" + } + }, + "id": 41411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3728:11:99", + "memberName": "fromAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 44264, + "src": "3720:19:99", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 41413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3720:39:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41414, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41389, + "src": "3761:4:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 41408, + "name": "_getMessageAndRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41472, + "src": "3681:18:99", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", + "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" + } + }, + "id": 41415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3681:85:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", + "typeString": "tuple(bytes memory,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3623:143:99" + }, + { + "expression": { + "id": 41421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 41417, + "name": "messages", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42582, + "src": "3776:8:99", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_bytes32_$", + "typeString": "mapping(uint64 => bytes32)" + } + }, + "id": 41419, + "indexExpression": { + "id": 41418, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42585, + "src": "3785:5:99", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3776:15:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 41420, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41407, + "src": "3794:11:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3776:29:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 41422, + "nodeType": "ExpressionStatement", + "src": "3776:29:99" + }, + { + "eventCall": { + "arguments": [ + { + "id": 41425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3832:7:99", + "subExpression": { + "id": 41424, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42585, + "src": "3832:5:99", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 41426, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41407, + "src": "3841:11:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41427, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41405, + "src": "3854:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 41423, + "name": "SentMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42654, + "src": "3820:11:99", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint64,bytes32,bytes memory)" + } + }, + "id": 41428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3820:42:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41429, + "nodeType": "EmitStatement", + "src": "3815:47:99" + }, + { + "expression": { + "id": 41430, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41407, + "src": "3879:11:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 41395, + "id": 41431, + "nodeType": "Return", + "src": "3872:18:99" + } + ] + }, + "baseFunctions": [ + 42698 + ], + "functionSelector": "147bce49", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 41392, + "kind": "modifierInvocation", + "modifierName": { + "id": 41391, + "name": "isSendingEnabled", + "nameLocations": [ + "3495:16:99" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 41249, + "src": "3495:16:99" + }, + "nodeType": "ModifierInvocation", + "src": "3495:16:99" + } + ], + "name": "sendViaStorage", + "nameLocation": "3365:14:99", + "parameters": { + "id": 41390, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41385, + "mutability": "mutable", + "name": "destinationChainId", + "nameLocation": "3396:18:99", + "nodeType": "VariableDeclaration", + "scope": 41433, + "src": "3389:25:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 41384, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "3389:6:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41387, + "mutability": "mutable", + "name": "destinationAddress", + "nameLocation": "3432:18:99", + "nodeType": "VariableDeclaration", + "scope": 41433, + "src": "3424:26:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 41386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3424:7:99", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41389, + "mutability": "mutable", + "name": "data", + "nameLocation": "3475:4:99", + "nodeType": "VariableDeclaration", + "scope": 41433, + "src": "3460:19:99", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41388, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3460:5:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3379:106:99" + }, + "returnParameters": { + "id": 41395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41394, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 41433, + "src": "3521:7:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41393, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3521:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3520:9:99" + }, + "scope": 41473, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 41472, + "nodeType": "FunctionDefinition", + "src": "4455:497:99", + "nodes": [], + "body": { + "id": 41471, + "nodeType": "Block", + "src": "4660:292:99", + "nodes": [], + "statements": [ + { + "expression": { + "id": 41463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 41447, + "name": "messageBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41443, + "src": "4670:12:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 41450, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42614, + "src": "4721:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 41451, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42585, + "src": "4742:5:99", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "arguments": [ + { + "expression": { + "id": 41454, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "4768:5:99", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 41455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4774:7:99", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "4768:13:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 41453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4761:6:99", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 41452, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "4761:6:99", + "typeDescriptions": {} + } + }, + "id": 41456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4761:21:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "expression": { + "id": 41457, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4796:3:99", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 41458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4800:6:99", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4796:10:99", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 41459, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41436, + "src": "4820:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "id": 41460, + "name": "destinationAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41438, + "src": "4852:18:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41461, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41440, + "src": "4884:4:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "id": 41448, + "name": "MessageEncoding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43343, + "src": "4685:15:99", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MessageEncoding_$43343_$", + "typeString": "type(library MessageEncoding)" + } + }, + "id": 41449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4701:6:99", + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": 43264, + "src": "4685:22:99", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint8_$_t_uint64_$_t_uint32_$_t_address_$_t_uint32_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint8,uint64,uint32,address,uint32,bytes32,bytes memory) pure returns (bytes memory)" + } + }, + "id": 41462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4685:213:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "4670:228:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 41464, + "nodeType": "ExpressionStatement", + "src": "4670:228:99" + }, + { + "expression": { + "id": 41469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 41465, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41445, + "src": "4908:11:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 41467, + "name": "messageBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41443, + "src": "4932:12:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 41466, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4922:9:99", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 41468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4922:23:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4908:37:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 41470, + "nodeType": "ExpressionStatement", + "src": "4908:37:99" + } + ] + }, + "documentation": { + "id": 41434, + "nodeType": "StructuredDocumentation", + "src": "3903:547:99", + "text": "@notice Gets the message and message root from the user-provided arguments to `send`\n @param destinationChainId The chain id that specifies the destination chain.\n @param destinationAddress The contract address that will be called on the destination chain.\n @param data The calldata used when calling the contract on the destination chain.\n @return messageBytes The message encoded as bytes, used in SentMessage event.\n @return messageRoot The hash of messageBytes, used as a unique identifier for a message." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getMessageAndRoot", + "nameLocation": "4464:18:99", + "parameters": { + "id": 41441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41436, + "mutability": "mutable", + "name": "destinationChainId", + "nameLocation": "4499:18:99", + "nodeType": "VariableDeclaration", + "scope": 41472, + "src": "4492:25:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 41435, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "4492:6:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41438, + "mutability": "mutable", + "name": "destinationAddress", + "nameLocation": "4535:18:99", + "nodeType": "VariableDeclaration", + "scope": 41472, + "src": "4527:26:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4527:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41440, + "mutability": "mutable", + "name": "data", + "nameLocation": "4578:4:99", + "nodeType": "VariableDeclaration", + "scope": 41472, + "src": "4563:19:99", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41439, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4563:5:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4482:106:99" + }, + "returnParameters": { + "id": 41446, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41443, + "mutability": "mutable", + "name": "messageBytes", + "nameLocation": "4625:12:99", + "nodeType": "VariableDeclaration", + "scope": 41472, + "src": "4612:25:99", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41442, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4612:5:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41445, + "mutability": "mutable", + "name": "messageRoot", + "nameLocation": "4647:11:99", + "nodeType": "VariableDeclaration", + "scope": 41472, + "src": "4639:19:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41444, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4639:7:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4611:48:99" + }, + "scope": 41473, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 41236, + "name": "TelepathyStorage", + "nameLocations": [ + "721:16:99" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42625, + "src": "721:16:99" + }, + "id": 41237, + "nodeType": "InheritanceSpecifier", + "src": "721:16:99" + }, + { + "baseName": { + "id": 41238, + "name": "ITelepathyRouter", + "nameLocations": [ + "739:16:99" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42699, + "src": "739:16:99" + }, + "id": 41239, + "nodeType": "InheritanceSpecifier", + "src": "739:16:99" + } + ], + "canonicalName": "SourceAMB", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 41235, + "nodeType": "StructuredDocumentation", + "src": "548:151:99", + "text": "@title Source Arbitrary Message Bridge\n @author Succinct Labs\n @notice This contract is the entrypoint for sending messages to other chains." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 41473, + 42699, + 42625 + ], + "name": "SourceAMB", + "nameLocation": "708:9:99", + "scope": 41474, + "usedErrors": [] + } + ] + }, + "id": 99 +} \ No newline at end of file diff --git a/out/TargetAMB.sol/TargetAMB.json b/out/TargetAMB.sol/TargetAMB.json new file mode 100644 index 0000000..d478da0 --- /dev/null +++ b/out/TargetAMB.sol/TargetAMB.json @@ -0,0 +1,9602 @@ +{ + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "ExecutedMessage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "MIN_LIGHT_CLIENT_DELAY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes[]", + "name": "accountProof", + "type": "bytes[]" + }, + { + "internalType": "bytes[]", + "name": "storageProof", + "type": "bytes[]" + } + ], + "name": "executeMessage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + } + ], + "name": "executeMessageFromLog", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sourceChainIdsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x608060405234801561001057600080fd5b50613ccb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd36600461345f565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61014561013036600461347a565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b6101686101633660046135da565b6102c6565b005b61018d6101783660046136d7565b60076020526000908152604090205460ff1681565b6040516101199190613706565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc36600461347a565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d36600461347a565b6004602052600090815260409020546001600160a01b031681565b61016861024636600461372e565b610594565b61010f6102593660046136d7565b60096020526000908152604090205481565b61027e6102793660046136d7565b6108b7565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f1565b6000806102db8b8b61094a565b915091506102ec8260400151610bb4565b6102f98260400151610ce6565b6000808e8e81019061030b91906137d8565b9150915061031d828560400151610d42565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac919061380b565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b600061043c8b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610f7b565b90508061048b5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f08787906104a19190613824565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac6002611123565b90508181146105395760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061057b82828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114d692505050565b50506105876001603355565b5050505050505050505050565b61059c6108f1565b6000806105a9888861094a565b915091506105ba8260400151610bb4565b6105c78260400151610ce6565b6105d5898360400151610d42565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c8401528351808403820181529284018452825192810192909220808252600990925291822054820361078c5760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106eb919061380b565b9050600081900361073e5760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b61077261074b898b613824565b60408088015163ffffffff166000908152600560205220546001600160a01b03168361167d565b6000838152600960205260409020819055925061079e9050565b60008181526009602052604090205491505b6000846020015160016040516020016107cc9291906001600160401b03929092168252602082015260400190565b60408051808303601f19018152828252805160209182012081840152815180840382018152928201909152815191012090506000610814828561080f8a8c613824565b611779565b905084811461085d5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a282828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114d692505050565b50506108ae6001603355565b50505050505050565b600381815481106108c757600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109435760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109c785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061181592505050565b9050600085856040516109db9291906138a7565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0a57610a0a6136f0565b14610a575760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610a9f5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610ae95760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b34575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610ba75760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1a5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9791906138b7565b610ce35760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce35760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610da85760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e35919061380b565b600003610e845760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061380b565b610f1890426138ef565b90506078811015610f765760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b600080826001600160401b0316846001600160401b031603610fb95750600b610fa681610200613902565b610fb290610183613921565b905061110c565b612000610fc68486613934565b6001600160401b0316116110285750600b610fe2816020613902565b610fed906006613921565b90506110046120006001600160401b038516613971565b61101061200083613902565b61101a9190613921565b9050610fa681610200613902565b836001600160401b0316836001600160401b031610156110ba5750600b611050816020613902565b61105b906007613921565b9050611068816002613902565b611073906000613921565b905061108a6120006001600160401b038516613985565b611098630100000083613902565b6110a29190613921565b90506110af816002613902565b610fed906001613921565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016103ef565b611118878288886118da565b979650505050505050565b600080611131878a8a6118f4565b905060008160008151811061114857611148613999565b01602001516001600160f81b03191690506000600160f81b82148061117a5750600160f91b6001600160f81b03198316145b15611187575060016111ec565b600360fe1b6001600160f81b03198316106111a4575060006111ec565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b60006020840190506000604051806040016040528084875161120e91906138ef565b815260200161121d8585613921565b90529050600061122c82612194565b905080516004146112785760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b600061129d8260038151811061129057611290613999565b6020026020010151612194565b905080518c106112ef5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b6000611306828e8151811061129057611290613999565b905080516003146113645760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006113898260008151811061137c5761137c613999565b60200260200101516123b9565b90508c6001600160a01b0316816001600160a01b0316146113fc5760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b60006114148360018151811061129057611290613999565b90508c61143a8260008151811061142d5761142d613999565b602002602001015161242d565b1461149d5760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b6114bf818d815181106114b2576114b2613999565b6020026020010151612434565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401611505939291906139ff565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516115579190613a2f565b6000604051808303816000865af19150503d8060008114611594576040519150601f19603f3d011682016040523d82523d6000602084013e611599565b606091505b50805191955093506000925060200390506115db576000828060200190518101906115c49190613a4b565b6001600160e01b031916631dee306b60e11b149150505b8280156115e55750805b15611608576000858152600760205260409020805460ff19166002179055611622565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe8947878760405161166d929190613a75565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006116e7826040516020016116d191815260200190565b60405160208183030381529060405287866118f4565b905060008151116117335760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b600061174661174183612537565b612194565b9050805160041461175657600080fd5b61176c8160028151811061142d5761142d613999565b93505050505b9392505050565b6000806117a88560405160200161179291815260200190565b60405160208183030381529060405284866118f4565b905060008151116117fb5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b61180c61180782612537565b61242d565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916118c9918a91906118c49082906138ef565b61258a565b60c088015250949695505050505050565b6000806118e8868686612676565b90921495945050505050565b6060600084511161193f5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b600061194a84612805565b90506000611957866128f3565b905060008460405160200161196e91815260200190565b60405160208183030381529060405290506000805b845181101561213d5760008582815181106119a0576119a0613999565b602002602001015190508451831115611a125760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611ab15780518051602091820120604051611a6092611a3a92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611aac5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611ba7565b805151602011611b375780518051602091820120604051611adb92611a3a92910190815260200190565b611aac5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611ba75760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611bb360106001613921565b81602001515103611d605784518303611cf8576000611bef8260200151601081518110611be257611be2613999565b6020026020010151612a0d565b90506000815111611c685760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611c7691906138ef565b8314611cea5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b965061177295505050505050565b6000858481518110611d0c57611d0c613999565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611d3757611d37613999565b60200260200101519050611d4a81612b30565b9550611d57600186613921565b9450505061212a565b6002816020015151036120d1576000611d7882612b55565b9050600081600081518110611d8f57611d8f613999565b016020015160f81c90506000611da6600283613a99565b611db1906002613abb565b90506000611dc2848360ff16612b79565b90506000611dd08a89612b79565b90506000611dde8383612baf565b905080835114611e565760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611e6b575060ff85166003145b156120115780825114611ee65760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611f028860200151600181518110611be257611be2613999565b90506000815111611f7b5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d51611f8991906138ef565b8914611ffd5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c506117729b505050505050505050505050565b60ff85161580612024575060ff85166001145b1561206357612050876020015160018151811061204357612043613999565b6020026020010151612b30565b995061205c818a613921565b98506120c6565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b50505050505061212a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b508061213581613ad4565b915050611983565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b606060008060006121a485612c2e565b9194509250905060018160018111156121bf576121bf6136f0565b146122325760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b845161223e8385613921565b146122a65760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816122bf5790505090506000845b87518110156123ad576000806123326040518060400160405280858d6000015161231691906138ef565b8152602001858d6020015161232b9190613921565b9052612c2e565b50915091506040518060400160405280838361234e9190613921565b8152602001848c602001516123639190613921565b81525085858151811061237857612378613999565b602090810291909101015261238e600185613921565b935061239a8183613921565b6123a49084613921565b925050506122ec565b50815295945050505050565b80516000906001036123cd57506000919050565b815160151461241e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b6124278261242d565b92915050565b6000612427825b600060218260000151111561248b5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061249985612c2e565b9194509250905060008160018111156124b4576124b46136f0565b146125015760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125139190613921565b8051909150602084101561252d5760208490036101000a90045b9695505050505050565b6040805180820190915260008082526020820152600082511161256c5760405162461bcd60e51b81526004016103ef90613aed565b50604080518082019091528151815260209182019181019190915290565b60608161259881601f613921565b10156125b65760405162461bcd60e51b81526004016103ef90613b5d565b6125c08284613921565b845110156126045760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b606082158015612623576040519150600082526020820160405261266d565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561265c578051835260209283019201612644565b5050858452601f01601f1916604052505b50949350505050565b600082825160016126879190613921565b612692906002613c69565b1161269c57600080fd5b8360005b8460011461266d576126b3600286613971565b6001036127525760028482815181106126ce576126ce613999565b6020026020010151836040516020016126f1929190918252602082015260400190565b60408051601f198184030181529082905261270b91613a2f565b602060405180830381855afa158015612728573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061274b919061380b565b91506127e6565b60028285838151811061276757612767613999565b6020026020010151604051602001612789929190918252602082015260400190565b60408051601f19818403018152908290526127a391613a2f565b602060405180830381855afa1580156127c0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127e3919061380b565b91505b6127f1600286613985565b9450806127fd81613ad4565b9150506126a0565b80516060906000816001600160401b0381111561282457612824613525565b60405190808252806020026020018201604052801561286957816020015b60408051808201909152606080825260208201528152602001906001900390816128425790505b50905060005b828110156128eb57604051806040016040528086838151811061289457612894613999565b602002602001015181526020016128c38784815181106128b6576128b6613999565b60200260200101516132f1565b8152508282815181106128d8576128d8613999565b602090810291909101015260010161286f565b509392505050565b80516060906000612905826002613902565b6001600160401b0381111561291c5761291c613525565b6040519080825280601f01601f191660200182016040528015612946576020820181803683370190505b5090506000805b83811015612a035785818151811061296757612967613999565b6020910101516001600160f81b03198116925060041c60ff60f41b168361298f836002613902565b8151811061299f5761299f613999565b60200101906001600160f81b031916908160001a905350600f60f81b8216836129c9836002613902565b6129d4906001613921565b815181106129e4576129e4613999565b60200101906001600160f81b031916908160001a90535060010161294d565b5090949350505050565b60606000806000612a1d85612c2e565b919450925090506000816001811115612a3857612a386136f0565b14612aab5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612ab58284613921565b855114612b215760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b61180c856020015184846132ff565b60606020826000015110612b4c57612b4782612a0d565b612427565b6124278261339f565b6060612427612b748360200151600081518110611be257611be2613999565b6128f3565b606082518210612b985750604080516020810190915260008152612427565b6117728383848651612baa91906138ef565b6133b5565b60008060008351855110612bc4578351612bc7565b84515b90505b8082108015612c1e5750838281518110612be657612be6613999565b602001015160f81c60f81b6001600160f81b031916858381518110612c0d57612c0d613999565b01602001516001600160f81b031916145b156128eb57816001019150612bca565b600080600080846000015111612c565760405162461bcd60e51b81526004016103ef90613aed565b6020840151805160001a607f8111612c7b5760006001600094509450945050506132ea565b60b78111612dd8576000612c906080836138ef565b905080876000015111612d105760405162461bcd60e51b815260206004820152604e6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612d3d5750600160ff1b6001600160f81b0319821610155b612dc55760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b50600195509350600092506132ea915050565b60bf8111613019576000612ded60b7836138ef565b905080876000015111612e705760405162461bcd60e51b81526020600482015260516024820152600080516020613c7683398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612ef75760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c60378111612f7a5760405162461bcd60e51b81526020600482015260486024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b612f848184613921565b895111612ffc5760405162461bcd60e51b815260206004820152604c6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b613007836001613921565b97509550600094506132ea9350505050565b60f781116130bb57600061302e60c0836138ef565b9050808760000151116130aa5760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b6001955093508492506132ea915050565b60006130c860f7836138ef565b9050808760000151116131475760405162461bcd60e51b815260206004820152604d6024820152600080516020613c7683398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036131cc5760405162461bcd60e51b81526020600482015260486024820152600080516020613c7683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c6037811161324d5760405162461bcd60e51b81526020600482015260466024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6132578184613921565b8951116132cd5760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b6132d8836001613921565b97509550600194506132ea9350505050565b9193909250565b606061242761174183612537565b60606000826001600160401b0381111561331b5761331b613525565b6040519080825280601f01601f191660200182016040528015613345576020820181803683370190505b50905082600003613357579050611772565b60006133638587613921565b90506020820160005b8581101561338457828101518282015260200161336c565b85811115613393576000868301525b50919695505050505050565b60606124278260200151600084600001516132ff565b60608182601f0110156133da5760405162461bcd60e51b81526004016103ef90613b5d565b8282840110156133fc5760405162461bcd60e51b81526004016103ef90613b5d565b818301845110156126045760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461345a57600080fd5b919050565b60006020828403121561347157600080fd5b61177282613443565b60006020828403121561348c57600080fd5b813563ffffffff8116811461177257600080fd5b60008083601f8401126134b257600080fd5b5081356001600160401b038111156134c957600080fd5b602083019150836020828501011115610bad57600080fd5b60008083601f8401126134f357600080fd5b5081356001600160401b0381111561350a57600080fd5b6020830191508360208260051b8501011115610bad57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561356357613563613525565b604052919050565b600082601f83011261357c57600080fd5b81356001600160401b0381111561359557613595613525565b6135a8601f8201601f191660200161353b565b8181528460208386010111156135bd57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156135fb57600080fd5b6001600160401b03808d35111561361157600080fd5b61361e8e8e358f016134a0565b909c509a5060208d013581101561363457600080fd5b6136448e60208f01358f016134a0565b909a50985060408d013581101561365a57600080fd5b61366a8e60408f01358f016134e1565b909850965060608d0135955060808d013581101561368757600080fd5b6136978e60808f01358f016134e1565b909550935060a08d01358110156136ad57600080fd5b506136be8d60a08e01358e0161356b565b915060c08c013590509295989b509295989b9093969950565b6000602082840312156136e957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061372857634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561374957600080fd5b61375288613443565b965060208801356001600160401b038082111561376e57600080fd5b61377a8b838c016134a0565b909850965060408a013591508082111561379357600080fd5b61379f8b838c016134e1565b909650945060608a01359150808211156137b857600080fd5b506137c58a828b016134e1565b989b979a50959850939692959293505050565b600080604083850312156137eb57600080fd5b6137f483613443565b915061380260208401613443565b90509250929050565b60006020828403121561381d57600080fd5b5051919050565b60006001600160401b038084111561383e5761383e613525565b8360051b602061384f81830161353b565b86815291850191818101903684111561386757600080fd5b865b8481101561389b578035868111156138815760008081fd5b61388d36828b0161356b565b845250918301918301613869565b50979650505050505050565b8183823760009101908152919050565b6000602082840312156138c957600080fd5b8151801515811461177257600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612427576124276138d9565b600081600019048311821515161561391c5761391c6138d9565b500290565b80820180821115612427576124276138d9565b6001600160401b03828116828216039080821115613954576139546138d9565b5092915050565b634e487b7160e01b600052601260045260246000fd5b6000826139805761398061395b565b500690565b6000826139945761399461395b565b500490565b634e487b7160e01b600052603260045260246000fd5b60005b838110156139ca5781810151838201526020016139b2565b50506000910152565b600081518084526139eb8160208601602086016139af565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061180c908301846139d3565b60008251613a418184602087016139af565b9190910192915050565b600060208284031215613a5d57600080fd5b81516001600160e01b03198116811461177257600080fd5b604081526000613a8860408301856139d3565b905082151560208301529392505050565b600060ff831680613aac57613aac61395b565b8060ff84160691505092915050565b60ff8281168282160390811115612427576124276138d9565b600060018201613ae657613ae66138d9565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613bc0578160001904821115613ba657613ba66138d9565b80851615613bb357918102915b93841c9390800290613b8a565b509250929050565b600082613bd757506001612427565b81613be457506000612427565b8160018114613bfa5760028114613c0457613c20565b6001915050612427565b60ff841115613c1557613c156138d9565b50506001821b612427565b5060208310610133831016604e8410600b8410161715613c43575081810a612427565b613c4d8383613b85565b8060001904821115613c6157613c616138d9565b029392505050565b60006117728383613bc856fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212206a97625bc300e9ead0f59393fd498c078655fa8c3a42ebddbe4432362362406464736f6c63430008100033", + "sourceMap": "748:10128:100:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd36600461345f565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61014561013036600461347a565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b6101686101633660046135da565b6102c6565b005b61018d6101783660046136d7565b60076020526000908152604090205460ff1681565b6040516101199190613706565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc36600461347a565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d36600461347a565b6004602052600090815260409020546001600160a01b031681565b61016861024636600461372e565b610594565b61010f6102593660046136d7565b60096020526000908152604090205481565b61027e6102793660046136d7565b6108b7565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f1565b6000806102db8b8b61094a565b915091506102ec8260400151610bb4565b6102f98260400151610ce6565b6000808e8e81019061030b91906137d8565b9150915061031d828560400151610d42565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac919061380b565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b600061043c8b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610f7b565b90508061048b5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f08787906104a19190613824565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac6002611123565b90508181146105395760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061057b82828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114d692505050565b50506105876001603355565b5050505050505050505050565b61059c6108f1565b6000806105a9888861094a565b915091506105ba8260400151610bb4565b6105c78260400151610ce6565b6105d5898360400151610d42565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c8401528351808403820181529284018452825192810192909220808252600990925291822054820361078c5760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106eb919061380b565b9050600081900361073e5760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b61077261074b898b613824565b60408088015163ffffffff166000908152600560205220546001600160a01b03168361167d565b6000838152600960205260409020819055925061079e9050565b60008181526009602052604090205491505b6000846020015160016040516020016107cc9291906001600160401b03929092168252602082015260400190565b60408051808303601f19018152828252805160209182012081840152815180840382018152928201909152815191012090506000610814828561080f8a8c613824565b611779565b905084811461085d5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a282828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114d692505050565b50506108ae6001603355565b50505050505050565b600381815481106108c757600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109435760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109c785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061181592505050565b9050600085856040516109db9291906138a7565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0a57610a0a6136f0565b14610a575760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610a9f5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610ae95760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b34575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610ba75760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1a5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9791906138b7565b610ce35760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce35760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610da85760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e35919061380b565b600003610e845760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061380b565b610f1890426138ef565b90506078811015610f765760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b600080826001600160401b0316846001600160401b031603610fb95750600b610fa681610200613902565b610fb290610183613921565b905061110c565b612000610fc68486613934565b6001600160401b0316116110285750600b610fe2816020613902565b610fed906006613921565b90506110046120006001600160401b038516613971565b61101061200083613902565b61101a9190613921565b9050610fa681610200613902565b836001600160401b0316836001600160401b031610156110ba5750600b611050816020613902565b61105b906007613921565b9050611068816002613902565b611073906000613921565b905061108a6120006001600160401b038516613985565b611098630100000083613902565b6110a29190613921565b90506110af816002613902565b610fed906001613921565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016103ef565b611118878288886118da565b979650505050505050565b600080611131878a8a6118f4565b905060008160008151811061114857611148613999565b01602001516001600160f81b03191690506000600160f81b82148061117a5750600160f91b6001600160f81b03198316145b15611187575060016111ec565b600360fe1b6001600160f81b03198316106111a4575060006111ec565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b60006020840190506000604051806040016040528084875161120e91906138ef565b815260200161121d8585613921565b90529050600061122c82612194565b905080516004146112785760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b600061129d8260038151811061129057611290613999565b6020026020010151612194565b905080518c106112ef5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b6000611306828e8151811061129057611290613999565b905080516003146113645760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006113898260008151811061137c5761137c613999565b60200260200101516123b9565b90508c6001600160a01b0316816001600160a01b0316146113fc5760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b60006114148360018151811061129057611290613999565b90508c61143a8260008151811061142d5761142d613999565b602002602001015161242d565b1461149d5760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b6114bf818d815181106114b2576114b2613999565b6020026020010151612434565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401611505939291906139ff565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516115579190613a2f565b6000604051808303816000865af19150503d8060008114611594576040519150601f19603f3d011682016040523d82523d6000602084013e611599565b606091505b50805191955093506000925060200390506115db576000828060200190518101906115c49190613a4b565b6001600160e01b031916631dee306b60e11b149150505b8280156115e55750805b15611608576000858152600760205260409020805460ff19166002179055611622565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe8947878760405161166d929190613a75565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006116e7826040516020016116d191815260200190565b60405160208183030381529060405287866118f4565b905060008151116117335760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b600061174661174183612537565b612194565b9050805160041461175657600080fd5b61176c8160028151811061142d5761142d613999565b93505050505b9392505050565b6000806117a88560405160200161179291815260200190565b60405160208183030381529060405284866118f4565b905060008151116117fb5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b61180c61180782612537565b61242d565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916118c9918a91906118c49082906138ef565b61258a565b60c088015250949695505050505050565b6000806118e8868686612676565b90921495945050505050565b6060600084511161193f5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b600061194a84612805565b90506000611957866128f3565b905060008460405160200161196e91815260200190565b60405160208183030381529060405290506000805b845181101561213d5760008582815181106119a0576119a0613999565b602002602001015190508451831115611a125760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611ab15780518051602091820120604051611a6092611a3a92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611aac5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611ba7565b805151602011611b375780518051602091820120604051611adb92611a3a92910190815260200190565b611aac5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611ba75760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611bb360106001613921565b81602001515103611d605784518303611cf8576000611bef8260200151601081518110611be257611be2613999565b6020026020010151612a0d565b90506000815111611c685760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611c7691906138ef565b8314611cea5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b965061177295505050505050565b6000858481518110611d0c57611d0c613999565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611d3757611d37613999565b60200260200101519050611d4a81612b30565b9550611d57600186613921565b9450505061212a565b6002816020015151036120d1576000611d7882612b55565b9050600081600081518110611d8f57611d8f613999565b016020015160f81c90506000611da6600283613a99565b611db1906002613abb565b90506000611dc2848360ff16612b79565b90506000611dd08a89612b79565b90506000611dde8383612baf565b905080835114611e565760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611e6b575060ff85166003145b156120115780825114611ee65760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611f028860200151600181518110611be257611be2613999565b90506000815111611f7b5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d51611f8991906138ef565b8914611ffd5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c506117729b505050505050505050505050565b60ff85161580612024575060ff85166001145b1561206357612050876020015160018151811061204357612043613999565b6020026020010151612b30565b995061205c818a613921565b98506120c6565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b50505050505061212a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b508061213581613ad4565b915050611983565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b606060008060006121a485612c2e565b9194509250905060018160018111156121bf576121bf6136f0565b146122325760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b845161223e8385613921565b146122a65760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816122bf5790505090506000845b87518110156123ad576000806123326040518060400160405280858d6000015161231691906138ef565b8152602001858d6020015161232b9190613921565b9052612c2e565b50915091506040518060400160405280838361234e9190613921565b8152602001848c602001516123639190613921565b81525085858151811061237857612378613999565b602090810291909101015261238e600185613921565b935061239a8183613921565b6123a49084613921565b925050506122ec565b50815295945050505050565b80516000906001036123cd57506000919050565b815160151461241e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b6124278261242d565b92915050565b6000612427825b600060218260000151111561248b5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061249985612c2e565b9194509250905060008160018111156124b4576124b46136f0565b146125015760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125139190613921565b8051909150602084101561252d5760208490036101000a90045b9695505050505050565b6040805180820190915260008082526020820152600082511161256c5760405162461bcd60e51b81526004016103ef90613aed565b50604080518082019091528151815260209182019181019190915290565b60608161259881601f613921565b10156125b65760405162461bcd60e51b81526004016103ef90613b5d565b6125c08284613921565b845110156126045760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b606082158015612623576040519150600082526020820160405261266d565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561265c578051835260209283019201612644565b5050858452601f01601f1916604052505b50949350505050565b600082825160016126879190613921565b612692906002613c69565b1161269c57600080fd5b8360005b8460011461266d576126b3600286613971565b6001036127525760028482815181106126ce576126ce613999565b6020026020010151836040516020016126f1929190918252602082015260400190565b60408051601f198184030181529082905261270b91613a2f565b602060405180830381855afa158015612728573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061274b919061380b565b91506127e6565b60028285838151811061276757612767613999565b6020026020010151604051602001612789929190918252602082015260400190565b60408051601f19818403018152908290526127a391613a2f565b602060405180830381855afa1580156127c0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127e3919061380b565b91505b6127f1600286613985565b9450806127fd81613ad4565b9150506126a0565b80516060906000816001600160401b0381111561282457612824613525565b60405190808252806020026020018201604052801561286957816020015b60408051808201909152606080825260208201528152602001906001900390816128425790505b50905060005b828110156128eb57604051806040016040528086838151811061289457612894613999565b602002602001015181526020016128c38784815181106128b6576128b6613999565b60200260200101516132f1565b8152508282815181106128d8576128d8613999565b602090810291909101015260010161286f565b509392505050565b80516060906000612905826002613902565b6001600160401b0381111561291c5761291c613525565b6040519080825280601f01601f191660200182016040528015612946576020820181803683370190505b5090506000805b83811015612a035785818151811061296757612967613999565b6020910101516001600160f81b03198116925060041c60ff60f41b168361298f836002613902565b8151811061299f5761299f613999565b60200101906001600160f81b031916908160001a905350600f60f81b8216836129c9836002613902565b6129d4906001613921565b815181106129e4576129e4613999565b60200101906001600160f81b031916908160001a90535060010161294d565b5090949350505050565b60606000806000612a1d85612c2e565b919450925090506000816001811115612a3857612a386136f0565b14612aab5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612ab58284613921565b855114612b215760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b61180c856020015184846132ff565b60606020826000015110612b4c57612b4782612a0d565b612427565b6124278261339f565b6060612427612b748360200151600081518110611be257611be2613999565b6128f3565b606082518210612b985750604080516020810190915260008152612427565b6117728383848651612baa91906138ef565b6133b5565b60008060008351855110612bc4578351612bc7565b84515b90505b8082108015612c1e5750838281518110612be657612be6613999565b602001015160f81c60f81b6001600160f81b031916858381518110612c0d57612c0d613999565b01602001516001600160f81b031916145b156128eb57816001019150612bca565b600080600080846000015111612c565760405162461bcd60e51b81526004016103ef90613aed565b6020840151805160001a607f8111612c7b5760006001600094509450945050506132ea565b60b78111612dd8576000612c906080836138ef565b905080876000015111612d105760405162461bcd60e51b815260206004820152604e6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612d3d5750600160ff1b6001600160f81b0319821610155b612dc55760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b50600195509350600092506132ea915050565b60bf8111613019576000612ded60b7836138ef565b905080876000015111612e705760405162461bcd60e51b81526020600482015260516024820152600080516020613c7683398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612ef75760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c60378111612f7a5760405162461bcd60e51b81526020600482015260486024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b612f848184613921565b895111612ffc5760405162461bcd60e51b815260206004820152604c6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b613007836001613921565b97509550600094506132ea9350505050565b60f781116130bb57600061302e60c0836138ef565b9050808760000151116130aa5760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b6001955093508492506132ea915050565b60006130c860f7836138ef565b9050808760000151116131475760405162461bcd60e51b815260206004820152604d6024820152600080516020613c7683398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036131cc5760405162461bcd60e51b81526020600482015260486024820152600080516020613c7683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c6037811161324d5760405162461bcd60e51b81526020600482015260466024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6132578184613921565b8951116132cd5760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b6132d8836001613921565b97509550600194506132ea9350505050565b9193909250565b606061242761174183612537565b60606000826001600160401b0381111561331b5761331b613525565b6040519080825280601f01601f191660200182016040528015613345576020820181803683370190505b50905082600003613357579050611772565b60006133638587613921565b90506020820160005b8581101561338457828101518282015260200161336c565b85811115613393576000868301525b50919695505050505050565b60606124278260200151600084600001516132ff565b60608182601f0110156133da5760405162461bcd60e51b81526004016103ef90613b5d565b8282840110156133fc5760405162461bcd60e51b81526004016103ef90613b5d565b818301845110156126045760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461345a57600080fd5b919050565b60006020828403121561347157600080fd5b61177282613443565b60006020828403121561348c57600080fd5b813563ffffffff8116811461177257600080fd5b60008083601f8401126134b257600080fd5b5081356001600160401b038111156134c957600080fd5b602083019150836020828501011115610bad57600080fd5b60008083601f8401126134f357600080fd5b5081356001600160401b0381111561350a57600080fd5b6020830191508360208260051b8501011115610bad57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561356357613563613525565b604052919050565b600082601f83011261357c57600080fd5b81356001600160401b0381111561359557613595613525565b6135a8601f8201601f191660200161353b565b8181528460208386010111156135bd57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156135fb57600080fd5b6001600160401b03808d35111561361157600080fd5b61361e8e8e358f016134a0565b909c509a5060208d013581101561363457600080fd5b6136448e60208f01358f016134a0565b909a50985060408d013581101561365a57600080fd5b61366a8e60408f01358f016134e1565b909850965060608d0135955060808d013581101561368757600080fd5b6136978e60808f01358f016134e1565b909550935060a08d01358110156136ad57600080fd5b506136be8d60a08e01358e0161356b565b915060c08c013590509295989b509295989b9093969950565b6000602082840312156136e957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061372857634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561374957600080fd5b61375288613443565b965060208801356001600160401b038082111561376e57600080fd5b61377a8b838c016134a0565b909850965060408a013591508082111561379357600080fd5b61379f8b838c016134e1565b909650945060608a01359150808211156137b857600080fd5b506137c58a828b016134e1565b989b979a50959850939692959293505050565b600080604083850312156137eb57600080fd5b6137f483613443565b915061380260208401613443565b90509250929050565b60006020828403121561381d57600080fd5b5051919050565b60006001600160401b038084111561383e5761383e613525565b8360051b602061384f81830161353b565b86815291850191818101903684111561386757600080fd5b865b8481101561389b578035868111156138815760008081fd5b61388d36828b0161356b565b845250918301918301613869565b50979650505050505050565b8183823760009101908152919050565b6000602082840312156138c957600080fd5b8151801515811461177257600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612427576124276138d9565b600081600019048311821515161561391c5761391c6138d9565b500290565b80820180821115612427576124276138d9565b6001600160401b03828116828216039080821115613954576139546138d9565b5092915050565b634e487b7160e01b600052601260045260246000fd5b6000826139805761398061395b565b500690565b6000826139945761399461395b565b500490565b634e487b7160e01b600052603260045260246000fd5b60005b838110156139ca5781810151838201526020016139b2565b50506000910152565b600081518084526139eb8160208601602086016139af565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061180c908301846139d3565b60008251613a418184602087016139af565b9190910192915050565b600060208284031215613a5d57600080fd5b81516001600160e01b03198116811461177257600080fd5b604081526000613a8860408301856139d3565b905082151560208301529392505050565b600060ff831680613aac57613aac61395b565b8060ff84160691505092915050565b60ff8281168282160390811115612427576124276138d9565b600060018201613ae657613ae66138d9565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613bc0578160001904821115613ba657613ba66138d9565b80851615613bb357918102915b93841c9390800290613b8a565b509250929050565b600082613bd757506001612427565b81613be457506000612427565b8160018114613bfa5760028114613c0457613c20565b6001915050612427565b60ff841115613c1557613c156138d9565b50506001821b612427565b5060208310610133831016604e8410600b8410161715613c43575081810a612427565b613c4d8383613b85565b8060001904821115613c6157613c616138d9565b029392505050565b60006117728383613bc856fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212206a97625bc300e9ead0f59393fd498c078655fa8c3a42ebddbe4432362362406464736f6c63430008100033", + "sourceMap": "748:10128:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:145;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:145;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:145;4866:1891:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:145;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:145;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:145;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:145;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;879:30;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:145;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:145;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:145;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:145;924:58:100;;973:9;924:58;;4866:1891;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:145;;5661:52:100;;::::1;7526:50:145::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:145;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;8445:2:145;5727:58:100::1;::::0;::::1;8427:21:145::0;8484:2;8464:18;;;8457:30;-1:-1:-1;;;8503:18:145;;;8496:51;8564:18;;5727:58:100::1;;;;;;;;;5799:12;5830:84;5853:12;5867:17;;5830:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5886:10:100;;-1:-1:-1;5898:7:100;;-1:-1:-1;5907:6:100;;-1:-1:-1;5830:22:100::1;:84::i;:::-;5799:115;;5936:7;5928:47;;;::::0;-1:-1:-1;;;5928:47:100;;8795:2:145;5928:47:100::1;::::0;::::1;8777:21:145::0;8834:2;8814:18;;;8807:30;8873:29;8853:18;;;8846:57;8920:18;;5928:47:100::1;8593:351:145::0;5928:47:100::1;5462:524;;;;6209:26;6263:320;6309:12;;6263:320;;;;;:::i;:::-;6459:21;::::0;;::::1;::::0;6446:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6343:12;;6377:17;;6416:8;;-1:-1:-1;;;;;6446:35:100::1;1151:46;1484:1;6263:24;:320::i;:::-;6209:388;;6641:11;6619:18;:33;6611:67;;;::::0;-1:-1:-1;;;6611:67:100;;10090:2:145;6611:67:100::1;::::0;::::1;10072:21:145::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:145;;;10141:51;10209:18;;6611:67:100::1;9888:345:145::0;6611:67:100::1;5996:693;6699:51;6715:7;6724:11;6737:12;;6699:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6699:15:100::1;::::0;-1:-1:-1;;;6699:51:100:i:1;:::-;5185:1572;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1891:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;10457:3:145;10435:16;;;;-1:-1:-1;;;;;;10431:43:145;2955:82:100;;::::1;10419:56:145::0;10530:3;10508:16;;;-1:-1:-1;;;;;;10504:51:145;10491:11;;;10484:72;10594:2;10590:15;-1:-1:-1;;10590:15:145;10572:12;;;10565:75;2955:82:100;;;;;;;;;10656:12:145;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:145;;3301:61:100;;::::1;7526:50:145::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:145;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;10881:2:145;3380:67:100::1;::::0;::::1;10863:21:145::0;10920:2;10900:18;;;10893:30;10959:33;10939:18;;;10932:61;11010:18;;3380:67:100::1;10679:355:145::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;11229:31:145;;;;11211:50;;11292:2;11277:18;;11270:34;11199:2;11184:18;;11039:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:145::0;3826:80:100;;;;;;;;;498:18:145;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10090:2:145;4090:31:100::1;::::0;::::1;10072:21:145::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:145;;;10141:51;10209:18;;4090:31:100::1;9888:345:145::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;11517:2:145;2704:63:39;;;11499:21:145;11556:2;11536:18;;;11529:30;11595:33;11575:18;;;11568:61;11646:18;;2704:63:39;11315:355:145;2704:63:39;1830:1;2842:7;:18;2580:287::o;7985:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8106:7:100;8129:22;8154:36;8177:12;;8154:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8154:22:100;;-1:-1:-1;;;8154:36:100:i;:::-;8129:61;;8200:19;8232:12;;8222:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8290:26:100;8260;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8256:562;;8332:35;;-1:-1:-1;;;8332:35:100;;12153:2:145;8332:35:100;;;12135:21:145;12192:2;12172:18;;;12165:30;12231:27;12211:18;;;12204:55;12276:18;;8332:35:100;11951:349:145;8256:562:100;8418:13;8388:7;:26;;;:43;;;8384:434;;8447:22;;-1:-1:-1;;;8447:22:100;;12507:2:145;8447:22:100;;;12489:21:145;12546:2;12526:18;;;12519:30;-1:-1:-1;;;12565:18:145;;;12558:42;12617:18;;8447:22:100;12305:336:145;8384:434:100;8509:7;;8490:15;;8509:7;8490:26;;;8509:7;;8490:26;8486:332;;8532:24;;-1:-1:-1;;;8532:24:100;;12848:2:145;8532:24:100;;;12830:21:145;12887:2;12867:18;;;12860:30;-1:-1:-1;;;12906:18:145;;;12899:44;12960:18;;8532:24:100;12646:338:145;8486:332:100;8611:21;;;;;8598:35;;8646:1;8598:35;;;:12;:35;;;;-1:-1:-1;;;;;8598:35:100;8590:58;;:127;;-1:-1:-1;8681:21:100;;;;;8668:35;;8715:1;8668:35;;;:12;:35;;;;-1:-1:-1;;;;;8668:35:100;:49;8590:127;8573:245;;;8742:65;;-1:-1:-1;;;8742:65:100;;13191:2:145;8742:65:100;;;13173:21:145;13230:2;13210:18;;;13203:30;13269:34;13249:18;;;13242:62;13340:25;13320:18;;;13313:53;13383:19;;8742:65:100;12989:419:145;8573:245:100;8835:7;;-1:-1:-1;8844:11:100;-1:-1:-1;7985:878:100;;;;;;:::o;6843:253::-;6938:21;;;6972:1;6938:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6938:21:100;6922:81;;;;-1:-1:-1;;;6922:81:100;;13615:2:145;6922:81:100;;;13597:21:145;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:145;;;13666:54;13737:18;;6922:81:100;13413:348:145;6922:81:100;7021:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7021:34:100;;;;-1:-1:-1;;;;;7021:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7013:76;;;;-1:-1:-1;;;7013:76:100;;14250:2:145;7013:76:100;;;14232:21:145;14289:2;14269:18;;;14262:30;14328:31;14308:18;;;14301:59;14377:18;;7013:76:100;14048:353:145;7013:76:100;6843:253;:::o;7157:121::-;7232:15;;;;;;;:6;:15;;;;;;;;7231:16;7223:48;;;;-1:-1:-1;;;7223:48:100;;14608:2:145;7223:48:100;;;14590:21:145;14647:2;14627:18;;;14620:30;-1:-1:-1;;;14666:18:145;;;14659:49;14725:18;;7223:48:100;14406:343:145;7348:452:100;7450:21;;;7484:1;7450:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7450:21:100;7434:81;;;;-1:-1:-1;;;7434:81:100;;13615:2:145;7434:81:100;;;13597:21:145;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:145;;;13666:54;13737:18;;7434:81:100;13413:348:145;7434:81:100;7533:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7533:38:100;;-1:-1:-1;;;;;7544:31:145;;7533:38:100;;;7526:50:145;;;;-1:-1:-1;;;;;7533:21:100;;;;:32;;7499:18:145;;7533:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7575:1;7533:43;7525:86;;;;-1:-1:-1;;;7525:86:100;;15145:2:145;7525:86:100;;;15127:21:145;15184:2;15164:18;;;15157:30;15223:32;15203:18;;;15196:60;15273:18;;7525:86:100;14943:354:145;7525:86:100;7661:21;;;7621:19;7661:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7661:38:100;;-1:-1:-1;;;;;7544:31:145;;7661:38:100;;;7526:50:145;;;;-1:-1:-1;;;;;7661:21:100;;:32;;7499:18:145;;7661:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7643:56;;:15;:56;:::i;:::-;7621:78;;973:9;7717:11;:37;;7709:84;;;;-1:-1:-1;;;7709:84:100;;15769:2:145;7709:84:100;;;15751:21:145;15808:2;15788:18;;;15781:30;15847:34;15827:18;;;15820:62;-1:-1:-1;;;15898:18:145;;;15891:32;15940:19;;7709:84:100;15567:398:145;7709:84:100;7424:376;7348:452;;:::o;3024:1184:109:-;3230:4;3246:13;3284:6;-1:-1:-1;;;;;3273:17:109;:7;-1:-1:-1;;;;;3273:17:109;;3269:845;;-1:-1:-1;3314:5:109;3341:14;3314:5;3349:6;3341:14;:::i;:::-;:20;;3358:3;3341:20;:::i;:::-;3333:28;;3269:845;;;304:4;3382:16;3392:6;3382:7;:16;:::i;:::-;-1:-1:-1;;;;;3382:45:109;;3378:736;;-1:-1:-1;3451:5:109;3478:14;3451:5;3486:6;3478:14;:::i;:::-;:18;;3495:1;3478:18;:::i;:::-;3470:26;-1:-1:-1;3554:34:109;304:4;-1:-1:-1;;;;;3554:34:109;;;:::i;:::-;3518:33;304:4;3518:5;:33;:::i;:::-;:70;;;;:::i;:::-;3510:78;-1:-1:-1;3610:14:109;3510:78;3618:6;3610:14;:::i;3378:736::-;3660:7;-1:-1:-1;;;;;3651:16:109;:6;-1:-1:-1;;;;;3651:16:109;;3647:467;;;-1:-1:-1;3691:5:109;3718:14;3691:5;3726:6;3718:14;:::i;:::-;:18;;3735:1;3718:18;:::i;:::-;3710:26;-1:-1:-1;3758:9:109;3710:26;3766:1;3758:9;:::i;:::-;:13;;3770:1;3758:13;:::i;:::-;3750:21;-1:-1:-1;3826:34:109;304:4;-1:-1:-1;;;;;3826:34:109;;;:::i;:::-;3793:30;236:8;3793:5;:30;:::i;:::-;:67;;;;:::i;:::-;3785:75;-1:-1:-1;3882:9:109;3785:75;3890:1;3882:9;:::i;:::-;:13;;3894:1;3882:13;:::i;3647:467::-;4060:43;;-1:-1:-1;;;4060:43:109;;17037:2:145;4060:43:109;;;17019:21:145;17076:2;17056:18;;;17049:30;17115:34;17095:18;;;17088:62;-1:-1:-1;;;17166:18:145;;;17159:31;17207:19;;4060:43:109;16835:397:145;3647:467:109;4130:71;4150:12;4164:5;4171:17;4190:10;4130:19;:71::i;:::-;4123:78;3024:1184;-1:-1:-1;;;;;;;3024:1184:109:o;1420:2836:110:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:110;;-1:-1:-1;2441:14:110;-1:-1:-1;;;2469:25:110;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:110;;;2469:54;2465:236;;;-1:-1:-1;2548:1:110;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:110;;;2566:135;;-1:-1:-1;2620:1:110;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:110;;17571:2:145;2652:38:110;;;17553:21:145;17610:2;17590:18;;;17583:30;17649;17629:18;;;17622:58;17697:18;;2652:38:110;17369:352:145;2566:135:110;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:110;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:110;;17928:2:145;3233:58:110;;;17910:21:145;17967:2;17947:18;;;17940:30;-1:-1:-1;;;17986:18:145;;;17979:52;18048:18;;3233:58:110;17726:346:145;3233:58:110;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:110;;18279:2:145;3450:58:110;;;18261:21:145;18318:2;18298:18;;;18291:30;18357:25;18337:18;;;18330:53;18400:18;;3450:58:110;18077:347:145;3450:58:110;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:110;;18631:2:145;3594:70:110;;;18613:21:145;18670:2;18650:18;;;18643:30;18709:34;18689:18;;;18682:62;-1:-1:-1;;;18760:18:145;;;18753:32;18802:19;;3594:70:110;18429:398:145;3594:70:110;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:110;:15;-1:-1:-1;;;;;3811:33:110;;3803:85;;;;-1:-1:-1;;;3803:85:110;;19034:2:145;3803:85:110;;;19016:21:145;19073:2;19053:18;;;19046:30;19112:34;19092:18;;;19085:62;-1:-1:-1;;;19163:18:145;;;19156:37;19210:19;;3803:85:110;18832:403:145;3803:85:110;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:110;;19442:2:145;4057:142:110;;;19424:21:145;19481:2;19461:18;;;19454:30;19520:34;19500:18;;;19493:62;-1:-1:-1;;;19571:18:145;;;19564:43;19624:19;;4057:142:110;19240:409:145;4057:142:110;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9345:1529:100:-;9473:11;9494:17;9535:24;9602:42;;;9662:7;:21;;;9701:7;:21;;;9740:7;:12;;;9562:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9562:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9562:204:100;-1:-1:-1;;;;;;9562:204:100;;;;;;;;;;9822:26;;;;9562:204;;-1:-1:-1;9880:11:100;-1:-1:-1;;;;;9880:16:100;9897:11;9880:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10350:11:100;;9863:46;;-1:-1:-1;9863:46:100;-1:-1:-1;10306:22:100;;-1:-1:-1;10365:2:100;10350:17;;-1:-1:-1;10346:176:100;;10384:12;10411:4;10400:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10460:51:100;-1:-1:-1;;;10460:51:100;;-1:-1:-1;;10346:176:100;10536:6;:27;;;;;10546:17;10536:27;10532:210;;;10579:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10579:62:100;10608:33;10579:62;;;10532:210;;;10672:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10672:59:100;10701:30;10672:59;;;10532:210;10824:11;10809:7;:13;;;-1:-1:-1;;;;;10757:110:100;10786:7;:21;;;10757:110;;;10837:12;10851:6;10757:110;;;;;;;:::i;:::-;;;;;;;;9463:1411;;;9345:1529;;;:::o;735:581:110:-;927:33;;-1:-1:-1;;21628:2:145;21624:15;;;21620:53;927:33:110;;;21608:66:145;872:7:110;;;;21690:12:145;;927:33:110;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;21842:19:145;;21886:2;21877:12;;21713:182;1014:29:110;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:110;;22102:2:145;1072:58:110;;;22084:21:145;22141:2;22121:18;;;22114:30;-1:-1:-1;;;22160:18:145;;;22153:52;22222:18;;1072:58:110;21900:346:145;1072:58:110;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:110;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;21842:19:145;;21886:2;21877:12;;21713:182;538:26:110;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:110;;22453:2:145;601:65:110;;;22435:21:145;22492:2;22472:18;;;22465:30;22531;22511:18;;;22504:58;22579:18;;601:65:110;22251:352:145;601:65:110;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:110:o;4295:1028:107:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:107;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:107;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:107;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:107;;4295:1028;-1:-1:-1;;;;;;4295:1028:107:o;1770:281:109:-;1914:4;1934:26;1963:38;1981:4;1987:5;1994:6;1963:17;:38::i;:::-;2018:26;;;;1770:281;-1:-1:-1;;;;;1770:281:109:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;22810:2:145;3101:49:77;;;22792:21:145;22849:2;22829:18;;;22822:30;-1:-1:-1;;;22868:18:145;;;22861:51;22929:18;;3101:49:77;22608:345:145;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;21842:19:145;;21886:2;21877:12;;21713:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;23160:2:145;3636:134:77;;;23142:21:145;23199:2;23179:18;;;23172:30;23238:34;23218:18;;;23211:62;-1:-1:-1;;;23289:18:145;;;23282:44;23343:19;;3636:134:77;22958:410:145;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;21842:19:145;;;21886:2;21877:12;;21713:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;23575:2:145;3893:176:77;;;23557:21:145;23614:2;23594:18;;;23587:30;23653:31;23633:18;;;23626:59;23702:18;;3893:176:77;23373:353:145;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;21842:19:145;;;21886:2;21877:12;;21713:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;23933:2:145;4222:186:77;;;23915:21:145;23972:2;23952:18;;;23945:30;24011:34;23991:18;;;23984:62;-1:-1:-1;;;24062:18:145;;;24055:37;24109:19;;4222:186:77;23731:403:145;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;24341:2:145;4509:156:77;;;24323:21:145;24380:2;24360:18;;;24353:30;24419:34;24399:18;;;24392:62;-1:-1:-1;;;24470:18:145;;;24463:36;24516:19;;4509:156:77;24139:402:145;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;24748:2:145;5384:158:77;;;24730:21:145;24787:2;24767:18;;;24760:30;24826:34;24806:18;;;24799:62;24897:29;24877:18;;;24870:57;24944:19;;5384:158:77;24546:423:145;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;25176:2:145;5626:162:77;;;25158:21:145;25215:2;25195:18;;;25188:30;25254:34;25234:18;;;25227:62;25325:28;25305:18;;;25298:56;25371:19;;5626:162:77;24974:422:145;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;25921:2:145;7009:171:77;;;25903:21:145;25960:2;25940:18;;;25933:30;25999:34;25979:18;;;25972:62;26070:28;26050:18;;;26043:56;26116:19;;7009:171:77;25719:422:145;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;26348:2:145;7843:185:77;;;26330:21:145;26387:2;26367:18;;;26360:30;26426:34;26406:18;;;26399:62;26497:31;26477:18;;;26470:59;26546:19;;7843:185:77;26146:425:145;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;26778:2:145;8463:156:77;;;26760:21:145;26817:2;26797:18;;;26790:30;26856:34;26836:18;;;26829:62;26927:27;26907:18;;;26900:55;26972:19;;8463:156:77;26576:421:145;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;27204:2:145;8703:160:77;;;27186:21:145;27243:2;27223:18;;;27216:30;27282:34;27262:18;;;27255:62;27353:26;27333:18;;;27326:54;27397:19;;8703:160:77;27002:420:145;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;27629:2:145;9439:60:77;;;27611:21:145;27668:2;27648:18;;;27641:30;27707:34;27687:18;;;27680:62;-1:-1:-1;;;27758:18:145;;;27751:48;27816:19;;9439:60:77;27427:414:145;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;28048:2:145;9556:50:77;;;28030:21:145;28087:2;28067:18;;;28060:30;28126:34;28106:18;;;28099:62;-1:-1:-1;;;28177:18:145;;;28170:38;28225:19;;9556:50:77;27846:404:145;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;28597:2:145;9641:47:77;;;28579:21:145;28636:2;28616:18;;;28609:30;28675:34;28655:18;;;28648:62;-1:-1:-1;;;28726:18:145;;;28719:35;28771:19;;9641:47:77;28395:401:145;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;29003:2:145;2161:136:75;;;28985:21:145;29042:2;29022:18;;;29015:30;29081:34;29061:18;;;29054:62;29152:26;29132:18;;;29125:54;29196:19;;2161:136:75;28801:420:145;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;29428:2:145;2308:134:75;;;29410:21:145;29467:2;29447:18;;;29440:30;29506:34;29486:18;;;29479:62;-1:-1:-1;;;29557:18:145;;;29550:48;29615:19;;2308:134:75;29226:414:145;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;29847:2:145;12579:55:75;;;29829:21:145;29886:2;29866:18;;;29859:30;29925:28;29905:18;;;29898:56;29971:18;;12579:55:75;29645:350:145;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;30202:2:145;11438:55:75;;;30184:21:145;30241:2;30221:18;;;30214:30;30280:28;30260:18;;;30253:56;30326:18;;11438:55:75;30000:350:145;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;30202:2:145;11598:72:75;;;30184:21:145;30241:2;30221:18;;;30214:30;30280:28;30260:18;;;30253:56;30326:18;;11598:72:75;30000:350:145;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:107:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:107;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:107;;31383:2:145;409:63:107;;;31365:21:145;31422:2;31402:18;;;31395:30;-1:-1:-1;;;31441:18:145;;;31434:47;31498:18;;409:63:107;31181:341:145;409:63:107;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:107;;;2803:2;2786:11;-1:-1:-1;;2782:25:107;2776:4;2769:39;-1:-1:-1;617:2736:107;-1:-1:-1;3380:9:107;205:3191;-1:-1:-1;;;;205:3191:107:o;1213:551:109:-;1341:7;1399:5;1378:6;:13;1394:1;1378:17;;;;:::i;:::-;1372:24;;:1;:24;:::i;:::-;:32;1364:41;;;;;;1431:4;1415:13;1468:268;1475:5;1484:1;1475:10;1468:268;;1505:9;1513:1;1505:5;:9;:::i;:::-;1518:1;1505:14;1501:184;;1547:38;1567:6;1574:1;1567:9;;;;;;;;:::i;:::-;;;;;;;1578:5;1554:30;;;;;;;;33058:19:145;;;33102:2;33093:12;;33086:28;33139:2;33130:12;;32901:247;1554:30:109;;;;-1:-1:-1;;1554:30:109;;;;;;;;;;1547:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1539:46;;1501:184;;;1632:38;1652:5;1659:6;1666:1;1659:9;;;;;;;;:::i;:::-;;;;;;;1639:30;;;;;;;;33058:19:145;;;33102:2;33093:12;;33086:28;33139:2;33130:12;;32901:247;1639:30:109;;;;-1:-1:-1;;1639:30:109;;;;;;;;;;1632:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1624:46;;1501:184;1698:10;1707:1;1698:10;;:::i;:::-;;-1:-1:-1;1722:3:109;;;;:::i;:::-;;;;1468:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;33355:2:145;4505:137:75;;;33337:21:145;33394:2;33374:18;;;33367:30;33433:34;33413:18;;;33406:62;33504:27;33484:18;;;33477:55;33549:19;;4505:137:75;33153:421:145;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;33781:2:145;4653:136:75;;;33763:21:145;33820:2;33800:18;;;33793:30;33859:34;33839:18;;;33832:62;-1:-1:-1;;;33910:18:145;;;33903:50;33970:19;;4653:136:75;33579:416:145;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;34202:2:145;6699:156:75;;;34184:21:145;34241:2;34221:18;;;34214:30;-1:-1:-1;;;;;;;;;;;34260:18:145;;;34253:62;34351:34;34331:18;;;34324:62;-1:-1:-1;;;34402:19:145;;;34395:45;34457:19;;6699:156:75;34000:482:145;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;34689:2:145;7025:177:75;;;34671:21:145;34728:2;34708:18;;;34701:30;34767:34;34747:18;;;34740:62;34838:34;34818:18;;;34811:62;-1:-1:-1;;;34889:19:145;;;34882:44;34943:19;;7025:177:75;34487:481:145;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;35175:2:145;7387:164:75;;;35157:21:145;35214:2;35194:18;;;35187:30;-1:-1:-1;;;;;;;;;;;35233:18:145;;;35226:62;35324:34;35304:18;;;35297:62;-1:-1:-1;;;35375:19:145;;;35368:48;35433:19;;7387:164:75;34973:485:145;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;35665:2:145;7721:159:75;;;35647:21:145;35704:2;35684:18;;;35677:30;-1:-1:-1;;;;;;;;;;;35723:18:145;;;35716:62;35814:34;35794:18;;;35787:62;-1:-1:-1;;;35865:19:145;;;35858:41;35916:19;;7721:159:75;35463:478:145;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;36148:2:145;8042:142:75;;;36130:21:145;36187:2;36167:18;;;36160:30;-1:-1:-1;;;;;;;;;;;36206:18:145;;;36199:62;36297:34;36277:18;;;36270:62;-1:-1:-1;;;36348:19:145;;;36341:39;36397:19;;8042:142:75;35946:476:145;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;36629:2:145;8199:168:75;;;36611:21:145;36668:2;36648:18;;;36641:30;-1:-1:-1;;;;;;;;;;;36687:18:145;;;36680:62;36778:34;36758:18;;;36751:62;-1:-1:-1;;;36829:19:145;;;36822:43;36882:19;;8199:168:75;36427:480:145;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;37114:2:145;8617:153:75;;;37096:21:145;37153:2;37133:18;;;37126:30;-1:-1:-1;;;;;;;;;;;37172:18:145;;;37165:62;37263:34;37243:18;;;37236:62;-1:-1:-1;;;37314:19:145;;;37307:41;37365:19;;8617:153:75;36912:478:145;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;37597:2:145;8935:161:75;;;37579:21:145;37636:2;37616:18;;;37609:30;-1:-1:-1;;;;;;;;;;;37655:18:145;;;37648:62;37746:34;37726:18;;;37719:62;-1:-1:-1;;;37797:19:145;;;37790:44;37851:19;;8935:161:75;37395:481:145;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;38083:2:145;9266:157:75;;;38065:21:145;38122:2;38102:18;;;38095:30;-1:-1:-1;;;;;;;;;;;38141:18:145;;;38134:62;38232:34;38212:18;;;38205:62;-1:-1:-1;;;38283:19:145;;;38276:39;38332:19;;9266:157:75;37881:476:145;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;38564:2:145;9588:141:75;;;38546:21:145;38603:2;38583:18;;;38576:30;-1:-1:-1;;;;;;;;;;;38622:18:145;;;38615:62;38713:34;38693:18;;;38686:62;-1:-1:-1;;;38764:19:145;;;38757:37;38811:19;;9588:141:75;38362:474:145;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;39043:2:145;9744:168:75;;;39025:21:145;39082:2;39062:18;;;39055:30;-1:-1:-1;;;;;;;;;;;39101:18:145;;;39094:62;39192:34;39172:18;;;39165:62;-1:-1:-1;;;39243:19:145;;;39236:41;39294:19;;9744:168:75;38841:478:145;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;31383:2:145;989:63:74;;;31365:21:145;31422:2;31402:18;;;31395:30;-1:-1:-1;;;31441:18:145;;;31434:47;31498:18;;989:63:74;31181:341:145;14:171;81:20;;-1:-1:-1;;;;;130:30:145;;120:41;;110:69;;175:1;172;165:12;110:69;14:171;;;:::o;190:184::-;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:145;;-1:-1:-1;;;;;1222:30:145;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:145;;-1:-1:-1;;;;;1586:30:145;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:145;1991:40;;-1:-1:-1;;;;;2046:34:145;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:145:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:145;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:145;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:145:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:145;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:145;-1:-1:-1;3373:2:145;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:145;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:145;-1:-1:-1;3615:2:145;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:145;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:145;-1:-1:-1;3873:2:145;3858:18;;3845:32;;-1:-1:-1;3920:3:145;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:145;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:145;-1:-1:-1;4176:3:145;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:145;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:145;;4362:180;-1:-1:-1;4362:180:145:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:145;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:145;-1:-1:-1;6516:2:145;6501:18;;6488:32;;-1:-1:-1;6532:16:145;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:145;-1:-1:-1;6779:2:145;6764:18;;6751:32;;-1:-1:-1;6795:16:145;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:145;;-1:-1:-1;5840:1155:145;;;;6837:98;;-1:-1:-1;;;5840:1155:145:o;7587:256::-;7653:6;7661;7714:2;7702:9;7693:7;7689:23;7685:32;7682:52;;;7730:1;7727;7720:12;7682:52;7753:28;7771:9;7753:28;:::i;:::-;7743:38;;7800:37;7833:2;7822:9;7818:18;7800:37;:::i;:::-;7790:47;;7587:256;;;;;:::o;8054:184::-;8124:6;8177:2;8165:9;8156:7;8152:23;8148:32;8145:52;;;8193:1;8190;8183:12;8145:52;-1:-1:-1;8216:16:145;;8054:184;-1:-1:-1;8054:184:145:o;8949:934::-;9085:9;-1:-1:-1;;;;;9160:2:145;9152:6;9149:14;9146:40;;;9166:18;;:::i;:::-;9212:6;9209:1;9205:14;9238:4;9262:28;9286:2;9282;9278:11;9262:28;:::i;:::-;9324:19;;;9394:14;;;;9359:12;;;;9431:14;9420:26;;9417:46;;;9459:1;9456;9449:12;9417:46;9483:5;9497:353;9513:6;9508:3;9505:15;9497:353;;;9599:3;9586:17;9635:2;9622:11;9619:19;9616:109;;;9679:1;9708:2;9704;9697:14;9616:109;9750:57;9792:14;9778:11;9771:5;9767:23;9750:57;:::i;:::-;9738:70;;-1:-1:-1;9828:12:145;;;;9530;;9497:353;;;-1:-1:-1;9872:5:145;8949:934;-1:-1:-1;;;;;;;8949:934:145:o;11675:271::-;11858:6;11850;11845:3;11832:33;11814:3;11884:16;;11909:13;;;11884:16;11675:271;-1:-1:-1;11675:271:145:o;13766:277::-;13833:6;13886:2;13874:9;13865:7;13861:23;13857:32;13854:52;;;13902:1;13899;13892:12;13854:52;13934:9;13928:16;13987:5;13980:13;13973:21;13966:5;13963:32;13953:60;;14009:1;14006;13999:12;15302:127;15363:10;15358:3;15354:20;15351:1;15344:31;15394:4;15391:1;15384:15;15418:4;15415:1;15408:15;15434:128;15501:9;;;15522:11;;;15519:37;;;15536:18;;:::i;15970:168::-;16010:7;16076:1;16072;16068:6;16064:14;16061:1;16058:21;16053:1;16046:9;16039:17;16035:45;16032:71;;;16083:18;;:::i;:::-;-1:-1:-1;16123:9:145;;15970:168::o;16143:125::-;16208:9;;;16229:10;;;16226:36;;;16242:18;;:::i;16273:183::-;-1:-1:-1;;;;;16392:10:145;;;16380;;;16376:27;;16415:12;;;16412:38;;;16430:18;;:::i;:::-;16412:38;16273:183;;;;:::o;16461:127::-;16522:10;16517:3;16513:20;16510:1;16503:31;16553:4;16550:1;16543:15;16577:4;16574:1;16567:15;16593:112;16625:1;16651;16641:35;;16656:18;;:::i;:::-;-1:-1:-1;16690:9:145;;16593:112::o;16710:120::-;16750:1;16776;16766:35;;16781:18;;:::i;:::-;-1:-1:-1;16815:9:145;;16710:120::o;17237:127::-;17298:10;17293:3;17289:20;17286:1;17279:31;17329:4;17326:1;17319:15;17353:4;17350:1;17343:15;19654:250;19739:1;19749:113;19763:6;19760:1;19757:13;19749:113;;;19839:11;;;19833:18;19820:11;;;19813:39;19785:2;19778:10;19749:113;;;-1:-1:-1;;19896:1:145;19878:16;;19871:27;19654:250::o;19909:270::-;19950:3;19988:5;19982:12;20015:6;20010:3;20003:19;20031:76;20100:6;20093:4;20088:3;20084:14;20077:4;20070:5;20066:16;20031:76;:::i;:::-;20161:2;20140:15;-1:-1:-1;;20136:29:145;20127:39;;;;20168:4;20123:50;;19909:270;-1:-1:-1;;19909:270:145:o;20184:400::-;20397:10;20385:23;;20367:42;;-1:-1:-1;;;;;20445:32:145;;20440:2;20425:18;;20418:60;20514:2;20509;20494:18;;20487:30;;;-1:-1:-1;;20534:44:145;;20559:18;;20551:6;20534:44;:::i;20589:287::-;20718:3;20756:6;20750:13;20772:66;20831:6;20826:3;20819:4;20811:6;20807:17;20772:66;:::i;:::-;20854:16;;;;;20589:287;-1:-1:-1;;20589:287:145:o;20881:290::-;20950:6;21003:2;20991:9;20982:7;20978:23;20974:32;20971:52;;;21019:1;21016;21009:12;20971:52;21045:16;;-1:-1:-1;;;;;;21090:32:145;;21080:43;;21070:71;;21137:1;21134;21127:12;21176:298;21345:2;21334:9;21327:21;21308:4;21365:44;21405:2;21394:9;21390:18;21382:6;21365:44;:::i;:::-;21357:52;;21459:6;21452:14;21445:22;21440:2;21429:9;21425:18;21418:50;21176:298;;;;;:::o;25401:157::-;25431:1;25465:4;25462:1;25458:12;25489:3;25479:37;;25496:18;;:::i;:::-;25548:3;25541:4;25538:1;25534:12;25530:22;25525:27;;;25401:157;;;;:::o;25563:151::-;25653:4;25646:12;;;25632;;;25628:31;;25671:14;;25668:40;;;25688:18;;:::i;28255:135::-;28294:3;28315:17;;;28312:43;;28335:18;;:::i;:::-;-1:-1:-1;28382:1:145;28371:13;;28255:135::o;30355:478::-;30557:2;30539:21;;;30596:2;30576:18;;;30569:30;30635:34;30630:2;30615:18;;30608:62;30706:34;30701:2;30686:18;;30679:62;-1:-1:-1;;;30772:3:145;30757:19;;30750:41;30823:3;30808:19;;30355:478::o;30838:338::-;31040:2;31022:21;;;31079:2;31059:18;;;31052:30;-1:-1:-1;;;31113:2:145;31098:18;;31091:44;31167:2;31152:18;;30838:338::o;31527:422::-;31616:1;31659:5;31616:1;31673:270;31694:7;31684:8;31681:21;31673:270;;;31753:4;31749:1;31745:6;31741:17;31735:4;31732:27;31729:53;;;31762:18;;:::i;:::-;31812:7;31802:8;31798:22;31795:55;;;31832:16;;;;31795:55;31911:22;;;;31871:15;;;;31673:270;;;31677:3;31527:422;;;;;:::o;31954:806::-;32003:5;32033:8;32023:80;;-1:-1:-1;32074:1:145;32088:5;;32023:80;32122:4;32112:76;;-1:-1:-1;32159:1:145;32173:5;;32112:76;32204:4;32222:1;32217:59;;;;32290:1;32285:130;;;;32197:218;;32217:59;32247:1;32238:10;;32261:5;;;32285:130;32322:3;32312:8;32309:17;32306:43;;;32329:18;;:::i;:::-;-1:-1:-1;;32385:1:145;32371:16;;32400:5;;32197:218;;32499:2;32489:8;32486:16;32480:3;32474:4;32471:13;32467:36;32461:2;32451:8;32448:16;32443:2;32437:4;32434:12;32430:35;32427:77;32424:159;;;-1:-1:-1;32536:19:145;;;32568:5;;32424:159;32615:34;32640:8;32634:4;32615:34;:::i;:::-;32685:6;32681:1;32677:6;32673:19;32664:7;32661:32;32658:58;;;32696:18;;:::i;:::-;32734:20;;31954:806;-1:-1:-1;;;31954:806:145:o;32765:131::-;32825:5;32854:36;32881:8;32875:4;32854:36;:::i", + "linkReferences": {} + }, + "methodIdentifiers": { + "MIN_LIGHT_CLIENT_DELAY()": "e4407b15", + "broadcasters(uint32)": "59f89787", + "executeMessage(uint64,bytes,bytes[],bytes[])": "7acc6754", + "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": "37d5af84", + "frozen(uint32)": "36ae7c18", + "lightClients(uint32)": "7599735c", + "messageStatus(bytes32)": "3c6cf473", + "messages(uint64)": "029d6713", + "nonce()": "affed0e0", + "sendingEnabled()": "3e99e9ce", + "sourceChainIds(uint256)": "9efeff1c", + "sourceChainIdsLength()": "4552f563", + "storageRootCache(bytes32)": "8d080d1d", + "version()": "54fd4d50" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"stateVariables\":{\"MESSAGES_MAPPING_STORAGE_INDEX\":{\"details\":\"We need this when calling `executeMessage` via storage proofs, as it is used in getting the slot key.\"},\"MSG_HASH_TOPIC_IDX\":{\"details\":\"Because topic[0] is the hash of the event signature (`SENT_MESSAGE_EVENT_SIG` above), the topic index of msgHash is 2.\"}},\"title\":\"Target Arbitrary Message Bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Executes messages sent from the source chain on the destination chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TargetAMB.sol\":\"TargetAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32", + "indexed": true + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes", + "indexed": false + }, + { + "internalType": "bool", + "name": "status", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "ExecutedMessage", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "version", + "type": "uint8", + "indexed": false + } + ], + "type": "event", + "name": "Initialized", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "MIN_LIGHT_CLIENT_DELAY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes[]", + "name": "accountProof", + "type": "bytes[]" + }, + { + "internalType": "bytes[]", + "name": "storageProof", + "type": "bytes[]" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "executeMessage" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "executeMessageFromLog" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function", + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "sourceChainIdsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "executeMessage(uint64,bytes,bytes[],bytes[])": { + "params": { + "accountProof": "Used to prove the broadcaster's state root.", + "messageBytes": "The message we want to execute provided as bytes.", + "slot": "Specifies which execution state root should be read from the light client.", + "storageProof": "Used to prove the existence of the message root inside the broadcaster." + } + }, + "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { + "params": { + "logIndex": "The index of the event in our transaction.", + "messageBytes": "The message we want to execute provided as bytes.", + "receiptsRoot": "The receipts root which contains our \"SentMessage\" event.", + "receiptsRootProof": "A merkle proof proving the receiptsRoot in the block header.", + "srcSlotTxSlotPack": "The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.", + "txIndexRLPEncoded": "The index of our transaction inside the block RLP encoded." + } + }, + "sourceChainIdsLength()": { + "returns": { + "_0": "The length of the sourceChainIds array." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "MIN_LIGHT_CLIENT_DELAY()": { + "notice": "The minimum delay for using any information from the light client." + }, + "broadcasters(uint32)": { + "notice": "Mapping between source chainId and the address of the Telepathy broadcaster on that chain." + }, + "executeMessage(uint64,bytes,bytes[],bytes[])": { + "notice": "Executes a message given a storage proof." + }, + "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { + "notice": "Executes a message given an event proof." + }, + "frozen(uint32)": { + "notice": "Mapping between a source chainId and whether it's frozen." + }, + "lightClients(uint32)": { + "notice": "Mapping between source chainId and the corresponding light client." + }, + "messageStatus(bytes32)": { + "notice": "Mapping between a message root and its status." + }, + "messages(uint64)": { + "notice": "Mapping between a nonce and a message root." + }, + "nonce()": { + "notice": "Keeps track of the next nonce to be used." + }, + "sendingEnabled()": { + "notice": "Whether sending is enabled or not." + }, + "sourceChainIds(uint256)": { + "notice": "All sourceChainIds." + }, + "sourceChainIdsLength()": { + "notice": "Gets the length of the sourceChainIds array." + }, + "storageRootCache(bytes32)": { + "notice": "Storage root cache." + }, + "version()": { + "notice": "Returns current contract version." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/amb/TargetAMB.sol": "TargetAMB" + }, + "libraries": {} + }, + "sources": { + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", + "urls": [ + "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", + "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { + "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", + "urls": [ + "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", + "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { + "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", + "urls": [ + "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", + "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/Bytes.sol": { + "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", + "urls": [ + "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", + "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { + "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", + "urls": [ + "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", + "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { + "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", + "urls": [ + "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", + "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { + "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", + "urls": [ + "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", + "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" + ], + "license": "MIT" + }, + "src/amb/TargetAMB.sol": { + "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "urls": [ + "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", + "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + ], + "license": null + }, + "src/amb/TelepathyStorage.sol": { + "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", + "urls": [ + "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", + "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" + ], + "license": null + }, + "src/amb/interfaces/ITelepathy.sol": { + "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", + "urls": [ + "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", + "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" + ], + "license": null + }, + "src/libraries/MessageEncoding.sol": { + "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", + "urls": [ + "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", + "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" + ], + "license": null + }, + "src/libraries/SimpleSerialize.sol": { + "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "urls": [ + "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", + "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + ], + "license": null + }, + "src/libraries/StateProofHelper.sol": { + "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", + "urls": [ + "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", + "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" + ], + "license": null + }, + "src/libraries/Typecast.sol": { + "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", + "urls": [ + "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", + "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" + ], + "license": "MIT OR Apache-2.0" + }, + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/amb/TargetAMB.sol", + "id": 42116, + "exportedSymbols": { + "Address": [ + 44245 + ], + "EventProof": [ + 44195 + ], + "ITelepathyHandler": [ + 42756 + ], + "ITelepathyReceiver": [ + 42744 + ], + "Message": [ + 42646 + ], + "MessageEncoding": [ + 43343 + ], + "MessageStatus": [ + 42631 + ], + "ReentrancyGuardUpgradeable": [ + 29613 + ], + "SSZ": [ + 43867 + ], + "StorageProof": [ + 43992 + ], + "TargetAMB": [ + 42115 + ], + "TelepathyStorage": [ + 42625 + ] + }, + "nodeType": "SourceUnit", + "src": "0:10877:100", + "nodes": [ + { + "id": 41475, + "nodeType": "PragmaDirective", + "src": "0:23:100", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 41477, + "nodeType": "ImportDirective", + "src": "25:122:100", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol", + "file": "openzeppelin-contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "nameLocation": "-1:-1:-1", + "scope": 42116, + "sourceUnit": 29614, + "symbolAliases": [ + { + "foreign": { + "id": 41476, + "name": "ReentrancyGuardUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29613, + "src": "33:26:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41479, + "nodeType": "ImportDirective", + "src": "149:54:100", + "nodes": [], + "absolutePath": "src/libraries/SimpleSerialize.sol", + "file": "src/libraries/SimpleSerialize.sol", + "nameLocation": "-1:-1:-1", + "scope": 42116, + "sourceUnit": 43868, + "symbolAliases": [ + { + "foreign": { + "id": 41478, + "name": "SSZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43867, + "src": "157:3:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41482, + "nodeType": "ImportDirective", + "src": "204:76:100", + "nodes": [], + "absolutePath": "src/libraries/StateProofHelper.sol", + "file": "src/libraries/StateProofHelper.sol", + "nameLocation": "-1:-1:-1", + "scope": 42116, + "sourceUnit": 44196, + "symbolAliases": [ + { + "foreign": { + "id": 41480, + "name": "StorageProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43992, + "src": "212:12:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 41481, + "name": "EventProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44195, + "src": "226:10:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41484, + "nodeType": "ImportDirective", + "src": "281:51:100", + "nodes": [], + "absolutePath": "src/libraries/Typecast.sol", + "file": "src/libraries/Typecast.sol", + "nameLocation": "-1:-1:-1", + "scope": 42116, + "sourceUnit": 44266, + "symbolAliases": [ + { + "foreign": { + "id": 41483, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44245, + "src": "289:7:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41486, + "nodeType": "ImportDirective", + "src": "333:66:100", + "nodes": [], + "absolutePath": "src/libraries/MessageEncoding.sol", + "file": "src/libraries/MessageEncoding.sol", + "nameLocation": "-1:-1:-1", + "scope": 42116, + "sourceUnit": 43344, + "symbolAliases": [ + { + "foreign": { + "id": 41485, + "name": "MessageEncoding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43343, + "src": "341:15:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41488, + "nodeType": "ImportDirective", + "src": "401:62:100", + "nodes": [], + "absolutePath": "src/amb/TelepathyStorage.sol", + "file": "src/amb/TelepathyStorage.sol", + "nameLocation": "-1:-1:-1", + "scope": 42116, + "sourceUnit": 42626, + "symbolAliases": [ + { + "foreign": { + "id": 41487, + "name": "TelepathyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42625, + "src": "409:16:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41493, + "nodeType": "ImportDirective", + "src": "464:130:100", + "nodes": [], + "absolutePath": "src/amb/interfaces/ITelepathy.sol", + "file": "src/amb/interfaces/ITelepathy.sol", + "nameLocation": "-1:-1:-1", + "scope": 42116, + "sourceUnit": 42757, + "symbolAliases": [ + { + "foreign": { + "id": 41489, + "name": "ITelepathyHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42756, + "src": "477:17:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 41490, + "name": "ITelepathyReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42744, + "src": "500:18:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 41491, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42646, + "src": "524:7:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 41492, + "name": "MessageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42631, + "src": "537:13:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 42115, + "nodeType": "ContractDefinition", + "src": "748:10128:100", + "nodes": [ + { + "id": 41504, + "nodeType": "VariableDeclaration", + "src": "924:58:100", + "nodes": [], + "constant": true, + "documentation": { + "id": 41501, + "nodeType": "StructuredDocumentation", + "src": "841:78:100", + "text": "@notice The minimum delay for using any information from the light client." + }, + "functionSelector": "e4407b15", + "mutability": "constant", + "name": "MIN_LIGHT_CLIENT_DELAY", + "nameLocation": "948:22:100", + "scope": 42115, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 41502, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "924:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "32", + "id": 41503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "973:9:100", + "subdenomination": "minutes", + "typeDescriptions": { + "typeIdentifier": "t_rational_120_by_1", + "typeString": "int_const 120" + }, + "value": "2" + }, + "visibility": "public" + }, + { + "id": 41510, + "nodeType": "VariableDeclaration", + "src": "1092:105:100", + "nodes": [], + "constant": true, + "documentation": { + "id": 41505, + "nodeType": "StructuredDocumentation", + "src": "989:98:100", + "text": "@notice The ITelepathyBroadcaster SentMessage event signature used in `executeMessageFromLog`." + }, + "mutability": "constant", + "name": "SENT_MESSAGE_EVENT_SIG", + "nameLocation": "1118:22:100", + "scope": 42115, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41506, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1092:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "53656e744d6573736167652875696e7436342c627974657333322c627974657329", + "id": 41508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1161:35:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac", + "typeString": "literal_string \"SentMessage(uint64,bytes32,bytes)\"" + }, + "value": "SentMessage(uint64,bytes32,bytes)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac", + "typeString": "literal_string \"SentMessage(uint64,bytes32,bytes)\"" + } + ], + "id": 41507, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1151:9:100", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 41509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1151:46:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "id": 41514, + "nodeType": "VariableDeclaration", + "src": "1437:48:100", + "nodes": [], + "constant": true, + "documentation": { + "id": 41511, + "nodeType": "StructuredDocumentation", + "src": "1204:228:100", + "text": "@notice The topic index of the message root in the SourceAMB SentMessage event.\n @dev Because topic[0] is the hash of the event signature (`SENT_MESSAGE_EVENT_SIG` above),\n the topic index of msgHash is 2." + }, + "mutability": "constant", + "name": "MSG_HASH_TOPIC_IDX", + "nameLocation": "1463:18:100", + "scope": 42115, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 41512, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1437:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "32", + "id": 41513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1484:1:100", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "visibility": "internal" + }, + { + "id": 41518, + "nodeType": "VariableDeclaration", + "src": "1692:60:100", + "nodes": [], + "constant": true, + "documentation": { + "id": 41515, + "nodeType": "StructuredDocumentation", + "src": "1492:195:100", + "text": "@notice The index of the `messages` mapping in TelepathyStorage.sol.\n @dev We need this when calling `executeMessage` via storage proofs, as it is used in\n getting the slot key." + }, + "mutability": "constant", + "name": "MESSAGES_MAPPING_STORAGE_INDEX", + "nameLocation": "1718:30:100", + "scope": 42115, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 41516, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1692:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 41517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1751:1:100", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "internal" + }, + { + "id": 41528, + "nodeType": "FunctionDefinition", + "src": "1876:109:100", + "nodes": [], + "body": { + "id": 41527, + "nodeType": "Block", + "src": "1940:45:100", + "nodes": [], + "statements": [ + { + "expression": { + "expression": { + "id": 41524, + "name": "sourceChainIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42589, + "src": "1957:14:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint32_$dyn_storage", + "typeString": "uint32[] storage ref" + } + }, + "id": 41525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1972:6:100", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1957:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 41523, + "id": 41526, + "nodeType": "Return", + "src": "1950:28:100" + } + ] + }, + "documentation": { + "id": 41519, + "nodeType": "StructuredDocumentation", + "src": "1759:112:100", + "text": "@notice Gets the length of the sourceChainIds array.\n @return The length of the sourceChainIds array." + }, + "functionSelector": "4552f563", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sourceChainIdsLength", + "nameLocation": "1885:20:100", + "parameters": { + "id": 41520, + "nodeType": "ParameterList", + "parameters": [], + "src": "1905:2:100" + }, + "returnParameters": { + "id": 41523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41522, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 41528, + "src": "1931:7:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 41521, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1931:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1930:9:100" + }, + "scope": 42115, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 41681, + "nodeType": "FunctionDefinition", + "src": "2394:1820:100", + "nodes": [], + "body": { + "id": 41680, + "nodeType": "Block", + "src": "2582:1632:100", + "nodes": [], + "statements": [ + { + "assignments": [ + 41546, + 41548 + ], + "declarations": [ + { + "constant": false, + "id": 41546, + "mutability": "mutable", + "name": "message", + "nameLocation": "2608:7:100", + "nodeType": "VariableDeclaration", + "scope": 41680, + "src": "2593:22:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message" + }, + "typeName": { + "id": 41545, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 41544, + "name": "Message", + "nameLocations": [ + "2593:7:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42646, + "src": "2593:7:100" + }, + "referencedDeclaration": 42646, + "src": "2593:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_storage_ptr", + "typeString": "struct Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41548, + "mutability": "mutable", + "name": "messageRoot", + "nameLocation": "2625:11:100", + "nodeType": "VariableDeclaration", + "scope": 41680, + "src": "2617:19:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41547, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2617:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41552, + "initialValue": { + "arguments": [ + { + "id": 41550, + "name": "messageBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41533, + "src": "2660:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 41549, + "name": "_checkPreconditions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42005, + "src": "2640:19:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$", + "typeString": "function (bytes calldata) view returns (struct Message memory,bytes32)" + } + }, + "id": 41551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2640:33:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$", + "typeString": "tuple(struct Message memory,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2592:81:100" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 41554, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41546, + "src": "2713:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41555, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2721:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "2713:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 41553, + "name": "requireLightClientConsistency", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41844, + "src": "2683:29:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", + "typeString": "function (uint32) view" + } + }, + "id": 41556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2683:52:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41557, + "nodeType": "ExpressionStatement", + "src": "2683:52:100" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 41559, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41546, + "src": "2762:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41560, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2770:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "2762:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 41558, + "name": "requireNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41859, + "src": "2745:16:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", + "typeString": "function (uint32) view" + } + }, + "id": 41561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2745:39:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41562, + "nodeType": "ExpressionStatement", + "src": "2745:39:100" + }, + { + "id": 41673, + "nodeType": "Block", + "src": "2795:1351:100", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 41564, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41531, + "src": "2833:4:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 41565, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41546, + "src": "2839:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41566, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2847:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "2839:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 41563, + "name": "requireLightClientDelay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41914, + "src": "2809:23:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint32_$returns$__$", + "typeString": "function (uint64,uint32) view" + } + }, + "id": 41567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2809:52:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41568, + "nodeType": "ExpressionStatement", + "src": "2809:52:100" + }, + { + "assignments": [ + 41570 + ], + "declarations": [ + { + "constant": false, + "id": 41570, + "mutability": "mutable", + "name": "storageRoot", + "nameLocation": "2884:11:100", + "nodeType": "VariableDeclaration", + "scope": 41673, + "src": "2876:19:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41569, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2876:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41571, + "nodeType": "VariableDeclarationStatement", + "src": "2876:19:100" + }, + { + "assignments": [ + 41573 + ], + "declarations": [ + { + "constant": false, + "id": 41573, + "mutability": "mutable", + "name": "cacheKey", + "nameLocation": "2917:8:100", + "nodeType": "VariableDeclaration", + "scope": 41673, + "src": "2909:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41572, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2909:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41586, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 41577, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41546, + "src": "2972:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41578, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2980:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "2972:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "id": 41579, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41531, + "src": "2995:4:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "baseExpression": { + "id": 41580, + "name": "broadcasters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42600, + "src": "3001:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", + "typeString": "mapping(uint32 => address)" + } + }, + "id": 41583, + "indexExpression": { + "expression": { + "id": 41581, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41546, + "src": "3014:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41582, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3022:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "3014:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3001:35:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 41575, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2955:3:100", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 41576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2959:12:100", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "2955:16:100", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 41584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2955:82:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 41574, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2928:9:100", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 41585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2928:123:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2909:142:100" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 41591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 41587, + "name": "storageRootCache", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42619, + "src": "3201:16:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 41589, + "indexExpression": { + "id": 41588, + "name": "cacheKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41573, + "src": "3218:8:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3201:26:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 41590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3231:1:100", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3201:31:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 41634, + "nodeType": "Block", + "src": "3694:73:100", + "statements": [ + { + "expression": { + "id": 41632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 41628, + "name": "storageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41570, + "src": "3712:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 41629, + "name": "storageRootCache", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42619, + "src": "3726:16:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 41631, + "indexExpression": { + "id": 41630, + "name": "cacheKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41573, + "src": "3743:8:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3726:26:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3712:40:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 41633, + "nodeType": "ExpressionStatement", + "src": "3712:40:100" + } + ] + }, + "id": 41635, + "nodeType": "IfStatement", + "src": "3197:570:100", + "trueBody": { + "id": 41627, + "nodeType": "Block", + "src": "3234:454:100", + "statements": [ + { + "assignments": [ + 41593 + ], + "declarations": [ + { + "constant": false, + "id": 41593, + "mutability": "mutable", + "name": "executionStateRoot", + "nameLocation": "3260:18:100", + "nodeType": "VariableDeclaration", + "scope": 41627, + "src": "3252:26:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41592, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3252:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41601, + "initialValue": { + "arguments": [ + { + "id": 41599, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41531, + "src": "3357:4:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "baseExpression": { + "id": 41594, + "name": "lightClients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42595, + "src": "3301:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeString": "mapping(uint32 => contract ILightClient)" + } + }, + "id": 41597, + "indexExpression": { + "expression": { + "id": 41595, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41546, + "src": "3314:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41596, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3322:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "3314:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3301:35:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "id": 41598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3337:19:100", + "memberName": "executionStateRoots", + "nodeType": "MemberAccess", + "referencedDeclaration": 47854, + "src": "3301:55:100", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) view external returns (bytes32)" + } + }, + "id": 41600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3301:61:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3252:110:100" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 41605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41603, + "name": "executionStateRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41593, + "src": "3388:18:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 41604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3410:1:100", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3388:23:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "457865637574696f6e20537461746520526f6f74206973206e6f7420736574", + "id": 41606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3413:33:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bbf02b8009bd8a07f5294acf2aa81ce68ead86aefb7454217afe3a4dfc921ff8", + "typeString": "literal_string \"Execution State Root is not set\"" + }, + "value": "Execution State Root is not set" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bbf02b8009bd8a07f5294acf2aa81ce68ead86aefb7454217afe3a4dfc921ff8", + "typeString": "literal_string \"Execution State Root is not set\"" + } + ], + "id": 41602, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3380:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3380:67:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41608, + "nodeType": "ExpressionStatement", + "src": "3380:67:100" + }, + { + "expression": { + "id": 41619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 41609, + "name": "storageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41570, + "src": "3465:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 41612, + "name": "accountProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41536, + "src": "3528:12:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "baseExpression": { + "id": 41613, + "name": "broadcasters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42600, + "src": "3542:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", + "typeString": "mapping(uint32 => address)" + } + }, + "id": 41616, + "indexExpression": { + "expression": { + "id": 41614, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41546, + "src": "3555:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41615, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3563:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "3555:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3542:35:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 41617, + "name": "executionStateRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41593, + "src": "3579:18:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 41610, + "name": "StorageProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43992, + "src": "3479:12:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageProof_$43992_$", + "typeString": "type(library StorageProof)" + } + }, + "id": 41611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3492:14:100", + "memberName": "getStorageRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 43991, + "src": "3479:27:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes memory[] memory,address,bytes32) pure returns (bytes32)" + } + }, + "id": 41618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3479:136:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3465:150:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 41620, + "nodeType": "ExpressionStatement", + "src": "3465:150:100" + }, + { + "expression": { + "id": 41625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 41621, + "name": "storageRootCache", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42619, + "src": "3633:16:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 41623, + "indexExpression": { + "id": 41622, + "name": "cacheKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41573, + "src": "3650:8:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3633:26:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 41624, + "name": "storageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41570, + "src": "3662:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3633:40:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 41626, + "nodeType": "ExpressionStatement", + "src": "3633:40:100" + } + ] + } + }, + { + "assignments": [ + 41637 + ], + "declarations": [ + { + "constant": false, + "id": 41637, + "mutability": "mutable", + "name": "slotKey", + "nameLocation": "3789:7:100", + "nodeType": "VariableDeclaration", + "scope": 41673, + "src": "3781:15:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41636, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3781:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41651, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 41644, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41546, + "src": "3858:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41645, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3866:5:100", + "memberName": "nonce", + "nodeType": "MemberAccess", + "referencedDeclaration": 42635, + "src": "3858:13:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 41646, + "name": "MESSAGES_MAPPING_STORAGE_INDEX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41518, + "src": "3873:30:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 41642, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3847:3:100", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 41643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3851:6:100", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "3847:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 41647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3847:57:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 41641, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3837:9:100", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 41648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3837:68:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 41639, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3826:3:100", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 41640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3830:6:100", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "3826:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 41649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3826:80:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 41638, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3799:9:100", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 41650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3799:121:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3781:139:100" + }, + { + "assignments": [ + 41653 + ], + "declarations": [ + { + "constant": false, + "id": 41653, + "mutability": "mutable", + "name": "slotValue", + "nameLocation": "3942:9:100", + "nodeType": "VariableDeclaration", + "scope": 41673, + "src": "3934:17:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 41652, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3934:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 41660, + "initialValue": { + "arguments": [ + { + "id": 41656, + "name": "slotKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41637, + "src": "3983:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41657, + "name": "storageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41570, + "src": "3992:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41658, + "name": "storageProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41539, + "src": "4005:12:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "id": 41654, + "name": "StorageProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43992, + "src": "3954:12:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageProof_$43992_$", + "typeString": "type(library StorageProof)" + } + }, + "id": 41655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3967:15:100", + "memberName": "getStorageValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 43921, + "src": "3954:28:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (bytes32,bytes32,bytes memory[] memory) pure returns (uint256)" + } + }, + "id": 41659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3954:64:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3934:84:100" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 41666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 41663, + "name": "slotValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41653, + "src": "4045:9:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 41662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4037:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 41661, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4037:7:100", + "typeDescriptions": {} + } + }, + "id": 41664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4037:18:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 41665, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41548, + "src": "4059:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4037:33:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 41672, + "nodeType": "IfStatement", + "src": "4033:103:100", + "trueBody": { + "id": 41671, + "nodeType": "Block", + "src": "4072:64:100", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "496e76616c6964206d65737361676520686173682e", + "id": 41668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4097:23:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e91b0734db6a6d2f50f5dc8279b83064cda4a12670ab76573547cfe3c68f73d", + "typeString": "literal_string \"Invalid message hash.\"" + }, + "value": "Invalid message hash." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_3e91b0734db6a6d2f50f5dc8279b83064cda4a12670ab76573547cfe3c68f73d", + "typeString": "literal_string \"Invalid message hash.\"" + } + ], + "id": 41667, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "4090:6:100", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 41669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4090:31:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41670, + "nodeType": "ExpressionStatement", + "src": "4090:31:100" + } + ] + } + } + ] + }, + { + "expression": { + "arguments": [ + { + "id": 41675, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41546, + "src": "4172:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + { + "id": 41676, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41548, + "src": "4181:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41677, + "name": "messageBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41533, + "src": "4194:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 41674, + "name": "_executeMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42114, + "src": "4156:15:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (struct Message memory,bytes32,bytes memory)" + } + }, + "id": 41678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4156:51:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41679, + "nodeType": "ExpressionStatement", + "src": "4156:51:100" + } + ] + }, + "baseFunctions": [ + 42724 + ], + "documentation": { + "id": 41529, + "nodeType": "StructuredDocumentation", + "src": "1991:398:100", + "text": "@notice Executes a message given a storage proof.\n @param slot Specifies which execution state root should be read from the light client.\n @param messageBytes The message we want to execute provided as bytes.\n @param accountProof Used to prove the broadcaster's state root.\n @param storageProof Used to prove the existence of the message root inside the broadcaster." + }, + "functionSelector": "7acc6754", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 41542, + "kind": "modifierInvocation", + "modifierName": { + "id": 41541, + "name": "nonReentrant", + "nameLocations": [ + "2569:12:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 29584, + "src": "2569:12:100" + }, + "nodeType": "ModifierInvocation", + "src": "2569:12:100" + } + ], + "name": "executeMessage", + "nameLocation": "2403:14:100", + "parameters": { + "id": 41540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41531, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2434:4:100", + "nodeType": "VariableDeclaration", + "scope": 41681, + "src": "2427:11:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 41530, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2427:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41533, + "mutability": "mutable", + "name": "messageBytes", + "nameLocation": "2463:12:100", + "nodeType": "VariableDeclaration", + "scope": 41681, + "src": "2448:27:100", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41532, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2448:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41536, + "mutability": "mutable", + "name": "accountProof", + "nameLocation": "2502:12:100", + "nodeType": "VariableDeclaration", + "scope": 41681, + "src": "2485:29:100", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 41534, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2485:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 41535, + "nodeType": "ArrayTypeName", + "src": "2485:7:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41539, + "mutability": "mutable", + "name": "storageProof", + "nameLocation": "2541:12:100", + "nodeType": "VariableDeclaration", + "scope": 41681, + "src": "2524:29:100", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 41537, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2524:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 41538, + "nodeType": "ArrayTypeName", + "src": "2524:7:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "2417:142:100" + }, + "returnParameters": { + "id": 41543, + "nodeType": "ParameterList", + "parameters": [], + "src": "2582:0:100" + }, + "scope": 42115, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 41813, + "nodeType": "FunctionDefinition", + "src": "4866:1891:100", + "nodes": [], + "body": { + "id": 41812, + "nodeType": "Block", + "src": "5185:1572:100", + "nodes": [], + "statements": [ + { + "assignments": [ + 41705, + 41707 + ], + "declarations": [ + { + "constant": false, + "id": 41705, + "mutability": "mutable", + "name": "message", + "nameLocation": "5275:7:100", + "nodeType": "VariableDeclaration", + "scope": 41812, + "src": "5260:22:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message" + }, + "typeName": { + "id": 41704, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 41703, + "name": "Message", + "nameLocations": [ + "5260:7:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42646, + "src": "5260:7:100" + }, + "referencedDeclaration": 42646, + "src": "5260:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_storage_ptr", + "typeString": "struct Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41707, + "mutability": "mutable", + "name": "messageRoot", + "nameLocation": "5292:11:100", + "nodeType": "VariableDeclaration", + "scope": 41812, + "src": "5284:19:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41706, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5284:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41711, + "initialValue": { + "arguments": [ + { + "id": 41709, + "name": "messageBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41686, + "src": "5327:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 41708, + "name": "_checkPreconditions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42005, + "src": "5307:19:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$", + "typeString": "function (bytes calldata) view returns (struct Message memory,bytes32)" + } + }, + "id": 41710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5307:33:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$", + "typeString": "tuple(struct Message memory,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5259:81:100" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 41713, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41705, + "src": "5380:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41714, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5388:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "5380:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 41712, + "name": "requireLightClientConsistency", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41844, + "src": "5350:29:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", + "typeString": "function (uint32) view" + } + }, + "id": 41715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5350:52:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41716, + "nodeType": "ExpressionStatement", + "src": "5350:52:100" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 41718, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41705, + "src": "5429:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5437:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "5429:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 41717, + "name": "requireNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41859, + "src": "5412:16:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", + "typeString": "function (uint32) view" + } + }, + "id": 41720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5412:39:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41721, + "nodeType": "ExpressionStatement", + "src": "5412:39:100" + }, + { + "id": 41778, + "nodeType": "Block", + "src": "5462:524:100", + "statements": [ + { + "assignments": [ + 41723, + 41725 + ], + "declarations": [ + { + "constant": false, + "id": 41723, + "mutability": "mutable", + "name": "srcSlot", + "nameLocation": "5484:7:100", + "nodeType": "VariableDeclaration", + "scope": 41778, + "src": "5477:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 41722, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "5477:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41725, + "mutability": "mutable", + "name": "txSlot", + "nameLocation": "5500:6:100", + "nodeType": "VariableDeclaration", + "scope": 41778, + "src": "5493:13:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 41724, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "5493:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "id": 41735, + "initialValue": { + "arguments": [ + { + "id": 41728, + "name": "srcSlotTxSlotPack", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41684, + "src": "5521:17:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "components": [ + { + "id": 41730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5541:6:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 41729, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "5541:6:100", + "typeDescriptions": {} + } + }, + { + "id": 41732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5549:6:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 41731, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "5549:6:100", + "typeDescriptions": {} + } + } + ], + "id": 41733, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5540:16:100", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_uint64_$_$_t_type$_t_uint64_$_$", + "typeString": "tuple(type(uint64),type(uint64))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_uint64_$_$_t_type$_t_uint64_$_$", + "typeString": "tuple(type(uint64),type(uint64))" + } + ], + "expression": { + "id": 41726, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5510:3:100", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 41727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5514:6:100", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "5510:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 41734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5510:47:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", + "typeString": "tuple(uint64,uint64)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5476:81:100" + }, + { + "expression": { + "arguments": [ + { + "id": 41737, + "name": "srcSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41723, + "src": "5595:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 41738, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41705, + "src": "5604:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41739, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5612:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "5604:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 41736, + "name": "requireLightClientDelay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41914, + "src": "5571:23:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint32_$returns$__$", + "typeString": "function (uint64,uint32) view" + } + }, + "id": 41740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5571:55:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41741, + "nodeType": "ExpressionStatement", + "src": "5571:55:100" + }, + { + "assignments": [ + 41743 + ], + "declarations": [ + { + "constant": false, + "id": 41743, + "mutability": "mutable", + "name": "headerRoot", + "nameLocation": "5648:10:100", + "nodeType": "VariableDeclaration", + "scope": 41778, + "src": "5640:18:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41742, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5640:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41751, + "initialValue": { + "arguments": [ + { + "id": 41749, + "name": "srcSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41723, + "src": "5705:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "baseExpression": { + "id": 41744, + "name": "lightClients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42595, + "src": "5661:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeString": "mapping(uint32 => contract ILightClient)" + } + }, + "id": 41747, + "indexExpression": { + "expression": { + "id": 41745, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41705, + "src": "5674:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41746, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5682:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "5674:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5661:35:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "id": 41748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5697:7:100", + "memberName": "headers", + "nodeType": "MemberAccess", + "referencedDeclaration": 47847, + "src": "5661:43:100", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) view external returns (bytes32)" + } + }, + "id": 41750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5661:52:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5640:73:100" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 41758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41753, + "name": "headerRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41743, + "src": "5735:10:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 41756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5757:1:100", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 41755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5749:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 41754, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5749:7:100", + "typeDescriptions": {} + } + }, + "id": 41757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5749:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5735:24:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "486561646572526f6f74206973206d697373696e67", + "id": 41759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5761:23:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_02a1349704ffa751bbc14e2e3da5665267eb20d6db37ee32898d996c4fc87c26", + "typeString": "literal_string \"HeaderRoot is missing\"" + }, + "value": "HeaderRoot is missing" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_02a1349704ffa751bbc14e2e3da5665267eb20d6db37ee32898d996c4fc87c26", + "typeString": "literal_string \"HeaderRoot is missing\"" + } + ], + "id": 41752, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5727:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5727:58:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41761, + "nodeType": "ExpressionStatement", + "src": "5727:58:100" + }, + { + "assignments": [ + 41763 + ], + "declarations": [ + { + "constant": false, + "id": 41763, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "5804:7:100", + "nodeType": "VariableDeclaration", + "scope": 41778, + "src": "5799:12:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 41762, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5799:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 41772, + "initialValue": { + "arguments": [ + { + "id": 41766, + "name": "receiptsRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41691, + "src": "5853:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41767, + "name": "receiptsRootProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41689, + "src": "5867:17:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + { + "id": 41768, + "name": "headerRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41743, + "src": "5886:10:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41769, + "name": "srcSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41723, + "src": "5898:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 41770, + "name": "txSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41725, + "src": "5907:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "id": 41764, + "name": "SSZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43867, + "src": "5830:3:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeString": "type(library SSZ)" + } + }, + "id": 41765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5834:18:100", + "memberName": "verifyReceiptsRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 43866, + "src": "5830:22:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes32[] memory,bytes32,uint64,uint64) pure returns (bool)" + } + }, + "id": 41771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5830:84:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5799:115:100" + }, + { + "expression": { + "arguments": [ + { + "id": 41774, + "name": "isValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41763, + "src": "5936:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c696420726563656970747320726f6f742070726f6f66", + "id": 41775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5945:29:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a8a86cc8e698cc54f14148f81c68ad3a36e4a61b0a2af21ecc438884515f4870", + "typeString": "literal_string \"Invalid receipts root proof\"" + }, + "value": "Invalid receipts root proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a8a86cc8e698cc54f14148f81c68ad3a36e4a61b0a2af21ecc438884515f4870", + "typeString": "literal_string \"Invalid receipts root proof\"" + } + ], + "id": 41773, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5928:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5928:47:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41777, + "nodeType": "ExpressionStatement", + "src": "5928:47:100" + } + ] + }, + { + "id": 41805, + "nodeType": "Block", + "src": "5996:693:100", + "statements": [ + { + "assignments": [ + 41780 + ], + "declarations": [ + { + "constant": false, + "id": 41780, + "mutability": "mutable", + "name": "receiptMessageRoot", + "nameLocation": "6217:18:100", + "nodeType": "VariableDeclaration", + "scope": 41805, + "src": "6209:26:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41779, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6209:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41797, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 41785, + "name": "receiptProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41694, + "src": "6309:12:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 41786, + "name": "receiptsRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41691, + "src": "6343:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41787, + "name": "txIndexRLPEncoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41696, + "src": "6377:17:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 41788, + "name": "logIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41698, + "src": "6416:8:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 41789, + "name": "broadcasters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42600, + "src": "6446:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", + "typeString": "mapping(uint32 => address)" + } + }, + "id": 41792, + "indexExpression": { + "expression": { + "id": 41790, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41705, + "src": "6459:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41791, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6467:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "6459:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6446:35:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 41793, + "name": "SENT_MESSAGE_EVENT_SIG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41510, + "src": "6503:22:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41794, + "name": "MSG_HASH_TOPIC_IDX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41514, + "src": "6547:18:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 41783, + "name": "EventProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44195, + "src": "6263:10:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_EventProof_$44195_$", + "typeString": "type(library EventProof)" + } + }, + "id": 41784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6274:13:100", + "memberName": "getEventTopic", + "nodeType": "MemberAccess", + "referencedDeclaration": 44194, + "src": "6263:24:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes memory[] memory,bytes32,bytes memory,uint256,address,bytes32,uint256) pure returns (bytes32)" + } + }, + "id": 41795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6263:320:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 41782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6238:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 41781, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6238:7:100", + "typeDescriptions": {} + } + }, + "id": 41796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6238:359:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6209:388:100" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 41801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41799, + "name": "receiptMessageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41780, + "src": "6619:18:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 41800, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41707, + "src": "6641:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6619:33:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c6964206d65737361676520686173682e", + "id": 41802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6654:23:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e91b0734db6a6d2f50f5dc8279b83064cda4a12670ab76573547cfe3c68f73d", + "typeString": "literal_string \"Invalid message hash.\"" + }, + "value": "Invalid message hash." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e91b0734db6a6d2f50f5dc8279b83064cda4a12670ab76573547cfe3c68f73d", + "typeString": "literal_string \"Invalid message hash.\"" + } + ], + "id": 41798, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6611:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6611:67:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41804, + "nodeType": "ExpressionStatement", + "src": "6611:67:100" + } + ] + }, + { + "expression": { + "arguments": [ + { + "id": 41807, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41705, + "src": "6715:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + { + "id": 41808, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41707, + "src": "6724:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 41809, + "name": "messageBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41686, + "src": "6737:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 41806, + "name": "_executeMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42114, + "src": "6699:15:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (struct Message memory,bytes32,bytes memory)" + } + }, + "id": 41810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6699:51:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41811, + "nodeType": "ExpressionStatement", + "src": "6699:51:100" + } + ] + }, + "baseFunctions": [ + 42743 + ], + "documentation": { + "id": 41682, + "nodeType": "StructuredDocumentation", + "src": "4220:641:100", + "text": "@notice Executes a message given an event proof.\n @param srcSlotTxSlotPack The slot where we want to read the header from and the slot where\n the tx executed, packed as two uint64s.\n @param messageBytes The message we want to execute provided as bytes.\n @param receiptsRootProof A merkle proof proving the receiptsRoot in the block header.\n @param receiptsRoot The receipts root which contains our \"SentMessage\" event.\n @param txIndexRLPEncoded The index of our transaction inside the block RLP encoded.\n @param logIndex The index of the event in our transaction." + }, + "functionSelector": "37d5af84", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 41701, + "kind": "modifierInvocation", + "modifierName": { + "id": 41700, + "name": "nonReentrant", + "nameLocations": [ + "5172:12:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 29584, + "src": "5172:12:100" + }, + "nodeType": "ModifierInvocation", + "src": "5172:12:100" + } + ], + "name": "executeMessageFromLog", + "nameLocation": "4875:21:100", + "parameters": { + "id": 41699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41684, + "mutability": "mutable", + "name": "srcSlotTxSlotPack", + "nameLocation": "4921:17:100", + "nodeType": "VariableDeclaration", + "scope": 41813, + "src": "4906:32:100", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41683, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4906:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41686, + "mutability": "mutable", + "name": "messageBytes", + "nameLocation": "4963:12:100", + "nodeType": "VariableDeclaration", + "scope": 41813, + "src": "4948:27:100", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41685, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4948:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41689, + "mutability": "mutable", + "name": "receiptsRootProof", + "nameLocation": "5004:17:100", + "nodeType": "VariableDeclaration", + "scope": 41813, + "src": "4985:36:100", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 41687, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4985:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 41688, + "nodeType": "ArrayTypeName", + "src": "4985:9:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41691, + "mutability": "mutable", + "name": "receiptsRoot", + "nameLocation": "5039:12:100", + "nodeType": "VariableDeclaration", + "scope": 41813, + "src": "5031:20:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41690, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5031:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41694, + "mutability": "mutable", + "name": "receiptProof", + "nameLocation": "5078:12:100", + "nodeType": "VariableDeclaration", + "scope": 41813, + "src": "5061:29:100", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 41692, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5061:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 41693, + "nodeType": "ArrayTypeName", + "src": "5061:7:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41696, + "mutability": "mutable", + "name": "txIndexRLPEncoded", + "nameLocation": "5113:17:100", + "nodeType": "VariableDeclaration", + "scope": 41813, + "src": "5100:30:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41695, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5100:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41698, + "mutability": "mutable", + "name": "logIndex", + "nameLocation": "5148:8:100", + "nodeType": "VariableDeclaration", + "scope": 41813, + "src": "5140:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 41697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5140:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4896:266:100" + }, + "returnParameters": { + "id": 41702, + "nodeType": "ParameterList", + "parameters": [], + "src": "5185:0:100" + }, + "scope": 42115, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 41844, + "nodeType": "FunctionDefinition", + "src": "6843:253:100", + "nodes": [], + "body": { + "id": 41843, + "nodeType": "Block", + "src": "6912:184:100", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 41830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "baseExpression": { + "id": 41822, + "name": "lightClients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42595, + "src": "6938:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeString": "mapping(uint32 => contract ILightClient)" + } + }, + "id": 41824, + "indexExpression": { + "id": 41823, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41816, + "src": "6951:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6938:21:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + ], + "id": 41821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6930:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 41820, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6930:7:100", + "typeDescriptions": {} + } + }, + "id": 41825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6930:30:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 41828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6972:1:100", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 41827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6964:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 41826, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6964:7:100", + "typeDescriptions": {} + } + }, + "id": 41829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6964:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6930:44:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", + "id": 41831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6976:26:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", + "typeString": "literal_string \"Light client is not set.\"" + }, + "value": "Light client is not set." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", + "typeString": "literal_string \"Light client is not set.\"" + } + ], + "id": 41819, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6922:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6922:81:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41833, + "nodeType": "ExpressionStatement", + "src": "6922:81:100" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "baseExpression": { + "id": 41835, + "name": "lightClients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42595, + "src": "7021:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeString": "mapping(uint32 => contract ILightClient)" + } + }, + "id": 41837, + "indexExpression": { + "id": 41836, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41816, + "src": "7034:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7021:21:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "id": 41838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7043:10:100", + "memberName": "consistent", + "nodeType": "MemberAccess", + "referencedDeclaration": 47835, + "src": "7021:32:100", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", + "typeString": "function () view external returns (bool)" + } + }, + "id": 41839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7021:34:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4c6967687420636c69656e7420697320696e636f6e73697374656e742e", + "id": 41840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7057:31:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2e1e9c043617752a0dea84b31d35e61238519932f65eb40cd6ed13f6fd86c420", + "typeString": "literal_string \"Light client is inconsistent.\"" + }, + "value": "Light client is inconsistent." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2e1e9c043617752a0dea84b31d35e61238519932f65eb40cd6ed13f6fd86c420", + "typeString": "literal_string \"Light client is inconsistent.\"" + } + ], + "id": 41834, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7013:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7013:76:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41842, + "nodeType": "ExpressionStatement", + "src": "7013:76:100" + } + ] + }, + "documentation": { + "id": 41814, + "nodeType": "StructuredDocumentation", + "src": "6763:75:100", + "text": "@notice Checks that the light client for a given chainId is consistent." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireLightClientConsistency", + "nameLocation": "6852:29:100", + "parameters": { + "id": 41817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41816, + "mutability": "mutable", + "name": "chainId", + "nameLocation": "6889:7:100", + "nodeType": "VariableDeclaration", + "scope": 41844, + "src": "6882:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 41815, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "6882:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "6881:16:100" + }, + "returnParameters": { + "id": 41818, + "nodeType": "ParameterList", + "parameters": [], + "src": "6912:0:100" + }, + "scope": 42115, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 41859, + "nodeType": "FunctionDefinition", + "src": "7157:121:100", + "nodes": [], + "body": { + "id": 41858, + "nodeType": "Block", + "src": "7213:65:100", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 41854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7231:16:100", + "subExpression": { + "baseExpression": { + "id": 41851, + "name": "frozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42605, + "src": "7232:6:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_bool_$", + "typeString": "mapping(uint32 => bool)" + } + }, + "id": 41853, + "indexExpression": { + "id": 41852, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41847, + "src": "7239:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7232:15:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "436f6e74726163742069732066726f7a656e2e", + "id": 41855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7249:21:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8a588d987ba140ba8da36da6bed0df68ef46602e008fcb659a3bdc8b60353b80", + "typeString": "literal_string \"Contract is frozen.\"" + }, + "value": "Contract is frozen." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8a588d987ba140ba8da36da6bed0df68ef46602e008fcb659a3bdc8b60353b80", + "typeString": "literal_string \"Contract is frozen.\"" + } + ], + "id": 41850, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7223:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7223:48:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41857, + "nodeType": "ExpressionStatement", + "src": "7223:48:100" + } + ] + }, + "documentation": { + "id": 41845, + "nodeType": "StructuredDocumentation", + "src": "7102:50:100", + "text": "@notice Checks that the chainId is not frozen." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireNotFrozen", + "nameLocation": "7166:16:100", + "parameters": { + "id": 41848, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41847, + "mutability": "mutable", + "name": "chainId", + "nameLocation": "7190:7:100", + "nodeType": "VariableDeclaration", + "scope": 41859, + "src": "7183:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 41846, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "7183:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "7182:16:100" + }, + "returnParameters": { + "id": 41849, + "nodeType": "ParameterList", + "parameters": [], + "src": "7213:0:100" + }, + "scope": 42115, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 41914, + "nodeType": "FunctionDefinition", + "src": "7348:452:100", + "nodes": [], + "body": { + "id": 41913, + "nodeType": "Block", + "src": "7424:376:100", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 41878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "baseExpression": { + "id": 41870, + "name": "lightClients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42595, + "src": "7450:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeString": "mapping(uint32 => contract ILightClient)" + } + }, + "id": 41872, + "indexExpression": { + "id": 41871, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41864, + "src": "7463:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7450:21:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + ], + "id": 41869, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7442:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 41868, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7442:7:100", + "typeDescriptions": {} + } + }, + "id": 41873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7442:30:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 41876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7484:1:100", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 41875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7476:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 41874, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7476:7:100", + "typeDescriptions": {} + } + }, + "id": 41877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7476:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7442:44:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", + "id": 41879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7488:26:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", + "typeString": "literal_string \"Light client is not set.\"" + }, + "value": "Light client is not set." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", + "typeString": "literal_string \"Light client is not set.\"" + } + ], + "id": 41867, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7434:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7434:81:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41881, + "nodeType": "ExpressionStatement", + "src": "7434:81:100" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 41887, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41862, + "src": "7566:4:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "baseExpression": { + "id": 41883, + "name": "lightClients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42595, + "src": "7533:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeString": "mapping(uint32 => contract ILightClient)" + } + }, + "id": 41885, + "indexExpression": { + "id": 41884, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41864, + "src": "7546:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7533:21:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "id": 41886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7555:10:100", + "memberName": "timestamps", + "nodeType": "MemberAccess", + "referencedDeclaration": 47861, + "src": "7533:32:100", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view external returns (uint256)" + } + }, + "id": 41888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7533:38:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 41889, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7575:1:100", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7533:43:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "54696d657374616d70206973206e6f742073657420666f7220736c6f742e", + "id": 41891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7578:32:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6d7a45101ad497aef48b2b4cd343588a8ff87c05de216f8c1f25e504e4b18b11", + "typeString": "literal_string \"Timestamp is not set for slot.\"" + }, + "value": "Timestamp is not set for slot." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6d7a45101ad497aef48b2b4cd343588a8ff87c05de216f8c1f25e504e4b18b11", + "typeString": "literal_string \"Timestamp is not set for slot.\"" + } + ], + "id": 41882, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7525:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7525:86:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41893, + "nodeType": "ExpressionStatement", + "src": "7525:86:100" + }, + { + "assignments": [ + 41895 + ], + "declarations": [ + { + "constant": false, + "id": 41895, + "mutability": "mutable", + "name": "elapsedTime", + "nameLocation": "7629:11:100", + "nodeType": "VariableDeclaration", + "scope": 41913, + "src": "7621:19:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 41894, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7621:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 41905, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 41896, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "7643:5:100", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 41897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7649:9:100", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "7643:15:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "id": 41902, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41862, + "src": "7694:4:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "baseExpression": { + "id": 41898, + "name": "lightClients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42595, + "src": "7661:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeString": "mapping(uint32 => contract ILightClient)" + } + }, + "id": 41900, + "indexExpression": { + "id": 41899, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41864, + "src": "7674:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7661:21:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "id": 41901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7683:10:100", + "memberName": "timestamps", + "nodeType": "MemberAccess", + "referencedDeclaration": 47861, + "src": "7661:32:100", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view external returns (uint256)" + } + }, + "id": 41903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7661:38:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7643:56:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7621:78:100" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41907, + "name": "elapsedTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41895, + "src": "7717:11:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 41908, + "name": "MIN_LIGHT_CLIENT_DELAY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41504, + "src": "7732:22:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7717:37:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f742e", + "id": 41910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7756:36:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b51feb04d24e293cda4cdf47dbe63ae0b79975ab7f4fafdae4b8602d5cda444", + "typeString": "literal_string \"Must wait longer to use this slot.\"" + }, + "value": "Must wait longer to use this slot." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5b51feb04d24e293cda4cdf47dbe63ae0b79975ab7f4fafdae4b8602d5cda444", + "typeString": "literal_string \"Must wait longer to use this slot.\"" + } + ], + "id": 41906, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7709:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 41911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7709:84:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41912, + "nodeType": "ExpressionStatement", + "src": "7709:84:100" + } + ] + }, + "documentation": { + "id": 41860, + "nodeType": "StructuredDocumentation", + "src": "7284:59:100", + "text": "@notice Checks that the light client delay is adequate." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireLightClientDelay", + "nameLocation": "7357:23:100", + "parameters": { + "id": 41865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41862, + "mutability": "mutable", + "name": "slot", + "nameLocation": "7388:4:100", + "nodeType": "VariableDeclaration", + "scope": 41914, + "src": "7381:11:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 41861, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "7381:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41864, + "mutability": "mutable", + "name": "chainId", + "nameLocation": "7401:7:100", + "nodeType": "VariableDeclaration", + "scope": 41914, + "src": "7394:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 41863, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "7394:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "7380:29:100" + }, + "returnParameters": { + "id": 41866, + "nodeType": "ParameterList", + "parameters": [], + "src": "7424:0:100" + }, + "scope": 42115, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 42005, + "nodeType": "FunctionDefinition", + "src": "7985:878:100", + "nodes": [], + "body": { + "id": 42004, + "nodeType": "Block", + "src": "8119:744:100", + "nodes": [], + "statements": [ + { + "assignments": [ + 41927 + ], + "declarations": [ + { + "constant": false, + "id": 41927, + "mutability": "mutable", + "name": "message", + "nameLocation": "8144:7:100", + "nodeType": "VariableDeclaration", + "scope": 42004, + "src": "8129:22:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message" + }, + "typeName": { + "id": 41926, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 41925, + "name": "Message", + "nameLocations": [ + "8129:7:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42646, + "src": "8129:7:100" + }, + "referencedDeclaration": 42646, + "src": "8129:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_storage_ptr", + "typeString": "struct Message" + } + }, + "visibility": "internal" + } + ], + "id": 41932, + "initialValue": { + "arguments": [ + { + "id": 41930, + "name": "messageBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41917, + "src": "8177:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "id": 41928, + "name": "MessageEncoding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43343, + "src": "8154:15:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MessageEncoding_$43343_$", + "typeString": "type(library MessageEncoding)" + } + }, + "id": 41929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8170:6:100", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 43342, + "src": "8154:22:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Message_$42646_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (struct Message memory)" + } + }, + "id": 41931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8154:36:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8129:61:100" + }, + { + "assignments": [ + 41934 + ], + "declarations": [ + { + "constant": false, + "id": 41934, + "mutability": "mutable", + "name": "messageRoot", + "nameLocation": "8208:11:100", + "nodeType": "VariableDeclaration", + "scope": 42004, + "src": "8200:19:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41933, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8200:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 41938, + "initialValue": { + "arguments": [ + { + "id": 41936, + "name": "messageBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41917, + "src": "8232:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 41935, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "8222:9:100", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 41937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8222:23:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8200:45:100" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeString": "enum MessageStatus" + }, + "id": 41944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 41939, + "name": "messageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42611, + "src": "8260:13:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42631_$", + "typeString": "mapping(bytes32 => enum MessageStatus)" + } + }, + "id": 41941, + "indexExpression": { + "id": 41940, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41934, + "src": "8274:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8260:26:100", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeString": "enum MessageStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 41942, + "name": "MessageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42631, + "src": "8290:13:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42631_$", + "typeString": "type(enum MessageStatus)" + } + }, + "id": 41943, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8304:12:100", + "memberName": "NOT_EXECUTED", + "nodeType": "MemberAccess", + "referencedDeclaration": 42628, + "src": "8290:26:100", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeString": "enum MessageStatus" + } + }, + "src": "8260:56:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 41950, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41927, + "src": "8388:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41951, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8396:18:100", + "memberName": "destinationChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42641, + "src": "8388:26:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 41952, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "8418:5:100", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 41953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8424:7:100", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "8418:13:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8388:43:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 41963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 41960, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41927, + "src": "8490:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41961, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8498:7:100", + "memberName": "version", + "nodeType": "MemberAccess", + "referencedDeclaration": 42633, + "src": "8490:15:100", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 41962, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42614, + "src": "8509:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "8490:26:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 41990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 41980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "baseExpression": { + "id": 41971, + "name": "lightClients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42595, + "src": "8598:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeString": "mapping(uint32 => contract ILightClient)" + } + }, + "id": 41974, + "indexExpression": { + "expression": { + "id": 41972, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41927, + "src": "8611:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41973, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8619:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "8611:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8598:35:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + ], + "id": 41970, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8590:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 41969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8590:7:100", + "typeDescriptions": {} + } + }, + "id": 41975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8590:44:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 41978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8646:1:100", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 41977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8638:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 41976, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8638:7:100", + "typeDescriptions": {} + } + }, + "id": 41979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8638:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8590:58:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 41989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 41981, + "name": "broadcasters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42600, + "src": "8668:12:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", + "typeString": "mapping(uint32 => address)" + } + }, + "id": 41984, + "indexExpression": { + "expression": { + "id": 41982, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41927, + "src": "8681:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41983, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8689:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "8681:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8668:35:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 41987, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8715:1:100", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 41986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8707:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 41985, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8707:7:100", + "typeDescriptions": {} + } + }, + "id": 41988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8707:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8668:49:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8590:127:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 41996, + "nodeType": "IfStatement", + "src": "8573:245:100", + "trueBody": { + "id": 41995, + "nodeType": "Block", + "src": "8728:90:100", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "4c6967687420636c69656e74206f722062726f616463617374657220666f7220736f7572636520636861696e206973206e6f7420736574", + "id": 41992, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8749:57:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cf4337b8a9aeb4dc59df6bfc8659d708bb8a876834333f5d0b08dc1936bd958a", + "typeString": "literal_string \"Light client or broadcaster for source chain is not set\"" + }, + "value": "Light client or broadcaster for source chain is not set" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_cf4337b8a9aeb4dc59df6bfc8659d708bb8a876834333f5d0b08dc1936bd958a", + "typeString": "literal_string \"Light client or broadcaster for source chain is not set\"" + } + ], + "id": 41991, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "8742:6:100", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 41993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8742:65:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41994, + "nodeType": "ExpressionStatement", + "src": "8742:65:100" + } + ] + } + }, + "id": 41997, + "nodeType": "IfStatement", + "src": "8486:332:100", + "trueBody": { + "id": 41968, + "nodeType": "Block", + "src": "8518:49:100", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "57726f6e672076657273696f6e2e", + "id": 41965, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8539:16:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e7376ceb646972a17b634167aad9262d9eb18b2043d14ff45148f5097f59c6d2", + "typeString": "literal_string \"Wrong version.\"" + }, + "value": "Wrong version." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e7376ceb646972a17b634167aad9262d9eb18b2043d14ff45148f5097f59c6d2", + "typeString": "literal_string \"Wrong version.\"" + } + ], + "id": 41964, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "8532:6:100", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 41966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8532:24:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41967, + "nodeType": "ExpressionStatement", + "src": "8532:24:100" + } + ] + } + }, + "id": 41998, + "nodeType": "IfStatement", + "src": "8384:434:100", + "trueBody": { + "id": 41959, + "nodeType": "Block", + "src": "8433:47:100", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "57726f6e6720636861696e2e", + "id": 41956, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8454:14:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_66ec22ebbfc205b68f0b23655aec8985dbbc1966429655365ba1946190b4daec", + "typeString": "literal_string \"Wrong chain.\"" + }, + "value": "Wrong chain." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_66ec22ebbfc205b68f0b23655aec8985dbbc1966429655365ba1946190b4daec", + "typeString": "literal_string \"Wrong chain.\"" + } + ], + "id": 41955, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "8447:6:100", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 41957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8447:22:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41958, + "nodeType": "ExpressionStatement", + "src": "8447:22:100" + } + ] + } + }, + "id": 41999, + "nodeType": "IfStatement", + "src": "8256:562:100", + "trueBody": { + "id": 41949, + "nodeType": "Block", + "src": "8318:60:100", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "4d65737361676520616c72656164792065786563757465642e", + "id": 41946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8339:27:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_dc22dc9e42feb4de07feeda5b9f039eb60d7aec2ed0bed57ad163f302257f6e7", + "typeString": "literal_string \"Message already executed.\"" + }, + "value": "Message already executed." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_dc22dc9e42feb4de07feeda5b9f039eb60d7aec2ed0bed57ad163f302257f6e7", + "typeString": "literal_string \"Message already executed.\"" + } + ], + "id": 41945, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "8332:6:100", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 41947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8332:35:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41948, + "nodeType": "ExpressionStatement", + "src": "8332:35:100" + } + ] + } + }, + { + "expression": { + "components": [ + { + "id": 42000, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41927, + "src": "8835:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + { + "id": 42001, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41934, + "src": "8844:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 42002, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8834:22:100", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$", + "typeString": "tuple(struct Message memory,bytes32)" + } + }, + "functionReturnParameters": 41924, + "id": 42003, + "nodeType": "Return", + "src": "8827:29:100" + } + ] + }, + "documentation": { + "id": 41915, + "nodeType": "StructuredDocumentation", + "src": "7806:174:100", + "text": "@notice Decodes the message from messageBytes and checks conditions before message execution\n @param messageBytes The message we want to execute provided as bytes." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkPreconditions", + "nameLocation": "7994:19:100", + "parameters": { + "id": 41918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41917, + "mutability": "mutable", + "name": "messageBytes", + "nameLocation": "8029:12:100", + "nodeType": "VariableDeclaration", + "scope": 42005, + "src": "8014:27:100", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 41916, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8014:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "8013:29:100" + }, + "returnParameters": { + "id": 41924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41921, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 42005, + "src": "8090:14:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message" + }, + "typeName": { + "id": 41920, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 41919, + "name": "Message", + "nameLocations": [ + "8090:7:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42646, + "src": "8090:7:100" + }, + "referencedDeclaration": 42646, + "src": "8090:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_storage_ptr", + "typeString": "struct Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41923, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 42005, + "src": "8106:7:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41922, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8106:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8089:25:100" + }, + "scope": 42115, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 42114, + "nodeType": "FunctionDefinition", + "src": "9345:1529:100", + "nodes": [], + "body": { + "id": 42113, + "nodeType": "Block", + "src": "9463:1411:100", + "nodes": [], + "statements": [ + { + "assignments": [ + 42017 + ], + "declarations": [ + { + "constant": false, + "id": 42017, + "mutability": "mutable", + "name": "status", + "nameLocation": "9478:6:100", + "nodeType": "VariableDeclaration", + "scope": 42113, + "src": "9473:11:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 42016, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9473:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 42018, + "nodeType": "VariableDeclarationStatement", + "src": "9473:11:100" + }, + { + "assignments": [ + 42020 + ], + "declarations": [ + { + "constant": false, + "id": 42020, + "mutability": "mutable", + "name": "data", + "nameLocation": "9507:4:100", + "nodeType": "VariableDeclaration", + "scope": 42113, + "src": "9494:17:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 42019, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9494:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 42021, + "nodeType": "VariableDeclarationStatement", + "src": "9494:17:100" + }, + { + "id": 42054, + "nodeType": "Block", + "src": "9521:399:100", + "statements": [ + { + "assignments": [ + 42023 + ], + "declarations": [ + { + "constant": false, + "id": 42023, + "mutability": "mutable", + "name": "receiveCall", + "nameLocation": "9548:11:100", + "nodeType": "VariableDeclaration", + "scope": 42054, + "src": "9535:24:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 42022, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9535:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 42036, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "id": 42026, + "name": "ITelepathyHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42756, + "src": "9602:17:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ITelepathyHandler_$42756_$", + "typeString": "type(contract ITelepathyHandler)" + } + }, + "id": 42027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9620:15:100", + "memberName": "handleTelepathy", + "nodeType": "MemberAccess", + "referencedDeclaration": 42755, + "src": "9602:33:100", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function ITelepathyHandler.handleTelepathy(uint32,address,bytes memory) returns (bytes4)" + } + }, + "id": 42028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9636:8:100", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "9602:42:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "expression": { + "id": 42029, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42009, + "src": "9662:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 42030, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9670:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "9662:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "expression": { + "id": 42031, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42009, + "src": "9701:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 42032, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9709:13:100", + "memberName": "sourceAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 42639, + "src": "9701:21:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 42033, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42009, + "src": "9740:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 42034, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9748:4:100", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 42645, + "src": "9740:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 42024, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "9562:3:100", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 42025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9566:18:100", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "9562:22:100", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 42035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9562:204:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9535:231:100" + }, + { + "assignments": [ + 42038 + ], + "declarations": [ + { + "constant": false, + "id": 42038, + "mutability": "mutable", + "name": "destination", + "nameLocation": "9788:11:100", + "nodeType": "VariableDeclaration", + "scope": 42054, + "src": "9780:19:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 42037, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9780:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 42044, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 42041, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42009, + "src": "9822:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 42042, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9830:18:100", + "memberName": "destinationAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 42643, + "src": "9822:26:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 42039, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44245, + "src": "9802:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Address_$44245_$", + "typeString": "type(library Address)" + } + }, + "id": 42040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9810:11:100", + "memberName": "fromBytes32", + "nodeType": "MemberAccess", + "referencedDeclaration": 44244, + "src": "9802:19:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) pure returns (address)" + } + }, + "id": 42043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9802:47:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9780:69:100" + }, + { + "expression": { + "id": 42052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 42045, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42017, + "src": "9864:6:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 42046, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42020, + "src": "9872:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "id": 42047, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "9863:14:100", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 42050, + "name": "receiveCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42023, + "src": "9897:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 42048, + "name": "destination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42038, + "src": "9880:11:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 42049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9892:4:100", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "9880:16:100", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 42051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9880:29:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "src": "9863:46:100", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42053, + "nodeType": "ExpressionStatement", + "src": "9863:46:100" + } + ] + }, + { + "assignments": [ + 42056 + ], + "declarations": [ + { + "constant": false, + "id": 42056, + "mutability": "mutable", + "name": "implementsHandler", + "nameLocation": "10311:17:100", + "nodeType": "VariableDeclaration", + "scope": 42113, + "src": "10306:22:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 42055, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10306:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 42058, + "initialValue": { + "hexValue": "66616c7365", + "id": 42057, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10331:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10306:30:100" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 42062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 42059, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42020, + "src": "10350:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 42060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10355:6:100", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10350:11:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3332", + "id": 42061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10365:2:100", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "10350:17:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 42082, + "nodeType": "IfStatement", + "src": "10346:176:100", + "trueBody": { + "id": 42081, + "nodeType": "Block", + "src": "10369:153:100", + "statements": [ + { + "assignments": [ + 42064 + ], + "declarations": [ + { + "constant": false, + "id": 42064, + "mutability": "mutable", + "name": "magic", + "nameLocation": "10391:5:100", + "nodeType": "VariableDeclaration", + "scope": 42081, + "src": "10384:12:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 42063, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "10384:6:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "id": 42072, + "initialValue": { + "arguments": [ + { + "id": 42067, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42020, + "src": "10411:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 42069, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10418:6:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 42068, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "10418:6:100", + "typeDescriptions": {} + } + } + ], + "id": 42070, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10417:8:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + } + ], + "expression": { + "id": 42065, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "10400:3:100", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 42066, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10404:6:100", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "10400:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 42071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10400:26:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10383:43:100" + }, + { + "expression": { + "id": 42079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 42073, + "name": "implementsHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42056, + "src": "10440:17:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 42078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 42074, + "name": "magic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42064, + "src": "10460:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 42075, + "name": "ITelepathyHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42756, + "src": "10469:17:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ITelepathyHandler_$42756_$", + "typeString": "type(contract ITelepathyHandler)" + } + }, + "id": 42076, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10487:15:100", + "memberName": "handleTelepathy", + "nodeType": "MemberAccess", + "referencedDeclaration": 42755, + "src": "10469:33:100", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function ITelepathyHandler.handleTelepathy(uint32,address,bytes memory) returns (bytes4)" + } + }, + "id": 42077, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10503:8:100", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "10469:42:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "10460:51:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10440:71:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 42080, + "nodeType": "ExpressionStatement", + "src": "10440:71:100" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 42085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 42083, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42017, + "src": "10536:6:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 42084, + "name": "implementsHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42056, + "src": "10546:17:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10536:27:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 42101, + "nodeType": "Block", + "src": "10658:84:100", + "statements": [ + { + "expression": { + "id": 42099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 42094, + "name": "messageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42611, + "src": "10672:13:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42631_$", + "typeString": "mapping(bytes32 => enum MessageStatus)" + } + }, + "id": 42096, + "indexExpression": { + "id": 42095, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42011, + "src": "10686:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10672:26:100", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeString": "enum MessageStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 42097, + "name": "MessageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42631, + "src": "10701:13:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42631_$", + "typeString": "type(enum MessageStatus)" + } + }, + "id": 42098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10715:16:100", + "memberName": "EXECUTION_FAILED", + "nodeType": "MemberAccess", + "referencedDeclaration": 42629, + "src": "10701:30:100", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeString": "enum MessageStatus" + } + }, + "src": "10672:59:100", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeString": "enum MessageStatus" + } + }, + "id": 42100, + "nodeType": "ExpressionStatement", + "src": "10672:59:100" + } + ] + }, + "id": 42102, + "nodeType": "IfStatement", + "src": "10532:210:100", + "trueBody": { + "id": 42093, + "nodeType": "Block", + "src": "10565:87:100", + "statements": [ + { + "expression": { + "id": 42091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 42086, + "name": "messageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42611, + "src": "10579:13:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42631_$", + "typeString": "mapping(bytes32 => enum MessageStatus)" + } + }, + "id": 42088, + "indexExpression": { + "id": 42087, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42011, + "src": "10593:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10579:26:100", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeString": "enum MessageStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 42089, + "name": "MessageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42631, + "src": "10608:13:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42631_$", + "typeString": "type(enum MessageStatus)" + } + }, + "id": 42090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10622:19:100", + "memberName": "EXECUTION_SUCCEEDED", + "nodeType": "MemberAccess", + "referencedDeclaration": 42630, + "src": "10608:33:100", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeString": "enum MessageStatus" + } + }, + "src": "10579:62:100", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeString": "enum MessageStatus" + } + }, + "id": 42092, + "nodeType": "ExpressionStatement", + "src": "10579:62:100" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 42104, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42009, + "src": "10786:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 42105, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10794:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42637, + "src": "10786:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "expression": { + "id": 42106, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42009, + "src": "10809:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 42107, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10817:5:100", + "memberName": "nonce", + "nodeType": "MemberAccess", + "referencedDeclaration": 42635, + "src": "10809:13:100", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 42108, + "name": "messageRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42011, + "src": "10824:11:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 42109, + "name": "messageBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42013, + "src": "10837:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 42110, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42017, + "src": "10851:6:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 42103, + "name": "ExecutedMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42711, + "src": "10757:15:100", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (uint32,uint64,bytes32,bytes memory,bool)" + } + }, + "id": 42111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10757:110:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42112, + "nodeType": "EmitStatement", + "src": "10752:115:100" + } + ] + }, + "documentation": { + "id": 42006, + "nodeType": "StructuredDocumentation", + "src": "8869:471:100", + "text": "@notice Executes a message and updates storage with status and emits an event.\n @dev Assumes that the message is valid and has not been already executed.\n @dev Assumes that message, messageRoot and messageBytes have already been validated.\n @param message The message we want to execute.\n @param messageRoot The message root of the message.\n @param messageBytes The message we want to execute provided as bytes for use in the event." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_executeMessage", + "nameLocation": "9354:15:100", + "parameters": { + "id": 42014, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42009, + "mutability": "mutable", + "name": "message", + "nameLocation": "9385:7:100", + "nodeType": "VariableDeclaration", + "scope": 42114, + "src": "9370:22:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeString": "struct Message" + }, + "typeName": { + "id": 42008, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 42007, + "name": "Message", + "nameLocations": [ + "9370:7:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42646, + "src": "9370:7:100" + }, + "referencedDeclaration": 42646, + "src": "9370:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42646_storage_ptr", + "typeString": "struct Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 42011, + "mutability": "mutable", + "name": "messageRoot", + "nameLocation": "9402:11:100", + "nodeType": "VariableDeclaration", + "scope": 42114, + "src": "9394:19:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 42010, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9394:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 42013, + "mutability": "mutable", + "name": "messageBytes", + "nameLocation": "9428:12:100", + "nodeType": "VariableDeclaration", + "scope": 42114, + "src": "9415:25:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 42012, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9415:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "9369:72:100" + }, + "returnParameters": { + "id": 42015, + "nodeType": "ParameterList", + "parameters": [], + "src": "9463:0:100" + }, + "scope": 42115, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 41495, + "name": "TelepathyStorage", + "nameLocations": [ + "770:16:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42625, + "src": "770:16:100" + }, + "id": 41496, + "nodeType": "InheritanceSpecifier", + "src": "770:16:100" + }, + { + "baseName": { + "id": 41497, + "name": "ReentrancyGuardUpgradeable", + "nameLocations": [ + "788:26:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 29613, + "src": "788:26:100" + }, + "id": 41498, + "nodeType": "InheritanceSpecifier", + "src": "788:26:100" + }, + { + "baseName": { + "id": 41499, + "name": "ITelepathyReceiver", + "nameLocations": [ + "816:18:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42744, + "src": "816:18:100" + }, + "id": 41500, + "nodeType": "InheritanceSpecifier", + "src": "816:18:100" + } + ], + "canonicalName": "TargetAMB", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 41494, + "nodeType": "StructuredDocumentation", + "src": "596:152:100", + "text": "@title Target Arbitrary Message Bridge\n @author Succinct Labs\n @notice Executes messages sent from the source chain on the destination chain." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 42115, + 42744, + 29613, + 29404, + 42625 + ], + "name": "TargetAMB", + "nameLocation": "757:9:100", + "scope": 42116, + "usedErrors": [] + } + ] + }, + "id": 100 +} \ No newline at end of file diff --git a/out/TelepathyPubSub.sol/TelepathyPubSub.json b/out/TelepathyPubSub.sol/TelepathyPubSub.json new file mode 100644 index 0000000..0375a72 --- /dev/null +++ b/out/TelepathyPubSub.sol/TelepathyPubSub.json @@ -0,0 +1,1532 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_telepathyRouter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "endSlot", + "type": "uint64" + } + ], + "name": "InvalidSlotRange", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "name": "SubscriptionAlreadyActive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "name": "SubscriptionNotActive", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "name": "Publish", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "startSlot", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "endSlot", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false, + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "Subscribe", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false, + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "Unsubscribe", + "type": "event" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "eventsPublished", + "outputs": [ + { + "internalType": "enum PublishStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "publishEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "_startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "_endSlot", + "type": "uint64" + } + ], + "name": "subscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subscriptions", + "outputs": [ + { + "internalType": "enum SubscriptionStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + } + ], + "name": "unsubscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x60806040523480156200001157600080fd5b5060405162003a7b38038062003a7b83398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b6139df806200009c6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a610075366004613020565b60016020526000908152604090205460ff1681565b604051610097919061304f565b60405180910390f35b6100b36100ae3660046130ae565b610133565b604051908152602001610097565b6100e46100cf366004613020565b60026020526000908152604090205460ff1681565b604051610097919061311f565b6100b36100ff366004613133565b61029a565b6101176101123660046132cb565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161018491906133ad565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c3613039565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161028691906133ad565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb91906133ad565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff16600181111561032957610329613039565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103919085906133ad565b60405180910390a29150505b9392505050565b6103b96103b460208301836133ef565b6106f1565b6103ce6103c960208301836133ef565b6108d7565b6000816040516020016103e1919061340a565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016104149594939291906134b3565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561045257610452613039565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f613506565b90925090506104c9826104c460208801886133ef565b61098c565b600080546001600160a01b0316637599735c6104e860208901896133ef565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e9190613539565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613556565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b600061064c8c8f8f80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610d4a565b90508061069b5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106cb6106ab8d8f61356f565b8f8d8d8d60200160208101906106c191906135f2565b8e60600135610ef2565b915091506106dd888a8988868661123d565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107649190613539565b6001600160a01b0316036107b55760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610803573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108279190613539565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610864573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610888919061360f565b6108d45760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610949919061360f565b156108d45760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff9190613539565b6001600160a01b031603610a505760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190613539565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b359190613556565b600003610b845760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190613539565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190613556565b610c749042613647565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ceb9190613556565b811015610d455760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b600080826001600160401b0316846001600160401b031603610d885750600b610d758161020061365a565b610d8190610183613679565b9050610edb565b612000610d95848661368c565b6001600160401b031611610df75750600b610db181602061365a565b610dbc906006613679565b9050610dd36120006001600160401b0385166136c2565b610ddf6120008361365a565b610de99190613679565b9050610d758161020061365a565b836001600160401b0316836001600160401b03161015610e895750600b610e1f81602061365a565b610e2a906007613679565b9050610e3781600261365a565b610e42906000613679565b9050610e596120006001600160401b0385166136d6565b610e6763010000008361365a565b610e719190613679565b9050610e7e81600261365a565b610dbc906001613679565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016101e0565b610ee787828888611432565b979650505050505050565b6060806000610f02878a8a61144c565b9050600081600081518110610f1957610f196136ea565b01602001516001600160f81b03191690506000600160f81b821480610f4b5750600160f91b6001600160f81b03198316145b15610f5857506001610fbd565b600360fe1b6001600160f81b0319831610610f7557506000610fbd565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b600060208401905060006040518060400160405280848751610fdf9190613647565b8152602001610fee8585613679565b905290506000610ffd82611cdf565b905080516004146110495760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b600061106e82600381518110611061576110616136ea565b6020026020010151611cdf565b905080518c106110c05760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b60006110d7828e81518110611061576110616136ea565b905060006110fe826000815181106110f1576110f16136ea565b6020026020010151611f04565b90508c6001600160a01b0316816001600160a01b0316146111725760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b600061119261118d84600181518110611061576110616136ea565b611f78565b90508c816000815181106111a8576111a86136ea565b6020026020010151146111fd5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b600061122284600281518110611215576112156136ea565b6020026020010151612028565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961125860208b018b6133ef565b61126860408c0160208d016135f2565b89898960405160240161128096959493929190613700565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506112c49060608a01908a016135f2565b6001600160a01b0316816040516112db919061378f565b6000604051808303816000865af19150503d8060008114611318576040519150601f19603f3d011682016040523d82523d6000602084013e61131d565b606091505b50805191945092506000915060200361135d5760008280602001905181019061134691906137ab565b6001600160e01b031916635160951d60e11b149150505b8280156113675750805b1561138a576000878152600160205260409020805460ff191660021790556113a7565b6000878152600160208190526040909120805460ff191690911790555b6113b76040890160208a016135f2565b6001600160a01b03166113cd60208a018a6133ef565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61140560608d0160408e016135f2565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611440868686612154565b90921495945050505050565b606060008451116114975760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b60006114a2846122ec565b905060006114af866123da565b90506000846040516020016114c691815260200190565b60405160208183030381529060405290506000805b8451811015611c885760008582815181106114f8576114f86136ea565b60200260200101519050845183111561156a5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b8260000361160957805180516020918201206040516115b89261159292910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116045760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6116ff565b80515160201161168f57805180516020918201206040516116339261159292910190815260200190565b6116045760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146116ff5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b61170b60106001613679565b816020015151036118ab578451830361184357600061173a8260200151601081518110611215576112156136ea565b905060008151116117b35760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b600187516117c19190613647565b83146118355760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b6000858481518110611857576118576136ea565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611882576118826136ea565b60200260200101519050611895816124f4565b95506118a2600186613679565b94505050611c75565b600281602001515103611c1c5760006118c382612519565b90506000816000815181106118da576118da6136ea565b016020015160f81c905060006118f16002836137d5565b6118fc9060026137f7565b9050600061190d848360ff1661253d565b9050600061191b8a8961253d565b905060006119298383612573565b9050808351146119a15760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff8516600214806119b6575060ff85166003145b15611b5c5780825114611a315760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611a4d8860200151600181518110611215576112156136ea565b90506000815111611ac65760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611ad49190613647565b8914611b485760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611b6f575060ff85166001145b15611bae57611b9b8760200151600181518110611b8e57611b8e6136ea565b60200260200101516124f4565b9950611ba7818a613679565b9850611c11565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611c75565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611c8081613810565b9150506114db565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611cef856125f2565b919450925090506001816001811115611d0a57611d0a613039565b14611d7d5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611d898385613679565b14611df15760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611e0a5790505090506000845b8751811015611ef857600080611e7d6040518060400160405280858d60000151611e619190613647565b8152602001858d60200151611e769190613679565b90526125f2565b509150915060405180604001604052808383611e999190613679565b8152602001848c60200151611eae9190613679565b815250858581518110611ec357611ec36136ea565b6020908102919091010152611ed9600185613679565b9350611ee58183613679565b611eef9084613679565b92505050611e37565b50815295945050505050565b8051600090600103611f1857506000919050565b8151601514611f695760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b611f7282612cb5565b92915050565b6060600082516001600160401b03811115611f9557611f956131fe565b604051908082528060200260200182016040528015611fbe578160200160208202803683370190505b50905060005b835181101561202157611fef848281518110611fe257611fe26136ea565b6020026020010151612cb5565b60001b828281518110612004576120046136ea565b60209081029190910101528061201981613810565b915050611fc4565b5092915050565b60606000806000612038856125f2565b91945092509050600081600181111561205357612053613039565b146120c65760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b6120d08284613679565b85511461213c5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b61214b85602001518484612cc0565b95945050505050565b600082825160016121659190613679565b61217090600261390d565b1161217a57600080fd5b8360005b846001146122e3576121916002866136c2565b6001036122305760028482815181106121ac576121ac6136ea565b6020026020010151836040516020016121cf929190918252602082015260400190565b60408051601f19818403018152908290526121e99161378f565b602060405180830381855afa158015612206573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122299190613556565b91506122c4565b600282858381518110612245576122456136ea565b6020026020010151604051602001612267929190918252602082015260400190565b60408051601f19818403018152908290526122819161378f565b602060405180830381855afa15801561229e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122c19190613556565b91505b6122cf6002866136d6565b9450806122db81613810565b91505061217e565b50949350505050565b80516060906000816001600160401b0381111561230b5761230b6131fe565b60405190808252806020026020018201604052801561235057816020015b60408051808201909152606080825260208201528152602001906001900390816123295790505b50905060005b828110156123d257604051806040016040528086838151811061237b5761237b6136ea565b602002602001015181526020016123aa87848151811061239d5761239d6136ea565b6020026020010151612d60565b8152508282815181106123bf576123bf6136ea565b6020908102919091010152600101612356565b509392505050565b805160609060006123ec82600261365a565b6001600160401b03811115612403576124036131fe565b6040519080825280601f01601f19166020018201604052801561242d576020820181803683370190505b5090506000805b838110156124ea5785818151811061244e5761244e6136ea565b6020910101516001600160f81b03198116925060041c60ff60f41b168361247683600261365a565b81518110612486576124866136ea565b60200101906001600160f81b031916908160001a905350600f60f81b8216836124b083600261365a565b6124bb906001613679565b815181106124cb576124cb6136ea565b60200101906001600160f81b031916908160001a905350600101612434565b5090949350505050565b606060208260000151106125105761250b82612028565b611f72565b611f7282612d73565b6060611f726125388360200151600081518110611215576112156136ea565b6123da565b60608251821061255c5750604080516020810190915260008152611f72565b61039d838384865161256e9190613647565b612d89565b6000806000835185511061258857835161258b565b84515b90505b80821080156125e257508382815181106125aa576125aa6136ea565b602001015160f81c60f81b6001600160f81b0319168583815181106125d1576125d16136ea565b01602001516001600160f81b031916145b156123d25781600101915061258e565b60008060008084600001511161261a5760405162461bcd60e51b81526004016101e090613919565b6020840151805160001a607f811161263f576000600160009450945094505050612cae565b60b7811161279c576000612654608083613647565b9050808760000151116126d45760405162461bcd60e51b815260206004820152604e602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127015750600160ff1b6001600160f81b0319821610155b6127895760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612cae915050565b60bf81116129dd5760006127b160b783613647565b9050808760000151116128345760405162461bcd60e51b8152602060048201526051602482015260008051602061398a83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b03191660008190036128bb5760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c6037811161293e5760405162461bcd60e51b8152602060048201526048602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b6129488184613679565b8951116129c05760405162461bcd60e51b815260206004820152604c602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b6129cb836001613679565b9750955060009450612cae9350505050565b60f78111612a7f5760006129f260c083613647565b905080876000015111612a6e5760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612cae915050565b6000612a8c60f783613647565b905080876000015111612b0b5760405162461bcd60e51b815260206004820152604d602482015260008051602061398a83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612b905760405162461bcd60e51b8152602060048201526048602482015260008051602061398a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612c115760405162461bcd60e51b8152602060048201526046602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612c1b8184613679565b895111612c915760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612c9c836001613679565b9750955060019450612cae9350505050565b9193909250565b6000611f7282612eca565b60606000826001600160401b03811115612cdc57612cdc6131fe565b6040519080825280601f01601f191660200182016040528015612d06576020820181803683370190505b50905082600003612d1857905061039d565b6000612d248587613679565b90506020820160005b85811015612d45578281015182820152602001612d2d565b85811115612d54576000868301525b50919695505050505050565b6060611f72612d6e83612fcd565b611cdf565b6060611f72826020015160008460000151612cc0565b60608182601f011015612dcf5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612e125760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612e595760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612e7857604051915060008252602082016040526122e3565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612eb1578051835260209283019201612e99565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612f215760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000612f2f856125f2565b919450925090506000816001811115612f4a57612f4a613039565b14612f975760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000838660200151612fa99190613679565b80519091506020841015612fc35760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130025760405162461bcd60e51b81526004016101e090613919565b50604080518082019091528151815260209182019181019190915290565b60006020828403121561303257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061306357613063613039565b91905290565b803563ffffffff8116811461307d57600080fd5b919050565b6001600160a01b03811681146108d457600080fd5b80356001600160401b038116811461307d57600080fd5b60008060008060008060c087890312156130c757600080fd5b6130d087613069565b955060208701356130e081613082565b945060408701356130f081613082565b93506060870135925061310560808801613097565b915061311360a08801613097565b90509295509295509295565b602081016002831061306357613063613039565b60008060006060848603121561314857600080fd5b61315184613069565b9250602084013561316181613082565b929592945050506040919091013590565b60008083601f84011261318457600080fd5b5081356001600160401b0381111561319b57600080fd5b6020830191508360208285010111156131b357600080fd5b9250929050565b60008083601f8401126131cc57600080fd5b5081356001600160401b038111156131e357600080fd5b6020830191508360208260051b85010111156131b357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561323c5761323c6131fe565b604052919050565b600082601f83011261325557600080fd5b81356001600160401b0381111561326e5761326e6131fe565b613281601f8201601f1916602001613214565b81815284602083860101111561329657600080fd5b816020850160208301376000918101602001919091529392505050565b6000608082840312156132c557600080fd5b50919050565b6000806000806000806000806000806101408b8d0312156132eb57600080fd5b8a356001600160401b038082111561330257600080fd5b61330e8e838f01613172565b909c509a5060208d013591508082111561332757600080fd5b6133338e838f016131ba565b909a50985060408d0135975060608d013591508082111561335357600080fd5b61335f8e838f016131ba565b909750955060808d013591508082111561337857600080fd5b506133858d828e01613244565b93505060a08b0135915061339c8c60c08d016132b3565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b60006020828403121561340157600080fd5b61039d82613069565b6080810163ffffffff61341c84613069565b168252602083013561342d81613082565b6001600160a01b03908116602084015260408401359061344c82613082565b166040830152606092830135929091019190915290565b60005b8381101561347e578181015183820152602001613466565b50506000910152565b6000815180845261349f816020860160208601613463565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526134f160a0820187613487565b60408401959095525050606001529392505050565b6000806040838503121561351957600080fd5b61352283613097565b915061353060208401613097565b90509250929050565b60006020828403121561354b57600080fd5b815161039d81613082565b60006020828403121561356857600080fd5b5051919050565b60006001600160401b0380841115613589576135896131fe565b8360051b602061359a818301613214565b8681529185019181810190368411156135b257600080fd5b865b848110156135e6578035868111156135cc5760008081fd5b6135d836828b01613244565b8452509183019183016135b4565b50979650505050505050565b60006020828403121561360457600080fd5b813561039d81613082565b60006020828403121561362157600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611f7257611f72613631565b600081600019048311821515161561367457613674613631565b500290565b80820180821115611f7257611f72613631565b6001600160401b0382811682821603908082111561202157612021613631565b634e487b7160e01b600052601260045260246000fd5b6000826136d1576136d16136ac565b500690565b6000826136e5576136e56136ac565b500490565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561376c57845183529383019391830191600101613750565b505084810360a08601526137808187613487565b9b9a5050505050505050505050565b600082516137a1818460208701613463565b9190910192915050565b6000602082840312156137bd57600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff8316806137e8576137e86136ac565b8060ff84160691505092915050565b60ff8281168282160390811115611f7257611f72613631565b60006001820161382257613822613631565b5060010190565b600181815b8085111561386457816000190482111561384a5761384a613631565b8085161561385757918102915b93841c939080029061382e565b509250929050565b60008261387b57506001611f72565b8161388857506000611f72565b816001811461389e57600281146138a8576138c4565b6001915050611f72565b60ff8411156138b9576138b9613631565b50506001821b611f72565b5060208310610133831016604e8410600b84101617156138e7575081810a611f72565b6138f18383613829565b806000190482111561390557613905613631565b029392505050565b600061039d838361386c565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220602421baf00893da0a1ad83f848fb9ec680486abe80b75375eaf01610b6fd37564736f6c63430008100033", + "sourceMap": "843:386:122:-:0;;;957:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1005:15;:51;;-1:-1:-1;;;;;;1005:51:122;-1:-1:-1;;;;;1005:51:122;;;;;;;;;;843:386;;14:290:145;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:145;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:145:o;:::-;843:386:122;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a610075366004613020565b60016020526000908152604090205460ff1681565b604051610097919061304f565b60405180910390f35b6100b36100ae3660046130ae565b610133565b604051908152602001610097565b6100e46100cf366004613020565b60026020526000908152604090205460ff1681565b604051610097919061311f565b6100b36100ff366004613133565b61029a565b6101176101123660046132cb565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161018491906133ad565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c3613039565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161028691906133ad565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb91906133ad565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff16600181111561032957610329613039565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103919085906133ad565b60405180910390a29150505b9392505050565b6103b96103b460208301836133ef565b6106f1565b6103ce6103c960208301836133ef565b6108d7565b6000816040516020016103e1919061340a565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016104149594939291906134b3565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561045257610452613039565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f613506565b90925090506104c9826104c460208801886133ef565b61098c565b600080546001600160a01b0316637599735c6104e860208901896133ef565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e9190613539565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613556565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b600061064c8c8f8f80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610d4a565b90508061069b5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106cb6106ab8d8f61356f565b8f8d8d8d60200160208101906106c191906135f2565b8e60600135610ef2565b915091506106dd888a8988868661123d565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107649190613539565b6001600160a01b0316036107b55760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610803573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108279190613539565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610864573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610888919061360f565b6108d45760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610949919061360f565b156108d45760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff9190613539565b6001600160a01b031603610a505760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190613539565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b359190613556565b600003610b845760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190613539565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190613556565b610c749042613647565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ceb9190613556565b811015610d455760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b600080826001600160401b0316846001600160401b031603610d885750600b610d758161020061365a565b610d8190610183613679565b9050610edb565b612000610d95848661368c565b6001600160401b031611610df75750600b610db181602061365a565b610dbc906006613679565b9050610dd36120006001600160401b0385166136c2565b610ddf6120008361365a565b610de99190613679565b9050610d758161020061365a565b836001600160401b0316836001600160401b03161015610e895750600b610e1f81602061365a565b610e2a906007613679565b9050610e3781600261365a565b610e42906000613679565b9050610e596120006001600160401b0385166136d6565b610e6763010000008361365a565b610e719190613679565b9050610e7e81600261365a565b610dbc906001613679565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016101e0565b610ee787828888611432565b979650505050505050565b6060806000610f02878a8a61144c565b9050600081600081518110610f1957610f196136ea565b01602001516001600160f81b03191690506000600160f81b821480610f4b5750600160f91b6001600160f81b03198316145b15610f5857506001610fbd565b600360fe1b6001600160f81b0319831610610f7557506000610fbd565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b600060208401905060006040518060400160405280848751610fdf9190613647565b8152602001610fee8585613679565b905290506000610ffd82611cdf565b905080516004146110495760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b600061106e82600381518110611061576110616136ea565b6020026020010151611cdf565b905080518c106110c05760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b60006110d7828e81518110611061576110616136ea565b905060006110fe826000815181106110f1576110f16136ea565b6020026020010151611f04565b90508c6001600160a01b0316816001600160a01b0316146111725760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b600061119261118d84600181518110611061576110616136ea565b611f78565b90508c816000815181106111a8576111a86136ea565b6020026020010151146111fd5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b600061122284600281518110611215576112156136ea565b6020026020010151612028565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961125860208b018b6133ef565b61126860408c0160208d016135f2565b89898960405160240161128096959493929190613700565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506112c49060608a01908a016135f2565b6001600160a01b0316816040516112db919061378f565b6000604051808303816000865af19150503d8060008114611318576040519150601f19603f3d011682016040523d82523d6000602084013e61131d565b606091505b50805191945092506000915060200361135d5760008280602001905181019061134691906137ab565b6001600160e01b031916635160951d60e11b149150505b8280156113675750805b1561138a576000878152600160205260409020805460ff191660021790556113a7565b6000878152600160208190526040909120805460ff191690911790555b6113b76040890160208a016135f2565b6001600160a01b03166113cd60208a018a6133ef565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61140560608d0160408e016135f2565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611440868686612154565b90921495945050505050565b606060008451116114975760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b60006114a2846122ec565b905060006114af866123da565b90506000846040516020016114c691815260200190565b60405160208183030381529060405290506000805b8451811015611c885760008582815181106114f8576114f86136ea565b60200260200101519050845183111561156a5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b8260000361160957805180516020918201206040516115b89261159292910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116045760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6116ff565b80515160201161168f57805180516020918201206040516116339261159292910190815260200190565b6116045760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146116ff5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b61170b60106001613679565b816020015151036118ab578451830361184357600061173a8260200151601081518110611215576112156136ea565b905060008151116117b35760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b600187516117c19190613647565b83146118355760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b6000858481518110611857576118576136ea565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611882576118826136ea565b60200260200101519050611895816124f4565b95506118a2600186613679565b94505050611c75565b600281602001515103611c1c5760006118c382612519565b90506000816000815181106118da576118da6136ea565b016020015160f81c905060006118f16002836137d5565b6118fc9060026137f7565b9050600061190d848360ff1661253d565b9050600061191b8a8961253d565b905060006119298383612573565b9050808351146119a15760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff8516600214806119b6575060ff85166003145b15611b5c5780825114611a315760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611a4d8860200151600181518110611215576112156136ea565b90506000815111611ac65760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611ad49190613647565b8914611b485760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611b6f575060ff85166001145b15611bae57611b9b8760200151600181518110611b8e57611b8e6136ea565b60200260200101516124f4565b9950611ba7818a613679565b9850611c11565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611c75565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611c8081613810565b9150506114db565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611cef856125f2565b919450925090506001816001811115611d0a57611d0a613039565b14611d7d5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611d898385613679565b14611df15760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611e0a5790505090506000845b8751811015611ef857600080611e7d6040518060400160405280858d60000151611e619190613647565b8152602001858d60200151611e769190613679565b90526125f2565b509150915060405180604001604052808383611e999190613679565b8152602001848c60200151611eae9190613679565b815250858581518110611ec357611ec36136ea565b6020908102919091010152611ed9600185613679565b9350611ee58183613679565b611eef9084613679565b92505050611e37565b50815295945050505050565b8051600090600103611f1857506000919050565b8151601514611f695760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b611f7282612cb5565b92915050565b6060600082516001600160401b03811115611f9557611f956131fe565b604051908082528060200260200182016040528015611fbe578160200160208202803683370190505b50905060005b835181101561202157611fef848281518110611fe257611fe26136ea565b6020026020010151612cb5565b60001b828281518110612004576120046136ea565b60209081029190910101528061201981613810565b915050611fc4565b5092915050565b60606000806000612038856125f2565b91945092509050600081600181111561205357612053613039565b146120c65760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b6120d08284613679565b85511461213c5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b61214b85602001518484612cc0565b95945050505050565b600082825160016121659190613679565b61217090600261390d565b1161217a57600080fd5b8360005b846001146122e3576121916002866136c2565b6001036122305760028482815181106121ac576121ac6136ea565b6020026020010151836040516020016121cf929190918252602082015260400190565b60408051601f19818403018152908290526121e99161378f565b602060405180830381855afa158015612206573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122299190613556565b91506122c4565b600282858381518110612245576122456136ea565b6020026020010151604051602001612267929190918252602082015260400190565b60408051601f19818403018152908290526122819161378f565b602060405180830381855afa15801561229e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122c19190613556565b91505b6122cf6002866136d6565b9450806122db81613810565b91505061217e565b50949350505050565b80516060906000816001600160401b0381111561230b5761230b6131fe565b60405190808252806020026020018201604052801561235057816020015b60408051808201909152606080825260208201528152602001906001900390816123295790505b50905060005b828110156123d257604051806040016040528086838151811061237b5761237b6136ea565b602002602001015181526020016123aa87848151811061239d5761239d6136ea565b6020026020010151612d60565b8152508282815181106123bf576123bf6136ea565b6020908102919091010152600101612356565b509392505050565b805160609060006123ec82600261365a565b6001600160401b03811115612403576124036131fe565b6040519080825280601f01601f19166020018201604052801561242d576020820181803683370190505b5090506000805b838110156124ea5785818151811061244e5761244e6136ea565b6020910101516001600160f81b03198116925060041c60ff60f41b168361247683600261365a565b81518110612486576124866136ea565b60200101906001600160f81b031916908160001a905350600f60f81b8216836124b083600261365a565b6124bb906001613679565b815181106124cb576124cb6136ea565b60200101906001600160f81b031916908160001a905350600101612434565b5090949350505050565b606060208260000151106125105761250b82612028565b611f72565b611f7282612d73565b6060611f726125388360200151600081518110611215576112156136ea565b6123da565b60608251821061255c5750604080516020810190915260008152611f72565b61039d838384865161256e9190613647565b612d89565b6000806000835185511061258857835161258b565b84515b90505b80821080156125e257508382815181106125aa576125aa6136ea565b602001015160f81c60f81b6001600160f81b0319168583815181106125d1576125d16136ea565b01602001516001600160f81b031916145b156123d25781600101915061258e565b60008060008084600001511161261a5760405162461bcd60e51b81526004016101e090613919565b6020840151805160001a607f811161263f576000600160009450945094505050612cae565b60b7811161279c576000612654608083613647565b9050808760000151116126d45760405162461bcd60e51b815260206004820152604e602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127015750600160ff1b6001600160f81b0319821610155b6127895760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612cae915050565b60bf81116129dd5760006127b160b783613647565b9050808760000151116128345760405162461bcd60e51b8152602060048201526051602482015260008051602061398a83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b03191660008190036128bb5760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c6037811161293e5760405162461bcd60e51b8152602060048201526048602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b6129488184613679565b8951116129c05760405162461bcd60e51b815260206004820152604c602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b6129cb836001613679565b9750955060009450612cae9350505050565b60f78111612a7f5760006129f260c083613647565b905080876000015111612a6e5760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612cae915050565b6000612a8c60f783613647565b905080876000015111612b0b5760405162461bcd60e51b815260206004820152604d602482015260008051602061398a83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612b905760405162461bcd60e51b8152602060048201526048602482015260008051602061398a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612c115760405162461bcd60e51b8152602060048201526046602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612c1b8184613679565b895111612c915760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612c9c836001613679565b9750955060019450612cae9350505050565b9193909250565b6000611f7282612eca565b60606000826001600160401b03811115612cdc57612cdc6131fe565b6040519080825280601f01601f191660200182016040528015612d06576020820181803683370190505b50905082600003612d1857905061039d565b6000612d248587613679565b90506020820160005b85811015612d45578281015182820152602001612d2d565b85811115612d54576000868301525b50919695505050505050565b6060611f72612d6e83612fcd565b611cdf565b6060611f72826020015160008460000151612cc0565b60608182601f011015612dcf5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612e125760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612e595760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612e7857604051915060008252602082016040526122e3565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612eb1578051835260209283019201612e99565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612f215760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000612f2f856125f2565b919450925090506000816001811115612f4a57612f4a613039565b14612f975760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000838660200151612fa99190613679565b80519091506020841015612fc35760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130025760405162461bcd60e51b81526004016101e090613919565b50604080518082019091528151815260209182019181019190915290565b60006020828403121561303257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061306357613063613039565b91905290565b803563ffffffff8116811461307d57600080fd5b919050565b6001600160a01b03811681146108d457600080fd5b80356001600160401b038116811461307d57600080fd5b60008060008060008060c087890312156130c757600080fd5b6130d087613069565b955060208701356130e081613082565b945060408701356130f081613082565b93506060870135925061310560808801613097565b915061311360a08801613097565b90509295509295509295565b602081016002831061306357613063613039565b60008060006060848603121561314857600080fd5b61315184613069565b9250602084013561316181613082565b929592945050506040919091013590565b60008083601f84011261318457600080fd5b5081356001600160401b0381111561319b57600080fd5b6020830191508360208285010111156131b357600080fd5b9250929050565b60008083601f8401126131cc57600080fd5b5081356001600160401b038111156131e357600080fd5b6020830191508360208260051b85010111156131b357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561323c5761323c6131fe565b604052919050565b600082601f83011261325557600080fd5b81356001600160401b0381111561326e5761326e6131fe565b613281601f8201601f1916602001613214565b81815284602083860101111561329657600080fd5b816020850160208301376000918101602001919091529392505050565b6000608082840312156132c557600080fd5b50919050565b6000806000806000806000806000806101408b8d0312156132eb57600080fd5b8a356001600160401b038082111561330257600080fd5b61330e8e838f01613172565b909c509a5060208d013591508082111561332757600080fd5b6133338e838f016131ba565b909a50985060408d0135975060608d013591508082111561335357600080fd5b61335f8e838f016131ba565b909750955060808d013591508082111561337857600080fd5b506133858d828e01613244565b93505060a08b0135915061339c8c60c08d016132b3565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b60006020828403121561340157600080fd5b61039d82613069565b6080810163ffffffff61341c84613069565b168252602083013561342d81613082565b6001600160a01b03908116602084015260408401359061344c82613082565b166040830152606092830135929091019190915290565b60005b8381101561347e578181015183820152602001613466565b50506000910152565b6000815180845261349f816020860160208601613463565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526134f160a0820187613487565b60408401959095525050606001529392505050565b6000806040838503121561351957600080fd5b61352283613097565b915061353060208401613097565b90509250929050565b60006020828403121561354b57600080fd5b815161039d81613082565b60006020828403121561356857600080fd5b5051919050565b60006001600160401b0380841115613589576135896131fe565b8360051b602061359a818301613214565b8681529185019181810190368411156135b257600080fd5b865b848110156135e6578035868111156135cc5760008081fd5b6135d836828b01613244565b8452509183019183016135b4565b50979650505050505050565b60006020828403121561360457600080fd5b813561039d81613082565b60006020828403121561362157600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611f7257611f72613631565b600081600019048311821515161561367457613674613631565b500290565b80820180821115611f7257611f72613631565b6001600160401b0382811682821603908082111561202157612021613631565b634e487b7160e01b600052601260045260246000fd5b6000826136d1576136d16136ac565b500690565b6000826136e5576136e56136ac565b500490565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561376c57845183529383019391830191600101613750565b505084810360a08601526137808187613487565b9b9a5050505050505050505050565b600082516137a1818460208701613463565b9190910192915050565b6000602082840312156137bd57600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff8316806137e8576137e86136ac565b8060ff84160691505092915050565b60ff8281168282160390811115611f7257611f72613631565b60006001820161382257613822613631565b5060010190565b600181815b8085111561386457816000190482111561384a5761384a613631565b8085161561385757918102915b93841c939080029061382e565b509250929050565b60008261387b57506001611f72565b8161388857506000611f72565b816001811461389e57600281146138a8576138c4565b6001915050611f72565b60ff8411156138b9576138b9613631565b50506001821b611f72565b5060208310610133831016604e8410600b84101617156138e7575081810a611f72565b6138f18383613829565b806000190482111561390557613905613631565b029392505050565b600061039d838361386c565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220602421baf00893da0a1ad83f848fb9ec680486abe80b75375eaf01610b6fd37564736f6c63430008100033", + "sourceMap": "843:386:122:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;837:960:124;;;;;;:::i;:::-;;:::i;:::-;;;1892:25:145;;;1880:2;1865:18;837:960:124;1746:177:145;723:59:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1888:644:124:-;;;;;;:::i;:::-;;:::i;1533:1728:123:-;;;;;;:::i;:::-;;:::i;:::-;;917:33:122;;949:1;917:33;;;;;6140:4:145;6128:17;;;6110:36;;6098:2;6083:18;917:33:122;5968:184:145;837:960:124;1056:7;1075:32;1122:73;;;;;;;;1135:14;1122:73;;;;;;1151:14;-1:-1:-1;;;;;1122:73:124;;;;;1167:16;-1:-1:-1;;;;;1122:73:124;;;;;1185:9;1122:73;;;1075:120;;1205:22;1251:12;1240:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1240:24:124;;;;;;;;;1230:35;;1240:24;1230:35;;;;;-1:-1:-1;1313:29:124;1280;;;;:13;:29;;;;;;;;;:62;;;;;;;:::i;:::-;;1276:141;;1365:41;;-1:-1:-1;;;1365:41:124;;;;;1892:25:145;;;1865:18;;1365:41:124;;;;;;;;1276:141;1426:29;;;;:13;:29;;;;;:61;;-1:-1:-1;;1426:61:124;1458:29;1426:61;;;-1:-1:-1;;;;;1589:21:124;;;;;;;1585:97;;;1633:38;;-1:-1:-1;;;1633:38:124;;-1:-1:-1;;;;;6937:15:145;;;1633:38:124;;;6919:34:145;6989:15;;6969:18;;;6962:43;6855:18;;1633:38:124;6712:299:145;1585:97:124;1735:8;-1:-1:-1;;;;;1697:61:124;1723:10;-1:-1:-1;;;;;1697:61:124;1707:14;1697:61;1745:12;1697:61;;;;;;:::i;:::-;;;;;;;;1776:14;837:960;-1:-1:-1;;;;;;;;837:960:124:o;1888:644::-;2009:7;2032:32;2079:67;;;;;;;;2092:14;2079:67;;;;;;2108:14;-1:-1:-1;;;;;2079:67:124;;;;;2124:10;-1:-1:-1;;;;;2079:67:124;;;;;2136:9;2079:67;;;2032:114;;2156:22;2202:12;2191:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2191:24:124;;;;;;;;;2181:35;;2191:24;2181:35;;;;;-1:-1:-1;2264:30:124;2231:29;;;;:13;:29;;;;;;;;;:63;;;;;;;:::i;:::-;;2227:138;;2317:37;;-1:-1:-1;;;2317:37:124;;;;;1892:25:145;;;1865:18;;2317:37:124;1746:177:145;2227:138:124;2406:30;2374:29;;;:13;:29;;;;;;;:62;;-1:-1:-1;;2374:62:124;;;2452:41;2374:29;;2452:41;;;;2480:12;;2452:41;:::i;:::-;;;;;;;;2511:14;-1:-1:-1;;1888:644:124;;;;;;:::o;1533:1728:123:-;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:123;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:123;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:123;;9326:2:145;2243:115:123;;;9308:21:145;9365:2;9345:18;;;9338:30;9404:25;9384:18;;;9377:53;9447:18;;2243:115:123;9124:347:145;2243:115:123;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:123;-1:-1:-1;2460:60:123;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:123;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:123;;;;;;;;9899:23:145;;;;2563:56:123;;;9881:42:145;9854:18;;2563:56:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:123;;-1:-1:-1;;;;;10375:31:145;;2563:73:123;;;10357:50:145;-1:-1:-1;;;;;2563:64:123;;;;;;;10330:18:145;;2563:73:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:123;2646:58;;;;-1:-1:-1;;;2646:58:123;;10809:2:145;2646:58:123;;;10791:21:145;10848:2;10828:18;;;10821:30;-1:-1:-1;;;10867:18:145;;;10860:51;10928:18;;2646:58:123;10607:345:145;2646:58:123;2714:12;2741:84;2764:12;2778:17;;2741:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2797:10:123;;-1:-1:-1;2809:7:123;;-1:-1:-1;2818:6:123;;-1:-1:-1;2741:22:123;:84::i;:::-;2714:111;;2843:7;2835:47;;;;-1:-1:-1;;;2835:47:123;;11159:2:145;2835:47:123;;;11141:21:145;11198:2;11178:18;;;11171:30;11237:29;11217:18;;;11210:57;11284:18;;2835:47:123;10957:351:145;2835:47:123;2894:28;;2950:211;;2985:12;;2950:211;:::i;:::-;3011:12;3037:17;3068:8;3090:12;:26;;;;;;;;;;:::i;:::-;3130:12;:21;;;2950;:211::i;:::-;2893:268;;;;3172:82;3181:14;3197:12;3211:10;3223:6;3231:11;3244:9;3172:8;:82::i;:::-;1837:1424;;;;;;;;1533:1728;;;;;;;;;;:::o;3347:307::-;3505:1;3455:15;;:37;;-1:-1:-1;;;3455:37:123;;9911:10:145;9899:23;;3455:37:123;;;9881:42:145;-1:-1:-1;;;;;3455:15:123;;;;:28;;9854:18:145;;3455:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3447:60:123;;3426:119;;;;-1:-1:-1;;;3426:119:123;;12706:2:145;3426:119:123;;;12688:21:145;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:145;;;12757:54;12828:18;;3426:119:123;12504:348:145;3426:119:123;3563:15;;:37;;-1:-1:-1;;;3563:37:123;;9911:10:145;9899:23;;3563:37:123;;;9881:42:145;-1:-1:-1;;;;;3563:15:123;;;;:28;;9854:18:145;;3563:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:48:123;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3555:92;;;;-1:-1:-1;;;3555:92:123;;13341:2:145;3555:92:123;;;13323:21:145;13380:2;13360:18;;;13353:30;13419:31;13399:18;;;13392:59;13468:18;;3555:92:123;13139:353:145;3555:92:123;3347:307;:::o;3715:137::-;3790:15;;:31;;-1:-1:-1;;;3790:31:123;;9911:10:145;9899:23;;3790:31:123;;;9881:42:145;-1:-1:-1;;;;;3790:15:123;;;;:22;;9854:18:145;;3790:31:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3789:32;3781:64;;;;-1:-1:-1;;;3781:64:123;;13699:2:145;3781:64:123;;;13681:21:145;13738:2;13718:18;;;13711:30;-1:-1:-1;;;13757:18:145;;;13750:49;13816:18;;3781:64:123;13497:343:145;3922:620:123;4087:1;4037:15;;:37;;-1:-1:-1;;;4037:37:123;;9911:10:145;9899:23;;4037:37:123;;;9881:42:145;-1:-1:-1;;;;;4037:15:123;;;;:28;;9854:18:145;;4037:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4029:60:123;;4008:119;;;;-1:-1:-1;;;4008:119:123;;12706:2:145;4008:119:123;;;12688:21:145;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:145;;;12757:54;12828:18;;4008:119:123;12504:348:145;4008:119:123;4158:15;;:37;;-1:-1:-1;;;4158:37:123;;9911:10:145;9899:23;;4158:37:123;;;9881:42:145;-1:-1:-1;;;;;4158:15:123;;;;:28;;9854:18:145;;4158:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4158:54:123;;-1:-1:-1;;;;;10375:31:145;;4158:54:123;;;10357:50:145;-1:-1:-1;;;;;4158:48:123;;;;;;;10330:18:145;;4158:54:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4216:1;4158:59;4137:136;;;;-1:-1:-1;;;4137:136:123;;14236:2:145;4137:136:123;;;14218:21:145;14275:2;14255:18;;;14248:30;14314:32;14294:18;;;14287:60;14364:18;;4137:136:123;14034:354:145;4137:136:123;4283:19;4335:15;;:37;;-1:-1:-1;;;4335:37:123;;9911:10:145;9899:23;;4335:37:123;;;9881:42:145;-1:-1:-1;;;;;4335:15:123;;;;:28;;9854:18:145;;4335:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4335:54:123;;-1:-1:-1;;;;;10375:31:145;;4335:54:123;;;10357:50:145;-1:-1:-1;;;;;4335:48:123;;;;;;;10330:18:145;;4335:54:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4317:72;;:15;:72;:::i;:::-;4283:106;;4435:15;;;;;;;;-1:-1:-1;;;;;4435:15:123;-1:-1:-1;;;;;4435:38:123;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4420:11;:55;;4399:136;;;;-1:-1:-1;;;4399:136:123;;14860:2:145;4399:136:123;;;14842:21:145;14899:2;14879:18;;;14872:30;14938:34;14918:18;;;14911:62;-1:-1:-1;;;14989:18:145;;;14982:32;15031:19;;4399:136:123;14658:398:145;4399:136:123;3998:544;3922:620;;:::o;3024:1184:109:-;3230:4;3246:13;3284:6;-1:-1:-1;;;;;3273:17:109;:7;-1:-1:-1;;;;;3273:17:109;;3269:845;;-1:-1:-1;3314:5:109;3341:14;3314:5;3349:6;3341:14;:::i;:::-;:20;;3358:3;3341:20;:::i;:::-;3333:28;;3269:845;;;304:4;3382:16;3392:6;3382:7;:16;:::i;:::-;-1:-1:-1;;;;;3382:45:109;;3378:736;;-1:-1:-1;3451:5:109;3478:14;3451:5;3486:6;3478:14;:::i;:::-;:18;;3495:1;3478:18;:::i;:::-;3470:26;-1:-1:-1;3554:34:109;304:4;-1:-1:-1;;;;;3554:34:109;;;:::i;:::-;3518:33;304:4;3518:5;:33;:::i;:::-;:70;;;;:::i;:::-;3510:78;-1:-1:-1;3610:14:109;3510:78;3618:6;3610:14;:::i;3378:736::-;3660:7;-1:-1:-1;;;;;3651:16:109;:6;-1:-1:-1;;;;;3651:16:109;;3647:467;;;-1:-1:-1;3691:5:109;3718:14;3691:5;3726:6;3718:14;:::i;:::-;:18;;3735:1;3718:18;:::i;:::-;3710:26;-1:-1:-1;3758:9:109;3710:26;3766:1;3758:9;:::i;:::-;:13;;3770:1;3758:13;:::i;:::-;3750:21;-1:-1:-1;3826:34:109;304:4;-1:-1:-1;;;;;3826:34:109;;;:::i;:::-;3793:30;236:8;3793:5;:30;:::i;:::-;:67;;;;:::i;:::-;3785:75;-1:-1:-1;3882:9:109;3785:75;3890:1;3882:9;:::i;:::-;:13;;3894:1;3882:13;:::i;3647:467::-;4060:43;;-1:-1:-1;;;4060:43:109;;16128:2:145;4060:43:109;;;16110:21:145;16167:2;16147:18;;;16140:30;16206:34;16186:18;;;16179:62;-1:-1:-1;;;16257:18:145;;;16250:31;16298:19;;4060:43:109;15926:397:145;3647:467:109;4130:71;4150:12;4164:5;4171:17;4190:10;4130:19;:71::i;:::-;4123:78;3024:1184;-1:-1:-1;;;;;;;3024:1184:109:o;431:2729:120:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:120;;-1:-1:-1;1486:14:120;-1:-1:-1;;;1514:25:120;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:120;;;1514:54;1510:236;;;-1:-1:-1;1593:1:120;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:120;;;1611:135;;-1:-1:-1;1665:1:120;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:120;;16662:2:145;1697:38:120;;;16644:21:145;16701:2;16681:18;;;16674:30;16740;16720:18;;;16713:58;16788:18;;1697:38:120;16460:352:145;1611:135:120;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:120;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:120;;17019:2:145;2278:58:120;;;17001:21:145;17058:2;17038:18;;;17031:30;-1:-1:-1;;;17077:18:145;;;17070:52;17139:18;;2278:58:120;16817:346:145;2278:58:120;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:120;;17370:2:145;2495:59:120;;;17352:21:145;17409:2;17389:18;;;17382:30;17448:25;17428:18;;;17421:53;17491:18;;2495:59:120;17168:347:145;2495:59:120;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:120;:14;-1:-1:-1;;;;;2777:30:120;;2769:83;;;;-1:-1:-1;;;2769:83:120;;17722:2:145;2769:83:120;;;17704:21:145;17761:2;17741:18;;;17734:30;17800:34;17780:18;;;17773:62;-1:-1:-1;;;17851:18:145;;;17844:38;17899:19;;2769:83:120;17520:404:145;2769:83:120;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:120;;18131:2:145;2990:74:120;;;18113:21:145;18170:2;18150:18;;;18143:30;18209:32;18189:18;;;18182:60;18259:18;;2990:74:120;17929:354:145;2990:74:120;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:120;;-1:-1:-1;;;;;;;;;;;431:2729:120;;;;;;;;;:::o;4667:1397:123:-;4913:12;4935:17;4913:12;-1:-1:-1;;;5105:15:123;5138:27;;;;:13;:27;:::i;:::-;5183;;;;;;;;:::i;:::-;5228:7;5253:12;5283:10;5003:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5003:304:123;;;;;;;;;;;;;;-1:-1:-1;;;;;5003:304:123;-1:-1:-1;;;;;;5003:304:123;;;;;;;;;;;-1:-1:-1;5339:29:123;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5339:34:123;5374:11;5339:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5451:11:123;;5321:65;;-1:-1:-1;5321:65:123;-1:-1:-1;5407:22:123;;-1:-1:-1;5466:2:123;5451:17;5447:178;;5485:12;5512:4;5501:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5561:53:123;-1:-1:-1;;;5561:53:123;;-1:-1:-1;;5447:178:123;5639:7;:28;;;;;5650:17;5639:28;5635:215;;;5683:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5683:64:123;5714:33;5683:64;;;5635:215;;;5778:28;;;;5809:30;5778:28;;;;;;;;:61;;-1:-1:-1;;5778:61:123;;;;;;5635:215;5956:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5865:192:123;5915:27;;;;:13;:27;:::i;:::-;5865:192;;5886:15;5865:192;5997:29;;;;;;;;:::i;:::-;5865:192;;;-1:-1:-1;;;;;20179:32:145;;;20161:51;;20255:14;;20248:22;20243:2;20228:18;;20221:50;20134:18;5865:192:123;;;;;;;4903:1161;;;4667:1397;;;;;;:::o;1770:281:109:-;1914:4;1934:26;1963:38;1981:4;1987:5;1994:6;1963:17;:38::i;:::-;2018:26;;;;1770:281;-1:-1:-1;;;;;1770:281:109:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;20484:2:145;3101:49:77;;;20466:21:145;20523:2;20503:18;;;20496:30;-1:-1:-1;;;20542:18:145;;;20535:51;20603:18;;3101:49:77;20282:345:145;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;20761:19:145;;20805:2;20796:12;;20632:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;21021:2:145;3636:134:77;;;21003:21:145;21060:2;21040:18;;;21033:30;21099:34;21079:18;;;21072:62;-1:-1:-1;;;21150:18:145;;;21143:44;21204:19;;3636:134:77;20819:410:145;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;20761:19:145;;;20805:2;20796:12;;20632:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;21436:2:145;3893:176:77;;;21418:21:145;21475:2;21455:18;;;21448:30;21514:31;21494:18;;;21487:59;21563:18;;3893:176:77;21234:353:145;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;20761:19:145;;;20805:2;20796:12;;20632:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;21794:2:145;4222:186:77;;;21776:21:145;21833:2;21813:18;;;21806:30;21872:34;21852:18;;;21845:62;-1:-1:-1;;;21923:18:145;;;21916:37;21970:19;;4222:186:77;21592:403:145;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;22202:2:145;4509:156:77;;;22184:21:145;22241:2;22221:18;;;22214:30;22280:34;22260:18;;;22253:62;-1:-1:-1;;;22331:18:145;;;22324:36;22377:19;;4509:156:77;22000:402:145;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;22609:2:145;5384:158:77;;;22591:21:145;22648:2;22628:18;;;22621:30;22687:34;22667:18;;;22660:62;22758:29;22738:18;;;22731:57;22805:19;;5384:158:77;22407:423:145;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;23037:2:145;5626:162:77;;;23019:21:145;23076:2;23056:18;;;23049:30;23115:34;23095:18;;;23088:62;23186:28;23166:18;;;23159:56;23232:19;;5626:162:77;22835:422:145;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;23782:2:145;7009:171:77;;;23764:21:145;23821:2;23801:18;;;23794:30;23860:34;23840:18;;;23833:62;23931:28;23911:18;;;23904:56;23977:19;;7009:171:77;23580:422:145;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;24209:2:145;7843:185:77;;;24191:21:145;24248:2;24228:18;;;24221:30;24287:34;24267:18;;;24260:62;24358:31;24338:18;;;24331:59;24407:19;;7843:185:77;24007:425:145;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;24639:2:145;8463:156:77;;;24621:21:145;24678:2;24658:18;;;24651:30;24717:34;24697:18;;;24690:62;24788:27;24768:18;;;24761:55;24833:19;;8463:156:77;24437:421:145;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;25065:2:145;8703:160:77;;;25047:21:145;25104:2;25084:18;;;25077:30;25143:34;25123:18;;;25116:62;25214:26;25194:18;;;25187:54;25258:19;;8703:160:77;24863:420:145;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;25490:2:145;9439:60:77;;;25472:21:145;25529:2;25509:18;;;25502:30;25568:34;25548:18;;;25541:62;-1:-1:-1;;;25619:18:145;;;25612:48;25677:19;;9439:60:77;25288:414:145;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;25909:2:145;9556:50:77;;;25891:21:145;25948:2;25928:18;;;25921:30;25987:34;25967:18;;;25960:62;-1:-1:-1;;;26038:18:145;;;26031:38;26086:19;;9556:50:77;25707:404:145;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;26458:2:145;9641:47:77;;;26440:21:145;26497:2;26477:18;;;26470:30;26536:34;26516:18;;;26509:62;-1:-1:-1;;;26587:18:145;;;26580:35;26632:19;;9641:47:77;26256:401:145;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;26864:2:145;2161:136:75;;;26846:21:145;26903:2;26883:18;;;26876:30;26942:34;26922:18;;;26915:62;27013:26;26993:18;;;26986:54;27057:19;;2161:136:75;26662:420:145;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;27289:2:145;2308:134:75;;;27271:21:145;27328:2;27308:18;;;27301:30;27367:34;27347:18;;;27340:62;-1:-1:-1;;;27418:18:145;;;27411:48;27476:19;;2308:134:75;27087:414:145;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;27708:2:145;12579:55:75;;;27690:21:145;27747:2;27727:18;;;27720:30;27786:28;27766:18;;;27759:56;27832:18;;12579:55:75;27506:350:145;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:120:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:120;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:120;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:120;3166:384;-1:-1:-1;;3166:384:120:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;28063:2:145;4505:137:75;;;28045:21:145;28102:2;28082:18;;;28075:30;28141:34;28121:18;;;28114:62;28212:27;28192:18;;;28185:55;28257:19;;4505:137:75;27861:421:145;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;28489:2:145;4653:136:75;;;28471:21:145;28528:2;28508:18;;;28501:30;28567:34;28547:18;;;28540:62;-1:-1:-1;;;28618:18:145;;;28611:50;28678:19;;4653:136:75;28287:416:145;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1213:551:109:-;1341:7;1399:5;1378:6;:13;1394:1;1378:17;;;;:::i;:::-;1372:24;;:1;:24;:::i;:::-;:32;1364:41;;;;;;1431:4;1415:13;1468:268;1475:5;1484:1;1475:10;1468:268;;1505:9;1513:1;1505:5;:9;:::i;:::-;1518:1;1505:14;1501:184;;1547:38;1567:6;1574:1;1567:9;;;;;;;;:::i;:::-;;;;;;;1578:5;1554:30;;;;;;;;30239:19:145;;;30283:2;30274:12;;30267:28;30320:2;30311:12;;30082:247;1554:30:109;;;;-1:-1:-1;;1554:30:109;;;;;;;;;;1547:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1539:46;;1501:184;;;1632:38;1652:5;1659:6;1666:1;1659:9;;;;;;;;:::i;:::-;;;;;;;1639:30;;;;;;;;30239:19:145;;;30283:2;30274:12;;30267:28;30320:2;30311:12;;30082:247;1639:30:109;;;;-1:-1:-1;;1639:30:109;;;;;;;;;;1632:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1624:46;;1501:184;1698:10;1707:1;1698:10;;:::i;:::-;;-1:-1:-1;1722:3:109;;;;:::i;:::-;;;;1468:268;;;-1:-1:-1;1752:5:109;1213:551;-1:-1:-1;;;;1213:551:109:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;31019:2:145;6699:156:75;;;31001:21:145;31058:2;31038:18;;;31031:30;-1:-1:-1;;;;;;;;;;;31077:18:145;;;31070:62;31168:34;31148:18;;;31141:62;-1:-1:-1;;;31219:19:145;;;31212:45;31274:19;;6699:156:75;30817:482:145;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;31506:2:145;7025:177:75;;;31488:21:145;31545:2;31525:18;;;31518:30;31584:34;31564:18;;;31557:62;31655:34;31635:18;;;31628:62;-1:-1:-1;;;31706:19:145;;;31699:44;31760:19;;7025:177:75;31304:481:145;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;31992:2:145;7387:164:75;;;31974:21:145;32031:2;32011:18;;;32004:30;-1:-1:-1;;;;;;;;;;;32050:18:145;;;32043:62;32141:34;32121:18;;;32114:62;-1:-1:-1;;;32192:19:145;;;32185:48;32250:19;;7387:164:75;31790:485:145;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;32482:2:145;7721:159:75;;;32464:21:145;32521:2;32501:18;;;32494:30;-1:-1:-1;;;;;;;;;;;32540:18:145;;;32533:62;32631:34;32611:18;;;32604:62;-1:-1:-1;;;32682:19:145;;;32675:41;32733:19;;7721:159:75;32280:478:145;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;32965:2:145;8042:142:75;;;32947:21:145;33004:2;32984:18;;;32977:30;-1:-1:-1;;;;;;;;;;;33023:18:145;;;33016:62;33114:34;33094:18;;;33087:62;-1:-1:-1;;;33165:19:145;;;33158:39;33214:19;;8042:142:75;32763:476:145;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;33446:2:145;8199:168:75;;;33428:21:145;33485:2;33465:18;;;33458:30;-1:-1:-1;;;;;;;;;;;33504:18:145;;;33497:62;33595:34;33575:18;;;33568:62;-1:-1:-1;;;33646:19:145;;;33639:43;33699:19;;8199:168:75;33244:480:145;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;33931:2:145;8617:153:75;;;33913:21:145;33970:2;33950:18;;;33943:30;-1:-1:-1;;;;;;;;;;;33989:18:145;;;33982:62;34080:34;34060:18;;;34053:62;-1:-1:-1;;;34131:19:145;;;34124:41;34182:19;;8617:153:75;33729:478:145;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;34414:2:145;8935:161:75;;;34396:21:145;34453:2;34433:18;;;34426:30;-1:-1:-1;;;;;;;;;;;34472:18:145;;;34465:62;34563:34;34543:18;;;34536:62;-1:-1:-1;;;34614:19:145;;;34607:44;34668:19;;8935:161:75;34212:481:145;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;34900:2:145;9266:157:75;;;34882:21:145;34939:2;34919:18;;;34912:30;-1:-1:-1;;;;;;;;;;;34958:18:145;;;34951:62;35049:34;35029:18;;;35022:62;-1:-1:-1;;;35100:19:145;;;35093:39;35149:19;;9266:157:75;34698:476:145;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;35381:2:145;9588:141:75;;;35363:21:145;35420:2;35400:18;;;35393:30;-1:-1:-1;;;;;;;;;;;35439:18:145;;;35432:62;35530:34;35510:18;;;35503:62;-1:-1:-1;;;35581:19:145;;;35574:37;35628:19;;9588:141:75;35179:474:145;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;35860:2:145;9744:168:75;;;35842:21:145;35899:2;35879:18;;;35872:30;-1:-1:-1;;;;;;;;;;;35918:18:145;;;35911:62;36009:34;35989:18;;;35982:62;-1:-1:-1;;;36060:19:145;;;36053:41;36111:19;;9744:168:75;35658:478:145;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;36343:2:145;858:50:74;;;36325:21:145;36382:2;36362:18;;;36355:30;-1:-1:-1;;;36401:18:145;;;36394:44;36455:18;;858:50:74;36141:338:145;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;36343:2:145;922:53:74;;;36325:21:145;36382:2;36362:18;;;36355:30;-1:-1:-1;;;36401:18:145;;;36394:44;36455:18;;922:53:74;36141:338:145;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;36686:2:145;989:63:74;;;36668:21:145;36725:2;36705:18;;;36698:30;-1:-1:-1;;;36744:18:145;;;36737:47;36801:18;;989:63:74;36484:341:145;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;37032:2:145;11438:55:75;;;37014:21:145;37071:2;37051:18;;;37044:30;37110:28;37090:18;;;37083:56;37156:18;;11438:55:75;36830:350:145;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;37032:2:145;11598:72:75;;;37014:21:145;37071:2;37051:18;;;37044:30;37110:28;37090:18;;;37083:56;37156:18;;11598:72:75;36830:350:145;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:145:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:145;;14:180;-1:-1:-1;14:180:145:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:163::-;653:20;;713:10;702:22;;692:33;;682:61;;739:1;736;729:12;682:61;586:163;;;:::o;754:131::-;-1:-1:-1;;;;;829:31:145;;819:42;;809:70;;875:1;872;865:12;890:171;957:20;;-1:-1:-1;;;;;1006:30:145;;996:41;;986:69;;1051:1;1048;1041:12;1066:675;1167:6;1175;1183;1191;1199;1207;1260:3;1248:9;1239:7;1235:23;1231:33;1228:53;;;1277:1;1274;1267:12;1228:53;1300:28;1318:9;1300:28;:::i;:::-;1290:38;;1378:2;1367:9;1363:18;1350:32;1391:31;1416:5;1391:31;:::i;:::-;1441:5;-1:-1:-1;1498:2:145;1483:18;;1470:32;1511:33;1470:32;1511:33;:::i;:::-;1563:7;-1:-1:-1;1617:2:145;1602:18;;1589:32;;-1:-1:-1;1640:38:145;1673:3;1658:19;;1640:38;:::i;:::-;1630:48;;1697:38;1730:3;1719:9;1715:19;1697:38;:::i;:::-;1687:48;;1066:675;;;;;;;;:::o;1928:255::-;2084:2;2069:18;;2117:1;2106:13;;2096:47;;2123:18;;:::i;2188:387::-;2264:6;2272;2280;2333:2;2321:9;2312:7;2308:23;2304:32;2301:52;;;2349:1;2346;2339:12;2301:52;2372:28;2390:9;2372:28;:::i;:::-;2362:38;;2450:2;2439:9;2435:18;2422:32;2463:31;2488:5;2463:31;:::i;:::-;2188:387;;2513:5;;-1:-1:-1;;;2565:2:145;2550:18;;;;2537:32;;2188:387::o;2580:347::-;2631:8;2641:6;2695:3;2688:4;2680:6;2676:17;2672:27;2662:55;;2713:1;2710;2703:12;2662:55;-1:-1:-1;2736:20:145;;-1:-1:-1;;;;;2768:30:145;;2765:50;;;2811:1;2808;2801:12;2765:50;2848:4;2840:6;2836:17;2824:29;;2900:3;2893:4;2884:6;2876;2872:19;2868:30;2865:39;2862:59;;;2917:1;2914;2907:12;2862:59;2580:347;;;;;:::o;2932:367::-;2995:8;3005:6;3059:3;3052:4;3044:6;3040:17;3036:27;3026:55;;3077:1;3074;3067:12;3026:55;-1:-1:-1;3100:20:145;;-1:-1:-1;;;;;3132:30:145;;3129:50;;;3175:1;3172;3165:12;3129:50;3212:4;3204:6;3200:17;3188:29;;3272:3;3265:4;3255:6;3252:1;3248:14;3240:6;3236:27;3232:38;3229:47;3226:67;;;3289:1;3286;3279:12;3304:127;3365:10;3360:3;3356:20;3353:1;3346:31;3396:4;3393:1;3386:15;3420:4;3417:1;3410:15;3436:275;3507:2;3501:9;3572:2;3553:13;;-1:-1:-1;;3549:27:145;3537:40;;-1:-1:-1;;;;;3592:34:145;;3628:22;;;3589:62;3586:88;;;3654:18;;:::i;:::-;3690:2;3683:22;3436:275;;-1:-1:-1;3436:275:145:o;3716:530::-;3758:5;3811:3;3804:4;3796:6;3792:17;3788:27;3778:55;;3829:1;3826;3819:12;3778:55;3865:6;3852:20;-1:-1:-1;;;;;3887:2:145;3884:26;3881:52;;;3913:18;;:::i;:::-;3957:55;4000:2;3981:13;;-1:-1:-1;;3977:27:145;4006:4;3973:38;3957:55;:::i;:::-;4037:2;4028:7;4021:19;4083:3;4076:4;4071:2;4063:6;4059:15;4055:26;4052:35;4049:55;;;4100:1;4097;4090:12;4049:55;4165:2;4158:4;4150:6;4146:17;4139:4;4130:7;4126:18;4113:55;4213:1;4188:16;;;4206:4;4184:27;4177:38;;;;4192:7;3716:530;-1:-1:-1;;;3716:530:145:o;4251:161::-;4316:5;4361:3;4352:6;4347:3;4343:16;4339:26;4336:46;;;4378:1;4375;4368:12;4336:46;-1:-1:-1;4400:6:145;4251:161;-1:-1:-1;4251:161:145:o;4417:1546::-;4648:6;4656;4664;4672;4680;4688;4696;4704;4712;4720;4773:3;4761:9;4752:7;4748:23;4744:33;4741:53;;;4790:1;4787;4780:12;4741:53;4830:9;4817:23;-1:-1:-1;;;;;4900:2:145;4892:6;4889:14;4886:34;;;4916:1;4913;4906:12;4886:34;4955:58;5005:7;4996:6;4985:9;4981:22;4955:58;:::i;:::-;5032:8;;-1:-1:-1;4929:84:145;-1:-1:-1;5120:2:145;5105:18;;5092:32;;-1:-1:-1;5136:16:145;;;5133:36;;;5165:1;5162;5155:12;5133:36;5204:72;5268:7;5257:8;5246:9;5242:24;5204:72;:::i;:::-;5295:8;;-1:-1:-1;5178:98:145;-1:-1:-1;5377:2:145;5362:18;;5349:32;;-1:-1:-1;5434:2:145;5419:18;;5406:32;;-1:-1:-1;5450:16:145;;;5447:36;;;5479:1;5476;5469:12;5447:36;5518:72;5582:7;5571:8;5560:9;5556:24;5518:72;:::i;:::-;5609:8;;-1:-1:-1;5492:98:145;-1:-1:-1;5697:3:145;5682:19;;5669:33;;-1:-1:-1;5714:16:145;;;5711:36;;;5743:1;5740;5733:12;5711:36;;5766:51;5809:7;5798:8;5787:9;5783:24;5766:51;:::i;:::-;5756:61;;;5864:3;5853:9;5849:19;5836:33;5826:43;;5888:69;5949:7;5943:3;5932:9;5928:19;5888:69;:::i;:::-;5878:79;;4417:1546;;;;;;;;;;;;;:::o;6157:550::-;6388:13;;6403:10;6384:30;6366:49;;6462:4;6450:17;;;6444:24;-1:-1:-1;;;;;6544:21:145;;;6522:20;;;6515:51;;;;6626:4;6614:17;;;6608:24;6604:33;;;6582:20;;;6575:63;6694:4;6682:17;;;6676:24;6654:20;;;6647:54;;;;6353:3;6338:19;;6157:550::o;7016:184::-;7074:6;7127:2;7115:9;7106:7;7102:23;7098:32;7095:52;;;7143:1;7140;7133:12;7095:52;7166:28;7184:9;7166:28;:::i;7205:684::-;7403:3;7388:19;;7465:10;7438:25;7456:6;7438:25;:::i;:::-;7434:42;7423:9;7416:61;7524:4;7516:6;7512:17;7499:31;7539;7564:5;7539:31;:::i;:::-;-1:-1:-1;;;;;7646:14:145;;;7639:4;7624:20;;7617:44;7710:4;7698:17;;7685:31;;7725:33;7685:31;7725:33;:::i;:::-;7796:16;7789:4;7774:20;;7767:46;7876:4;7864:17;;;7851:31;7829:20;;;;7822:61;;;;7205:684;:::o;7894:250::-;7979:1;7989:113;8003:6;8000:1;7997:13;7989:113;;;8079:11;;;8073:18;8060:11;;;8053:39;8025:2;8018:10;7989:113;;;-1:-1:-1;;8136:1:145;8118:16;;8111:27;7894:250::o;8149:270::-;8190:3;8228:5;8222:12;8255:6;8250:3;8243:19;8271:76;8340:6;8333:4;8328:3;8324:14;8317:4;8310:5;8306:16;8271:76;:::i;:::-;8401:2;8380:15;-1:-1:-1;;8376:29:145;8367:39;;;;8408:4;8363:50;;8149:270;-1:-1:-1;;8149:270:145:o;8424:695::-;8683:3;8672:9;8665:22;8724:6;8718:3;8707:9;8703:19;8696:35;8782:6;8774;8768:3;8757:9;8753:19;8740:49;8839:1;8833:3;8824:6;8813:9;8809:22;8805:32;8798:43;8646:4;8900:2;8896:7;8891:2;8883:6;8879:15;8875:29;8864:9;8860:45;8967:3;8955:9;8951:2;8947:18;8943:28;8936:4;8925:9;8921:20;8914:58;8989:38;9022:3;9018:2;9014:12;9006:6;8989:38;:::i;:::-;9058:2;9043:18;;9036:34;;;;-1:-1:-1;;9101:2:145;9086:18;9079:34;8981:46;8424:695;-1:-1:-1;;;8424:695:145:o;9476:256::-;9542:6;9550;9603:2;9591:9;9582:7;9578:23;9574:32;9571:52;;;9619:1;9616;9609:12;9571:52;9642:28;9660:9;9642:28;:::i;:::-;9632:38;;9689:37;9722:2;9711:9;9707:18;9689:37;:::i;:::-;9679:47;;9476:256;;;;;:::o;9934:273::-;10026:6;10079:2;10067:9;10058:7;10054:23;10050:32;10047:52;;;10095:1;10092;10085:12;10047:52;10127:9;10121:16;10146:31;10171:5;10146:31;:::i;10418:184::-;10488:6;10541:2;10529:9;10520:7;10516:23;10512:32;10509:52;;;10557:1;10554;10547:12;10509:52;-1:-1:-1;10580:16:145;;10418:184;-1:-1:-1;10418:184:145:o;11313:934::-;11449:9;-1:-1:-1;;;;;11524:2:145;11516:6;11513:14;11510:40;;;11530:18;;:::i;:::-;11576:6;11573:1;11569:14;11602:4;11626:28;11650:2;11646;11642:11;11626:28;:::i;:::-;11688:19;;;11758:14;;;;11723:12;;;;11795:14;11784:26;;11781:46;;;11823:1;11820;11813:12;11781:46;11847:5;11861:353;11877:6;11872:3;11869:15;11861:353;;;11963:3;11950:17;11999:2;11986:11;11983:19;11980:109;;;12043:1;12072:2;12068;12061:14;11980:109;12114:57;12156:14;12142:11;12135:5;12131:23;12114:57;:::i;:::-;12102:70;;-1:-1:-1;12192:12:145;;;;11894;;11861:353;;;-1:-1:-1;12236:5:145;11313:934;-1:-1:-1;;;;;;;11313:934:145:o;12252:247::-;12311:6;12364:2;12352:9;12343:7;12339:23;12335:32;12332:52;;;12380:1;12377;12370:12;12332:52;12419:9;12406:23;12438:31;12463:5;12438:31;:::i;12857:277::-;12924:6;12977:2;12965:9;12956:7;12952:23;12948:32;12945:52;;;12993:1;12990;12983:12;12945:52;13025:9;13019:16;13078:5;13071:13;13064:21;13057:5;13054:32;13044:60;;13100:1;13097;13090:12;14393:127;14454:10;14449:3;14445:20;14442:1;14435:31;14485:4;14482:1;14475:15;14509:4;14506:1;14499:15;14525:128;14592:9;;;14613:11;;;14610:37;;;14627:18;;:::i;15061:168::-;15101:7;15167:1;15163;15159:6;15155:14;15152:1;15149:21;15144:1;15137:9;15130:17;15126:45;15123:71;;;15174:18;;:::i;:::-;-1:-1:-1;15214:9:145;;15061:168::o;15234:125::-;15299:9;;;15320:10;;;15317:36;;;15333:18;;:::i;15364:183::-;-1:-1:-1;;;;;15483:10:145;;;15471;;;15467:27;;15506:12;;;15503:38;;;15521:18;;:::i;15552:127::-;15613:10;15608:3;15604:20;15601:1;15594:31;15644:4;15641:1;15634:15;15668:4;15665:1;15658:15;15684:112;15716:1;15742;15732:35;;15747:18;;:::i;:::-;-1:-1:-1;15781:9:145;;15684:112::o;15801:120::-;15841:1;15867;15857:35;;15872:18;;:::i;:::-;-1:-1:-1;15906:9:145;;15801:120::o;16328:127::-;16389:10;16384:3;16380:20;16377:1;16370:31;16420:4;16417:1;16410:15;16444:4;16441:1;16434:15;18288:1113;18645:25;;;18739:10;18727:23;;18689:2;18707:18;;;18700:51;;;;-1:-1:-1;;;;;18787:32:145;;18782:2;18767:18;;18760:60;-1:-1:-1;;;;;18856:31:145;;18851:2;18836:18;;18829:59;18632:3;18919;18904:19;;18897:32;;;18978:13;;18617:19;;;19000:22;;;18584:4;;19080:15;;;;19053:3;19038:19;;;18584:4;19123:169;19137:6;19134:1;19131:13;19123:169;;;19198:13;;19186:26;;19267:15;;;;19232:12;;;;19159:1;19152:9;19123:169;;;19127:3;;19338:9;19333:3;19329:19;19323:3;19312:9;19308:19;19301:48;19366:29;19391:3;19383:6;19366:29;:::i;:::-;19358:37;18288:1113;-1:-1:-1;;;;;;;;;;;18288:1113:145:o;19406:287::-;19535:3;19573:6;19567:13;19589:66;19648:6;19643:3;19636:4;19628:6;19624:17;19589:66;:::i;:::-;19671:16;;;;;19406:287;-1:-1:-1;;19406:287:145:o;19698:290::-;19767:6;19820:2;19808:9;19799:7;19795:23;19791:32;19788:52;;;19836:1;19833;19826:12;19788:52;19862:16;;-1:-1:-1;;;;;;19907:32:145;;19897:43;;19887:71;;19954:1;19951;19944:12;23262:157;23292:1;23326:4;23323:1;23319:12;23350:3;23340:37;;23357:18;;:::i;:::-;23409:3;23402:4;23399:1;23395:12;23391:22;23386:27;;;23262:157;;;;:::o;23424:151::-;23514:4;23507:12;;;23493;;;23489:31;;23532:14;;23529:40;;;23549:18;;:::i;26116:135::-;26155:3;26176:17;;;26173:43;;26196:18;;:::i;:::-;-1:-1:-1;26243:1:145;26232:13;;26116:135::o;28708:422::-;28797:1;28840:5;28797:1;28854:270;28875:7;28865:8;28862:21;28854:270;;;28934:4;28930:1;28926:6;28922:17;28916:4;28913:27;28910:53;;;28943:18;;:::i;:::-;28993:7;28983:8;28979:22;28976:55;;;29013:16;;;;28976:55;29092:22;;;;29052:15;;;;28854:270;;;28858:3;28708:422;;;;;:::o;29135:806::-;29184:5;29214:8;29204:80;;-1:-1:-1;29255:1:145;29269:5;;29204:80;29303:4;29293:76;;-1:-1:-1;29340:1:145;29354:5;;29293:76;29385:4;29403:1;29398:59;;;;29471:1;29466:130;;;;29378:218;;29398:59;29428:1;29419:10;;29442:5;;;29466:130;29503:3;29493:8;29490:17;29487:43;;;29510:18;;:::i;:::-;-1:-1:-1;;29566:1:145;29552:16;;29581:5;;29378:218;;29680:2;29670:8;29667:16;29661:3;29655:4;29652:13;29648:36;29642:2;29632:8;29629:16;29624:2;29618:4;29615:12;29611:35;29608:77;29605:159;;;-1:-1:-1;29717:19:145;;;29749:5;;29605:159;29796:34;29821:8;29815:4;29796:34;:::i;:::-;29866:6;29862:1;29858:6;29854:19;29845:7;29842:32;29839:58;;;29877:18;;:::i;:::-;29915:20;;29135:806;-1:-1:-1;;;29135:806:145:o;29946:131::-;30006:5;30035:36;30062:8;30056:4;30035:36;:::i;30334:478::-;30536:2;30518:21;;;30575:2;30555:18;;;30548:30;30614:34;30609:2;30594:18;;30587:62;30685:34;30680:2;30665:18;;30658:62;-1:-1:-1;;;30751:3:145;30736:19;;30729:41;30802:3;30787:19;;30334:478::o", + "linkReferences": {} + }, + "methodIdentifiers": { + "VERSION()": "ffa1ad74", + "eventsPublished(bytes32)": "3cca331c", + "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": "bbe6d642", + "subscribe(uint32,address,address,bytes32,uint64,uint64)": "65138959", + "subscriptions(bytes32)": "94259c6c", + "unsubscribe(uint32,address,bytes32)": "97229719" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyRouter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathyPubSub\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"},\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"This allows an on-chain Publisher-Suscriber model to be used for events. Contracts can subscribe to events emitted from a source contract, and it will be relayed these events through the publisher. Before the events are relayed, they are verified using the Telepathy Light Client for proof of consensus on the source chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPubSub.sol\":\"TelepathyPubSub\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c\",\"urls\":[\"bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde\",\"dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_telepathyRouter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "endSlot", + "type": "uint64" + } + ], + "type": "error", + "name": "InvalidSlotRange" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "type": "error", + "name": "SubscriptionAlreadyActive" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "type": "error", + "name": "SubscriptionNotActive" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32", + "indexed": true + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address", + "indexed": false + }, + { + "internalType": "bool", + "name": "success", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "Publish", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "uint64", + "name": "startSlot", + "type": "uint64", + "indexed": true + }, + { + "internalType": "uint64", + "name": "endSlot", + "type": "uint64", + "indexed": true + }, + { + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple", + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false + } + ], + "type": "event", + "name": "Subscribe", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple", + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false + } + ], + "type": "event", + "name": "Unsubscribe", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "VERSION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "eventsPublished", + "outputs": [ + { + "internalType": "enum PublishStatus", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + }, + { + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple", + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "publishEvent" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "_startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "_endSlot", + "type": "uint64" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "subscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "subscriptions", + "outputs": [ + { + "internalType": "enum SubscriptionStatus", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "unsubscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": { + "details": "This function should be called for every subscriber that is subscribed to the event.", + "params": { + "logIndex": "The index of the event in our transaction.", + "receiptsRoot": "The receipts root which contains the event.", + "receiptsRootProof": "A merkle proof proving the receiptsRoot in the block header.", + "srcSlotTxSlotPack": "The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.", + "subscription": "The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).", + "txIndexRLPEncoded": "The index of our transaction inside the block RLP encoded." + } + }, + "subscribe(uint32,address,address,bytes32,uint64,uint64)": { + "details": "The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish." + }, + "unsubscribe(uint32,address,bytes32)": { + "details": "Only the original callbackAddress contract will be able to unsubscribe." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": { + "notice": "Publishes an event emit to a callback Subscriber, given an event proof." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/pubsub/TelepathyPubSub.sol": "TelepathyPubSub" + }, + "libraries": {} + }, + "sources": { + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", + "urls": [ + "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", + "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { + "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", + "urls": [ + "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", + "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { + "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", + "urls": [ + "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", + "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { + "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", + "urls": [ + "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", + "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { + "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", + "urls": [ + "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", + "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { + "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", + "urls": [ + "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", + "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", + "urls": [ + "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", + "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { + "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", + "urls": [ + "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", + "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { + "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", + "urls": [ + "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", + "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { + "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", + "urls": [ + "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", + "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", + "urls": [ + "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", + "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { + "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", + "urls": [ + "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", + "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { + "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", + "urls": [ + "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", + "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", + "urls": [ + "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", + "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { + "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", + "urls": [ + "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", + "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { + "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", + "urls": [ + "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", + "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/Bytes.sol": { + "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", + "urls": [ + "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", + "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { + "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", + "urls": [ + "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", + "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { + "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", + "urls": [ + "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", + "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { + "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", + "urls": [ + "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", + "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" + ], + "license": "MIT" + }, + "src/amb/SourceAMB.sol": { + "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "urls": [ + "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", + "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + ], + "license": null + }, + "src/amb/TargetAMB.sol": { + "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "urls": [ + "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", + "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + ], + "license": null + }, + "src/amb/TelepathyAccess.sol": { + "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", + "urls": [ + "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", + "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" + ], + "license": null + }, + "src/amb/TelepathyRouter.sol": { + "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", + "urls": [ + "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", + "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" + ], + "license": null + }, + "src/amb/TelepathyStorage.sol": { + "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", + "urls": [ + "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", + "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" + ], + "license": null + }, + "src/amb/interfaces/ITelepathy.sol": { + "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", + "urls": [ + "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", + "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" + ], + "license": null + }, + "src/libraries/MessageEncoding.sol": { + "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", + "urls": [ + "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", + "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" + ], + "license": null + }, + "src/libraries/SimpleSerialize.sol": { + "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "urls": [ + "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", + "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + ], + "license": null + }, + "src/libraries/StateProofHelper.sol": { + "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", + "urls": [ + "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", + "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" + ], + "license": null + }, + "src/libraries/Typecast.sol": { + "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", + "urls": [ + "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", + "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" + ], + "license": "MIT OR Apache-2.0" + }, + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + }, + "src/pubsub/EventProof.sol": { + "keccak256": "0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e", + "urls": [ + "bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78", + "dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi" + ], + "license": null + }, + "src/pubsub/PubSubStorage.sol": { + "keccak256": "0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b", + "urls": [ + "bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e", + "dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL" + ], + "license": null + }, + "src/pubsub/TelepathyPubSub.sol": { + "keccak256": "0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61", + "urls": [ + "bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241", + "dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG" + ], + "license": null + }, + "src/pubsub/TelepathyPublisher.sol": { + "keccak256": "0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c", + "urls": [ + "bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde", + "dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk" + ], + "license": null + }, + "src/pubsub/TelepathySubscriber.sol": { + "keccak256": "0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd", + "urls": [ + "bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4", + "dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3" + ], + "license": null + }, + "src/pubsub/interfaces/IPubSub.sol": { + "keccak256": "0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c", + "urls": [ + "bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a", + "dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt" + ], + "license": null + }, + "src/pubsub/interfaces/ISubscriptionReceiver.sol": { + "keccak256": "0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c", + "urls": [ + "bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb", + "dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/pubsub/TelepathyPubSub.sol", + "id": 48517, + "exportedSymbols": { + "PubSubStorage": [ + 48485 + ], + "TelepathyPubSub": [ + 48516 + ], + "TelepathyPublisher": [ + 48910 + ], + "TelepathyRouter": [ + 42568 + ], + "TelepathySubscriber": [ + 49073 + ] + }, + "nodeType": "SourceUnit", + "src": "0:1230:122", + "nodes": [ + { + "id": 48487, + "nodeType": "PragmaDirective", + "src": "0:24:122", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".16" + ] + }, + { + "id": 48489, + "nodeType": "ImportDirective", + "src": "26:69:122", + "nodes": [], + "absolutePath": "src/pubsub/TelepathyPublisher.sol", + "file": "src/pubsub/TelepathyPublisher.sol", + "nameLocation": "-1:-1:-1", + "scope": 48517, + "sourceUnit": 48911, + "symbolAliases": [ + { + "foreign": { + "id": 48488, + "name": "TelepathyPublisher", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48910, + "src": "34:18:122", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48491, + "nodeType": "ImportDirective", + "src": "97:71:122", + "nodes": [], + "absolutePath": "src/pubsub/TelepathySubscriber.sol", + "file": "src/pubsub/TelepathySubscriber.sol", + "nameLocation": "-1:-1:-1", + "scope": 48517, + "sourceUnit": 49074, + "symbolAliases": [ + { + "foreign": { + "id": 48490, + "name": "TelepathySubscriber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49073, + "src": "105:19:122", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48493, + "nodeType": "ImportDirective", + "src": "170:59:122", + "nodes": [], + "absolutePath": "src/pubsub/PubSubStorage.sol", + "file": "src/pubsub/PubSubStorage.sol", + "nameLocation": "-1:-1:-1", + "scope": 48517, + "sourceUnit": 48486, + "symbolAliases": [ + { + "foreign": { + "id": 48492, + "name": "PubSubStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48485, + "src": "178:13:122", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48495, + "nodeType": "ImportDirective", + "src": "231:60:122", + "nodes": [], + "absolutePath": "src/amb/TelepathyRouter.sol", + "file": "src/amb/TelepathyRouter.sol", + "nameLocation": "-1:-1:-1", + "scope": 48517, + "sourceUnit": 42569, + "symbolAliases": [ + { + "foreign": { + "id": 48494, + "name": "TelepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42568, + "src": "239:15:122", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48516, + "nodeType": "ContractDefinition", + "src": "843:386:122", + "nodes": [ + { + "id": 48503, + "nodeType": "VariableDeclaration", + "src": "917:33:122", + "nodes": [], + "constant": true, + "functionSelector": "ffa1ad74", + "mutability": "constant", + "name": "VERSION", + "nameLocation": "939:7:122", + "scope": 48516, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 48501, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "917:5:122", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "31", + "id": 48502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "949:1:122", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "public" + }, + { + "id": 48515, + "nodeType": "FunctionDefinition", + "src": "957:106:122", + "nodes": [], + "body": { + "id": 48514, + "nodeType": "Block", + "src": "995:68:122", + "nodes": [], + "statements": [ + { + "expression": { + "id": 48512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 48508, + "name": "telepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48469, + "src": "1005:15:122", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeString": "contract TelepathyRouter" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 48510, + "name": "_telepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48505, + "src": "1039:16:122", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 48509, + "name": "TelepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42568, + "src": "1023:15:122", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TelepathyRouter_$42568_$", + "typeString": "type(contract TelepathyRouter)" + } + }, + "id": 48511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1023:33:122", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeString": "contract TelepathyRouter" + } + }, + "src": "1005:51:122", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeString": "contract TelepathyRouter" + } + }, + "id": 48513, + "nodeType": "ExpressionStatement", + "src": "1005:51:122" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 48506, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48505, + "mutability": "mutable", + "name": "_telepathyRouter", + "nameLocation": "977:16:122", + "nodeType": "VariableDeclaration", + "scope": 48515, + "src": "969:24:122", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 48504, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "969:7:122", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "968:26:122" + }, + "returnParameters": { + "id": 48507, + "nodeType": "ParameterList", + "parameters": [], + "src": "995:0:122" + }, + "scope": 48516, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 48497, + "name": "TelepathyPublisher", + "nameLocations": [ + "871:18:122" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 48910, + "src": "871:18:122" + }, + "id": 48498, + "nodeType": "InheritanceSpecifier", + "src": "871:18:122" + }, + { + "baseName": { + "id": 48499, + "name": "TelepathySubscriber", + "nameLocations": [ + "891:19:122" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49073, + "src": "891:19:122" + }, + "id": 48500, + "nodeType": "InheritanceSpecifier", + "src": "891:19:122" + } + ], + "canonicalName": "TelepathyPubSub", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 48496, + "nodeType": "StructuredDocumentation", + "src": "418:425:122", + "text": "@title TelepathyPubSub\n @author Succinct Labs\n @notice This allows an on-chain Publisher-Suscriber model to be used for events. Contracts can subscribe to\n events emitted from a source contract, and it will be relayed these events through the publisher. Before\n the events are relayed, they are verified using the Telepathy Light Client for proof of consensus on the\n source chain." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 48516, + 49073, + 48910, + 48485, + 49136, + 49174 + ], + "name": "TelepathyPubSub", + "nameLocation": "852:15:122", + "scope": 48517, + "usedErrors": [ + 48927, + 48931, + 48937 + ] + } + ] + }, + "id": 122 +} \ No newline at end of file diff --git a/out/TelepathyPublisher.sol/TelepathyPublisher.json b/out/TelepathyPublisher.sol/TelepathyPublisher.json new file mode 100644 index 0000000..dc9b0cb --- /dev/null +++ b/out/TelepathyPublisher.sol/TelepathyPublisher.json @@ -0,0 +1,6169 @@ +{ + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "name": "Publish", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "eventsPublished", + "outputs": [ + { + "internalType": "enum PublishStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "publishEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subscriptions", + "outputs": [ + { + "internalType": "enum SubscriptionStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x608060405234801561001057600080fd5b50613619806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612d4c565b60016020526000908152604090205460ff1681565b6040516100769190612d7b565b60405180910390f35b6100a261008d366004612d4c565b60026020526000908152604090205460ff1681565b6040516100769190612d95565b6100c26100bd366004612f02565b6100c4565b005b6100d96100d46020830183612ffd565b610416565b6100ee6100e96020830183612ffd565b6105fc565b600081604051602001610101919061302d565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016101349594939291906130d6565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612d65565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f613140565b90925090506101ee826101e96020880188612ffd565b6106b1565b600080546001600160a01b0316637599735c61020d6020890189612ffd565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102739190613173565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e69190613190565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b60006103718c8f8f80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610a6f565b9050806103c05760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103f06103d08d8f6131a9565b8f8d8d8d60200160208101906103e6919061322c565b8e60600135610c17565b91509150610402888a89888686610f62565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104899190613173565b6001600160a01b0316036104da5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054c9190613173565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ad9190613249565b6105f95760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e9190613249565b156105f95760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190613173565b6001600160a01b0316036107755760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613173565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085a9190613190565b6000036108a95760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190613173565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa15801561096b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098f9190613190565b6109999042613281565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190613190565b811015610a6a5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b600080826001600160401b0316846001600160401b031603610aad5750600b610a9a81610200613294565b610aa6906101836132b3565b9050610c00565b612000610aba84866132c6565b6001600160401b031611610b1c5750600b610ad6816020613294565b610ae19060066132b3565b9050610af86120006001600160401b0385166132fc565b610b0461200083613294565b610b0e91906132b3565b9050610a9a81610200613294565b836001600160401b0316836001600160401b03161015610bae5750600b610b44816020613294565b610b4f9060076132b3565b9050610b5c816002613294565b610b679060006132b3565b9050610b7e6120006001600160401b038516613310565b610b8c630100000083613294565b610b9691906132b3565b9050610ba3816002613294565b610ae19060016132b3565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016101bb565b610c0c87828888611157565b979650505050505050565b6060806000610c27878a8a611171565b9050600081600081518110610c3e57610c3e613324565b01602001516001600160f81b03191690506000600160f81b821480610c705750600160f91b6001600160f81b03198316145b15610c7d57506001610ce2565b600360fe1b6001600160f81b0319831610610c9a57506000610ce2565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610d049190613281565b8152602001610d1385856132b3565b905290506000610d2282611a0b565b90508051600414610d6e5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610d9382600381518110610d8657610d86613324565b6020026020010151611a0b565b905080518c10610de55760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610dfc828e81518110610d8657610d86613324565b90506000610e2382600081518110610e1657610e16613324565b6020026020010151611c30565b90508c6001600160a01b0316816001600160a01b031614610e975760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610eb7610eb284600181518110610d8657610d86613324565b611ca4565b90508c81600081518110610ecd57610ecd613324565b602002602001015114610f225760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b6000610f4784600281518110610f3a57610f3a613324565b6020026020010151611d54565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b89610f7d60208b018b612ffd565b610f8d60408c0160208d0161322c565b898989604051602401610fa59695949392919061333a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529150610fe99060608a01908a0161322c565b6001600160a01b03168160405161100091906133c9565b6000604051808303816000865af19150503d806000811461103d576040519150601f19603f3d011682016040523d82523d6000602084013e611042565b606091505b5080519194509250600091506020036110825760008280602001905181019061106b91906133e5565b6001600160e01b031916635160951d60e11b149150505b82801561108c5750805b156110af576000878152600160205260409020805460ff191660021790556110cc565b6000878152600160208190526040909120805460ff191690911790555b6110dc6040890160208a0161322c565b6001600160a01b03166110f260208a018a612ffd565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61112a60608d0160408e0161322c565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611165868686611e80565b90921495945050505050565b606060008451116111bc5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b60006111c784612018565b905060006111d486612106565b90506000846040516020016111eb91815260200190565b60405160208183030381529060405290506000805b84518110156119ad57600085828151811061121d5761121d613324565b60200260200101519050845183111561128f5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b8260000361132e57805180516020918201206040516112dd926112b792910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6113295760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b611424565b8051516020116113b45780518051602091820120604051611358926112b792910190815260200190565b6113295760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146114245760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b611430601060016132b3565b816020015151036115d0578451830361156857600061145f8260200151601081518110610f3a57610f3a613324565b905060008151116114d85760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b600187516114e69190613281565b831461155a5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611a0495505050505050565b600085848151811061157c5761157c613324565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106115a7576115a7613324565b602002602001015190506115ba81612220565b95506115c76001866132b3565b9450505061199a565b6002816020015151036119415760006115e882612245565b90506000816000815181106115ff576115ff613324565b016020015160f81c9050600061161660028361340f565b611621906002613431565b90506000611632848360ff16612269565b905060006116408a89612269565b9050600061164e838361229f565b9050808351146116c65760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff8516600214806116db575060ff85166003145b1561188157808251146117565760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b60006117728860200151600181518110610f3a57610f3a613324565b905060008151116117eb5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516117f99190613281565b891461186d5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611a049b505050505050505050505050565b60ff85161580611894575060ff85166001145b156118d3576118c087602001516001815181106118b3576118b3613324565b6020026020010151612220565b99506118cc818a6132b3565b9850611936565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b50505050505061199a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b50806119a58161344a565b915050611200565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611a1b8561231e565b919450925090506001816001811115611a3657611a36612d65565b14611aa95760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611ab583856132b3565b14611b1d5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611b365790505090506000845b8751811015611c2457600080611ba96040518060400160405280858d60000151611b8d9190613281565b8152602001858d60200151611ba291906132b3565b905261231e565b509150915060405180604001604052808383611bc591906132b3565b8152602001848c60200151611bda91906132b3565b815250858581518110611bef57611bef613324565b6020908102919091010152611c056001856132b3565b9350611c1181836132b3565b611c1b90846132b3565b92505050611b63565b50815295945050505050565b8051600090600103611c4457506000919050565b8151601514611c955760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611c9e826129e1565b92915050565b6060600082516001600160401b03811115611cc157611cc1612e35565b604051908082528060200260200182016040528015611cea578160200160208202803683370190505b50905060005b8351811015611d4d57611d1b848281518110611d0e57611d0e613324565b60200260200101516129e1565b60001b828281518110611d3057611d30613324565b602090810291909101015280611d458161344a565b915050611cf0565b5092915050565b60606000806000611d648561231e565b919450925090506000816001811115611d7f57611d7f612d65565b14611df25760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611dfc82846132b3565b855114611e685760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611e77856020015184846129ec565b95945050505050565b60008282516001611e9191906132b3565b611e9c906002613547565b11611ea657600080fd5b8360005b8460011461200f57611ebd6002866132fc565b600103611f5c576002848281518110611ed857611ed8613324565b602002602001015183604051602001611efb929190918252602082015260400190565b60408051601f1981840301815290829052611f15916133c9565b602060405180830381855afa158015611f32573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611f559190613190565b9150611ff0565b600282858381518110611f7157611f71613324565b6020026020010151604051602001611f93929190918252602082015260400190565b60408051601f1981840301815290829052611fad916133c9565b602060405180830381855afa158015611fca573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611fed9190613190565b91505b611ffb600286613310565b9450806120078161344a565b915050611eaa565b50949350505050565b80516060906000816001600160401b0381111561203757612037612e35565b60405190808252806020026020018201604052801561207c57816020015b60408051808201909152606080825260208201528152602001906001900390816120555790505b50905060005b828110156120fe5760405180604001604052808683815181106120a7576120a7613324565b602002602001015181526020016120d68784815181106120c9576120c9613324565b6020026020010151612a8c565b8152508282815181106120eb576120eb613324565b6020908102919091010152600101612082565b509392505050565b80516060906000612118826002613294565b6001600160401b0381111561212f5761212f612e35565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b5090506000805b838110156122165785818151811061217a5761217a613324565b6020910101516001600160f81b03198116925060041c60ff60f41b16836121a2836002613294565b815181106121b2576121b2613324565b60200101906001600160f81b031916908160001a905350600f60f81b8216836121dc836002613294565b6121e79060016132b3565b815181106121f7576121f7613324565b60200101906001600160f81b031916908160001a905350600101612160565b5090949350505050565b6060602082600001511061223c5761223782611d54565b611c9e565b611c9e82612a9f565b6060611c9e6122648360200151600081518110610f3a57610f3a613324565b612106565b6060825182106122885750604080516020810190915260008152611c9e565b611a04838384865161229a9190613281565b612ab5565b600080600083518551106122b45783516122b7565b84515b90505b808210801561230e57508382815181106122d6576122d6613324565b602001015160f81c60f81b6001600160f81b0319168583815181106122fd576122fd613324565b01602001516001600160f81b031916145b156120fe578160010191506122ba565b6000806000808460000151116123465760405162461bcd60e51b81526004016101bb90613553565b6020840151805160001a607f811161236b5760006001600094509450945050506129da565b60b781116124c8576000612380608083613281565b9050808760000151116124005760405162461bcd60e51b815260206004820152604e60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b031916908214158061242d5750600160ff1b6001600160f81b0319821610155b6124b55760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b50600195509350600092506129da915050565b60bf81116127095760006124dd60b783613281565b9050808760000151116125605760405162461bcd60e51b815260206004820152605160248201526000805160206135c483398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036125e75760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c6037811161266a5760405162461bcd60e51b815260206004820152604860248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b61267481846132b3565b8951116126ec5760405162461bcd60e51b815260206004820152604c60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6126f78360016132b3565b97509550600094506129da9350505050565b60f781116127ab57600061271e60c083613281565b90508087600001511161279a5760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b6001955093508492506129da915050565b60006127b860f783613281565b9050808760000151116128375760405162461bcd60e51b815260206004820152604d60248201526000805160206135c483398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b03191660008190036128bc5760405162461bcd60e51b815260206004820152604860248201526000805160206135c483398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c6037811161293d5760405162461bcd60e51b815260206004820152604660248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b61294781846132b3565b8951116129bd5760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b6129c88360016132b3565b97509550600194506129da9350505050565b9193909250565b6000611c9e82612bf6565b60606000826001600160401b03811115612a0857612a08612e35565b6040519080825280601f01601f191660200182016040528015612a32576020820181803683370190505b50905082600003612a44579050611a04565b6000612a5085876132b3565b90506020820160005b85811015612a71578281015182820152602001612a59565b85811115612a80576000868301525b50919695505050505050565b6060611c9e612a9a83612cf9565b611a0b565b6060611c9e8260200151600084600001516129ec565b60608182601f011015612afb5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612b3e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612b855760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612ba4576040519150600082526020820160405261200f565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612bdd578051835260209283019201612bc5565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612c4d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612c5b8561231e565b919450925090506000816001811115612c7657612c76612d65565b14612cc35760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612cd591906132b3565b80519091506020841015612cef5760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612d2e5760405162461bcd60e51b81526004016101bb90613553565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612d5e57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612d8f57612d8f612d65565b91905290565b6020810160028310612d8f57612d8f612d65565b60008083601f840112612dbb57600080fd5b5081356001600160401b03811115612dd257600080fd5b602083019150836020828501011115612dea57600080fd5b9250929050565b60008083601f840112612e0357600080fd5b5081356001600160401b03811115612e1a57600080fd5b6020830191508360208260051b8501011115612dea57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612e7357612e73612e35565b604052919050565b600082601f830112612e8c57600080fd5b81356001600160401b03811115612ea557612ea5612e35565b612eb8601f8201601f1916602001612e4b565b818152846020838601011115612ecd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612efc57600080fd5b50919050565b6000806000806000806000806000806101408b8d031215612f2257600080fd5b8a356001600160401b0380821115612f3957600080fd5b612f458e838f01612da9565b909c509a5060208d0135915080821115612f5e57600080fd5b612f6a8e838f01612df1565b909a50985060408d0135975060608d0135915080821115612f8a57600080fd5b612f968e838f01612df1565b909750955060808d0135915080821115612faf57600080fd5b50612fbc8d828e01612e7b565b93505060a08b01359150612fd38c60c08d01612eea565b90509295989b9194979a5092959850565b803563ffffffff81168114612ff857600080fd5b919050565b60006020828403121561300f57600080fd5b611a0482612fe4565b6001600160a01b03811681146105f957600080fd5b6080810163ffffffff61303f84612fe4565b168252602083013561305081613018565b6001600160a01b03908116602084015260408401359061306f82613018565b166040830152606092830135929091019190915290565b60005b838110156130a1578181015183820152602001613089565b50506000910152565b600081518084526130c2816020860160208601613086565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a083820301602084015261311460a08201876130aa565b60408401959095525050606001529392505050565b80356001600160401b0381168114612ff857600080fd5b6000806040838503121561315357600080fd5b61315c83613129565b915061316a60208401613129565b90509250929050565b60006020828403121561318557600080fd5b8151611a0481613018565b6000602082840312156131a257600080fd5b5051919050565b60006001600160401b03808411156131c3576131c3612e35565b8360051b60206131d4818301612e4b565b8681529185019181810190368411156131ec57600080fd5b865b84811015613220578035868111156132065760008081fd5b61321236828b01612e7b565b8452509183019183016131ee565b50979650505050505050565b60006020828403121561323e57600080fd5b8135611a0481613018565b60006020828403121561325b57600080fd5b81518015158114611a0457600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611c9e57611c9e61326b565b60008160001904831182151516156132ae576132ae61326b565b500290565b80820180821115611c9e57611c9e61326b565b6001600160401b03828116828216039080821115611d4d57611d4d61326b565b634e487b7160e01b600052601260045260246000fd5b60008261330b5761330b6132e6565b500690565b60008261331f5761331f6132e6565b500490565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b818110156133a65784518352938301939183019160010161338a565b505084810360a08601526133ba81876130aa565b9b9a5050505050505050505050565b600082516133db818460208701613086565b9190910192915050565b6000602082840312156133f757600080fd5b81516001600160e01b031981168114611a0457600080fd5b600060ff831680613422576134226132e6565b8060ff84160691505092915050565b60ff8281168282160390811115611c9e57611c9e61326b565b60006001820161345c5761345c61326b565b5060010190565b600181815b8085111561349e5781600019048211156134845761348461326b565b8085161561349157918102915b93841c9390800290613468565b509250929050565b6000826134b557506001611c9e565b816134c257506000611c9e565b81600181146134d857600281146134e2576134fe565b6001915050611c9e565b60ff8411156134f3576134f361326b565b50506001821b611c9e565b5060208310610133831016604e8410600b8410161715613521575081810a611c9e565b61352b8383613463565b806000190482111561353f5761353f61326b565b029392505050565b6000611a0483836134a6565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220bf4c477f9604417bba514c2e7432344a579165ab7c6cd02b3c3660704bb20b2864736f6c63430008100033", + "sourceMap": "678:5388:123:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612d4c565b60016020526000908152604090205460ff1681565b6040516100769190612d7b565b60405180910390f35b6100a261008d366004612d4c565b60026020526000908152604090205460ff1681565b6040516100769190612d95565b6100c26100bd366004612f02565b6100c4565b005b6100d96100d46020830183612ffd565b610416565b6100ee6100e96020830183612ffd565b6105fc565b600081604051602001610101919061302d565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016101349594939291906130d6565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612d65565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f613140565b90925090506101ee826101e96020880188612ffd565b6106b1565b600080546001600160a01b0316637599735c61020d6020890189612ffd565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102739190613173565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e69190613190565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b60006103718c8f8f80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610a6f565b9050806103c05760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103f06103d08d8f6131a9565b8f8d8d8d60200160208101906103e6919061322c565b8e60600135610c17565b91509150610402888a89888686610f62565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104899190613173565b6001600160a01b0316036104da5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054c9190613173565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ad9190613249565b6105f95760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e9190613249565b156105f95760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190613173565b6001600160a01b0316036107755760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613173565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085a9190613190565b6000036108a95760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190613173565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa15801561096b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098f9190613190565b6109999042613281565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190613190565b811015610a6a5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b600080826001600160401b0316846001600160401b031603610aad5750600b610a9a81610200613294565b610aa6906101836132b3565b9050610c00565b612000610aba84866132c6565b6001600160401b031611610b1c5750600b610ad6816020613294565b610ae19060066132b3565b9050610af86120006001600160401b0385166132fc565b610b0461200083613294565b610b0e91906132b3565b9050610a9a81610200613294565b836001600160401b0316836001600160401b03161015610bae5750600b610b44816020613294565b610b4f9060076132b3565b9050610b5c816002613294565b610b679060006132b3565b9050610b7e6120006001600160401b038516613310565b610b8c630100000083613294565b610b9691906132b3565b9050610ba3816002613294565b610ae19060016132b3565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016101bb565b610c0c87828888611157565b979650505050505050565b6060806000610c27878a8a611171565b9050600081600081518110610c3e57610c3e613324565b01602001516001600160f81b03191690506000600160f81b821480610c705750600160f91b6001600160f81b03198316145b15610c7d57506001610ce2565b600360fe1b6001600160f81b0319831610610c9a57506000610ce2565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610d049190613281565b8152602001610d1385856132b3565b905290506000610d2282611a0b565b90508051600414610d6e5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610d9382600381518110610d8657610d86613324565b6020026020010151611a0b565b905080518c10610de55760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610dfc828e81518110610d8657610d86613324565b90506000610e2382600081518110610e1657610e16613324565b6020026020010151611c30565b90508c6001600160a01b0316816001600160a01b031614610e975760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610eb7610eb284600181518110610d8657610d86613324565b611ca4565b90508c81600081518110610ecd57610ecd613324565b602002602001015114610f225760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b6000610f4784600281518110610f3a57610f3a613324565b6020026020010151611d54565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b89610f7d60208b018b612ffd565b610f8d60408c0160208d0161322c565b898989604051602401610fa59695949392919061333a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529150610fe99060608a01908a0161322c565b6001600160a01b03168160405161100091906133c9565b6000604051808303816000865af19150503d806000811461103d576040519150601f19603f3d011682016040523d82523d6000602084013e611042565b606091505b5080519194509250600091506020036110825760008280602001905181019061106b91906133e5565b6001600160e01b031916635160951d60e11b149150505b82801561108c5750805b156110af576000878152600160205260409020805460ff191660021790556110cc565b6000878152600160208190526040909120805460ff191690911790555b6110dc6040890160208a0161322c565b6001600160a01b03166110f260208a018a612ffd565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61112a60608d0160408e0161322c565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611165868686611e80565b90921495945050505050565b606060008451116111bc5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b60006111c784612018565b905060006111d486612106565b90506000846040516020016111eb91815260200190565b60405160208183030381529060405290506000805b84518110156119ad57600085828151811061121d5761121d613324565b60200260200101519050845183111561128f5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b8260000361132e57805180516020918201206040516112dd926112b792910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6113295760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b611424565b8051516020116113b45780518051602091820120604051611358926112b792910190815260200190565b6113295760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146114245760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b611430601060016132b3565b816020015151036115d0578451830361156857600061145f8260200151601081518110610f3a57610f3a613324565b905060008151116114d85760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b600187516114e69190613281565b831461155a5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611a0495505050505050565b600085848151811061157c5761157c613324565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106115a7576115a7613324565b602002602001015190506115ba81612220565b95506115c76001866132b3565b9450505061199a565b6002816020015151036119415760006115e882612245565b90506000816000815181106115ff576115ff613324565b016020015160f81c9050600061161660028361340f565b611621906002613431565b90506000611632848360ff16612269565b905060006116408a89612269565b9050600061164e838361229f565b9050808351146116c65760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff8516600214806116db575060ff85166003145b1561188157808251146117565760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b60006117728860200151600181518110610f3a57610f3a613324565b905060008151116117eb5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516117f99190613281565b891461186d5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611a049b505050505050505050505050565b60ff85161580611894575060ff85166001145b156118d3576118c087602001516001815181106118b3576118b3613324565b6020026020010151612220565b99506118cc818a6132b3565b9850611936565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b50505050505061199a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b50806119a58161344a565b915050611200565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611a1b8561231e565b919450925090506001816001811115611a3657611a36612d65565b14611aa95760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611ab583856132b3565b14611b1d5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611b365790505090506000845b8751811015611c2457600080611ba96040518060400160405280858d60000151611b8d9190613281565b8152602001858d60200151611ba291906132b3565b905261231e565b509150915060405180604001604052808383611bc591906132b3565b8152602001848c60200151611bda91906132b3565b815250858581518110611bef57611bef613324565b6020908102919091010152611c056001856132b3565b9350611c1181836132b3565b611c1b90846132b3565b92505050611b63565b50815295945050505050565b8051600090600103611c4457506000919050565b8151601514611c955760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611c9e826129e1565b92915050565b6060600082516001600160401b03811115611cc157611cc1612e35565b604051908082528060200260200182016040528015611cea578160200160208202803683370190505b50905060005b8351811015611d4d57611d1b848281518110611d0e57611d0e613324565b60200260200101516129e1565b60001b828281518110611d3057611d30613324565b602090810291909101015280611d458161344a565b915050611cf0565b5092915050565b60606000806000611d648561231e565b919450925090506000816001811115611d7f57611d7f612d65565b14611df25760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611dfc82846132b3565b855114611e685760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611e77856020015184846129ec565b95945050505050565b60008282516001611e9191906132b3565b611e9c906002613547565b11611ea657600080fd5b8360005b8460011461200f57611ebd6002866132fc565b600103611f5c576002848281518110611ed857611ed8613324565b602002602001015183604051602001611efb929190918252602082015260400190565b60408051601f1981840301815290829052611f15916133c9565b602060405180830381855afa158015611f32573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611f559190613190565b9150611ff0565b600282858381518110611f7157611f71613324565b6020026020010151604051602001611f93929190918252602082015260400190565b60408051601f1981840301815290829052611fad916133c9565b602060405180830381855afa158015611fca573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611fed9190613190565b91505b611ffb600286613310565b9450806120078161344a565b915050611eaa565b50949350505050565b80516060906000816001600160401b0381111561203757612037612e35565b60405190808252806020026020018201604052801561207c57816020015b60408051808201909152606080825260208201528152602001906001900390816120555790505b50905060005b828110156120fe5760405180604001604052808683815181106120a7576120a7613324565b602002602001015181526020016120d68784815181106120c9576120c9613324565b6020026020010151612a8c565b8152508282815181106120eb576120eb613324565b6020908102919091010152600101612082565b509392505050565b80516060906000612118826002613294565b6001600160401b0381111561212f5761212f612e35565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b5090506000805b838110156122165785818151811061217a5761217a613324565b6020910101516001600160f81b03198116925060041c60ff60f41b16836121a2836002613294565b815181106121b2576121b2613324565b60200101906001600160f81b031916908160001a905350600f60f81b8216836121dc836002613294565b6121e79060016132b3565b815181106121f7576121f7613324565b60200101906001600160f81b031916908160001a905350600101612160565b5090949350505050565b6060602082600001511061223c5761223782611d54565b611c9e565b611c9e82612a9f565b6060611c9e6122648360200151600081518110610f3a57610f3a613324565b612106565b6060825182106122885750604080516020810190915260008152611c9e565b611a04838384865161229a9190613281565b612ab5565b600080600083518551106122b45783516122b7565b84515b90505b808210801561230e57508382815181106122d6576122d6613324565b602001015160f81c60f81b6001600160f81b0319168583815181106122fd576122fd613324565b01602001516001600160f81b031916145b156120fe578160010191506122ba565b6000806000808460000151116123465760405162461bcd60e51b81526004016101bb90613553565b6020840151805160001a607f811161236b5760006001600094509450945050506129da565b60b781116124c8576000612380608083613281565b9050808760000151116124005760405162461bcd60e51b815260206004820152604e60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b031916908214158061242d5750600160ff1b6001600160f81b0319821610155b6124b55760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b50600195509350600092506129da915050565b60bf81116127095760006124dd60b783613281565b9050808760000151116125605760405162461bcd60e51b815260206004820152605160248201526000805160206135c483398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036125e75760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c6037811161266a5760405162461bcd60e51b815260206004820152604860248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b61267481846132b3565b8951116126ec5760405162461bcd60e51b815260206004820152604c60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6126f78360016132b3565b97509550600094506129da9350505050565b60f781116127ab57600061271e60c083613281565b90508087600001511161279a5760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b6001955093508492506129da915050565b60006127b860f783613281565b9050808760000151116128375760405162461bcd60e51b815260206004820152604d60248201526000805160206135c483398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b03191660008190036128bc5760405162461bcd60e51b815260206004820152604860248201526000805160206135c483398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c6037811161293d5760405162461bcd60e51b815260206004820152604660248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b61294781846132b3565b8951116129bd5760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b6129c88360016132b3565b97509550600194506129da9350505050565b9193909250565b6000611c9e82612bf6565b60606000826001600160401b03811115612a0857612a08612e35565b6040519080825280601f01601f191660200182016040528015612a32576020820181803683370190505b50905082600003612a44579050611a04565b6000612a5085876132b3565b90506020820160005b85811015612a71578281015182820152602001612a59565b85811115612a80576000868301525b50919695505050505050565b6060611c9e612a9a83612cf9565b611a0b565b6060611c9e8260200151600084600001516129ec565b60608182601f011015612afb5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612b3e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612b855760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612ba4576040519150600082526020820160405261200f565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612bdd578051835260209283019201612bc5565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612c4d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612c5b8561231e565b919450925090506000816001811115612c7657612c76612d65565b14612cc35760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612cd591906132b3565b80519091506020841015612cef5760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612d2e5760405162461bcd60e51b81526004016101bb90613553565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612d5e57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612d8f57612d8f612d65565b91905290565b6020810160028310612d8f57612d8f612d65565b60008083601f840112612dbb57600080fd5b5081356001600160401b03811115612dd257600080fd5b602083019150836020828501011115612dea57600080fd5b9250929050565b60008083601f840112612e0357600080fd5b5081356001600160401b03811115612e1a57600080fd5b6020830191508360208260051b8501011115612dea57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612e7357612e73612e35565b604052919050565b600082601f830112612e8c57600080fd5b81356001600160401b03811115612ea557612ea5612e35565b612eb8601f8201601f1916602001612e4b565b818152846020838601011115612ecd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612efc57600080fd5b50919050565b6000806000806000806000806000806101408b8d031215612f2257600080fd5b8a356001600160401b0380821115612f3957600080fd5b612f458e838f01612da9565b909c509a5060208d0135915080821115612f5e57600080fd5b612f6a8e838f01612df1565b909a50985060408d0135975060608d0135915080821115612f8a57600080fd5b612f968e838f01612df1565b909750955060808d0135915080821115612faf57600080fd5b50612fbc8d828e01612e7b565b93505060a08b01359150612fd38c60c08d01612eea565b90509295989b9194979a5092959850565b803563ffffffff81168114612ff857600080fd5b919050565b60006020828403121561300f57600080fd5b611a0482612fe4565b6001600160a01b03811681146105f957600080fd5b6080810163ffffffff61303f84612fe4565b168252602083013561305081613018565b6001600160a01b03908116602084015260408401359061306f82613018565b166040830152606092830135929091019190915290565b60005b838110156130a1578181015183820152602001613089565b50506000910152565b600081518084526130c2816020860160208601613086565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a083820301602084015261311460a08201876130aa565b60408401959095525050606001529392505050565b80356001600160401b0381168114612ff857600080fd5b6000806040838503121561315357600080fd5b61315c83613129565b915061316a60208401613129565b90509250929050565b60006020828403121561318557600080fd5b8151611a0481613018565b6000602082840312156131a257600080fd5b5051919050565b60006001600160401b03808411156131c3576131c3612e35565b8360051b60206131d4818301612e4b565b8681529185019181810190368411156131ec57600080fd5b865b84811015613220578035868111156132065760008081fd5b61321236828b01612e7b565b8452509183019183016131ee565b50979650505050505050565b60006020828403121561323e57600080fd5b8135611a0481613018565b60006020828403121561325b57600080fd5b81518015158114611a0457600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611c9e57611c9e61326b565b60008160001904831182151516156132ae576132ae61326b565b500290565b80820180821115611c9e57611c9e61326b565b6001600160401b03828116828216039080821115611d4d57611d4d61326b565b634e487b7160e01b600052601260045260246000fd5b60008261330b5761330b6132e6565b500690565b60008261331f5761331f6132e6565b500490565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b818110156133a65784518352938301939183019160010161338a565b505084810360a08601526133ba81876130aa565b9b9a5050505050505050505050565b600082516133db818460208701613086565b9190910192915050565b6000602082840312156133f757600080fd5b81516001600160e01b031981168114611a0457600080fd5b600060ff831680613422576134226132e6565b8060ff84160691505092915050565b60ff8281168282160390811115611c9e57611c9e61326b565b60006001820161345c5761345c61326b565b5060010190565b600181815b8085111561349e5781600019048211156134845761348461326b565b8085161561349157918102915b93841c9390800290613468565b509250929050565b6000826134b557506001611c9e565b816134c257506000611c9e565b81600181146134d857600281146134e2576134fe565b6001915050611c9e565b60ff8411156134f3576134f361326b565b50506001821b611c9e565b5060208310610133831016604e8410600b8410161715613521575081810a611c9e565b61352b8383613463565b806000190482111561353f5761353f61326b565b029392505050565b6000611a0483836134a6565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220bf4c477f9604417bba514c2e7432344a579165ab7c6cd02b3c3660704bb20b2864736f6c63430008100033", + "sourceMap": "678:5388:123:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;723:59;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1533:1728:123:-;;;;;;:::i;:::-;;:::i;:::-;;;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:123;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:123;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:123;;6848:2:145;2243:115:123;;;6830:21:145;6887:2;6867:18;;;6860:30;6926:25;6906:18;;;6899:53;6969:18;;2243:115:123;;;;;;;;;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:123;-1:-1:-1;2460:60:123;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:123;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:123;;;;;;;;7597:23:145;;;;2563:56:123;;;7579:42:145;7552:18;;2563:56:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:123;;-1:-1:-1;;;;;8073:31:145;;2563:73:123;;;8055:50:145;-1:-1:-1;;;;;2563:64:123;;;;;;;8028:18:145;;2563:73:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:123;2646:58;;;;-1:-1:-1;;;2646:58:123;;8507:2:145;2646:58:123;;;8489:21:145;8546:2;8526:18;;;8519:30;-1:-1:-1;;;8565:18:145;;;8558:51;8626:18;;2646:58:123;8305:345:145;2646:58:123;2714:12;2741:84;2764:12;2778:17;;2741:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2797:10:123;;-1:-1:-1;2809:7:123;;-1:-1:-1;2818:6:123;;-1:-1:-1;2741:22:123;:84::i;:::-;2714:111;;2843:7;2835:47;;;;-1:-1:-1;;;2835:47:123;;8857:2:145;2835:47:123;;;8839:21:145;8896:2;8876:18;;;8869:30;8935:29;8915:18;;;8908:57;8982:18;;2835:47:123;8655:351:145;2835:47:123;2894:28;;2950:211;;2985:12;;2950:211;:::i;:::-;3011:12;3037:17;3068:8;3090:12;:26;;;;;;;;;;:::i;:::-;3130:12;:21;;;2950;:211::i;:::-;2893:268;;;;3172:82;3181:14;3197:12;3211:10;3223:6;3231:11;3244:9;3172:8;:82::i;:::-;1837:1424;;;;;;;;1533:1728;;;;;;;;;;:::o;3347:307::-;3505:1;3455:15;;:37;;-1:-1:-1;;;3455:37:123;;7609:10:145;7597:23;;3455:37:123;;;7579:42:145;-1:-1:-1;;;;;3455:15:123;;;;:28;;7552:18:145;;3455:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3447:60:123;;3426:119;;;;-1:-1:-1;;;3426:119:123;;10404:2:145;3426:119:123;;;10386:21:145;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:145;;;10455:54;10526:18;;3426:119:123;10202:348:145;3426:119:123;3563:15;;:37;;-1:-1:-1;;;3563:37:123;;7609:10:145;7597:23;;3563:37:123;;;7579:42:145;-1:-1:-1;;;;;3563:15:123;;;;:28;;7552:18:145;;3563:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:48:123;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3555:92;;;;-1:-1:-1;;;3555:92:123;;11039:2:145;3555:92:123;;;11021:21:145;11078:2;11058:18;;;11051:30;11117:31;11097:18;;;11090:59;11166:18;;3555:92:123;10837:353:145;3555:92:123;3347:307;:::o;3715:137::-;3790:15;;:31;;-1:-1:-1;;;3790:31:123;;7609:10:145;7597:23;;3790:31:123;;;7579:42:145;-1:-1:-1;;;;;3790:15:123;;;;:22;;7552:18:145;;3790:31:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3789:32;3781:64;;;;-1:-1:-1;;;3781:64:123;;11397:2:145;3781:64:123;;;11379:21:145;11436:2;11416:18;;;11409:30;-1:-1:-1;;;11455:18:145;;;11448:49;11514:18;;3781:64:123;11195:343:145;3922:620:123;4087:1;4037:15;;:37;;-1:-1:-1;;;4037:37:123;;7609:10:145;7597:23;;4037:37:123;;;7579:42:145;-1:-1:-1;;;;;4037:15:123;;;;:28;;7552:18:145;;4037:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4029:60:123;;4008:119;;;;-1:-1:-1;;;4008:119:123;;10404:2:145;4008:119:123;;;10386:21:145;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:145;;;10455:54;10526:18;;4008:119:123;10202:348:145;4008:119:123;4158:15;;:37;;-1:-1:-1;;;4158:37:123;;7609:10:145;7597:23;;4158:37:123;;;7579:42:145;-1:-1:-1;;;;;4158:15:123;;;;:28;;7552:18:145;;4158:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4158:54:123;;-1:-1:-1;;;;;8073:31:145;;4158:54:123;;;8055:50:145;-1:-1:-1;;;;;4158:48:123;;;;;;;8028:18:145;;4158:54:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4216:1;4158:59;4137:136;;;;-1:-1:-1;;;4137:136:123;;11934:2:145;4137:136:123;;;11916:21:145;11973:2;11953:18;;;11946:30;12012:32;11992:18;;;11985:60;12062:18;;4137:136:123;11732:354:145;4137:136:123;4283:19;4335:15;;:37;;-1:-1:-1;;;4335:37:123;;7609:10:145;7597:23;;4335:37:123;;;7579:42:145;-1:-1:-1;;;;;4335:15:123;;;;:28;;7552:18:145;;4335:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4335:54:123;;-1:-1:-1;;;;;8073:31:145;;4335:54:123;;;8055:50:145;-1:-1:-1;;;;;4335:48:123;;;;;;;8028:18:145;;4335:54:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4317:72;;:15;:72;:::i;:::-;4283:106;;4435:15;;;;;;;;-1:-1:-1;;;;;4435:15:123;-1:-1:-1;;;;;4435:38:123;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4420:11;:55;;4399:136;;;;-1:-1:-1;;;4399:136:123;;12558:2:145;4399:136:123;;;12540:21:145;12597:2;12577:18;;;12570:30;12636:34;12616:18;;;12609:62;-1:-1:-1;;;12687:18:145;;;12680:32;12729:19;;4399:136:123;12356:398:145;4399:136:123;3998:544;3922:620;;:::o;3024:1184:109:-;3230:4;3246:13;3284:6;-1:-1:-1;;;;;3273:17:109;:7;-1:-1:-1;;;;;3273:17:109;;3269:845;;-1:-1:-1;3314:5:109;3341:14;3314:5;3349:6;3341:14;:::i;:::-;:20;;3358:3;3341:20;:::i;:::-;3333:28;;3269:845;;;304:4;3382:16;3392:6;3382:7;:16;:::i;:::-;-1:-1:-1;;;;;3382:45:109;;3378:736;;-1:-1:-1;3451:5:109;3478:14;3451:5;3486:6;3478:14;:::i;:::-;:18;;3495:1;3478:18;:::i;:::-;3470:26;-1:-1:-1;3554:34:109;304:4;-1:-1:-1;;;;;3554:34:109;;;:::i;:::-;3518:33;304:4;3518:5;:33;:::i;:::-;:70;;;;:::i;:::-;3510:78;-1:-1:-1;3610:14:109;3510:78;3618:6;3610:14;:::i;3378:736::-;3660:7;-1:-1:-1;;;;;3651:16:109;:6;-1:-1:-1;;;;;3651:16:109;;3647:467;;;-1:-1:-1;3691:5:109;3718:14;3691:5;3726:6;3718:14;:::i;:::-;:18;;3735:1;3718:18;:::i;:::-;3710:26;-1:-1:-1;3758:9:109;3710:26;3766:1;3758:9;:::i;:::-;:13;;3770:1;3758:13;:::i;:::-;3750:21;-1:-1:-1;3826:34:109;304:4;-1:-1:-1;;;;;3826:34:109;;;:::i;:::-;3793:30;236:8;3793:5;:30;:::i;:::-;:67;;;;:::i;:::-;3785:75;-1:-1:-1;3882:9:109;3785:75;3890:1;3882:9;:::i;:::-;:13;;3894:1;3882:13;:::i;3647:467::-;4060:43;;-1:-1:-1;;;4060:43:109;;13826:2:145;4060:43:109;;;13808:21:145;13865:2;13845:18;;;13838:30;13904:34;13884:18;;;13877:62;-1:-1:-1;;;13955:18:145;;;13948:31;13996:19;;4060:43:109;13624:397:145;3647:467:109;4130:71;4150:12;4164:5;4171:17;4190:10;4130:19;:71::i;:::-;4123:78;3024:1184;-1:-1:-1;;;;;;;3024:1184:109:o;431:2729:120:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:120;;-1:-1:-1;1486:14:120;-1:-1:-1;;;1514:25:120;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:120;;;1514:54;1510:236;;;-1:-1:-1;1593:1:120;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:120;;;1611:135;;-1:-1:-1;1665:1:120;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:120;;14360:2:145;1697:38:120;;;14342:21:145;14399:2;14379:18;;;14372:30;14438;14418:18;;;14411:58;14486:18;;1697:38:120;14158:352:145;1611:135:120;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:120;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:120;;14717:2:145;2278:58:120;;;14699:21:145;14756:2;14736:18;;;14729:30;-1:-1:-1;;;14775:18:145;;;14768:52;14837:18;;2278:58:120;14515:346:145;2278:58:120;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:120;;15068:2:145;2495:59:120;;;15050:21:145;15107:2;15087:18;;;15080:30;15146:25;15126:18;;;15119:53;15189:18;;2495:59:120;14866:347:145;2495:59:120;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:120;:14;-1:-1:-1;;;;;2777:30:120;;2769:83;;;;-1:-1:-1;;;2769:83:120;;15420:2:145;2769:83:120;;;15402:21:145;15459:2;15439:18;;;15432:30;15498:34;15478:18;;;15471:62;-1:-1:-1;;;15549:18:145;;;15542:38;15597:19;;2769:83:120;15218:404:145;2769:83:120;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:120;;15829:2:145;2990:74:120;;;15811:21:145;15868:2;15848:18;;;15841:30;15907:32;15887:18;;;15880:60;15957:18;;2990:74:120;15627:354:145;2990:74:120;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:120;;-1:-1:-1;;;;;;;;;;;431:2729:120;;;;;;;;;:::o;4667:1397:123:-;4913:12;4935:17;4913:12;-1:-1:-1;;;5105:15:123;5138:27;;;;:13;:27;:::i;:::-;5183;;;;;;;;:::i;:::-;5228:7;5253:12;5283:10;5003:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5003:304:123;;;;;;;;;;;;;;-1:-1:-1;;;;;5003:304:123;-1:-1:-1;;;;;;5003:304:123;;;;;;;;;;;-1:-1:-1;5339:29:123;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5339:34:123;5374:11;5339:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5451:11:123;;5321:65;;-1:-1:-1;5321:65:123;-1:-1:-1;5407:22:123;;-1:-1:-1;5466:2:123;5451:17;5447:178;;5485:12;5512:4;5501:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5561:53:123;-1:-1:-1;;;5561:53:123;;-1:-1:-1;;5447:178:123;5639:7;:28;;;;;5650:17;5639:28;5635:215;;;5683:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5683:64:123;5714:33;5683:64;;;5635:215;;;5778:28;;;;5809:30;5778:28;;;;;;;;:61;;-1:-1:-1;;5778:61:123;;;;;;5635:215;5956:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5865:192:123;5915:27;;;;:13;:27;:::i;:::-;5865:192;;5886:15;5865:192;5997:29;;;;;;;;:::i;:::-;5865:192;;;-1:-1:-1;;;;;17877:32:145;;;17859:51;;17953:14;;17946:22;17941:2;17926:18;;17919:50;17832:18;5865:192:123;;;;;;;4903:1161;;;4667:1397;;;;;;:::o;1770:281:109:-;1914:4;1934:26;1963:38;1981:4;1987:5;1994:6;1963:17;:38::i;:::-;2018:26;;;;1770:281;-1:-1:-1;;;;;1770:281:109:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;18182:2:145;3101:49:77;;;18164:21:145;18221:2;18201:18;;;18194:30;-1:-1:-1;;;18240:18:145;;;18233:51;18301:18;;3101:49:77;17980:345:145;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;18459:19:145;;18503:2;18494:12;;18330:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;18719:2:145;3636:134:77;;;18701:21:145;18758:2;18738:18;;;18731:30;18797:34;18777:18;;;18770:62;-1:-1:-1;;;18848:18:145;;;18841:44;18902:19;;3636:134:77;18517:410:145;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;18459:19:145;;;18503:2;18494:12;;18330:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;19134:2:145;3893:176:77;;;19116:21:145;19173:2;19153:18;;;19146:30;19212:31;19192:18;;;19185:59;19261:18;;3893:176:77;18932:353:145;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;18459:19:145;;;18503:2;18494:12;;18330:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;19492:2:145;4222:186:77;;;19474:21:145;19531:2;19511:18;;;19504:30;19570:34;19550:18;;;19543:62;-1:-1:-1;;;19621:18:145;;;19614:37;19668:19;;4222:186:77;19290:403:145;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;19900:2:145;4509:156:77;;;19882:21:145;19939:2;19919:18;;;19912:30;19978:34;19958:18;;;19951:62;-1:-1:-1;;;20029:18:145;;;20022:36;20075:19;;4509:156:77;19698:402:145;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;20307:2:145;5384:158:77;;;20289:21:145;20346:2;20326:18;;;20319:30;20385:34;20365:18;;;20358:62;20456:29;20436:18;;;20429:57;20503:19;;5384:158:77;20105:423:145;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;20735:2:145;5626:162:77;;;20717:21:145;20774:2;20754:18;;;20747:30;20813:34;20793:18;;;20786:62;20884:28;20864:18;;;20857:56;20930:19;;5626:162:77;20533:422:145;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;21480:2:145;7009:171:77;;;21462:21:145;21519:2;21499:18;;;21492:30;21558:34;21538:18;;;21531:62;21629:28;21609:18;;;21602:56;21675:19;;7009:171:77;21278:422:145;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;21907:2:145;7843:185:77;;;21889:21:145;21946:2;21926:18;;;21919:30;21985:34;21965:18;;;21958:62;22056:31;22036:18;;;22029:59;22105:19;;7843:185:77;21705:425:145;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;22337:2:145;8463:156:77;;;22319:21:145;22376:2;22356:18;;;22349:30;22415:34;22395:18;;;22388:62;22486:27;22466:18;;;22459:55;22531:19;;8463:156:77;22135:421:145;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;22763:2:145;8703:160:77;;;22745:21:145;22802:2;22782:18;;;22775:30;22841:34;22821:18;;;22814:62;22912:26;22892:18;;;22885:54;22956:19;;8703:160:77;22561:420:145;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;23188:2:145;9439:60:77;;;23170:21:145;23227:2;23207:18;;;23200:30;23266:34;23246:18;;;23239:62;-1:-1:-1;;;23317:18:145;;;23310:48;23375:19;;9439:60:77;22986:414:145;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;23607:2:145;9556:50:77;;;23589:21:145;23646:2;23626:18;;;23619:30;23685:34;23665:18;;;23658:62;-1:-1:-1;;;23736:18:145;;;23729:38;23784:19;;9556:50:77;23405:404:145;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;24156:2:145;9641:47:77;;;24138:21:145;24195:2;24175:18;;;24168:30;24234:34;24214:18;;;24207:62;-1:-1:-1;;;24285:18:145;;;24278:35;24330:19;;9641:47:77;23954:401:145;2954:6741:77;;;;;;:::o;1978:1895:75:-;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;24562:2:145;2161:136:75;;;24544:21:145;24601:2;24581:18;;;24574:30;24640:34;24620:18;;;24613:62;24711:26;24691:18;;;24684:54;24755:19;;2161:136:75;24360:420:145;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;24987:2:145;2308:134:75;;;24969:21:145;25026:2;25006:18;;;24999:30;25065:34;25045:18;;;25038:62;-1:-1:-1;;;25116:18:145;;;25109:48;25174:19;;2308:134:75;24785:414:145;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;25406:2:145;12579:55:75;;;25388:21:145;25445:2;25425:18;;;25418:30;25484:28;25464:18;;;25457:56;25530:18;;12579:55:75;25204:350:145;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:120:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:120;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:120;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:120;3166:384;-1:-1:-1;;3166:384:120:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;25761:2:145;4505:137:75;;;25743:21:145;25800:2;25780:18;;;25773:30;25839:34;25819:18;;;25812:62;25910:27;25890:18;;;25883:55;25955:19;;4505:137:75;25559:421:145;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;26187:2:145;4653:136:75;;;26169:21:145;26226:2;26206:18;;;26199:30;26265:34;26245:18;;;26238:62;-1:-1:-1;;;26316:18:145;;;26309:50;26376:19;;4653:136:75;25985:416:145;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1213:551:109:-;1341:7;1399:5;1378:6;:13;1394:1;1378:17;;;;:::i;:::-;1372:24;;:1;:24;:::i;:::-;:32;1364:41;;;;;;1431:4;1415:13;1468:268;1475:5;1484:1;1475:10;1468:268;;1505:9;1513:1;1505:5;:9;:::i;:::-;1518:1;1505:14;1501:184;;1547:38;1567:6;1574:1;1567:9;;;;;;;;:::i;:::-;;;;;;;1578:5;1554:30;;;;;;;;27937:19:145;;;27981:2;27972:12;;27965:28;28018:2;28009:12;;27780:247;1554:30:109;;;;-1:-1:-1;;1554:30:109;;;;;;;;;;1547:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1539:46;;1501:184;;;1632:38;1652:5;1659:6;1666:1;1659:9;;;;;;;;:::i;:::-;;;;;;;1639:30;;;;;;;;27937:19:145;;;27981:2;27972:12;;27965:28;28018:2;28009:12;;27780:247;1639:30:109;;;;-1:-1:-1;;1639:30:109;;;;;;;;;;1632:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1624:46;;1501:184;1698:10;1707:1;1698:10;;:::i;:::-;;-1:-1:-1;1722:3:109;;;;:::i;:::-;;;;1468:268;;;-1:-1:-1;1752:5:109;1213:551;-1:-1:-1;;;;1213:551:109:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;28717:2:145;6699:156:75;;;28699:21:145;28756:2;28736:18;;;28729:30;-1:-1:-1;;;;;;;;;;;28775:18:145;;;28768:62;28866:34;28846:18;;;28839:62;-1:-1:-1;;;28917:19:145;;;28910:45;28972:19;;6699:156:75;28515:482:145;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;29204:2:145;7025:177:75;;;29186:21:145;29243:2;29223:18;;;29216:30;29282:34;29262:18;;;29255:62;29353:34;29333:18;;;29326:62;-1:-1:-1;;;29404:19:145;;;29397:44;29458:19;;7025:177:75;29002:481:145;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;29690:2:145;7387:164:75;;;29672:21:145;29729:2;29709:18;;;29702:30;-1:-1:-1;;;;;;;;;;;29748:18:145;;;29741:62;29839:34;29819:18;;;29812:62;-1:-1:-1;;;29890:19:145;;;29883:48;29948:19;;7387:164:75;29488:485:145;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;30180:2:145;7721:159:75;;;30162:21:145;30219:2;30199:18;;;30192:30;-1:-1:-1;;;;;;;;;;;30238:18:145;;;30231:62;30329:34;30309:18;;;30302:62;-1:-1:-1;;;30380:19:145;;;30373:41;30431:19;;7721:159:75;29978:478:145;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;30663:2:145;8042:142:75;;;30645:21:145;30702:2;30682:18;;;30675:30;-1:-1:-1;;;;;;;;;;;30721:18:145;;;30714:62;30812:34;30792:18;;;30785:62;-1:-1:-1;;;30863:19:145;;;30856:39;30912:19;;8042:142:75;30461:476:145;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;31144:2:145;8199:168:75;;;31126:21:145;31183:2;31163:18;;;31156:30;-1:-1:-1;;;;;;;;;;;31202:18:145;;;31195:62;31293:34;31273:18;;;31266:62;-1:-1:-1;;;31344:19:145;;;31337:43;31397:19;;8199:168:75;30942:480:145;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;31629:2:145;8617:153:75;;;31611:21:145;31668:2;31648:18;;;31641:30;-1:-1:-1;;;;;;;;;;;31687:18:145;;;31680:62;31778:34;31758:18;;;31751:62;-1:-1:-1;;;31829:19:145;;;31822:41;31880:19;;8617:153:75;31427:478:145;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;32112:2:145;8935:161:75;;;32094:21:145;32151:2;32131:18;;;32124:30;-1:-1:-1;;;;;;;;;;;32170:18:145;;;32163:62;32261:34;32241:18;;;32234:62;-1:-1:-1;;;32312:19:145;;;32305:44;32366:19;;8935:161:75;31910:481:145;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;32598:2:145;9266:157:75;;;32580:21:145;32637:2;32617:18;;;32610:30;-1:-1:-1;;;;;;;;;;;32656:18:145;;;32649:62;32747:34;32727:18;;;32720:62;-1:-1:-1;;;32798:19:145;;;32791:39;32847:19;;9266:157:75;32396:476:145;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;33079:2:145;9588:141:75;;;33061:21:145;33118:2;33098:18;;;33091:30;-1:-1:-1;;;;;;;;;;;33137:18:145;;;33130:62;33228:34;33208:18;;;33201:62;-1:-1:-1;;;33279:19:145;;;33272:37;33326:19;;9588:141:75;32877:474:145;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;33558:2:145;9744:168:75;;;33540:21:145;33597:2;33577:18;;;33570:30;-1:-1:-1;;;;;;;;;;;33616:18:145;;;33609:62;33707:34;33687:18;;;33680:62;-1:-1:-1;;;33758:19:145;;;33751:41;33809:19;;9744:168:75;33356:478:145;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;34041:2:145;858:50:74;;;34023:21:145;34080:2;34060:18;;;34053:30;-1:-1:-1;;;34099:18:145;;;34092:44;34153:18;;858:50:74;33839:338:145;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;34041:2:145;922:53:74;;;34023:21:145;34080:2;34060:18;;;34053:30;-1:-1:-1;;;34099:18:145;;;34092:44;34153:18;;922:53:74;33839:338:145;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;34384:2:145;989:63:74;;;34366:21:145;34423:2;34403:18;;;34396:30;-1:-1:-1;;;34442:18:145;;;34435:47;34499:18;;989:63:74;34182:341:145;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;34730:2:145;11438:55:75;;;34712:21:145;34769:2;34749:18;;;34742:30;34808:28;34788:18;;;34781:56;34854:18;;11438:55:75;34528:350:145;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;34730:2:145;11598:72:75;;;34712:21:145;34769:2;34749:18;;;34742:30;34808:28;34788:18;;;34781:56;34854:18;;11598:72:75;34528:350:145;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:145:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:145;;14:180;-1:-1:-1;14:180:145:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:255::-;742:2;727:18;;775:1;764:13;;754:47;;781:18;;:::i;846:347::-;897:8;907:6;961:3;954:4;946:6;942:17;938:27;928:55;;979:1;976;969:12;928:55;-1:-1:-1;1002:20:145;;-1:-1:-1;;;;;1034:30:145;;1031:50;;;1077:1;1074;1067:12;1031:50;1114:4;1106:6;1102:17;1090:29;;1166:3;1159:4;1150:6;1142;1138:19;1134:30;1131:39;1128:59;;;1183:1;1180;1173:12;1128:59;846:347;;;;;:::o;1198:367::-;1261:8;1271:6;1325:3;1318:4;1310:6;1306:17;1302:27;1292:55;;1343:1;1340;1333:12;1292:55;-1:-1:-1;1366:20:145;;-1:-1:-1;;;;;1398:30:145;;1395:50;;;1441:1;1438;1431:12;1395:50;1478:4;1470:6;1466:17;1454:29;;1538:3;1531:4;1521:6;1518:1;1514:14;1506:6;1502:27;1498:38;1495:47;1492:67;;;1555:1;1552;1545:12;1570:127;1631:10;1626:3;1622:20;1619:1;1612:31;1662:4;1659:1;1652:15;1686:4;1683:1;1676:15;1702:275;1773:2;1767:9;1838:2;1819:13;;-1:-1:-1;;1815:27:145;1803:40;;-1:-1:-1;;;;;1858:34:145;;1894:22;;;1855:62;1852:88;;;1920:18;;:::i;:::-;1956:2;1949:22;1702:275;;-1:-1:-1;1702:275:145:o;1982:530::-;2024:5;2077:3;2070:4;2062:6;2058:17;2054:27;2044:55;;2095:1;2092;2085:12;2044:55;2131:6;2118:20;-1:-1:-1;;;;;2153:2:145;2150:26;2147:52;;;2179:18;;:::i;:::-;2223:55;2266:2;2247:13;;-1:-1:-1;;2243:27:145;2272:4;2239:38;2223:55;:::i;:::-;2303:2;2294:7;2287:19;2349:3;2342:4;2337:2;2329:6;2325:15;2321:26;2318:35;2315:55;;;2366:1;2363;2356:12;2315:55;2431:2;2424:4;2416:6;2412:17;2405:4;2396:7;2392:18;2379:55;2479:1;2454:16;;;2472:4;2450:27;2443:38;;;;2458:7;1982:530;-1:-1:-1;;;1982:530:145:o;2517:161::-;2582:5;2627:3;2618:6;2613:3;2609:16;2605:26;2602:46;;;2644:1;2641;2634:12;2602:46;-1:-1:-1;2666:6:145;2517:161;-1:-1:-1;2517:161:145:o;2683:1546::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;3039:3;3027:9;3018:7;3014:23;3010:33;3007:53;;;3056:1;3053;3046:12;3007:53;3096:9;3083:23;-1:-1:-1;;;;;3166:2:145;3158:6;3155:14;3152:34;;;3182:1;3179;3172:12;3152:34;3221:58;3271:7;3262:6;3251:9;3247:22;3221:58;:::i;:::-;3298:8;;-1:-1:-1;3195:84:145;-1:-1:-1;3386:2:145;3371:18;;3358:32;;-1:-1:-1;3402:16:145;;;3399:36;;;3431:1;3428;3421:12;3399:36;3470:72;3534:7;3523:8;3512:9;3508:24;3470:72;:::i;:::-;3561:8;;-1:-1:-1;3444:98:145;-1:-1:-1;3643:2:145;3628:18;;3615:32;;-1:-1:-1;3700:2:145;3685:18;;3672:32;;-1:-1:-1;3716:16:145;;;3713:36;;;3745:1;3742;3735:12;3713:36;3784:72;3848:7;3837:8;3826:9;3822:24;3784:72;:::i;:::-;3875:8;;-1:-1:-1;3758:98:145;-1:-1:-1;3963:3:145;3948:19;;3935:33;;-1:-1:-1;3980:16:145;;;3977:36;;;4009:1;4006;3999:12;3977:36;;4032:51;4075:7;4064:8;4053:9;4049:24;4032:51;:::i;:::-;4022:61;;;4130:3;4119:9;4115:19;4102:33;4092:43;;4154:69;4215:7;4209:3;4198:9;4194:19;4154:69;:::i;:::-;4144:79;;2683:1546;;;;;;;;;;;;;:::o;4234:163::-;4301:20;;4361:10;4350:22;;4340:33;;4330:61;;4387:1;4384;4377:12;4330:61;4234:163;;;:::o;4402:184::-;4460:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:52;;;4529:1;4526;4519:12;4481:52;4552:28;4570:9;4552:28;:::i;4591:131::-;-1:-1:-1;;;;;4666:31:145;;4656:42;;4646:70;;4712:1;4709;4702:12;4727:684;4925:3;4910:19;;4987:10;4960:25;4978:6;4960:25;:::i;:::-;4956:42;4945:9;4938:61;5046:4;5038:6;5034:17;5021:31;5061;5086:5;5061:31;:::i;:::-;-1:-1:-1;;;;;5168:14:145;;;5161:4;5146:20;;5139:44;5232:4;5220:17;;5207:31;;5247:33;5207:31;5247:33;:::i;:::-;5318:16;5311:4;5296:20;;5289:46;5398:4;5386:17;;;5373:31;5351:20;;;;5344:61;;;;4727:684;:::o;5416:250::-;5501:1;5511:113;5525:6;5522:1;5519:13;5511:113;;;5601:11;;;5595:18;5582:11;;;5575:39;5547:2;5540:10;5511:113;;;-1:-1:-1;;5658:1:145;5640:16;;5633:27;5416:250::o;5671:270::-;5712:3;5750:5;5744:12;5777:6;5772:3;5765:19;5793:76;5862:6;5855:4;5850:3;5846:14;5839:4;5832:5;5828:16;5793:76;:::i;:::-;5923:2;5902:15;-1:-1:-1;;5898:29:145;5889:39;;;;5930:4;5885:50;;5671:270;-1:-1:-1;;5671:270:145:o;5946:695::-;6205:3;6194:9;6187:22;6246:6;6240:3;6229:9;6225:19;6218:35;6304:6;6296;6290:3;6279:9;6275:19;6262:49;6361:1;6355:3;6346:6;6335:9;6331:22;6327:32;6320:43;6168:4;6422:2;6418:7;6413:2;6405:6;6401:15;6397:29;6386:9;6382:45;6489:3;6477:9;6473:2;6469:18;6465:28;6458:4;6447:9;6443:20;6436:58;6511:38;6544:3;6540:2;6536:12;6528:6;6511:38;:::i;:::-;6580:2;6565:18;;6558:34;;;;-1:-1:-1;;6623:2:145;6608:18;6601:34;6503:46;5946:695;-1:-1:-1;;;5946:695:145:o;6998:171::-;7065:20;;-1:-1:-1;;;;;7114:30:145;;7104:41;;7094:69;;7159:1;7156;7149:12;7174:256;7240:6;7248;7301:2;7289:9;7280:7;7276:23;7272:32;7269:52;;;7317:1;7314;7307:12;7269:52;7340:28;7358:9;7340:28;:::i;:::-;7330:38;;7387:37;7420:2;7409:9;7405:18;7387:37;:::i;:::-;7377:47;;7174:256;;;;;:::o;7632:273::-;7724:6;7777:2;7765:9;7756:7;7752:23;7748:32;7745:52;;;7793:1;7790;7783:12;7745:52;7825:9;7819:16;7844:31;7869:5;7844:31;:::i;8116:184::-;8186:6;8239:2;8227:9;8218:7;8214:23;8210:32;8207:52;;;8255:1;8252;8245:12;8207:52;-1:-1:-1;8278:16:145;;8116:184;-1:-1:-1;8116:184:145:o;9011:934::-;9147:9;-1:-1:-1;;;;;9222:2:145;9214:6;9211:14;9208:40;;;9228:18;;:::i;:::-;9274:6;9271:1;9267:14;9300:4;9324:28;9348:2;9344;9340:11;9324:28;:::i;:::-;9386:19;;;9456:14;;;;9421:12;;;;9493:14;9482:26;;9479:46;;;9521:1;9518;9511:12;9479:46;9545:5;9559:353;9575:6;9570:3;9567:15;9559:353;;;9661:3;9648:17;9697:2;9684:11;9681:19;9678:109;;;9741:1;9770:2;9766;9759:14;9678:109;9812:57;9854:14;9840:11;9833:5;9829:23;9812:57;:::i;:::-;9800:70;;-1:-1:-1;9890:12:145;;;;9592;;9559:353;;;-1:-1:-1;9934:5:145;9011:934;-1:-1:-1;;;;;;;9011:934:145:o;9950:247::-;10009:6;10062:2;10050:9;10041:7;10037:23;10033:32;10030:52;;;10078:1;10075;10068:12;10030:52;10117:9;10104:23;10136:31;10161:5;10136:31;:::i;10555:277::-;10622:6;10675:2;10663:9;10654:7;10650:23;10646:32;10643:52;;;10691:1;10688;10681:12;10643:52;10723:9;10717:16;10776:5;10769:13;10762:21;10755:5;10752:32;10742:60;;10798:1;10795;10788:12;12091:127;12152:10;12147:3;12143:20;12140:1;12133:31;12183:4;12180:1;12173:15;12207:4;12204:1;12197:15;12223:128;12290:9;;;12311:11;;;12308:37;;;12325:18;;:::i;12759:168::-;12799:7;12865:1;12861;12857:6;12853:14;12850:1;12847:21;12842:1;12835:9;12828:17;12824:45;12821:71;;;12872:18;;:::i;:::-;-1:-1:-1;12912:9:145;;12759:168::o;12932:125::-;12997:9;;;13018:10;;;13015:36;;;13031:18;;:::i;13062:183::-;-1:-1:-1;;;;;13181:10:145;;;13169;;;13165:27;;13204:12;;;13201:38;;;13219:18;;:::i;13250:127::-;13311:10;13306:3;13302:20;13299:1;13292:31;13342:4;13339:1;13332:15;13366:4;13363:1;13356:15;13382:112;13414:1;13440;13430:35;;13445:18;;:::i;:::-;-1:-1:-1;13479:9:145;;13382:112::o;13499:120::-;13539:1;13565;13555:35;;13570:18;;:::i;:::-;-1:-1:-1;13604:9:145;;13499:120::o;14026:127::-;14087:10;14082:3;14078:20;14075:1;14068:31;14118:4;14115:1;14108:15;14142:4;14139:1;14132:15;15986:1113;16343:25;;;16437:10;16425:23;;16387:2;16405:18;;;16398:51;;;;-1:-1:-1;;;;;16485:32:145;;16480:2;16465:18;;16458:60;-1:-1:-1;;;;;16554:31:145;;16549:2;16534:18;;16527:59;16330:3;16617;16602:19;;16595:32;;;16676:13;;16315:19;;;16698:22;;;16282:4;;16778:15;;;;16751:3;16736:19;;;16282:4;16821:169;16835:6;16832:1;16829:13;16821:169;;;16896:13;;16884:26;;16965:15;;;;16930:12;;;;16857:1;16850:9;16821:169;;;16825:3;;17036:9;17031:3;17027:19;17021:3;17010:9;17006:19;16999:48;17064:29;17089:3;17081:6;17064:29;:::i;:::-;17056:37;15986:1113;-1:-1:-1;;;;;;;;;;;15986:1113:145:o;17104:287::-;17233:3;17271:6;17265:13;17287:66;17346:6;17341:3;17334:4;17326:6;17322:17;17287:66;:::i;:::-;17369:16;;;;;17104:287;-1:-1:-1;;17104:287:145:o;17396:290::-;17465:6;17518:2;17506:9;17497:7;17493:23;17489:32;17486:52;;;17534:1;17531;17524:12;17486:52;17560:16;;-1:-1:-1;;;;;;17605:32:145;;17595:43;;17585:71;;17652:1;17649;17642:12;20960:157;20990:1;21024:4;21021:1;21017:12;21048:3;21038:37;;21055:18;;:::i;:::-;21107:3;21100:4;21097:1;21093:12;21089:22;21084:27;;;20960:157;;;;:::o;21122:151::-;21212:4;21205:12;;;21191;;;21187:31;;21230:14;;21227:40;;;21247:18;;:::i;23814:135::-;23853:3;23874:17;;;23871:43;;23894:18;;:::i;:::-;-1:-1:-1;23941:1:145;23930:13;;23814:135::o;26406:422::-;26495:1;26538:5;26495:1;26552:270;26573:7;26563:8;26560:21;26552:270;;;26632:4;26628:1;26624:6;26620:17;26614:4;26611:27;26608:53;;;26641:18;;:::i;:::-;26691:7;26681:8;26677:22;26674:55;;;26711:16;;;;26674:55;26790:22;;;;26750:15;;;;26552:270;;;26556:3;26406:422;;;;;:::o;26833:806::-;26882:5;26912:8;26902:80;;-1:-1:-1;26953:1:145;26967:5;;26902:80;27001:4;26991:76;;-1:-1:-1;27038:1:145;27052:5;;26991:76;27083:4;27101:1;27096:59;;;;27169:1;27164:130;;;;27076:218;;27096:59;27126:1;27117:10;;27140:5;;;27164:130;27201:3;27191:8;27188:17;27185:43;;;27208:18;;:::i;:::-;-1:-1:-1;;27264:1:145;27250:16;;27279:5;;27076:218;;27378:2;27368:8;27365:16;27359:3;27353:4;27350:13;27346:36;27340:2;27330:8;27327:16;27322:2;27316:4;27313:12;27309:35;27306:77;27303:159;;;-1:-1:-1;27415:19:145;;;27447:5;;27303:159;27494:34;27519:8;27513:4;27494:34;:::i;:::-;27564:6;27560:1;27556:6;27552:19;27543:7;27540:32;27537:58;;;27575:18;;:::i;:::-;27613:20;;26833:806;-1:-1:-1;;;26833:806:145:o;27644:131::-;27704:5;27733:36;27760:8;27754:4;27733:36;:::i;28032:478::-;28234:2;28216:21;;;28273:2;28253:18;;;28246:30;28312:34;28307:2;28292:18;;28285:62;28383:34;28378:2;28363:18;;28356:62;-1:-1:-1;;;28449:3:145;28434:19;;28427:41;28500:3;28485:19;;28032:478::o", + "linkReferences": {} + }, + "methodIdentifiers": { + "eventsPublished(bytes32)": "3cca331c", + "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": "bbe6d642", + "subscriptions(bytes32)": "94259c6c" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}}},\"title\":\"TelepathyPublisher\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"A contract that can publish events to a ISubscriptionReceiver contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPublisher.sol\":\"TelepathyPublisher\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c\",\"urls\":[\"bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde\",\"dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32", + "indexed": true + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address", + "indexed": false + }, + { + "internalType": "bool", + "name": "success", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "Publish", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "eventsPublished", + "outputs": [ + { + "internalType": "enum PublishStatus", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + }, + { + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple", + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "publishEvent" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "subscriptions", + "outputs": [ + { + "internalType": "enum SubscriptionStatus", + "name": "", + "type": "uint8" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": { + "details": "This function should be called for every subscriber that is subscribed to the event.", + "params": { + "logIndex": "The index of the event in our transaction.", + "receiptsRoot": "The receipts root which contains the event.", + "receiptsRootProof": "A merkle proof proving the receiptsRoot in the block header.", + "srcSlotTxSlotPack": "The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.", + "subscription": "The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).", + "txIndexRLPEncoded": "The index of our transaction inside the block RLP encoded." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": { + "notice": "Publishes an event emit to a callback Subscriber, given an event proof." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/pubsub/TelepathyPublisher.sol": "TelepathyPublisher" + }, + "libraries": {} + }, + "sources": { + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", + "urls": [ + "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", + "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { + "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", + "urls": [ + "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", + "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { + "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", + "urls": [ + "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", + "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { + "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", + "urls": [ + "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", + "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { + "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", + "urls": [ + "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", + "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { + "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", + "urls": [ + "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", + "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", + "urls": [ + "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", + "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { + "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", + "urls": [ + "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", + "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { + "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", + "urls": [ + "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", + "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { + "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", + "urls": [ + "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", + "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", + "urls": [ + "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", + "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { + "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", + "urls": [ + "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", + "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { + "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", + "urls": [ + "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", + "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", + "urls": [ + "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", + "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { + "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", + "urls": [ + "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", + "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { + "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", + "urls": [ + "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", + "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/Bytes.sol": { + "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", + "urls": [ + "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", + "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { + "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", + "urls": [ + "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", + "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { + "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", + "urls": [ + "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", + "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { + "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", + "urls": [ + "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", + "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" + ], + "license": "MIT" + }, + "src/amb/SourceAMB.sol": { + "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "urls": [ + "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", + "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + ], + "license": null + }, + "src/amb/TargetAMB.sol": { + "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "urls": [ + "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", + "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + ], + "license": null + }, + "src/amb/TelepathyAccess.sol": { + "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", + "urls": [ + "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", + "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" + ], + "license": null + }, + "src/amb/TelepathyRouter.sol": { + "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", + "urls": [ + "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", + "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" + ], + "license": null + }, + "src/amb/TelepathyStorage.sol": { + "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", + "urls": [ + "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", + "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" + ], + "license": null + }, + "src/amb/interfaces/ITelepathy.sol": { + "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", + "urls": [ + "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", + "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" + ], + "license": null + }, + "src/libraries/MessageEncoding.sol": { + "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", + "urls": [ + "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", + "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" + ], + "license": null + }, + "src/libraries/SimpleSerialize.sol": { + "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "urls": [ + "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", + "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + ], + "license": null + }, + "src/libraries/StateProofHelper.sol": { + "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", + "urls": [ + "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", + "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" + ], + "license": null + }, + "src/libraries/Typecast.sol": { + "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", + "urls": [ + "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", + "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" + ], + "license": "MIT OR Apache-2.0" + }, + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + }, + "src/pubsub/EventProof.sol": { + "keccak256": "0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e", + "urls": [ + "bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78", + "dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi" + ], + "license": null + }, + "src/pubsub/PubSubStorage.sol": { + "keccak256": "0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b", + "urls": [ + "bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e", + "dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL" + ], + "license": null + }, + "src/pubsub/TelepathyPublisher.sol": { + "keccak256": "0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c", + "urls": [ + "bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde", + "dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk" + ], + "license": null + }, + "src/pubsub/interfaces/IPubSub.sol": { + "keccak256": "0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c", + "urls": [ + "bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a", + "dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt" + ], + "license": null + }, + "src/pubsub/interfaces/ISubscriptionReceiver.sol": { + "keccak256": "0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c", + "urls": [ + "bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb", + "dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/pubsub/TelepathyPublisher.sol", + "id": 48911, + "exportedSymbols": { + "Address": [ + 44245 + ], + "EventProof": [ + 48458 + ], + "IPublisher": [ + 49174 + ], + "ISubscriptionReceiver": [ + 49195 + ], + "PubSubStorage": [ + 48485 + ], + "PublishStatus": [ + 49140 + ], + "SSZ": [ + 43867 + ], + "Subscription": [ + 49087 + ], + "TelepathyPublisher": [ + 48910 + ], + "TelepathyRouter": [ + 42568 + ] + }, + "nodeType": "SourceUnit", + "src": "0:6067:123", + "nodes": [ + { + "id": 48518, + "nodeType": "PragmaDirective", + "src": "0:24:123", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".16" + ] + }, + { + "id": 48521, + "nodeType": "ImportDirective", + "src": "26:75:123", + "nodes": [], + "absolutePath": "src/pubsub/interfaces/IPubSub.sol", + "file": "src/pubsub/interfaces/IPubSub.sol", + "nameLocation": "-1:-1:-1", + "scope": 48911, + "sourceUnit": 49175, + "symbolAliases": [ + { + "foreign": { + "id": 48519, + "name": "Subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49087, + "src": "34:12:123", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 48520, + "name": "IPublisher", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49174, + "src": "48:10:123", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48523, + "nodeType": "ImportDirective", + "src": "102:53:123", + "nodes": [], + "absolutePath": "src/pubsub/EventProof.sol", + "file": "src/pubsub/EventProof.sol", + "nameLocation": "-1:-1:-1", + "scope": 48911, + "sourceUnit": 48459, + "symbolAliases": [ + { + "foreign": { + "id": 48522, + "name": "EventProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48458, + "src": "110:10:123", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48525, + "nodeType": "ImportDirective", + "src": "156:86:123", + "nodes": [], + "absolutePath": "src/pubsub/interfaces/ISubscriptionReceiver.sol", + "file": "src/pubsub/interfaces/ISubscriptionReceiver.sol", + "nameLocation": "-1:-1:-1", + "scope": 48911, + "sourceUnit": 49196, + "symbolAliases": [ + { + "foreign": { + "id": 48524, + "name": "ISubscriptionReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49195, + "src": "164:21:123", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48527, + "nodeType": "ImportDirective", + "src": "243:60:123", + "nodes": [], + "absolutePath": "src/amb/TelepathyRouter.sol", + "file": "src/amb/TelepathyRouter.sol", + "nameLocation": "-1:-1:-1", + "scope": 48911, + "sourceUnit": 42569, + "symbolAliases": [ + { + "foreign": { + "id": 48526, + "name": "TelepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42568, + "src": "251:15:123", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48529, + "nodeType": "ImportDirective", + "src": "304:54:123", + "nodes": [], + "absolutePath": "src/libraries/SimpleSerialize.sol", + "file": "src/libraries/SimpleSerialize.sol", + "nameLocation": "-1:-1:-1", + "scope": 48911, + "sourceUnit": 43868, + "symbolAliases": [ + { + "foreign": { + "id": 48528, + "name": "SSZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43867, + "src": "312:3:123", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48531, + "nodeType": "ImportDirective", + "src": "359:51:123", + "nodes": [], + "absolutePath": "src/libraries/Typecast.sol", + "file": "src/libraries/Typecast.sol", + "nameLocation": "-1:-1:-1", + "scope": 48911, + "sourceUnit": 44266, + "symbolAliases": [ + { + "foreign": { + "id": 48530, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44245, + "src": "367:7:123", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48533, + "nodeType": "ImportDirective", + "src": "411:59:123", + "nodes": [], + "absolutePath": "src/pubsub/PubSubStorage.sol", + "file": "src/pubsub/PubSubStorage.sol", + "nameLocation": "-1:-1:-1", + "scope": 48911, + "sourceUnit": 48486, + "symbolAliases": [ + { + "foreign": { + "id": 48532, + "name": "PubSubStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48485, + "src": "419:13:123", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48535, + "nodeType": "ImportDirective", + "src": "472:64:123", + "nodes": [], + "absolutePath": "src/pubsub/interfaces/IPubSub.sol", + "file": "src/pubsub/interfaces/IPubSub.sol", + "nameLocation": "-1:-1:-1", + "scope": 48911, + "sourceUnit": 49175, + "symbolAliases": [ + { + "foreign": { + "id": 48534, + "name": "PublishStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49140, + "src": "480:13:123", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48910, + "nodeType": "ContractDefinition", + "src": "678:5388:123", + "nodes": [ + { + "id": 48688, + "nodeType": "FunctionDefinition", + "src": "1533:1728:123", + "nodes": [], + "body": { + "id": 48687, + "nodeType": "Block", + "src": "1837:1424:123", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 48562, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48558, + "src": "1877:12:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1890:13:123", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 49080, + "src": "1877:26:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 48561, + "name": "requireLightClientConsistency", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48721, + "src": "1847:29:123", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", + "typeString": "function (uint32) view" + } + }, + "id": 48564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1847:57:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48565, + "nodeType": "ExpressionStatement", + "src": "1847:57:123" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 48567, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48558, + "src": "1931:12:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1944:13:123", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 49080, + "src": "1931:26:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 48566, + "name": "requireNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48737, + "src": "1914:16:123", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", + "typeString": "function (uint32) view" + } + }, + "id": 48569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1914:44:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48570, + "nodeType": "ExpressionStatement", + "src": "1914:44:123" + }, + { + "assignments": [ + 48572 + ], + "declarations": [ + { + "constant": false, + "id": 48572, + "mutability": "mutable", + "name": "subscriptionId", + "nameLocation": "2053:14:123", + "nodeType": "VariableDeclaration", + "scope": 48687, + "src": "2045:22:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48571, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2045:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 48579, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 48576, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48558, + "src": "2091:12:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + ], + "expression": { + "id": 48574, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2080:3:123", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 48575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2084:6:123", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "2080:10:123", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 48577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2080:24:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 48573, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2070:9:123", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 48578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2070:35:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2045:60:123" + }, + { + "assignments": [ + 48581 + ], + "declarations": [ + { + "constant": false, + "id": 48581, + "mutability": "mutable", + "name": "publishKey", + "nameLocation": "2123:10:123", + "nodeType": "VariableDeclaration", + "scope": 48687, + "src": "2115:18:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48580, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2115:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 48591, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 48585, + "name": "srcSlotTxSlotPack", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48543, + "src": "2169:17:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "id": 48586, + "name": "txIndexRLPEncoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48553, + "src": "2188:17:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 48587, + "name": "logIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48555, + "src": "2207:8:123", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 48588, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48572, + "src": "2217:14:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 48583, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2158:3:123", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 48584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2162:6:123", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "2158:10:123", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 48589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2158:74:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 48582, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2148:9:123", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 48590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2148:85:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2115:118:123" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeString": "enum PublishStatus" + }, + "id": 48598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 48593, + "name": "eventsPublished", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48474, + "src": "2264:15:123", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49140_$", + "typeString": "mapping(bytes32 => enum PublishStatus)" + } + }, + "id": 48595, + "indexExpression": { + "id": 48594, + "name": "publishKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48581, + "src": "2280:10:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2264:27:123", + "typeDescriptions": { + "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeString": "enum PublishStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 48596, + "name": "PublishStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49140, + "src": "2295:13:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49140_$", + "typeString": "type(enum PublishStatus)" + } + }, + "id": 48597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2309:12:123", + "memberName": "NOT_EXECUTED", + "nodeType": "MemberAccess", + "referencedDeclaration": 49137, + "src": "2295:26:123", + "typeDescriptions": { + "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeString": "enum PublishStatus" + } + }, + "src": "2264:57:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4576656e7420616c7265616479207075626c6973686564", + "id": 48599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2323:25:123", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_38898c42571d1d09f1b6fd17083a50dddf3e70a43104a0c556295d55517f3eb3", + "typeString": "literal_string \"Event already published\"" + }, + "value": "Event already published" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_38898c42571d1d09f1b6fd17083a50dddf3e70a43104a0c556295d55517f3eb3", + "typeString": "literal_string \"Event already published\"" + } + ], + "id": 48592, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2243:7:123", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 48600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2243:115:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48601, + "nodeType": "ExpressionStatement", + "src": "2243:115:123" + }, + { + "assignments": [ + 48603, + 48605 + ], + "declarations": [ + { + "constant": false, + "id": 48603, + "mutability": "mutable", + "name": "srcSlot", + "nameLocation": "2377:7:123", + "nodeType": "VariableDeclaration", + "scope": 48687, + "src": "2370:14:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 48602, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2370:6:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48605, + "mutability": "mutable", + "name": "txSlot", + "nameLocation": "2393:6:123", + "nodeType": "VariableDeclaration", + "scope": 48687, + "src": "2386:13:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 48604, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2386:6:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "id": 48615, + "initialValue": { + "arguments": [ + { + "id": 48608, + "name": "srcSlotTxSlotPack", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48543, + "src": "2414:17:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "components": [ + { + "id": 48610, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2434:6:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 48609, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2434:6:123", + "typeDescriptions": {} + } + }, + { + "id": 48612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2442:6:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 48611, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2442:6:123", + "typeDescriptions": {} + } + } + ], + "id": 48613, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2433:16:123", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_uint64_$_$_t_type$_t_uint64_$_$", + "typeString": "tuple(type(uint64),type(uint64))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_uint64_$_$_t_type$_t_uint64_$_$", + "typeString": "tuple(type(uint64),type(uint64))" + } + ], + "expression": { + "id": 48606, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2403:3:123", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 48607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2407:6:123", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "2403:10:123", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 48614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2403:47:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", + "typeString": "tuple(uint64,uint64)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2369:81:123" + }, + { + "expression": { + "arguments": [ + { + "id": 48617, + "name": "srcSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48603, + "src": "2484:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 48618, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48558, + "src": "2493:12:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2506:13:123", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 49080, + "src": "2493:26:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 48616, + "name": "requireLightClientDelay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48797, + "src": "2460:23:123", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint32_$returns$__$", + "typeString": "function (uint64,uint32) view" + } + }, + "id": 48620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2460:60:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48621, + "nodeType": "ExpressionStatement", + "src": "2460:60:123" + }, + { + "assignments": [ + 48623 + ], + "declarations": [ + { + "constant": false, + "id": 48623, + "mutability": "mutable", + "name": "headerRoot", + "nameLocation": "2538:10:123", + "nodeType": "VariableDeclaration", + "scope": 48687, + "src": "2530:18:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48622, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2530:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 48632, + "initialValue": { + "arguments": [ + { + "id": 48630, + "name": "srcSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48603, + "src": "2628:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "arguments": [ + { + "expression": { + "id": 48626, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48558, + "src": "2592:12:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2605:13:123", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 49080, + "src": "2592:26:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "id": 48624, + "name": "telepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48469, + "src": "2563:15:123", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeString": "contract TelepathyRouter" + } + }, + "id": 48625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2579:12:123", + "memberName": "lightClients", + "nodeType": "MemberAccess", + "referencedDeclaration": 42595, + "src": "2563:28:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeString": "function (uint32) view external returns (contract ILightClient)" + } + }, + "id": 48628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2563:56:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "id": 48629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2620:7:123", + "memberName": "headers", + "nodeType": "MemberAccess", + "referencedDeclaration": 47847, + "src": "2563:64:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) view external returns (bytes32)" + } + }, + "id": 48631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2563:73:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2530:106:123" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 48639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 48634, + "name": "headerRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48623, + "src": "2654:10:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 48637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2676:1:123", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 48636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2668:7:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 48635, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2668:7:123", + "typeDescriptions": {} + } + }, + "id": 48638, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2668:10:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2654:24:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "486561646572526f6f74206973206d697373696e67", + "id": 48640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2680:23:123", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_02a1349704ffa751bbc14e2e3da5665267eb20d6db37ee32898d996c4fc87c26", + "typeString": "literal_string \"HeaderRoot is missing\"" + }, + "value": "HeaderRoot is missing" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_02a1349704ffa751bbc14e2e3da5665267eb20d6db37ee32898d996c4fc87c26", + "typeString": "literal_string \"HeaderRoot is missing\"" + } + ], + "id": 48633, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2646:7:123", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 48641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2646:58:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48642, + "nodeType": "ExpressionStatement", + "src": "2646:58:123" + }, + { + "assignments": [ + 48644 + ], + "declarations": [ + { + "constant": false, + "id": 48644, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "2719:7:123", + "nodeType": "VariableDeclaration", + "scope": 48687, + "src": "2714:12:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 48643, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2714:4:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 48653, + "initialValue": { + "arguments": [ + { + "id": 48647, + "name": "receiptsRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48548, + "src": "2764:12:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 48648, + "name": "receiptsRootProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48546, + "src": "2778:17:123", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + { + "id": 48649, + "name": "headerRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48623, + "src": "2797:10:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 48650, + "name": "srcSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48603, + "src": "2809:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 48651, + "name": "txSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48605, + "src": "2818:6:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "id": 48645, + "name": "SSZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43867, + "src": "2741:3:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeString": "type(library SSZ)" + } + }, + "id": 48646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2745:18:123", + "memberName": "verifyReceiptsRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 43866, + "src": "2741:22:123", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes32[] memory,bytes32,uint64,uint64) pure returns (bool)" + } + }, + "id": 48652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2741:84:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2714:111:123" + }, + { + "expression": { + "arguments": [ + { + "id": 48655, + "name": "isValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48644, + "src": "2843:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c696420726563656970747320726f6f742070726f6f66", + "id": 48656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2852:29:123", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a8a86cc8e698cc54f14148f81c68ad3a36e4a61b0a2af21ecc438884515f4870", + "typeString": "literal_string \"Invalid receipts root proof\"" + }, + "value": "Invalid receipts root proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a8a86cc8e698cc54f14148f81c68ad3a36e4a61b0a2af21ecc438884515f4870", + "typeString": "literal_string \"Invalid receipts root proof\"" + } + ], + "id": 48654, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2835:7:123", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 48657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2835:47:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48658, + "nodeType": "ExpressionStatement", + "src": "2835:47:123" + }, + { + "assignments": [ + 48663, + 48665 + ], + "declarations": [ + { + "constant": false, + "id": 48663, + "mutability": "mutable", + "name": "eventTopics", + "nameLocation": "2911:11:123", + "nodeType": "VariableDeclaration", + "scope": 48687, + "src": "2894:28:123", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 48661, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2894:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 48662, + "nodeType": "ArrayTypeName", + "src": "2894:9:123", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48665, + "mutability": "mutable", + "name": "eventData", + "nameLocation": "2937:9:123", + "nodeType": "VariableDeclaration", + "scope": 48687, + "src": "2924:22:123", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 48664, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2924:5:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 48677, + "initialValue": { + "arguments": [ + { + "id": 48668, + "name": "receiptProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48551, + "src": "2985:12:123", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 48669, + "name": "receiptsRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48548, + "src": "3011:12:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 48670, + "name": "txIndexRLPEncoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48553, + "src": "3037:17:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 48671, + "name": "logIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48555, + "src": "3068:8:123", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 48672, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48558, + "src": "3090:12:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3103:13:123", + "memberName": "sourceAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 49082, + "src": "3090:26:123", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 48674, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48558, + "src": "3130:12:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3143:8:123", + "memberName": "eventSig", + "nodeType": "MemberAccess", + "referencedDeclaration": 49086, + "src": "3130:21:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 48666, + "name": "EventProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48458, + "src": "2950:10:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_EventProof_$48458_$", + "typeString": "type(library EventProof)" + } + }, + "id": 48667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2961:10:123", + "memberName": "parseEvent", + "nodeType": "MemberAccess", + "referencedDeclaration": 48406, + "src": "2950:21:123", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory[] memory,bytes32,bytes memory,uint256,address,bytes32) pure returns (bytes32[] memory,bytes memory)" + } + }, + "id": 48676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2950:211:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bytes32[] memory,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2893:268:123" + }, + { + "expression": { + "arguments": [ + { + "id": 48679, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48572, + "src": "3181:14:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 48680, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48558, + "src": "3197:12:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + { + "id": 48681, + "name": "publishKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48581, + "src": "3211:10:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 48682, + "name": "txSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48605, + "src": "3223:6:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 48683, + "name": "eventTopics", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48663, + "src": "3231:11:123", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "id": 48684, + "name": "eventData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48665, + "src": "3244:9:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 48678, + "name": "_publish", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48909, + "src": "3172:8:123", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49087_calldata_ptr_$_t_bytes32_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,struct Subscription calldata,bytes32,uint64,bytes32[] memory,bytes memory)" + } + }, + "id": 48685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3172:82:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48686, + "nodeType": "ExpressionStatement", + "src": "3172:82:123" + } + ] + }, + "baseFunctions": [ + 49173 + ], + "documentation": { + "id": 48541, + "nodeType": "StructuredDocumentation", + "src": "741:787:123", + "text": "@notice Publishes an event emit to a callback Subscriber, given an event proof.\n @param srcSlotTxSlotPack The slot where we want to read the header from and the slot where\n the tx executed, packed as two uint64s.\n @param receiptsRootProof A merkle proof proving the receiptsRoot in the block header.\n @param receiptsRoot The receipts root which contains the event.\n @param txIndexRLPEncoded The index of our transaction inside the block RLP encoded.\n @param logIndex The index of the event in our transaction.\n @param subscription The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\n @dev This function should be called for every subscriber that is subscribed to the event." + }, + "functionSelector": "bbe6d642", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "publishEvent", + "nameLocation": "1542:12:123", + "parameters": { + "id": 48559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48543, + "mutability": "mutable", + "name": "srcSlotTxSlotPack", + "nameLocation": "1579:17:123", + "nodeType": "VariableDeclaration", + "scope": 48688, + "src": "1564:32:123", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 48542, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1564:5:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48546, + "mutability": "mutable", + "name": "receiptsRootProof", + "nameLocation": "1625:17:123", + "nodeType": "VariableDeclaration", + "scope": 48688, + "src": "1606:36:123", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 48544, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1606:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 48545, + "nodeType": "ArrayTypeName", + "src": "1606:9:123", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48548, + "mutability": "mutable", + "name": "receiptsRoot", + "nameLocation": "1660:12:123", + "nodeType": "VariableDeclaration", + "scope": 48688, + "src": "1652:20:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48547, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1652:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48551, + "mutability": "mutable", + "name": "receiptProof", + "nameLocation": "1699:12:123", + "nodeType": "VariableDeclaration", + "scope": 48688, + "src": "1682:29:123", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 48549, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1682:5:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 48550, + "nodeType": "ArrayTypeName", + "src": "1682:7:123", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48553, + "mutability": "mutable", + "name": "txIndexRLPEncoded", + "nameLocation": "1734:17:123", + "nodeType": "VariableDeclaration", + "scope": 48688, + "src": "1721:30:123", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 48552, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1721:5:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48555, + "mutability": "mutable", + "name": "logIndex", + "nameLocation": "1769:8:123", + "nodeType": "VariableDeclaration", + "scope": 48688, + "src": "1761:16:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 48554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1761:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48558, + "mutability": "mutable", + "name": "subscription", + "nameLocation": "1809:12:123", + "nodeType": "VariableDeclaration", + "scope": 48688, + "src": "1787:34:123", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription" + }, + "typeName": { + "id": 48557, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 48556, + "name": "Subscription", + "nameLocations": [ + "1787:12:123" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49087, + "src": "1787:12:123" + }, + "referencedDeclaration": 49087, + "src": "1787:12:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_storage_ptr", + "typeString": "struct Subscription" + } + }, + "visibility": "internal" + } + ], + "src": "1554:273:123" + }, + "returnParameters": { + "id": 48560, + "nodeType": "ParameterList", + "parameters": [], + "src": "1837:0:123" + }, + "scope": 48910, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 48721, + "nodeType": "FunctionDefinition", + "src": "3347:307:123", + "nodes": [], + "body": { + "id": 48720, + "nodeType": "Block", + "src": "3416:238:123", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 48706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 48699, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48691, + "src": "3484:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "id": 48697, + "name": "telepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48469, + "src": "3455:15:123", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeString": "contract TelepathyRouter" + } + }, + "id": 48698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3471:12:123", + "memberName": "lightClients", + "nodeType": "MemberAccess", + "referencedDeclaration": 42595, + "src": "3455:28:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeString": "function (uint32) view external returns (contract ILightClient)" + } + }, + "id": 48700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3455:37:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + ], + "id": 48696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3447:7:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 48695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3447:7:123", + "typeDescriptions": {} + } + }, + "id": 48701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3447:46:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 48704, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3505:1:123", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 48703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3497:7:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 48702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3497:7:123", + "typeDescriptions": {} + } + }, + "id": 48705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3497:10:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3447:60:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", + "id": 48707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3509:26:123", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", + "typeString": "literal_string \"Light client is not set.\"" + }, + "value": "Light client is not set." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", + "typeString": "literal_string \"Light client is not set.\"" + } + ], + "id": 48694, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3426:7:123", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 48708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3426:119:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48709, + "nodeType": "ExpressionStatement", + "src": "3426:119:123" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 48713, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48691, + "src": "3592:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "id": 48711, + "name": "telepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48469, + "src": "3563:15:123", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeString": "contract TelepathyRouter" + } + }, + "id": 48712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3579:12:123", + "memberName": "lightClients", + "nodeType": "MemberAccess", + "referencedDeclaration": 42595, + "src": "3563:28:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeString": "function (uint32) view external returns (contract ILightClient)" + } + }, + "id": 48714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3563:37:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "id": 48715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3601:10:123", + "memberName": "consistent", + "nodeType": "MemberAccess", + "referencedDeclaration": 47835, + "src": "3563:48:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", + "typeString": "function () view external returns (bool)" + } + }, + "id": 48716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3563:50:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4c6967687420636c69656e7420697320696e636f6e73697374656e742e", + "id": 48717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3615:31:123", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2e1e9c043617752a0dea84b31d35e61238519932f65eb40cd6ed13f6fd86c420", + "typeString": "literal_string \"Light client is inconsistent.\"" + }, + "value": "Light client is inconsistent." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2e1e9c043617752a0dea84b31d35e61238519932f65eb40cd6ed13f6fd86c420", + "typeString": "literal_string \"Light client is inconsistent.\"" + } + ], + "id": 48710, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3555:7:123", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 48718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3555:92:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48719, + "nodeType": "ExpressionStatement", + "src": "3555:92:123" + } + ] + }, + "documentation": { + "id": 48689, + "nodeType": "StructuredDocumentation", + "src": "3267:75:123", + "text": "@notice Checks that the light client for a given chainId is consistent." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireLightClientConsistency", + "nameLocation": "3356:29:123", + "parameters": { + "id": 48692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48691, + "mutability": "mutable", + "name": "chainId", + "nameLocation": "3393:7:123", + "nodeType": "VariableDeclaration", + "scope": 48721, + "src": "3386:14:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 48690, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "3386:6:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "3385:16:123" + }, + "returnParameters": { + "id": 48693, + "nodeType": "ParameterList", + "parameters": [], + "src": "3416:0:123" + }, + "scope": 48910, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 48737, + "nodeType": "FunctionDefinition", + "src": "3715:137:123", + "nodes": [], + "body": { + "id": 48736, + "nodeType": "Block", + "src": "3771:81:123", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 48732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3789:32:123", + "subExpression": { + "arguments": [ + { + "id": 48730, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48724, + "src": "3813:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "id": 48728, + "name": "telepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48469, + "src": "3790:15:123", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeString": "contract TelepathyRouter" + } + }, + "id": 48729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3806:6:123", + "memberName": "frozen", + "nodeType": "MemberAccess", + "referencedDeclaration": 42605, + "src": "3790:22:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_bool_$", + "typeString": "function (uint32) view external returns (bool)" + } + }, + "id": 48731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3790:31:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "436f6e74726163742069732066726f7a656e2e", + "id": 48733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3823:21:123", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8a588d987ba140ba8da36da6bed0df68ef46602e008fcb659a3bdc8b60353b80", + "typeString": "literal_string \"Contract is frozen.\"" + }, + "value": "Contract is frozen." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8a588d987ba140ba8da36da6bed0df68ef46602e008fcb659a3bdc8b60353b80", + "typeString": "literal_string \"Contract is frozen.\"" + } + ], + "id": 48727, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3781:7:123", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 48734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3781:64:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48735, + "nodeType": "ExpressionStatement", + "src": "3781:64:123" + } + ] + }, + "documentation": { + "id": 48722, + "nodeType": "StructuredDocumentation", + "src": "3660:50:123", + "text": "@notice Checks that the chainId is not frozen." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireNotFrozen", + "nameLocation": "3724:16:123", + "parameters": { + "id": 48725, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48724, + "mutability": "mutable", + "name": "chainId", + "nameLocation": "3748:7:123", + "nodeType": "VariableDeclaration", + "scope": 48737, + "src": "3741:14:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 48723, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "3741:6:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "3740:16:123" + }, + "returnParameters": { + "id": 48726, + "nodeType": "ParameterList", + "parameters": [], + "src": "3771:0:123" + }, + "scope": 48910, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 48797, + "nodeType": "FunctionDefinition", + "src": "3922:620:123", + "nodes": [], + "body": { + "id": 48796, + "nodeType": "Block", + "src": "3998:544:123", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 48757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 48750, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48742, + "src": "4066:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "id": 48748, + "name": "telepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48469, + "src": "4037:15:123", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeString": "contract TelepathyRouter" + } + }, + "id": 48749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4053:12:123", + "memberName": "lightClients", + "nodeType": "MemberAccess", + "referencedDeclaration": 42595, + "src": "4037:28:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeString": "function (uint32) view external returns (contract ILightClient)" + } + }, + "id": 48751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4037:37:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + ], + "id": 48747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4029:7:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 48746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4029:7:123", + "typeDescriptions": {} + } + }, + "id": 48752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4029:46:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 48755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4087:1:123", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 48754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4079:7:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 48753, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4079:7:123", + "typeDescriptions": {} + } + }, + "id": 48756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4079:10:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4029:60:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", + "id": 48758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4091:26:123", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", + "typeString": "literal_string \"Light client is not set.\"" + }, + "value": "Light client is not set." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", + "typeString": "literal_string \"Light client is not set.\"" + } + ], + "id": 48745, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4008:7:123", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 48759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4008:119:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48760, + "nodeType": "ExpressionStatement", + "src": "4008:119:123" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 48770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 48767, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48740, + "src": "4207:4:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "arguments": [ + { + "id": 48764, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48742, + "src": "4187:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "id": 48762, + "name": "telepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48469, + "src": "4158:15:123", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeString": "contract TelepathyRouter" + } + }, + "id": 48763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4174:12:123", + "memberName": "lightClients", + "nodeType": "MemberAccess", + "referencedDeclaration": 42595, + "src": "4158:28:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeString": "function (uint32) view external returns (contract ILightClient)" + } + }, + "id": 48765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4158:37:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "id": 48766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4196:10:123", + "memberName": "timestamps", + "nodeType": "MemberAccess", + "referencedDeclaration": 47861, + "src": "4158:48:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view external returns (uint256)" + } + }, + "id": 48768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4158:54:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 48769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4216:1:123", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4158:59:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "54696d657374616d70206973206e6f742073657420666f7220736c6f742e", + "id": 48771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4231:32:123", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6d7a45101ad497aef48b2b4cd343588a8ff87c05de216f8c1f25e504e4b18b11", + "typeString": "literal_string \"Timestamp is not set for slot.\"" + }, + "value": "Timestamp is not set for slot." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6d7a45101ad497aef48b2b4cd343588a8ff87c05de216f8c1f25e504e4b18b11", + "typeString": "literal_string \"Timestamp is not set for slot.\"" + } + ], + "id": 48761, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4137:7:123", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 48772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4137:136:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48773, + "nodeType": "ExpressionStatement", + "src": "4137:136:123" + }, + { + "assignments": [ + 48775 + ], + "declarations": [ + { + "constant": false, + "id": 48775, + "mutability": "mutable", + "name": "elapsedTime", + "nameLocation": "4291:11:123", + "nodeType": "VariableDeclaration", + "scope": 48796, + "src": "4283:19:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 48774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4283:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 48786, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 48785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 48776, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "4317:5:123", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 48777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4323:9:123", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "4317:15:123", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "id": 48783, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48740, + "src": "4384:4:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "arguments": [ + { + "id": 48780, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48742, + "src": "4364:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "id": 48778, + "name": "telepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48469, + "src": "4335:15:123", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeString": "contract TelepathyRouter" + } + }, + "id": 48779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4351:12:123", + "memberName": "lightClients", + "nodeType": "MemberAccess", + "referencedDeclaration": 42595, + "src": "4335:28:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeString": "function (uint32) view external returns (contract ILightClient)" + } + }, + "id": 48781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4335:37:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "id": 48782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4373:10:123", + "memberName": "timestamps", + "nodeType": "MemberAccess", + "referencedDeclaration": 47861, + "src": "4335:48:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view external returns (uint256)" + } + }, + "id": 48784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4335:54:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4317:72:123", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4283:106:123" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 48792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 48788, + "name": "elapsedTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48775, + "src": "4420:11:123", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 48789, + "name": "telepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48469, + "src": "4435:15:123", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeString": "contract TelepathyRouter" + } + }, + "id": 48790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4451:22:123", + "memberName": "MIN_LIGHT_CLIENT_DELAY", + "nodeType": "MemberAccess", + "referencedDeclaration": 41504, + "src": "4435:38:123", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 48791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4435:40:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4420:55:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f742e", + "id": 48793, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4489:36:123", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b51feb04d24e293cda4cdf47dbe63ae0b79975ab7f4fafdae4b8602d5cda444", + "typeString": "literal_string \"Must wait longer to use this slot.\"" + }, + "value": "Must wait longer to use this slot." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5b51feb04d24e293cda4cdf47dbe63ae0b79975ab7f4fafdae4b8602d5cda444", + "typeString": "literal_string \"Must wait longer to use this slot.\"" + } + ], + "id": 48787, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4399:7:123", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 48794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4399:136:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48795, + "nodeType": "ExpressionStatement", + "src": "4399:136:123" + } + ] + }, + "documentation": { + "id": 48738, + "nodeType": "StructuredDocumentation", + "src": "3858:59:123", + "text": "@notice Checks that the light client delay is adequate." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireLightClientDelay", + "nameLocation": "3931:23:123", + "parameters": { + "id": 48743, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48740, + "mutability": "mutable", + "name": "slot", + "nameLocation": "3962:4:123", + "nodeType": "VariableDeclaration", + "scope": 48797, + "src": "3955:11:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 48739, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3955:6:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48742, + "mutability": "mutable", + "name": "chainId", + "nameLocation": "3975:7:123", + "nodeType": "VariableDeclaration", + "scope": 48797, + "src": "3968:14:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 48741, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "3968:6:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "3954:29:123" + }, + "returnParameters": { + "id": 48744, + "nodeType": "ParameterList", + "parameters": [], + "src": "3998:0:123" + }, + "scope": 48910, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 48909, + "nodeType": "FunctionDefinition", + "src": "4667:1397:123", + "nodes": [], + "body": { + "id": 48908, + "nodeType": "Block", + "src": "4903:1161:123", + "nodes": [], + "statements": [ + { + "assignments": [ + 48816 + ], + "declarations": [ + { + "constant": false, + "id": 48816, + "mutability": "mutable", + "name": "success", + "nameLocation": "4918:7:123", + "nodeType": "VariableDeclaration", + "scope": 48908, + "src": "4913:12:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 48815, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4913:4:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 48817, + "nodeType": "VariableDeclarationStatement", + "src": "4913:12:123" + }, + { + "assignments": [ + 48819 + ], + "declarations": [ + { + "constant": false, + "id": 48819, + "mutability": "mutable", + "name": "data", + "nameLocation": "4948:4:123", + "nodeType": "VariableDeclaration", + "scope": 48908, + "src": "4935:17:123", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 48818, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4935:5:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 48820, + "nodeType": "VariableDeclarationStatement", + "src": "4935:17:123" + }, + { + "id": 48848, + "nodeType": "Block", + "src": "4962:435:123", + "statements": [ + { + "assignments": [ + 48822 + ], + "declarations": [ + { + "constant": false, + "id": 48822, + "mutability": "mutable", + "name": "receiveCall", + "nameLocation": "4989:11:123", + "nodeType": "VariableDeclaration", + "scope": 48848, + "src": "4976:24:123", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 48821, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4976:5:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 48837, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "id": 48825, + "name": "ISubscriptionReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49195, + "src": "5043:21:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49195_$", + "typeString": "type(contract ISubscriptionReceiver)" + } + }, + "id": 48826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5065:13:123", + "memberName": "handlePublish", + "nodeType": "MemberAccess", + "referencedDeclaration": 49194, + "src": "5043:35:123", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function ISubscriptionReceiver.handlePublish(bytes32,uint32,address,uint64,bytes32[] memory,bytes memory) returns (bytes4)" + } + }, + "id": 48827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5079:8:123", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "5043:44:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 48828, + "name": "_subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48800, + "src": "5105:15:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 48829, + "name": "_subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48803, + "src": "5138:13:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5152:13:123", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 49080, + "src": "5138:27:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "expression": { + "id": 48831, + "name": "_subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48803, + "src": "5183:13:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5197:13:123", + "memberName": "sourceAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 49082, + "src": "5183:27:123", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 48833, + "name": "_txSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48807, + "src": "5228:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 48834, + "name": "_eventTopics", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48810, + "src": "5253:12:123", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "id": 48835, + "name": "_eventData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48812, + "src": "5283:10:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 48823, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5003:3:123", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 48824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5007:18:123", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "5003:22:123", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 48836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5003:304:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4976:331:123" + }, + { + "expression": { + "id": 48846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 48838, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48816, + "src": "5322:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 48839, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48819, + "src": "5331:4:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "id": 48840, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "5321:15:123", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 48844, + "name": "receiveCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48822, + "src": "5374:11:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "expression": { + "id": 48841, + "name": "_subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48803, + "src": "5339:13:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5353:15:123", + "memberName": "callbackAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 49084, + "src": "5339:29:123", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 48843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5369:4:123", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "5339:34:123", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 48845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5339:47:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "src": "5321:65:123", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48847, + "nodeType": "ExpressionStatement", + "src": "5321:65:123" + } + ] + }, + { + "assignments": [ + 48850 + ], + "declarations": [ + { + "constant": false, + "id": 48850, + "mutability": "mutable", + "name": "implementsHandler", + "nameLocation": "5412:17:123", + "nodeType": "VariableDeclaration", + "scope": 48908, + "src": "5407:22:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 48849, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5407:4:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 48852, + "initialValue": { + "hexValue": "66616c7365", + "id": 48851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5432:5:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5407:30:123" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 48856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 48853, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48819, + "src": "5451:4:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 48854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5456:6:123", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5451:11:123", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3332", + "id": 48855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5466:2:123", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "5451:17:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 48876, + "nodeType": "IfStatement", + "src": "5447:178:123", + "trueBody": { + "id": 48875, + "nodeType": "Block", + "src": "5470:155:123", + "statements": [ + { + "assignments": [ + 48858 + ], + "declarations": [ + { + "constant": false, + "id": 48858, + "mutability": "mutable", + "name": "magic", + "nameLocation": "5492:5:123", + "nodeType": "VariableDeclaration", + "scope": 48875, + "src": "5485:12:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 48857, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "5485:6:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "id": 48866, + "initialValue": { + "arguments": [ + { + "id": 48861, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48819, + "src": "5512:4:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 48863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5519:6:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 48862, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "5519:6:123", + "typeDescriptions": {} + } + } + ], + "id": 48864, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5518:8:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + } + ], + "expression": { + "id": 48859, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5501:3:123", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 48860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5505:6:123", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "5501:10:123", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 48865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5501:26:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5484:43:123" + }, + { + "expression": { + "id": 48873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 48867, + "name": "implementsHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48850, + "src": "5541:17:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 48872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 48868, + "name": "magic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48858, + "src": "5561:5:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 48869, + "name": "ISubscriptionReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49195, + "src": "5570:21:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49195_$", + "typeString": "type(contract ISubscriptionReceiver)" + } + }, + "id": 48870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5592:13:123", + "memberName": "handlePublish", + "nodeType": "MemberAccess", + "referencedDeclaration": 49194, + "src": "5570:35:123", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function ISubscriptionReceiver.handlePublish(bytes32,uint32,address,uint64,bytes32[] memory,bytes memory) returns (bytes4)" + } + }, + "id": 48871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5606:8:123", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "5570:44:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "5561:53:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5541:73:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 48874, + "nodeType": "ExpressionStatement", + "src": "5541:73:123" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 48879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 48877, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48816, + "src": "5639:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 48878, + "name": "implementsHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48850, + "src": "5650:17:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5639:28:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 48895, + "nodeType": "Block", + "src": "5764:86:123", + "statements": [ + { + "expression": { + "id": 48893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 48888, + "name": "eventsPublished", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48474, + "src": "5778:15:123", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49140_$", + "typeString": "mapping(bytes32 => enum PublishStatus)" + } + }, + "id": 48890, + "indexExpression": { + "id": 48889, + "name": "_publishKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48805, + "src": "5794:11:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5778:28:123", + "typeDescriptions": { + "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeString": "enum PublishStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 48891, + "name": "PublishStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49140, + "src": "5809:13:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49140_$", + "typeString": "type(enum PublishStatus)" + } + }, + "id": 48892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5823:16:123", + "memberName": "EXECUTION_FAILED", + "nodeType": "MemberAccess", + "referencedDeclaration": 49138, + "src": "5809:30:123", + "typeDescriptions": { + "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeString": "enum PublishStatus" + } + }, + "src": "5778:61:123", + "typeDescriptions": { + "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeString": "enum PublishStatus" + } + }, + "id": 48894, + "nodeType": "ExpressionStatement", + "src": "5778:61:123" + } + ] + }, + "id": 48896, + "nodeType": "IfStatement", + "src": "5635:215:123", + "trueBody": { + "id": 48887, + "nodeType": "Block", + "src": "5669:89:123", + "statements": [ + { + "expression": { + "id": 48885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 48880, + "name": "eventsPublished", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48474, + "src": "5683:15:123", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49140_$", + "typeString": "mapping(bytes32 => enum PublishStatus)" + } + }, + "id": 48882, + "indexExpression": { + "id": 48881, + "name": "_publishKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48805, + "src": "5699:11:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5683:28:123", + "typeDescriptions": { + "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeString": "enum PublishStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 48883, + "name": "PublishStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49140, + "src": "5714:13:123", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49140_$", + "typeString": "type(enum PublishStatus)" + } + }, + "id": 48884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5728:19:123", + "memberName": "EXECUTION_SUCCEEDED", + "nodeType": "MemberAccess", + "referencedDeclaration": 49139, + "src": "5714:33:123", + "typeDescriptions": { + "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeString": "enum PublishStatus" + } + }, + "src": "5683:64:123", + "typeDescriptions": { + "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeString": "enum PublishStatus" + } + }, + "id": 48886, + "nodeType": "ExpressionStatement", + "src": "5683:64:123" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 48898, + "name": "_subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48800, + "src": "5886:15:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 48899, + "name": "_subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48803, + "src": "5915:13:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5929:13:123", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 49080, + "src": "5915:27:123", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "expression": { + "id": 48901, + "name": "_subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48803, + "src": "5956:13:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5970:13:123", + "memberName": "sourceAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 49082, + "src": "5956:27:123", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 48903, + "name": "_subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48803, + "src": "5997:13:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6011:15:123", + "memberName": "callbackAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 49084, + "src": "5997:29:123", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 48905, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48816, + "src": "6040:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 48897, + "name": "Publish", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49153, + "src": "5865:7:123", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (bytes32,uint32,address,address,bool)" + } + }, + "id": 48906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5865:192:123", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48907, + "nodeType": "EmitStatement", + "src": "5860:197:123" + } + ] + }, + "documentation": { + "id": 48798, + "nodeType": "StructuredDocumentation", + "src": "4548:114:123", + "text": "@notice Executes the callback function on the subscriber, and marks the event publish as successful or failed." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_publish", + "nameLocation": "4676:8:123", + "parameters": { + "id": 48813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48800, + "mutability": "mutable", + "name": "_subscriptionId", + "nameLocation": "4702:15:123", + "nodeType": "VariableDeclaration", + "scope": 48909, + "src": "4694:23:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48799, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4694:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48803, + "mutability": "mutable", + "name": "_subscription", + "nameLocation": "4749:13:123", + "nodeType": "VariableDeclaration", + "scope": 48909, + "src": "4727:35:123", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeString": "struct Subscription" + }, + "typeName": { + "id": 48802, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 48801, + "name": "Subscription", + "nameLocations": [ + "4727:12:123" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49087, + "src": "4727:12:123" + }, + "referencedDeclaration": 49087, + "src": "4727:12:123", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_storage_ptr", + "typeString": "struct Subscription" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48805, + "mutability": "mutable", + "name": "_publishKey", + "nameLocation": "4780:11:123", + "nodeType": "VariableDeclaration", + "scope": 48909, + "src": "4772:19:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48804, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4772:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48807, + "mutability": "mutable", + "name": "_txSlot", + "nameLocation": "4808:7:123", + "nodeType": "VariableDeclaration", + "scope": 48909, + "src": "4801:14:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 48806, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4801:6:123", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48810, + "mutability": "mutable", + "name": "_eventTopics", + "nameLocation": "4842:12:123", + "nodeType": "VariableDeclaration", + "scope": 48909, + "src": "4825:29:123", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 48808, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4825:7:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 48809, + "nodeType": "ArrayTypeName", + "src": "4825:9:123", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48812, + "mutability": "mutable", + "name": "_eventData", + "nameLocation": "4877:10:123", + "nodeType": "VariableDeclaration", + "scope": 48909, + "src": "4864:23:123", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 48811, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4864:5:123", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4684:209:123" + }, + "returnParameters": { + "id": 48814, + "nodeType": "ParameterList", + "parameters": [], + "src": "4903:0:123" + }, + "scope": 48910, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 48537, + "name": "IPublisher", + "nameLocations": [ + "709:10:123" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49174, + "src": "709:10:123" + }, + "id": 48538, + "nodeType": "InheritanceSpecifier", + "src": "709:10:123" + }, + { + "baseName": { + "id": 48539, + "name": "PubSubStorage", + "nameLocations": [ + "721:13:123" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 48485, + "src": "721:13:123" + }, + "id": 48540, + "nodeType": "InheritanceSpecifier", + "src": "721:13:123" + } + ], + "canonicalName": "TelepathyPublisher", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 48536, + "nodeType": "StructuredDocumentation", + "src": "538:140:123", + "text": "@title TelepathyPublisher\n @author Succinct Labs\n @notice A contract that can publish events to a ISubscriptionReceiver contract." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 48910, + 48485, + 49174 + ], + "name": "TelepathyPublisher", + "nameLocation": "687:18:123", + "scope": 48911, + "usedErrors": [] + } + ] + }, + "id": 123 +} \ No newline at end of file diff --git a/out/TelepathyRouter.sol/TelepathyRouter.json b/out/TelepathyRouter.sol/TelepathyRouter.json new file mode 100644 index 0000000..3960525 --- /dev/null +++ b/out/TelepathyRouter.sol/TelepathyRouter.json @@ -0,0 +1,4505 @@ +{ + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "ExecutedMessage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "name": "Freeze", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "FreezeAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "SendingEnabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "SentMessage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "address", + "name": "lightClient", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "broadcaster", + "type": "address" + } + ], + "name": "SetLightClientAndBroadcaster", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "name": "SourceChainAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "name": "Unfreeze", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "UnfreezeAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GUARDIAN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_LIGHT_CLIENT_DELAY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TIMELOCK_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes[]", + "name": "accountProof", + "type": "bytes[]" + }, + { + "internalType": "bytes[]", + "name": "storageProof", + "type": "bytes[]" + } + ], + "name": "executeMessage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + } + ], + "name": "executeMessageFromLog", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "name": "freeze", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "freezeAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32[]", + "name": "_sourceChainIds", + "type": "uint32[]" + }, + { + "internalType": "address[]", + "name": "_lightClients", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "_broadcasters", + "type": "address[]" + }, + { + "internalType": "address", + "name": "_timelock", + "type": "address" + }, + { + "internalType": "address", + "name": "_guardian", + "type": "address" + }, + { + "internalType": "bool", + "name": "_sendingEnabled", + "type": "bool" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "lightclient", + "type": "address" + }, + { + "internalType": "address", + "name": "broadcaster", + "type": "address" + } + ], + "name": "setLightClientAndBroadcaster", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "setSendingEnabled", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sourceChainIdsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "name": "unfreeze", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unfreezeAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e8565b603254610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60325460ff9081161015620000e6576032805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615f3662000120600039600081816109f701528181610a3701528181610d9f01528181610ddf0152610e6e0152615f366000f3fe6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004614f74565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a366004614fad565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b5366004615034565b6107be565b3480156102c657600080fd5b506102da6102d5366004615094565b6108cb565b005b3480156102e857600080fd5b5061028c6102f73660046150af565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615ee183398151915281565b34801561033a57600080fd5b506102da6103493660046150c8565b610945565b34801561035a57600080fd5b506102da6103693660046150c8565b61096f565b34801561037a57600080fd5b506102da6103893660046150f4565b6109ed565b34801561039a57600080fd5b5061024a6103a9366004615094565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d9366004615208565b610acc565b3480156103ea57600080fd5b5061040e6103f93660046150af565b60076020526000908152604090205460ff1681565b604051610256919061531b565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da610458366004615343565b610d95565b34801561046957600080fd5b5061028c610e61565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b9366004615094565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da61050736600461543e565b610f14565b34801561051857600080fd5b506102da611217565b34801561052d57600080fd5b5061028c61053c366004615034565b6112fc565b34801561054d57600080fd5b5061028c61055c366004615552565b61137b565b34801561056d57600080fd5b506104d461057c366004615094565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b2366004615593565b6113d2565b3480156105c357600080fd5b5061028c6105d23660046150af565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff36600461563d565b6116e7565b34801561061057600080fd5b5061024a61061f3660046150c8565b611898565b34801561063057600080fd5b506102da6118c3565b34801561064557600080fd5b506102da610654366004615094565b6119a8565b34801561066557600080fd5b506106796106743660046150af565b611a25565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be366004615552565b611a5f565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da6107163660046150c8565b611ab6565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b366004615680565b611adb565b34801561075c57600080fd5b5061028c600080516020615e5a83398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107ea5760405162461bcd60e51b81526004016107e19061569d565b60405180910390fd5b468563ffffffff160361080f5760405162461bcd60e51b81526004016107e1906156ca565b600080610828876001600160a01b0388165b8787611b56565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161085d83615717565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b9919061578d565b60405180910390a39695505050505050565b6108e3600080516020615ee183398151915233611898565b6108ff5760405162461bcd60e51b81526004016107e1906157a0565b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096081611bcd565b61096a8383611bd7565b505050565b6001600160a01b03811633146109df5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107e1565b6109e98282611c5d565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a355760405162461bcd60e51b81526004016107e1906157f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a7e600080516020615e9a833981519152546001600160a01b031690565b6001600160a01b031614610aa45760405162461bcd60e51b81526004016107e190615841565b610aad81611cc4565b60408051600080825260208201909252610ac991839190611cf8565b50565b610ad4611e63565b600080610ae18b8b611ebc565b91509150610af28260400151612126565b610aff8260400151612255565b6000808e8e810190610b11919061588d565b91509150610b238285604001516122b1565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb291906158b7565b905080610bf95760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016107e1565b6000610c3d8b8e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508991508890506124e5565b905080610c8c5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016107e1565b505050506000610cf1878790610ca291906158d0565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261268d565b9050818114610d3a5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016107e1565b50610d7c82828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a4092505050565b5050610d886001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ddd5760405162461bcd60e51b81526004016107e1906157f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e26600080516020615e9a833981519152546001600160a01b031690565b6001600160a01b031614610e4c5760405162461bcd60e51b81526004016107e190615841565b610e5582611cc4565b6109e982826001611cf8565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f015760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107e1565b50600080516020615e9a83398151915290565b603254610100900460ff1615808015610f345750603254600160ff909116105b80610f4e5750303b158015610f4e575060325460ff166001145b610fb15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107e1565b6032805460ff191660011790558015610fd4576032805461ff0019166101001790555b610fdc612bee565b610fe4612c1f565b610ffc600080516020615ee183398151915284611bd7565b611014600080516020615e5a83398151915285611bd7565b61101f600085611bd7565b611027612c1f565b855187511461103557600080fd5b845187511461104357600080fd5b86516110569060039060208a0190614e9a565b5060005b60035463ffffffff821610156111aa57868163ffffffff168151811061108257611082615937565b60200260200101516004600060038463ffffffff16815481106110a7576110a7615937565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112357611123615937565b60200260200101516005600060038463ffffffff168154811061114857611148615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a28161594d565b91505061105a565b506000805483151560ff1991821617909155600880549091166001179055801561120e576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b61122f600080516020615ee183398151915233611898565b61124b5760405162461bcd60e51b81526004016107e1906157a0565b60005b60035463ffffffff821610156112d05760006006600060038463ffffffff168154811061127d5761127d615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112c88161594d565b91505061124e565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661131f5760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff16036113445760405162461bcd60e51b81526004016107e1906156ca565b60008061135a876001600160a01b038816610821565b6002805492945090925082916001600160401b031690600061085d83615717565b6000805460ff1661139e5760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff16036113c35760405162461bcd60e51b81526004016107e1906156ca565b60008061082887878787611b56565b6113da611e63565b6000806113e78888611ebc565b915091506113f88260400151612126565b6114058260400151612255565b6114138983604001516122b1565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115c55760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa158015611500573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152491906158b7565b905060008190036115775760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016107e1565b6115ab611584898b6158d0565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612c46565b600083815260096020526040902081905592506115d79050565b60008181526009602052604090205491505b6000846020015160016040516020016116059291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061164d82856116488a8c6158d0565b612d3d565b90508481146116965760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016107e1565b505050506116db82828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a4092505050565b505061120e6001603355565b6116ff600080516020615e5a83398151915233611898565b61171b5760405162461bcd60e51b81526004016107e190615966565b6000805b600354811015611787578463ffffffff166003828154811061174357611743615937565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117755760019150611787565b8061177f816159bb565b91505061171f565b508061181057600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118db600080516020615ee183398151915233611898565b6118f75760405162461bcd60e51b81526004016107e1906157a0565b60005b60035463ffffffff8216101561197c5760016006600060038463ffffffff168154811061192957611929615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806119748161594d565b9150506118fa565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119c0600080516020615ee183398151915233611898565b6119dc5760405162461bcd60e51b81526004016107e1906157a0565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a3557600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a825760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff1603611aa75760405162461bcd60e51b81526004016107e1906156ca565b60008061135a87878787611b56565b600082815260c96020526040902060010154611ad181611bcd565b61096a8383611c5d565b611af3600080516020615ee183398151915233611898565b611b0f5760405162461bcd60e51b81526004016107e1906157a0565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bb99360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612dd992505050565b805160208201209097909650945050505050565b610ac98133612e14565b611be18282611898565b6109e957600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c193390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c678282611898565b156109e957600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611cdc600080516020615e5a83398151915233611898565b610ac95760405162461bcd60e51b81526004016107e190615966565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d2b5761096a83612e6d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d85575060408051601f3d908101601f19168201909252611d82918101906158b7565b60015b611de85760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107e1565b600080516020615e9a8339815191528114611e575760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107e1565b5061096a838383612f09565b600260335403611eb55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107e1565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f3985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f3492505050565b905060008585604051611f4d9291906159d4565b60405190819003902090506000808281526007602052604090205460ff166002811115611f7c57611f7c615305565b14611fc95760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016107e1565b46826080015163ffffffff16146120115760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016107e1565b600854825160ff90811691161461205b5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016107e1565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120a6575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121195760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016107e1565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b031661218c5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016107e1565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220991906159e4565b610ac95760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016107e1565b63ffffffff811660009081526006602052604090205460ff1615610ac95760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016107e1565b63ffffffff81166000908152600460205260409020546001600160a01b03166123175760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016107e1565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015612380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a491906158b7565b6000036123f35760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016107e1565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247d91906158b7565b6124879042615a01565b9050607881101561096a5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016107e1565b600080826001600160401b0316846001600160401b0316036125235750600b61251081610200615a14565b61251c90610183615a33565b9050612676565b6120006125308486615a46565b6001600160401b0316116125925750600b61254c816020615a14565b612557906006615a33565b905061256e6120006001600160401b038516615a83565b61257a61200083615a14565b6125849190615a33565b905061251081610200615a14565b836001600160401b0316836001600160401b031610156126245750600b6125ba816020615a14565b6125c5906007615a33565b90506125d2816002615a14565b6125dd906000615a33565b90506125f46120006001600160401b038516615a97565b612602630100000083615a14565b61260c9190615a33565b9050612619816002615a14565b612557906001615a33565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016107e1565b61268287828888612ff9565b979650505050505050565b60008061269b878a8a613013565b90506000816000815181106126b2576126b2615937565b01602001516001600160f81b03191690506000600160f81b8214806126e45750600160f91b6001600160f81b03198316145b156126f157506001612756565b600360fe1b6001600160f81b031983161061270e57506000612756565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016107e1565b6000602084019050600060405180604001604052808487516127789190615a01565b81526020016127878585615a33565b905290506000612796826138b3565b905080516004146127e25760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016107e1565b6000612807826003815181106127fa576127fa615937565b60200260200101516138b3565b905080518c106128595760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016107e1565b6000612870828e815181106127fa576127fa615937565b905080516003146128ce5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016107e1565b60006128f3826000815181106128e6576128e6615937565b6020026020010151613ad8565b90508c6001600160a01b0316816001600160a01b0316146129665760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016107e1565b600061297e836001815181106127fa576127fa615937565b90508c6129a48260008151811061299757612997615937565b6020026020010151613b42565b14612a075760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016107e1565b612a29818d81518110612a1c57612a1c615937565b6020026020010151613b49565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612a6f93929190615aab565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612ac19190615adb565b6000604051808303816000865af19150503d8060008114612afe576040519150601f19603f3d011682016040523d82523d6000602084013e612b03565b606091505b5080519195509350600092506020039050612b4557600082806020019051810190612b2e9190615af7565b6001600160e01b031916631dee306b60e11b149150505b828015612b4f5750805b15612b72576000858152600760205260409020805460ff19166002179055612b8c565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612bd7929190615b14565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612c155760405162461bcd60e51b81526004016107e190615b38565b612c1d613c4c565b565b603254610100900460ff16612c1d5760405162461bcd60e51b81526004016107e190615b38565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612cab82604051602001612c9591815260200190565b6040516020818303038152906040528786613013565b90506000815111612cf75760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016107e1565b6000612d0a612d0583613c73565b6138b3565b90508051600414612d1a57600080fd5b612d308160028151811061299757612997615937565b93505050505b9392505050565b600080612d6c85604051602001612d5691815260200190565b6040516020818303038152906040528486613013565b90506000815111612dbf5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016107e1565b612dd0612dcb82613c73565b613b42565b95945050505050565b606087878787878787604051602001612df89796959493929190615b83565b6040516020818303038152906040529050979650505050505050565b612e1e8282611898565b6109e957612e2b81613cc6565b612e36836020613cd8565b604051602001612e47929190615c0a565b60408051601f198184030181529082905262461bcd60e51b82526107e19160040161578d565b6001600160a01b0381163b612eda5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107e1565b600080516020615e9a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612f1283613e73565b600082511180612f1f5750805b1561096a57612f2e8383613eb3565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091612fe8918a9190612fe3908290615a01565b613f9e565b60c088015250949695505050505050565b60008061300786868661408a565b90921495945050505050565b6060600084511161305e5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016107e1565b600061306984614219565b9050600061307686614307565b905060008460405160200161308d91815260200190565b60405160208183030381529060405290506000805b845181101561385c5760008582815181106130bf576130bf615937565b6020026020010151905084518311156131315760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016107e1565b826000036131d0578051805160209182012060405161317f9261315992910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6131cb5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016107e1565b6132c6565b80515160201161325657805180516020918201206040516131fa9261315992910190815260200190565b6131cb5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016107e1565b8051845160208087019190912082519190920120146132c65760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016107e1565b6132d260106001615a33565b8160200151510361347f578451830361341757600061330e826020015160108151811061330157613301615937565b6020026020010151614421565b905060008151116133875760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016107e1565b600187516133959190615a01565b83146134095760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016107e1565b9650612d3695505050505050565b600085848151811061342b5761342b615937565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061345657613456615937565b6020026020010151905061346981614544565b9550613476600186615a33565b94505050613849565b6002816020015151036137f057600061349782614569565b90506000816000815181106134ae576134ae615937565b016020015160f81c905060006134c5600283615c7f565b6134d0906002615ca1565b905060006134e1848360ff1661458d565b905060006134ef8a8961458d565b905060006134fd83836145c3565b9050808351146135755760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016107e1565b60ff85166002148061358a575060ff85166003145b1561373057808251146136055760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016107e1565b6000613621886020015160018151811061330157613301615937565b9050600081511161369a5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016107e1565b60018d516136a89190615a01565b891461371c5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016107e1565b9c50612d369b505050505050505050505050565b60ff85161580613743575060ff85166001145b156137825761376f876020015160018151811061376257613762615937565b6020026020010151614544565b995061377b818a615a33565b98506137e5565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016107e1565b505050505050613849565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016107e1565b5080613854816159bb565b9150506130a2565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016107e1565b606060008060006138c385614642565b9194509250905060018160018111156138de576138de615305565b146139515760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016107e1565b845161395d8385615a33565b146139c55760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016107e1565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816139de5790505090506000845b8751811015613acc57600080613a516040518060400160405280858d60000151613a359190615a01565b8152602001858d60200151613a4a9190615a33565b9052614642565b509150915060405180604001604052808383613a6d9190615a33565b8152602001848c60200151613a829190615a33565b815250858581518110613a9757613a97615937565b6020908102919091010152613aad600185615a33565b9350613ab98183615a33565b613ac39084615a33565b92505050613a0b565b50815295945050505050565b8051600090600103613aec57506000919050565b8151601514613b3d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016107e1565b6107b8825b60006107b8825b6000602182600001511115613ba05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016107e1565b6000806000613bae85614642565b919450925090506000816001811115613bc957613bc9615305565b14613c165760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016107e1565b6000838660200151613c289190615a33565b80519091506020841015613c425760208490036101000a90045b9695505050505050565b603254610100900460ff16612be75760405162461bcd60e51b81526004016107e190615b38565b60408051808201909152600080825260208201526000825111613ca85760405162461bcd60e51b81526004016107e190615cba565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613ce7836002615a14565b613cf2906002615a33565b6001600160401b03811115613d0957613d09615153565b6040519080825280601f01601f191660200182016040528015613d33576020820181803683370190505b509050600360fc1b81600081518110613d4e57613d4e615937565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613d7d57613d7d615937565b60200101906001600160f81b031916908160001a9053506000613da1846002615a14565b613dac906001615a33565b90505b6001811115613e24576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613de057613de0615937565b1a60f81b828281518110613df657613df6615937565b60200101906001600160f81b031916908160001a90535060049490941c93613e1d81615d2a565b9050613daf565b508315612d365760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107e1565b613e7c81612e6d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613f1b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107e1565b600080846001600160a01b031684604051613f369190615adb565b600060405180830381855af49150503d8060008114613f71576040519150601f19603f3d011682016040523d82523d6000602084013e613f76565b606091505b5091509150612dd08282604051806060016040528060278152602001615eba60279139614d05565b606081613fac81601f615a33565b1015613fca5760405162461bcd60e51b81526004016107e190615d41565b613fd48284615a33565b845110156140185760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016107e1565b6060821580156140375760405191506000825260208201604052614081565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614070578051835260209283019201614058565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161409b9190615a33565b6140a6906002615e4d565b116140b057600080fd5b8360005b84600114614081576140c7600286615a83565b6001036141665760028482815181106140e2576140e2615937565b602002602001015183604051602001614105929190918252602082015260400190565b60408051601f198184030181529082905261411f91615adb565b602060405180830381855afa15801561413c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061415f91906158b7565b91506141fa565b60028285838151811061417b5761417b615937565b602002602001015160405160200161419d929190918252602082015260400190565b60408051601f19818403018152908290526141b791615adb565b602060405180830381855afa1580156141d4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906141f791906158b7565b91505b614205600286615a97565b945080614211816159bb565b9150506140b4565b80516060906000816001600160401b0381111561423857614238615153565b60405190808252806020026020018201604052801561427d57816020015b60408051808201909152606080825260208201528152602001906001900390816142565790505b50905060005b828110156142ff5760405180604001604052808683815181106142a8576142a8615937565b602002602001015181526020016142d78784815181106142ca576142ca615937565b6020026020010151614d1e565b8152508282815181106142ec576142ec615937565b6020908102919091010152600101614283565b509392505050565b80516060906000614319826002615a14565b6001600160401b0381111561433057614330615153565b6040519080825280601f01601f19166020018201604052801561435a576020820181803683370190505b5090506000805b838110156144175785818151811061437b5761437b615937565b6020910101516001600160f81b03198116925060041c60ff60f41b16836143a3836002615a14565b815181106143b3576143b3615937565b60200101906001600160f81b031916908160001a905350600f60f81b8216836143dd836002615a14565b6143e8906001615a33565b815181106143f8576143f8615937565b60200101906001600160f81b031916908160001a905350600101614361565b5090949350505050565b6060600080600061443185614642565b91945092509050600081600181111561444c5761444c615305565b146144bf5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016107e1565b6144c98284615a33565b8551146145355760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016107e1565b612dd085602001518484614d2c565b606060208260000151106145605761455b82614421565b6107b8565b6107b882614dcc565b60606107b8614588836020015160008151811061330157613301615937565b614307565b6060825182106145ac57506040805160208101909152600081526107b8565b612d3683838486516145be9190615a01565b614de2565b600080600083518551106145d85783516145db565b84515b90505b808210801561463257508382815181106145fa576145fa615937565b602001015160f81c60f81b6001600160f81b03191685838151811061462157614621615937565b01602001516001600160f81b031916145b156142ff578160010191506145de565b60008060008084600001511161466a5760405162461bcd60e51b81526004016107e190615cba565b6020840151805160001a607f811161468f576000600160009450945094505050614cfe565b60b781116147ec5760006146a4608083615a01565b9050808760000151116147245760405162461bcd60e51b815260206004820152604e6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016107e1565b6001838101516001600160f81b03191690821415806147515750600160ff1b6001600160f81b0319821610155b6147d95760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016107e1565b5060019550935060009250614cfe915050565b60bf8111614a2d57600061480160b783615a01565b9050808760000151116148845760405162461bcd60e51b81526020600482015260516024820152600080516020615e7a83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016107e1565b60018301516001600160f81b031916600081900361490b5760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016107e1565b600184015160088302610100031c6037811161498e5760405162461bcd60e51b81526020600482015260486024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016107e1565b6149988184615a33565b895111614a105760405162461bcd60e51b815260206004820152604c6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016107e1565b614a1b836001615a33565b9750955060009450614cfe9350505050565b60f78111614acf576000614a4260c083615a01565b905080876000015111614abe5760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016107e1565b600195509350849250614cfe915050565b6000614adc60f783615a01565b905080876000015111614b5b5760405162461bcd60e51b815260206004820152604d6024820152600080516020615e7a83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016107e1565b60018301516001600160f81b0319166000819003614be05760405162461bcd60e51b81526020600482015260486024820152600080516020615e7a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016107e1565b600184015160088302610100031c60378111614c615760405162461bcd60e51b81526020600482015260466024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016107e1565b614c6b8184615a33565b895111614ce15760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016107e1565b614cec836001615a33565b9750955060019450614cfe9350505050565b9193909250565b60608315614d14575081612d36565b612d368383614e70565b60606107b8612d0583613c73565b60606000826001600160401b03811115614d4857614d48615153565b6040519080825280601f01601f191660200182016040528015614d72576020820181803683370190505b50905082600003614d84579050612d36565b6000614d908587615a33565b90506020820160005b85811015614db1578281015182820152602001614d99565b85811115614dc0576000868301525b50919695505050505050565b60606107b8826020015160008460000151614d2c565b60608182601f011015614e075760405162461bcd60e51b81526004016107e190615d41565b828284011015614e295760405162461bcd60e51b81526004016107e190615d41565b818301845110156140185760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016107e1565b815115614e805781518083602001fd5b8060405162461bcd60e51b81526004016107e1919061578d565b82805482825590600052602060002090600701600890048101928215614f395791602002820160005b83821115614f0757835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614ec3565b8015614f375782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614f07565b505b50614f45929150614f49565b5090565b5b80821115614f455760008155600101614f4a565b6001600160e01b031981168114610ac957600080fd5b600060208284031215614f8657600080fd5b8135612d3681614f5e565b80356001600160401b0381168114614fa857600080fd5b919050565b600060208284031215614fbf57600080fd5b612d3682614f91565b803563ffffffff81168114614fa857600080fd5b80356001600160a01b0381168114614fa857600080fd5b60008083601f84011261500557600080fd5b5081356001600160401b0381111561501c57600080fd5b60208301915083602082850101111561211f57600080fd5b6000806000806060858703121561504a57600080fd5b61505385614fc8565b935061506160208601614fdc565b925060408501356001600160401b0381111561507c57600080fd5b61508887828801614ff3565b95989497509550505050565b6000602082840312156150a657600080fd5b612d3682614fc8565b6000602082840312156150c157600080fd5b5035919050565b600080604083850312156150db57600080fd5b823591506150eb60208401614fdc565b90509250929050565b60006020828403121561510657600080fd5b612d3682614fdc565b60008083601f84011261512157600080fd5b5081356001600160401b0381111561513857600080fd5b6020830191508360208260051b850101111561211f57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561519157615191615153565b604052919050565b600082601f8301126151aa57600080fd5b81356001600160401b038111156151c3576151c3615153565b6151d6601f8201601f1916602001615169565b8181528460208386010111156151eb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561522957600080fd5b6001600160401b03808d35111561523f57600080fd5b61524c8e8e358f01614ff3565b909c509a5060208d013581101561526257600080fd5b6152728e60208f01358f01614ff3565b909a50985060408d013581101561528857600080fd5b6152988e60408f01358f0161510f565b909850965060608d0135955060808d01358110156152b557600080fd5b6152c58e60808f01358f0161510f565b909550935060a08d01358110156152db57600080fd5b506152ec8d60a08e01358e01615199565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b602081016003831061533d57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561535657600080fd5b61535f83614fdc565b915060208301356001600160401b0381111561537a57600080fd5b61538685828601615199565b9150509250929050565b60006001600160401b038211156153a9576153a9615153565b5060051b60200190565b600082601f8301126153c457600080fd5b813560206153d96153d483615390565b615169565b82815260059290921b840181019181810190868411156153f857600080fd5b8286015b8481101561541a5761540d81614fdc565b83529183019183016153fc565b509695505050505050565b8015158114610ac957600080fd5b8035614fa881615425565b60008060008060008060c0878903121561545757600080fd5b86356001600160401b038082111561546e57600080fd5b818901915089601f83011261548257600080fd5b813560206154926153d483615390565b82815260059290921b8401810191818101908d8411156154b157600080fd5b948201945b838610156154d6576154c786614fc8565b825294820194908201906154b6565b9a50508a0135925050808211156154ec57600080fd5b6154f88a838b016153b3565b9650604089013591508082111561550e57600080fd5b5061551b89828a016153b3565b94505061552a60608801614fdc565b925061553860808801614fdc565b915061554660a08801615433565b90509295509295509295565b6000806000806060858703121561556857600080fd5b61557185614fc8565b93506020850135925060408501356001600160401b0381111561507c57600080fd5b60008060008060008060006080888a0312156155ae57600080fd5b6155b788614f91565b965060208801356001600160401b03808211156155d357600080fd5b6155df8b838c01614ff3565b909850965060408a01359150808211156155f857600080fd5b6156048b838c0161510f565b909650945060608a013591508082111561561d57600080fd5b5061562a8a828b0161510f565b989b979a50959850939692959293505050565b60008060006060848603121561565257600080fd5b61565b84614fc8565b925061566960208501614fdc565b915061567760408501614fdc565b90509250925092565b60006020828403121561569257600080fd5b8135612d3681615425565b60208082526013908201527214d95b991a5b99c81a5cc8191a5cd8589b1959606a1b604082015260600190565b60208082526019908201527f43616e6e6f742073656e6420746f2073616d6520636861696e00000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681810361573357615733615701565b6001019392505050565b60005b83811015615758578181015183820152602001615740565b50506000910152565b6000815180845261577981602086016020860161573d565b601f01601f19169290920160200192915050565b602081526000612d366020830184615761565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600080604083850312156158a057600080fd5b6158a983614f91565b91506150eb60208401614f91565b6000602082840312156158c957600080fd5b5051919050565b60006158de6153d484615390565b80848252602080830192508560051b8501368111156158fc57600080fd5b855b81811015614dc05780356001600160401b0381111561591d5760008081fd5b61592936828a01615199565b8652509382019382016158fe565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff80831681810361573357615733615701565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6000600182016159cd576159cd615701565b5060010190565b8183823760009101908152919050565b6000602082840312156159f657600080fd5b8151612d3681615425565b818103818111156107b8576107b8615701565b6000816000190483118215151615615a2e57615a2e615701565b500290565b808201808211156107b8576107b8615701565b6001600160401b03828116828216039080821115615a6657615a66615701565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082615a9257615a92615a6d565b500690565b600082615aa657615aa6615a6d565b500490565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612dd090830184615761565b60008251615aed81846020870161573d565b9190910192915050565b600060208284031215615b0957600080fd5b8151612d3681614f5e565b604081526000615b276040830185615761565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615bf781604585016020870161573d565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615c4281601785016020880161573d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615c7381602884016020880161573d565b01602801949350505050565b600060ff831680615c9257615c92615a6d565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b8615701565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615d3957615d39615701565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615da4578160001904821115615d8a57615d8a615701565b80851615615d9757918102915b93841c9390800290615d6e565b509250929050565b600082615dbb575060016107b8565b81615dc8575060006107b8565b8160018114615dde5760028114615de857615e04565b60019150506107b8565b60ff841115615df957615df9615701565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615e27575081810a6107b8565b615e318383615d69565b8060001904821115615e4557615e45615701565b029392505050565b6000612d368383615dac56fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220f963c2cdb21e7cd55c8073e6b7a59d7952e2e681906c27fcf9b57ed9ceac437d64736f6c63430008100033", + "sourceMap": "698:1544:102:-:0;;;1332:4:38;1289:48;;987:53:102;;;;;;;;;-1:-1:-1;1011:22:102;:20;:22::i;:::-;698:1544;;5928:279:37;5996:13;;;;;;;5995:14;5987:66;;;;-1:-1:-1;;;5987:66:37;;216:2:145;5987:66:37;;;198:21:145;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:145;;;338:37;392:19;;5987:66:37;;;;;;;;6067:12;;6082:15;6067:12;;;:30;6063:138;;;6113:12;:30;;-1:-1:-1;;6113:30:37;6128:15;6113:30;;;;;;6162:28;;564:36:145;;;6162:28:37;;552:2:145;537:18;6162:28:37;;;;;;;6063:138;5928:279::o;422:184:145:-;698:1544:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004614f74565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a366004614fad565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b5366004615034565b6107be565b3480156102c657600080fd5b506102da6102d5366004615094565b6108cb565b005b3480156102e857600080fd5b5061028c6102f73660046150af565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615ee183398151915281565b34801561033a57600080fd5b506102da6103493660046150c8565b610945565b34801561035a57600080fd5b506102da6103693660046150c8565b61096f565b34801561037a57600080fd5b506102da6103893660046150f4565b6109ed565b34801561039a57600080fd5b5061024a6103a9366004615094565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d9366004615208565b610acc565b3480156103ea57600080fd5b5061040e6103f93660046150af565b60076020526000908152604090205460ff1681565b604051610256919061531b565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da610458366004615343565b610d95565b34801561046957600080fd5b5061028c610e61565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b9366004615094565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da61050736600461543e565b610f14565b34801561051857600080fd5b506102da611217565b34801561052d57600080fd5b5061028c61053c366004615034565b6112fc565b34801561054d57600080fd5b5061028c61055c366004615552565b61137b565b34801561056d57600080fd5b506104d461057c366004615094565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b2366004615593565b6113d2565b3480156105c357600080fd5b5061028c6105d23660046150af565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff36600461563d565b6116e7565b34801561061057600080fd5b5061024a61061f3660046150c8565b611898565b34801561063057600080fd5b506102da6118c3565b34801561064557600080fd5b506102da610654366004615094565b6119a8565b34801561066557600080fd5b506106796106743660046150af565b611a25565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be366004615552565b611a5f565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da6107163660046150c8565b611ab6565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b366004615680565b611adb565b34801561075c57600080fd5b5061028c600080516020615e5a83398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107ea5760405162461bcd60e51b81526004016107e19061569d565b60405180910390fd5b468563ffffffff160361080f5760405162461bcd60e51b81526004016107e1906156ca565b600080610828876001600160a01b0388165b8787611b56565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161085d83615717565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b9919061578d565b60405180910390a39695505050505050565b6108e3600080516020615ee183398151915233611898565b6108ff5760405162461bcd60e51b81526004016107e1906157a0565b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096081611bcd565b61096a8383611bd7565b505050565b6001600160a01b03811633146109df5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107e1565b6109e98282611c5d565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a355760405162461bcd60e51b81526004016107e1906157f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a7e600080516020615e9a833981519152546001600160a01b031690565b6001600160a01b031614610aa45760405162461bcd60e51b81526004016107e190615841565b610aad81611cc4565b60408051600080825260208201909252610ac991839190611cf8565b50565b610ad4611e63565b600080610ae18b8b611ebc565b91509150610af28260400151612126565b610aff8260400151612255565b6000808e8e810190610b11919061588d565b91509150610b238285604001516122b1565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb291906158b7565b905080610bf95760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016107e1565b6000610c3d8b8e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508991508890506124e5565b905080610c8c5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016107e1565b505050506000610cf1878790610ca291906158d0565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261268d565b9050818114610d3a5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016107e1565b50610d7c82828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a4092505050565b5050610d886001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ddd5760405162461bcd60e51b81526004016107e1906157f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e26600080516020615e9a833981519152546001600160a01b031690565b6001600160a01b031614610e4c5760405162461bcd60e51b81526004016107e190615841565b610e5582611cc4565b6109e982826001611cf8565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f015760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107e1565b50600080516020615e9a83398151915290565b603254610100900460ff1615808015610f345750603254600160ff909116105b80610f4e5750303b158015610f4e575060325460ff166001145b610fb15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107e1565b6032805460ff191660011790558015610fd4576032805461ff0019166101001790555b610fdc612bee565b610fe4612c1f565b610ffc600080516020615ee183398151915284611bd7565b611014600080516020615e5a83398151915285611bd7565b61101f600085611bd7565b611027612c1f565b855187511461103557600080fd5b845187511461104357600080fd5b86516110569060039060208a0190614e9a565b5060005b60035463ffffffff821610156111aa57868163ffffffff168151811061108257611082615937565b60200260200101516004600060038463ffffffff16815481106110a7576110a7615937565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112357611123615937565b60200260200101516005600060038463ffffffff168154811061114857611148615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a28161594d565b91505061105a565b506000805483151560ff1991821617909155600880549091166001179055801561120e576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b61122f600080516020615ee183398151915233611898565b61124b5760405162461bcd60e51b81526004016107e1906157a0565b60005b60035463ffffffff821610156112d05760006006600060038463ffffffff168154811061127d5761127d615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112c88161594d565b91505061124e565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661131f5760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff16036113445760405162461bcd60e51b81526004016107e1906156ca565b60008061135a876001600160a01b038816610821565b6002805492945090925082916001600160401b031690600061085d83615717565b6000805460ff1661139e5760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff16036113c35760405162461bcd60e51b81526004016107e1906156ca565b60008061082887878787611b56565b6113da611e63565b6000806113e78888611ebc565b915091506113f88260400151612126565b6114058260400151612255565b6114138983604001516122b1565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115c55760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa158015611500573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152491906158b7565b905060008190036115775760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016107e1565b6115ab611584898b6158d0565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612c46565b600083815260096020526040902081905592506115d79050565b60008181526009602052604090205491505b6000846020015160016040516020016116059291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061164d82856116488a8c6158d0565b612d3d565b90508481146116965760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016107e1565b505050506116db82828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a4092505050565b505061120e6001603355565b6116ff600080516020615e5a83398151915233611898565b61171b5760405162461bcd60e51b81526004016107e190615966565b6000805b600354811015611787578463ffffffff166003828154811061174357611743615937565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117755760019150611787565b8061177f816159bb565b91505061171f565b508061181057600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118db600080516020615ee183398151915233611898565b6118f75760405162461bcd60e51b81526004016107e1906157a0565b60005b60035463ffffffff8216101561197c5760016006600060038463ffffffff168154811061192957611929615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806119748161594d565b9150506118fa565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119c0600080516020615ee183398151915233611898565b6119dc5760405162461bcd60e51b81526004016107e1906157a0565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a3557600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a825760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff1603611aa75760405162461bcd60e51b81526004016107e1906156ca565b60008061135a87878787611b56565b600082815260c96020526040902060010154611ad181611bcd565b61096a8383611c5d565b611af3600080516020615ee183398151915233611898565b611b0f5760405162461bcd60e51b81526004016107e1906157a0565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bb99360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612dd992505050565b805160208201209097909650945050505050565b610ac98133612e14565b611be18282611898565b6109e957600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c193390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c678282611898565b156109e957600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611cdc600080516020615e5a83398151915233611898565b610ac95760405162461bcd60e51b81526004016107e190615966565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d2b5761096a83612e6d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d85575060408051601f3d908101601f19168201909252611d82918101906158b7565b60015b611de85760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107e1565b600080516020615e9a8339815191528114611e575760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107e1565b5061096a838383612f09565b600260335403611eb55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107e1565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f3985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f3492505050565b905060008585604051611f4d9291906159d4565b60405190819003902090506000808281526007602052604090205460ff166002811115611f7c57611f7c615305565b14611fc95760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016107e1565b46826080015163ffffffff16146120115760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016107e1565b600854825160ff90811691161461205b5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016107e1565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120a6575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121195760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016107e1565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b031661218c5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016107e1565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220991906159e4565b610ac95760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016107e1565b63ffffffff811660009081526006602052604090205460ff1615610ac95760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016107e1565b63ffffffff81166000908152600460205260409020546001600160a01b03166123175760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016107e1565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015612380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a491906158b7565b6000036123f35760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016107e1565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247d91906158b7565b6124879042615a01565b9050607881101561096a5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016107e1565b600080826001600160401b0316846001600160401b0316036125235750600b61251081610200615a14565b61251c90610183615a33565b9050612676565b6120006125308486615a46565b6001600160401b0316116125925750600b61254c816020615a14565b612557906006615a33565b905061256e6120006001600160401b038516615a83565b61257a61200083615a14565b6125849190615a33565b905061251081610200615a14565b836001600160401b0316836001600160401b031610156126245750600b6125ba816020615a14565b6125c5906007615a33565b90506125d2816002615a14565b6125dd906000615a33565b90506125f46120006001600160401b038516615a97565b612602630100000083615a14565b61260c9190615a33565b9050612619816002615a14565b612557906001615a33565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016107e1565b61268287828888612ff9565b979650505050505050565b60008061269b878a8a613013565b90506000816000815181106126b2576126b2615937565b01602001516001600160f81b03191690506000600160f81b8214806126e45750600160f91b6001600160f81b03198316145b156126f157506001612756565b600360fe1b6001600160f81b031983161061270e57506000612756565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016107e1565b6000602084019050600060405180604001604052808487516127789190615a01565b81526020016127878585615a33565b905290506000612796826138b3565b905080516004146127e25760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016107e1565b6000612807826003815181106127fa576127fa615937565b60200260200101516138b3565b905080518c106128595760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016107e1565b6000612870828e815181106127fa576127fa615937565b905080516003146128ce5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016107e1565b60006128f3826000815181106128e6576128e6615937565b6020026020010151613ad8565b90508c6001600160a01b0316816001600160a01b0316146129665760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016107e1565b600061297e836001815181106127fa576127fa615937565b90508c6129a48260008151811061299757612997615937565b6020026020010151613b42565b14612a075760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016107e1565b612a29818d81518110612a1c57612a1c615937565b6020026020010151613b49565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612a6f93929190615aab565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612ac19190615adb565b6000604051808303816000865af19150503d8060008114612afe576040519150601f19603f3d011682016040523d82523d6000602084013e612b03565b606091505b5080519195509350600092506020039050612b4557600082806020019051810190612b2e9190615af7565b6001600160e01b031916631dee306b60e11b149150505b828015612b4f5750805b15612b72576000858152600760205260409020805460ff19166002179055612b8c565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612bd7929190615b14565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612c155760405162461bcd60e51b81526004016107e190615b38565b612c1d613c4c565b565b603254610100900460ff16612c1d5760405162461bcd60e51b81526004016107e190615b38565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612cab82604051602001612c9591815260200190565b6040516020818303038152906040528786613013565b90506000815111612cf75760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016107e1565b6000612d0a612d0583613c73565b6138b3565b90508051600414612d1a57600080fd5b612d308160028151811061299757612997615937565b93505050505b9392505050565b600080612d6c85604051602001612d5691815260200190565b6040516020818303038152906040528486613013565b90506000815111612dbf5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016107e1565b612dd0612dcb82613c73565b613b42565b95945050505050565b606087878787878787604051602001612df89796959493929190615b83565b6040516020818303038152906040529050979650505050505050565b612e1e8282611898565b6109e957612e2b81613cc6565b612e36836020613cd8565b604051602001612e47929190615c0a565b60408051601f198184030181529082905262461bcd60e51b82526107e19160040161578d565b6001600160a01b0381163b612eda5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107e1565b600080516020615e9a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612f1283613e73565b600082511180612f1f5750805b1561096a57612f2e8383613eb3565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091612fe8918a9190612fe3908290615a01565b613f9e565b60c088015250949695505050505050565b60008061300786868661408a565b90921495945050505050565b6060600084511161305e5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016107e1565b600061306984614219565b9050600061307686614307565b905060008460405160200161308d91815260200190565b60405160208183030381529060405290506000805b845181101561385c5760008582815181106130bf576130bf615937565b6020026020010151905084518311156131315760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016107e1565b826000036131d0578051805160209182012060405161317f9261315992910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6131cb5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016107e1565b6132c6565b80515160201161325657805180516020918201206040516131fa9261315992910190815260200190565b6131cb5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016107e1565b8051845160208087019190912082519190920120146132c65760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016107e1565b6132d260106001615a33565b8160200151510361347f578451830361341757600061330e826020015160108151811061330157613301615937565b6020026020010151614421565b905060008151116133875760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016107e1565b600187516133959190615a01565b83146134095760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016107e1565b9650612d3695505050505050565b600085848151811061342b5761342b615937565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061345657613456615937565b6020026020010151905061346981614544565b9550613476600186615a33565b94505050613849565b6002816020015151036137f057600061349782614569565b90506000816000815181106134ae576134ae615937565b016020015160f81c905060006134c5600283615c7f565b6134d0906002615ca1565b905060006134e1848360ff1661458d565b905060006134ef8a8961458d565b905060006134fd83836145c3565b9050808351146135755760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016107e1565b60ff85166002148061358a575060ff85166003145b1561373057808251146136055760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016107e1565b6000613621886020015160018151811061330157613301615937565b9050600081511161369a5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016107e1565b60018d516136a89190615a01565b891461371c5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016107e1565b9c50612d369b505050505050505050505050565b60ff85161580613743575060ff85166001145b156137825761376f876020015160018151811061376257613762615937565b6020026020010151614544565b995061377b818a615a33565b98506137e5565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016107e1565b505050505050613849565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016107e1565b5080613854816159bb565b9150506130a2565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016107e1565b606060008060006138c385614642565b9194509250905060018160018111156138de576138de615305565b146139515760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016107e1565b845161395d8385615a33565b146139c55760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016107e1565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816139de5790505090506000845b8751811015613acc57600080613a516040518060400160405280858d60000151613a359190615a01565b8152602001858d60200151613a4a9190615a33565b9052614642565b509150915060405180604001604052808383613a6d9190615a33565b8152602001848c60200151613a829190615a33565b815250858581518110613a9757613a97615937565b6020908102919091010152613aad600185615a33565b9350613ab98183615a33565b613ac39084615a33565b92505050613a0b565b50815295945050505050565b8051600090600103613aec57506000919050565b8151601514613b3d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016107e1565b6107b8825b60006107b8825b6000602182600001511115613ba05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016107e1565b6000806000613bae85614642565b919450925090506000816001811115613bc957613bc9615305565b14613c165760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016107e1565b6000838660200151613c289190615a33565b80519091506020841015613c425760208490036101000a90045b9695505050505050565b603254610100900460ff16612be75760405162461bcd60e51b81526004016107e190615b38565b60408051808201909152600080825260208201526000825111613ca85760405162461bcd60e51b81526004016107e190615cba565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613ce7836002615a14565b613cf2906002615a33565b6001600160401b03811115613d0957613d09615153565b6040519080825280601f01601f191660200182016040528015613d33576020820181803683370190505b509050600360fc1b81600081518110613d4e57613d4e615937565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613d7d57613d7d615937565b60200101906001600160f81b031916908160001a9053506000613da1846002615a14565b613dac906001615a33565b90505b6001811115613e24576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613de057613de0615937565b1a60f81b828281518110613df657613df6615937565b60200101906001600160f81b031916908160001a90535060049490941c93613e1d81615d2a565b9050613daf565b508315612d365760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107e1565b613e7c81612e6d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613f1b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107e1565b600080846001600160a01b031684604051613f369190615adb565b600060405180830381855af49150503d8060008114613f71576040519150601f19603f3d011682016040523d82523d6000602084013e613f76565b606091505b5091509150612dd08282604051806060016040528060278152602001615eba60279139614d05565b606081613fac81601f615a33565b1015613fca5760405162461bcd60e51b81526004016107e190615d41565b613fd48284615a33565b845110156140185760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016107e1565b6060821580156140375760405191506000825260208201604052614081565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614070578051835260209283019201614058565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161409b9190615a33565b6140a6906002615e4d565b116140b057600080fd5b8360005b84600114614081576140c7600286615a83565b6001036141665760028482815181106140e2576140e2615937565b602002602001015183604051602001614105929190918252602082015260400190565b60408051601f198184030181529082905261411f91615adb565b602060405180830381855afa15801561413c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061415f91906158b7565b91506141fa565b60028285838151811061417b5761417b615937565b602002602001015160405160200161419d929190918252602082015260400190565b60408051601f19818403018152908290526141b791615adb565b602060405180830381855afa1580156141d4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906141f791906158b7565b91505b614205600286615a97565b945080614211816159bb565b9150506140b4565b80516060906000816001600160401b0381111561423857614238615153565b60405190808252806020026020018201604052801561427d57816020015b60408051808201909152606080825260208201528152602001906001900390816142565790505b50905060005b828110156142ff5760405180604001604052808683815181106142a8576142a8615937565b602002602001015181526020016142d78784815181106142ca576142ca615937565b6020026020010151614d1e565b8152508282815181106142ec576142ec615937565b6020908102919091010152600101614283565b509392505050565b80516060906000614319826002615a14565b6001600160401b0381111561433057614330615153565b6040519080825280601f01601f19166020018201604052801561435a576020820181803683370190505b5090506000805b838110156144175785818151811061437b5761437b615937565b6020910101516001600160f81b03198116925060041c60ff60f41b16836143a3836002615a14565b815181106143b3576143b3615937565b60200101906001600160f81b031916908160001a905350600f60f81b8216836143dd836002615a14565b6143e8906001615a33565b815181106143f8576143f8615937565b60200101906001600160f81b031916908160001a905350600101614361565b5090949350505050565b6060600080600061443185614642565b91945092509050600081600181111561444c5761444c615305565b146144bf5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016107e1565b6144c98284615a33565b8551146145355760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016107e1565b612dd085602001518484614d2c565b606060208260000151106145605761455b82614421565b6107b8565b6107b882614dcc565b60606107b8614588836020015160008151811061330157613301615937565b614307565b6060825182106145ac57506040805160208101909152600081526107b8565b612d3683838486516145be9190615a01565b614de2565b600080600083518551106145d85783516145db565b84515b90505b808210801561463257508382815181106145fa576145fa615937565b602001015160f81c60f81b6001600160f81b03191685838151811061462157614621615937565b01602001516001600160f81b031916145b156142ff578160010191506145de565b60008060008084600001511161466a5760405162461bcd60e51b81526004016107e190615cba565b6020840151805160001a607f811161468f576000600160009450945094505050614cfe565b60b781116147ec5760006146a4608083615a01565b9050808760000151116147245760405162461bcd60e51b815260206004820152604e6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016107e1565b6001838101516001600160f81b03191690821415806147515750600160ff1b6001600160f81b0319821610155b6147d95760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016107e1565b5060019550935060009250614cfe915050565b60bf8111614a2d57600061480160b783615a01565b9050808760000151116148845760405162461bcd60e51b81526020600482015260516024820152600080516020615e7a83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016107e1565b60018301516001600160f81b031916600081900361490b5760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016107e1565b600184015160088302610100031c6037811161498e5760405162461bcd60e51b81526020600482015260486024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016107e1565b6149988184615a33565b895111614a105760405162461bcd60e51b815260206004820152604c6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016107e1565b614a1b836001615a33565b9750955060009450614cfe9350505050565b60f78111614acf576000614a4260c083615a01565b905080876000015111614abe5760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016107e1565b600195509350849250614cfe915050565b6000614adc60f783615a01565b905080876000015111614b5b5760405162461bcd60e51b815260206004820152604d6024820152600080516020615e7a83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016107e1565b60018301516001600160f81b0319166000819003614be05760405162461bcd60e51b81526020600482015260486024820152600080516020615e7a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016107e1565b600184015160088302610100031c60378111614c615760405162461bcd60e51b81526020600482015260466024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016107e1565b614c6b8184615a33565b895111614ce15760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016107e1565b614cec836001615a33565b9750955060019450614cfe9350505050565b9193909250565b60608315614d14575081612d36565b612d368383614e70565b60606107b8612d0583613c73565b60606000826001600160401b03811115614d4857614d48615153565b6040519080825280601f01601f191660200182016040528015614d72576020820181803683370190505b50905082600003614d84579050612d36565b6000614d908587615a33565b90506020820160005b85811015614db1578281015182820152602001614d99565b85811115614dc0576000868301525b50919695505050505050565b60606107b8826020015160008460000151614d2c565b60608182601f011015614e075760405162461bcd60e51b81526004016107e190615d41565b828284011015614e295760405162461bcd60e51b81526004016107e190615d41565b818301845110156140185760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016107e1565b815115614e805781518083602001fd5b8060405162461bcd60e51b81526004016107e1919061578d565b82805482825590600052602060002090600701600890048101928215614f395791602002820160005b83821115614f0757835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614ec3565b8015614f375782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614f07565b505b50614f45929150614f49565b5090565b5b80821115614f455760008155600101614f4a565b6001600160e01b031981168114610ac957600080fd5b600060208284031215614f8657600080fd5b8135612d3681614f5e565b80356001600160401b0381168114614fa857600080fd5b919050565b600060208284031215614fbf57600080fd5b612d3682614f91565b803563ffffffff81168114614fa857600080fd5b80356001600160a01b0381168114614fa857600080fd5b60008083601f84011261500557600080fd5b5081356001600160401b0381111561501c57600080fd5b60208301915083602082850101111561211f57600080fd5b6000806000806060858703121561504a57600080fd5b61505385614fc8565b935061506160208601614fdc565b925060408501356001600160401b0381111561507c57600080fd5b61508887828801614ff3565b95989497509550505050565b6000602082840312156150a657600080fd5b612d3682614fc8565b6000602082840312156150c157600080fd5b5035919050565b600080604083850312156150db57600080fd5b823591506150eb60208401614fdc565b90509250929050565b60006020828403121561510657600080fd5b612d3682614fdc565b60008083601f84011261512157600080fd5b5081356001600160401b0381111561513857600080fd5b6020830191508360208260051b850101111561211f57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561519157615191615153565b604052919050565b600082601f8301126151aa57600080fd5b81356001600160401b038111156151c3576151c3615153565b6151d6601f8201601f1916602001615169565b8181528460208386010111156151eb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561522957600080fd5b6001600160401b03808d35111561523f57600080fd5b61524c8e8e358f01614ff3565b909c509a5060208d013581101561526257600080fd5b6152728e60208f01358f01614ff3565b909a50985060408d013581101561528857600080fd5b6152988e60408f01358f0161510f565b909850965060608d0135955060808d01358110156152b557600080fd5b6152c58e60808f01358f0161510f565b909550935060a08d01358110156152db57600080fd5b506152ec8d60a08e01358e01615199565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b602081016003831061533d57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561535657600080fd5b61535f83614fdc565b915060208301356001600160401b0381111561537a57600080fd5b61538685828601615199565b9150509250929050565b60006001600160401b038211156153a9576153a9615153565b5060051b60200190565b600082601f8301126153c457600080fd5b813560206153d96153d483615390565b615169565b82815260059290921b840181019181810190868411156153f857600080fd5b8286015b8481101561541a5761540d81614fdc565b83529183019183016153fc565b509695505050505050565b8015158114610ac957600080fd5b8035614fa881615425565b60008060008060008060c0878903121561545757600080fd5b86356001600160401b038082111561546e57600080fd5b818901915089601f83011261548257600080fd5b813560206154926153d483615390565b82815260059290921b8401810191818101908d8411156154b157600080fd5b948201945b838610156154d6576154c786614fc8565b825294820194908201906154b6565b9a50508a0135925050808211156154ec57600080fd5b6154f88a838b016153b3565b9650604089013591508082111561550e57600080fd5b5061551b89828a016153b3565b94505061552a60608801614fdc565b925061553860808801614fdc565b915061554660a08801615433565b90509295509295509295565b6000806000806060858703121561556857600080fd5b61557185614fc8565b93506020850135925060408501356001600160401b0381111561507c57600080fd5b60008060008060008060006080888a0312156155ae57600080fd5b6155b788614f91565b965060208801356001600160401b03808211156155d357600080fd5b6155df8b838c01614ff3565b909850965060408a01359150808211156155f857600080fd5b6156048b838c0161510f565b909650945060608a013591508082111561561d57600080fd5b5061562a8a828b0161510f565b989b979a50959850939692959293505050565b60008060006060848603121561565257600080fd5b61565b84614fc8565b925061566960208501614fdc565b915061567760408501614fdc565b90509250925092565b60006020828403121561569257600080fd5b8135612d3681615425565b60208082526013908201527214d95b991a5b99c81a5cc8191a5cd8589b1959606a1b604082015260600190565b60208082526019908201527f43616e6e6f742073656e6420746f2073616d6520636861696e00000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681810361573357615733615701565b6001019392505050565b60005b83811015615758578181015183820152602001615740565b50506000910152565b6000815180845261577981602086016020860161573d565b601f01601f19169290920160200192915050565b602081526000612d366020830184615761565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600080604083850312156158a057600080fd5b6158a983614f91565b91506150eb60208401614f91565b6000602082840312156158c957600080fd5b5051919050565b60006158de6153d484615390565b80848252602080830192508560051b8501368111156158fc57600080fd5b855b81811015614dc05780356001600160401b0381111561591d5760008081fd5b61592936828a01615199565b8652509382019382016158fe565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff80831681810361573357615733615701565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6000600182016159cd576159cd615701565b5060010190565b8183823760009101908152919050565b6000602082840312156159f657600080fd5b8151612d3681615425565b818103818111156107b8576107b8615701565b6000816000190483118215151615615a2e57615a2e615701565b500290565b808201808211156107b8576107b8615701565b6001600160401b03828116828216039080821115615a6657615a66615701565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082615a9257615a92615a6d565b500690565b600082615aa657615aa6615a6d565b500490565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612dd090830184615761565b60008251615aed81846020870161573d565b9190910192915050565b600060208284031215615b0957600080fd5b8151612d3681614f5e565b604081526000615b276040830185615761565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615bf781604585016020870161573d565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615c4281601785016020880161573d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615c7381602884016020880161573d565b01602801949350505050565b600060ff831680615c9257615c92615a6d565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b8615701565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615d3957615d39615701565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615da4578160001904821115615d8a57615d8a615701565b80851615615d9757918102915b93841c9390800290615d6e565b509250929050565b600082615dbb575060016107b8565b81615dc8575060006107b8565b8160018114615dde5760028114615de857615e04565b60019150506107b8565b60ff841115615df957615df9615701565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615e27575081810a6107b8565b615e318383615d69565b8060001904821115615e4557615e45615701565b029392505050565b6000612d368383615dac56fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220f963c2cdb21e7cd55c8073e6b7a59d7952e2e681906c27fcf9b57ed9ceac437d64736f6c63430008100033", + "sourceMap": "698:1544:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2903:213:31;;;;;;;;;;-1:-1:-1;2903:213:31;;;;;:::i;:::-;;:::i;:::-;;;565:14:145;;558:22;540:41;;528:2;513:18;2903:213:31;;;;;;;;527:42:103;;;;;;;;;;-1:-1:-1;527:42:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1103:25:145;;;1091:2;1076:18;527:42:103;957:177:145;3356:541:99;;;;;;;;;;-1:-1:-1;3356:541:99;;;;;:::i;:::-;;:::i;3147:128:101:-;;;;;;;;;;-1:-1:-1;3147:128:101;;;;;:::i;:::-;;:::i;:::-;;4708:129:31;;;;;;;;;;-1:-1:-1;4708:129:31;;;;;:::i;:::-;4782:7;4808:12;;;:6;:12;;;;;:22;;;;4708:129;1199:66:101;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1199:66:101;;5133:145:31;;;;;;;;;;-1:-1:-1;5133:145:31;;;;;:::i;:::-;;:::i;6242:214::-;;;;;;;;;;-1:-1:-1;6242:214:31;;;;;:::i;:::-;;:::i;3317:197:38:-;;;;;;;;;;-1:-1:-1;3317:197:38;;;;;:::i;:::-;;:::i;1291:37:103:-;;;;;;;;;;-1:-1:-1;1291:37:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;4866:1891:100;;;;;;;;;;-1:-1:-1;4866:1891:100;;;;;:::i;:::-;;:::i;1398:54:103:-;;;;;;;;;;-1:-1:-1;1398:54:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;;-1:-1:-1;434:26:103;;;;;;;;1876:109:100;;;;;;;;;;-1:-1:-1;1957:14:100;:21;1876:109;;3763:222:38;;;;;;:::i;:::-;;:::i;3006:131::-;;;;;;;;;;;;;:::i;1690:20:103:-;;;;;;;;;;-1:-1:-1;1690:20:103;;;;;;;;;;;7434:4:145;7422:17;;;7404:36;;7392:2;7377:18;1690:20:103;7262:184:145;1164:46:103;;;;;;;;;;-1:-1:-1;1164:46:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;7615:32:145;;;7597:51;;7585:2;7570:18;1164:46:103;7451:203:145;1118:958:102;;;;;;;;;;-1:-1:-1;1118:958:102;;;;;:::i;:::-;;:::i;3463:198:101:-;;;;;;;;;;;;;:::i;1778:490:99:-;;;;;;;;;;-1:-1:-1;1778:490:99;;;;;:::i;:::-;;:::i;2830:520::-;;;;;;;;;;-1:-1:-1;2830:520:99;;;;;:::i;:::-;;:::i;999:51:103:-;;;;;;;;;;-1:-1:-1;999:51:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;;;;;-1:-1:-1;2394:1820:100;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;;;;;-1:-1:-1;1936:51:103;;;;;:::i;:::-;;;;;;;;;;;;;;3987:684:101;;;;;;;;;;-1:-1:-1;3987:684:101;;;;;:::i;:::-;;:::i;3203:145:31:-;;;;;;;;;;-1:-1:-1;3203:145:31;;;;;:::i;:::-;;:::i;2432:193:101:-;;;;;;;;;;;;;:::i;2827:123::-;;;;;;;;;;-1:-1:-1;2827:123:101;;;;;:::i;:::-;;:::i;879:30:103:-;;;;;;;;;;-1:-1:-1;879:30:103;;;;;:::i;:::-;;:::i;:::-;;;13007:10:145;12995:23;;;12977:42;;12965:2;12950:18;879:30:103;12833:192:145;2324:49:31;;;;;;;;;;-1:-1:-1;2324:49:31;2369:4;2324:49;;1303:469:99;;;;;;;;;;-1:-1:-1;1303:469:99;;;;;:::i;:::-;;:::i;634:19:103:-;;;;;;;;;;-1:-1:-1;634:19:103;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;13192:31:145;;;13174:50;;13162:2;13147:18;634:19:103;13030:200:145;5558:147:31;;;;;;;;;;-1:-1:-1;5558:147:31;;;;;:::i;:::-;;:::i;924:58:100:-;;;;;;;;;;;;973:9;924:58;;2097:142:101;;;;;;;;;;-1:-1:-1;2097:142:101;;;;;:::i;:::-;;:::i;1370:66::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1370:66:101;;837:33:102;;;;;;;;;;;;869:1;837:33;;2903:213:31;2988:4;-1:-1:-1;;;;;;3011:58:31;;-1:-1:-1;;;3011:58:31;;:98;;-1:-1:-1;;;;;;;;;;1168:51:44;;;3073:36:31;3004:105;2903:213;-1:-1:-1;;2903:213:31:o;3356:541:99:-;3521:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;;;;;;;;;3570:13:::1;3548:18;:35;;::::0;3540:73:::1;;;;-1:-1:-1::0;;;3540:73:99::1;;;;;;;:::i;:::-;3624:20;::::0;3681:85:::1;3700:18:::0;-1:-1:-1;;;;;337:22:112;;3720:39:99::1;3761:4;;3681:18;:85::i;:::-;3785:5;::::0;;-1:-1:-1;;;;;3785:5:99;;::::1;3776:15;::::0;;;:8:::1;:15;::::0;;;;:29;;;3832:7;;3623:143;;-1:-1:-1;3623:143:99;;-1:-1:-1;3623:143:99;;3832:7:::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;3832:7:99::1;;;;;-1:-1:-1::0;;;;;3832:7:99::1;;;;;;-1:-1:-1::0;;;;;3820:42:99::1;;3854:7;3820:42;;;;;;:::i;:::-;;;;;;;;3879:11:::0;3356:541;-1:-1:-1;;;;;;3356:541:99:o;3147:128:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;3213:15:::1;::::0;::::1;3231:5;3213:15:::0;;;:6:::1;:15;::::0;;;;;:23;;-1:-1:-1;;3213:23:101::1;::::0;;3251:17;::::1;::::0;3231:5;3251:17:::1;3147:128:::0;:::o;5133:145:31:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5246:25:::1;5257:4;5263:7;5246:10;:25::i;:::-;5133:145:::0;;;:::o;6242:214::-;-1:-1:-1;;;;;6337:23:31;;929:10:41;6337:23:31;6329:83;;;;-1:-1:-1;;;6329:83:31;;15905:2:145;6329:83:31;;;15887:21:145;15944:2;15924:18;;;15917:30;15983:34;15963:18;;;15956:62;-1:-1:-1;;;16034:18:145;;;16027:45;16089:19;;6329:83:31;15703:411:145;6329:83:31;6423:26;6435:4;6441:7;6423:11;:26::i;:::-;6242:214;;:::o;3317:197:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3400:36:::1;3418:17;3400;:36::i;:::-;3487:12;::::0;;3497:1:::1;3487:12:::0;;;::::1;::::0;::::1;::::0;;;3446:61:::1;::::0;3468:17;;3487:12;3446:21:::1;:61::i;:::-;3317:197:::0;:::o;4866:1891:100:-;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;13192:31:145;;5661:52:100;;::::1;13174:50:145::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;13147:18:145;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;17803:2:145;5727:58:100::1;::::0;::::1;17785:21:145::0;17842:2;17822:18;;;17815:30;-1:-1:-1;;;17861:18:145;;;17854:51;17922:18;;5727:58:100::1;17601:345:145::0;5727:58:100::1;5799:12;5830:84;5853:12;5867:17;;5830:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5886:10:100;;-1:-1:-1;5898:7:100;;-1:-1:-1;5907:6:100;;-1:-1:-1;5830:22:100::1;:84::i;:::-;5799:115;;5936:7;5928:47;;;::::0;-1:-1:-1;;;5928:47:100;;18153:2:145;5928:47:100::1;::::0;::::1;18135:21:145::0;18192:2;18172:18;;;18165:30;18231:29;18211:18;;;18204:57;18278:18;;5928:47:100::1;17951:351:145::0;5928:47:100::1;5462:524;;;;6209:26;6263:320;6309:12;;6263:320;;;;;:::i;:::-;6459:21;::::0;;::::1;::::0;6446:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6343:12;;6377:17;;6416:8;;-1:-1:-1;;;;;6446:35:100::1;1151:46;1484:1;6263:24;:320::i;:::-;6209:388;;6641:11;6619:18;:33;6611:67;;;::::0;-1:-1:-1;;;6611:67:100;;19392:2:145;6611:67:100::1;::::0;::::1;19374:21:145::0;19431:2;19411:18;;;19404:30;-1:-1:-1;;;19450:18:145;;;19443:51;19511:18;;6611:67:100::1;19190:345:145::0;6611:67:100::1;5996:693;6699:51;6715:7;6724:11;6737:12;;6699:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6699:15:100::1;::::0;-1:-1:-1;;;6699:51:100:i:1;:::-;5185:1572;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1891:100;;;;;;;;;;;:::o;3763:222:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3880:36:::1;3898:17;3880;:36::i;:::-;3926:52;3948:17;3967:4;3973;3926:21;:52::i;3006:131::-:0;3084:7;2324:4;-1:-1:-1;;;;;2333:6:38;2316:23;;2308:92;;;;-1:-1:-1;;;2308:92:38;;19742:2:145;2308:92:38;;;19724:21:145;19781:2;19761:18;;;19754:30;19820:34;19800:18;;;19793:62;19891:26;19871:18;;;19864:54;19935:19;;2308:92:38;19540:420:145;2308:92:38;-1:-1:-1;;;;;;;;;;;;3006:131:38;:::o;1118:958:102:-;3291:13:37;;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:37;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:37;1476:19:40;:23;;;3376:66:37;;-1:-1:-1;3425:12:37;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:37;;20167:2:145;3314:201:37;;;20149:21:145;20206:2;20186:18;;;20179:30;20245:34;20225:18;;;20218:62;-1:-1:-1;;;20296:18:145;;;20289:44;20350:19;;3314:201:37;19965:410:145;3314:201:37;3525:12;:16;;-1:-1:-1;;3525:16:37;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:37;;;;;3551:65;1380:24:102::1;:22;:24::i;:::-;1414:22;:20;:22::i;:::-;1446:36;-1:-1:-1::0;;;;;;;;;;;1472:9:102::1;1446:10;:36::i;:::-;1492;-1:-1:-1::0;;;;;;;;;;;1518:9:102::1;1492:10;:36::i;:::-;1538:41;2369:4:31;1569:9:102::0;1538:10:::1;:41::i;:::-;1589:24;:22;:24::i;:::-;1658:13;:20;1632:15;:22;:46;1624:55;;;::::0;::::1;;1723:13;:20;1697:15;:22;:46;1689:55;;;::::0;::::1;;1755:32:::0;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1802:8;1797:204;1820:14;:21:::0;1816:25:::1;::::0;::::1;;1797:204;;;1909:13;1923:1;1909:16;;;;;;;;;;:::i;:::-;;;;;;;1862:12;:31;1875:14;1890:1;1875:17;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1862:31;;;;;;;;;;;;;;;;:64;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;;1974:13;1988:1;1974:16;;;;;;;;;;:::i;:::-;;;;;;;1940:12;:31;1953:14;1968:1;1953:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;1940:31:::0;;;::::1;::::0;;;;;;;;:50;;-1:-1:-1;;;;;;1940:50:102::1;-1:-1:-1::0;;;;;1940:50:102;;;::::1;::::0;;;::::1;::::0;;1843:3;::::1;::::0;::::1;:::i;:::-;;;;1797:204;;;-1:-1:-1::0;2010:14:102::1;:32:::0;;;::::1;;-1:-1:-1::0;;2010:32:102;;::::1;;::::0;;;2052:7:::1;:17:::0;;;;::::1;2010:32:::0;2052:17:::1;::::0;;3636:99:37;;;;3670:13;:21;;-1:-1:-1;;3670:21:37;;;3710:14;;-1:-1:-1;7404:36:145;;3710:14:37;;7392:2:145;7377:18;3710:14:37;;;;;;;3636:99;3258:483;1118:958:102;;;;;;:::o;3463:198:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;3523:8:::1;3518:109;3541:14;:21:::0;3537:25:::1;::::0;::::1;;3518:109;;;3611:5;3583:6;:25;3590:14;3605:1;3590:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;3583:25:::0;;;::::1;::::0;;;;;;;;:33;;-1:-1:-1;;3583:33:101::1;::::0;::::1;;::::0;;;::::1;::::0;;3564:3;::::1;::::0;::::1;:::i;:::-;;;;3518:109;;;-1:-1:-1::0;3641:13:101::1;::::0;::::1;::::0;;;::::1;3463:198::o:0;1778:490:99:-;1927:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;1980:13:::1;1958:18;:35;;::::0;1950:73:::1;;;;-1:-1:-1::0;;;1950:73:99::1;;;;;;;:::i;:::-;2034:20;::::0;2091:85:::1;2110:18:::0;-1:-1:-1;;;;;337:22:112;;2130:39:99::1;245:122:112::0;2091:85:99::1;2203:5;:7:::0;;2033:143;;-1:-1:-1;2033:143:99;;-1:-1:-1;2033:143:99;;-1:-1:-1;;;;;2203:7:99::1;::::0;:5:::1;:7;::::0;::::1;:::i;2830:520::-:0;2995:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;3044:13:::1;3022:18;:35;;::::0;3014:73:::1;;;;-1:-1:-1::0;;;3014:73:99::1;;;;;;;:::i;:::-;3098:20;3120:19:::0;3155:64:::1;3174:18;3194;3214:4;;3155:18;:64::i;2394:1820:100:-:0;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;21136:3:145;21114:16;;;;-1:-1:-1;;;;;;21110:43:145;2955:82:100;;::::1;21098:56:145::0;21209:3;21187:16;;;-1:-1:-1;;;;;;21183:51:145;21170:11;;;21163:72;21273:2;21269:15;-1:-1:-1;;;;;;21269:15:145;21251:12;;;21244:75;2955:82:100;;;;;;;;;21335:12:145;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;13192:31:145;;3301:61:100;;::::1;13174:50:145::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;13147:18:145;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;21560:2:145;3380:67:100::1;::::0;::::1;21542:21:145::0;21599:2;21579:18;;;21572:30;21638:33;21618:18;;;21611:61;21689:18;;3380:67:100::1;21358:355:145::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;21908:31:145;;;;21890:50;;21971:2;21956:18;;21949:34;21878:2;21863:18;;21718:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;1103:25:145::0;3826:80:100;;;;;;;;;1076:18:145;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;19392:2:145;4090:31:100::1;::::0;::::1;19374:21:145::0;19431:2;19411:18;;;19404:30;-1:-1:-1;;;19450:18:145;;;19443:51;19511:18;;4090:31:100::1;19190:345:145::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;3987:684:101;1689:34;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;:::-;4135:18:::1;4176:9:::0;4171:186:::1;4195:14;:21:::0;4191:25;::::1;4171:186;;;4262:7;4241:28;;:14;4256:1;4241:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;::::1;;;:28:::0;4237:110:::1;;4305:4;4289:20;;4327:5;;4237:110;4218:3:::0;::::1;::::0;::::1;:::i;:::-;;;;4171:186;;;;4371:13;4366:117;;4400:14;:28:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4400:28:101;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;;;;::::1;;;::::0;;::::1;::::0;::::1;;::::0;;::::1;;::::0;;4447:25:::1;::::0;4400:28;;4447:25:::1;::::0;::::1;4366:117;4492:21;::::0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;:49;;-1:-1:-1;;;;;4492:49:101;;::::1;-1:-1:-1::0;;;;;;4492:49:101;;::::1;::::0;::::1;::::0;;;4551:12:::1;:21:::0;;;;;;:35;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;4601:63;;22768:34:145;;;22818:18;;;22811:43;;;;4601:63:101::1;::::0;22703:18:145;4601:63:101::1;;;;;;;4125:546;3987:684:::0;;;:::o;3203:145:31:-;3289:4;3312:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3312:29:31;;;;;;;;;;;;;;;3203:145::o;2432:193:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2490:8:::1;2485:108;2508:14;:21:::0;2504:25:::1;::::0;::::1;;2485:108;;;2578:4;2550:6;:25;2557:14;2572:1;2557:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;2550:25:::0;;;::::1;::::0;;;;;;;;:32;;-1:-1:-1;;2550:32:101::1;::::0;::::1;;::::0;;;::::1;::::0;;2531:3;::::1;::::0;::::1;:::i;:::-;;;;2485:108;;;-1:-1:-1::0;2607:11:101::1;::::0;::::1;::::0;;;::::1;2432:193::o:0;2827:123::-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2891:15:::1;::::0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:22;;-1:-1:-1;;2891:22:101::1;2909:4;2891:22;::::0;;2928:15;::::1;::::0;2891;2928::::1;2827:123:::0;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1303:469:99:-;1452:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;1505:13:::1;1483:18;:35;;::::0;1475:73:::1;;;;-1:-1:-1::0;;;1475:73:99::1;;;;;;;:::i;:::-;1559:20;1581:19:::0;1616:64:::1;1635:18;1655;1675:4;;1616:18;:64::i;5558:147:31:-:0;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5672:26:::1;5684:4;5690:7;5672:11;:26::i;2097:142:101:-:0;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2170:14:::1;:24:::0;;-1:-1:-1;;2170:24:101::1;::::0;::::1;;::::0;;::::1;::::0;;;2209:23:::1;::::0;540:41:145;;;2209:23:101::1;::::0;528:2:145;513:18;2209:23:101::1;;;;;;;2097:142:::0;:::o;4455:497:99:-;4721:7;;4742:5;;4685:213;;;;;;;;;;;;;;;;;;;;;;4612:25;;4639:19;;4685:213;;4721:7;;;;;-1:-1:-1;;;;;4742:5:99;;;;4768:13;;4796:10;;4820:18;;4852;;4884:4;;;;;;4685:213;;4884:4;;;;4685:213;;;;;;;;;-1:-1:-1;4685:22:99;;-1:-1:-1;;;4685:213:99:i;:::-;4922:23;;;;;;4670:228;;4922:23;;-1:-1:-1;4455:497:99;-1:-1:-1;;;;;4455:497:99:o;3642:103:31:-;3708:30;3719:4;929:10:41;3708::31;:30::i;7791:233::-;7874:22;7882:4;7888:7;7874;:22::i;:::-;7869:149;;7912:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7912:29:31;;;;;;;;;:36;;-1:-1:-1;;7912:36:31;7944:4;7912:36;;;7994:12;929:10:41;;850:96;7994:12:31;-1:-1:-1;;;;;7967:40:31;7985:7;-1:-1:-1;;;;;7967:40:31;7979:4;7967:40;;;;;;;;;;7791:233;;:::o;8195:234::-;8278:22;8286:4;8292:7;8278;:22::i;:::-;8274:149;;;8348:5;8316:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8316:29:31;;;;;;;;;;:37;;-1:-1:-1;;8316:37:31;;;8372:40;929:10:41;;8316:12:31;;8372:40;;8348:5;8372:40;8195:234;;:::o;2153:87:102:-;1689:34:101;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;2938:974:35:-;951:66;3384:59;;;3380:526;;;3459:37;3478:17;3459:18;:37::i;3380:526::-;3560:17;-1:-1:-1;;;;;3531:61:35;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3531:63:35;;;;;;;;-1:-1:-1;;3531:63:35;;;;;;;;;;;;:::i;:::-;;;3527:302;;3758:56;;-1:-1:-1;;;3758:56:35;;23067:2:145;3758:56:35;;;23049:21:145;23106:2;23086:18;;;23079:30;23145:34;23125:18;;;23118:62;-1:-1:-1;;;23196:18:145;;;23189:44;23250:19;;3758:56:35;22865:410:145;3527:302:35;-1:-1:-1;;;;;;;;;;;3644:28:35;;3636:82;;;;-1:-1:-1;;;3636:82:35;;23482:2:145;3636:82:35;;;23464:21:145;23521:2;23501:18;;;23494:30;23560:34;23540:18;;;23533:62;-1:-1:-1;;;23611:18:145;;;23604:39;23660:19;;3636:82:35;23280:405:145;3636:82:35;3595:138;3842:53;3860:17;3879:4;3885:9;3842:17;:53::i;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;23892:2:145;2704:63:39;;;23874:21:145;23931:2;23911:18;;;23904:30;23970:33;23950:18;;;23943:61;24021:18;;2704:63:39;23690:355:145;2704:63:39;1830:1;2842:7;:18;2580:287::o;7985:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8106:7:100;8129:22;8154:36;8177:12;;8154:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8154:22:100;;-1:-1:-1;;;8154:36:100:i;:::-;8129:61;;8200:19;8232:12;;8222:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8290:26:100;8260;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8256:562;;8332:35;;-1:-1:-1;;;8332:35:100;;24528:2:145;8332:35:100;;;24510:21:145;24567:2;24547:18;;;24540:30;24606:27;24586:18;;;24579:55;24651:18;;8332:35:100;24326:349:145;8256:562:100;8418:13;8388:7;:26;;;:43;;;8384:434;;8447:22;;-1:-1:-1;;;8447:22:100;;24882:2:145;8447:22:100;;;24864:21:145;24921:2;24901:18;;;24894:30;-1:-1:-1;;;24940:18:145;;;24933:42;24992:18;;8447:22:100;24680:336:145;8384:434:100;8509:7;;8490:15;;8509:7;8490:26;;;8509:7;;8490:26;8486:332;;8532:24;;-1:-1:-1;;;8532:24:100;;25223:2:145;8532:24:100;;;25205:21:145;25262:2;25242:18;;;25235:30;-1:-1:-1;;;25281:18:145;;;25274:44;25335:18;;8532:24:100;25021:338:145;8486:332:100;8611:21;;;;;8598:35;;8646:1;8598:35;;;:12;:35;;;;-1:-1:-1;;;;;8598:35:100;8590:58;;:127;;-1:-1:-1;8681:21:100;;;;;8668:35;;8715:1;8668:35;;;:12;:35;;;;-1:-1:-1;;;;;8668:35:100;:49;8590:127;8573:245;;;8742:65;;-1:-1:-1;;;8742:65:100;;25566:2:145;8742:65:100;;;25548:21:145;25605:2;25585:18;;;25578:30;25644:34;25624:18;;;25617:62;25715:25;25695:18;;;25688:53;25758:19;;8742:65:100;25364:419:145;8573:245:100;8835:7;;-1:-1:-1;8844:11:100;-1:-1:-1;7985:878:100;;;;;;:::o;6843:253::-;6938:21;;;6972:1;6938:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6938:21:100;6922:81;;;;-1:-1:-1;;;6922:81:100;;25990:2:145;6922:81:100;;;25972:21:145;26029:2;26009:18;;;26002:30;-1:-1:-1;;;26048:18:145;;;26041:54;26112:18;;6922:81:100;25788:348:145;6922:81:100;7021:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7021:34:100;;;;-1:-1:-1;;;;;7021:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7013:76;;;;-1:-1:-1;;;7013:76:100;;26593:2:145;7013:76:100;;;26575:21:145;26632:2;26612:18;;;26605:30;26671:31;26651:18;;;26644:59;26720:18;;7013:76:100;26391:353:145;7157:121:100;7232:15;;;;;;;:6;:15;;;;;;;;7231:16;7223:48;;;;-1:-1:-1;;;7223:48:100;;26951:2:145;7223:48:100;;;26933:21:145;26990:2;26970:18;;;26963:30;-1:-1:-1;;;27009:18:145;;;27002:49;27068:18;;7223:48:100;26749:343:145;7348:452:100;7450:21;;;7484:1;7450:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7450:21:100;7434:81;;;;-1:-1:-1;;;7434:81:100;;25990:2:145;7434:81:100;;;25972:21:145;26029:2;26009:18;;;26002:30;-1:-1:-1;;;26048:18:145;;;26041:54;26112:18;;7434:81:100;25788:348:145;7434:81:100;7533:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7533:38:100;;-1:-1:-1;;;;;13192:31:145;;7533:38:100;;;13174:50:145;;;;-1:-1:-1;;;;;7533:21:100;;;;:32;;13147:18:145;;7533:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7575:1;7533:43;7525:86;;;;-1:-1:-1;;;7525:86:100;;27488:2:145;7525:86:100;;;27470:21:145;27527:2;27507:18;;;27500:30;27566:32;27546:18;;;27539:60;27616:18;;7525:86:100;27286:354:145;7525:86:100;7661:21;;;7621:19;7661:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7661:38:100;;-1:-1:-1;;;;;13192:31:145;;7661:38:100;;;13174:50:145;;;;-1:-1:-1;;;;;7661:21:100;;:32;;13147:18:145;;7661:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7643:56;;:15;:56;:::i;:::-;7621:78;;973:9;7717:11;:37;;7709:84;;;;-1:-1:-1;;;7709:84:100;;27980:2:145;7709:84:100;;;27962:21:145;28019:2;27999:18;;;27992:30;28058:34;28038:18;;;28031:62;-1:-1:-1;;;28109:18:145;;;28102:32;28151:19;;7709:84:100;27778:398:145;3024:1184:109;3230:4;3246:13;3284:6;-1:-1:-1;;;;;3273:17:109;:7;-1:-1:-1;;;;;3273:17:109;;3269:845;;-1:-1:-1;3314:5:109;3341:14;3314:5;3349:6;3341:14;:::i;:::-;:20;;3358:3;3341:20;:::i;:::-;3333:28;;3269:845;;;304:4;3382:16;3392:6;3382:7;:16;:::i;:::-;-1:-1:-1;;;;;3382:45:109;;3378:736;;-1:-1:-1;3451:5:109;3478:14;3451:5;3486:6;3478:14;:::i;:::-;:18;;3495:1;3478:18;:::i;:::-;3470:26;-1:-1:-1;3554:34:109;304:4;-1:-1:-1;;;;;3554:34:109;;;:::i;:::-;3518:33;304:4;3518:5;:33;:::i;:::-;:70;;;;:::i;:::-;3510:78;-1:-1:-1;3610:14:109;3510:78;3618:6;3610:14;:::i;3378:736::-;3660:7;-1:-1:-1;;;;;3651:16:109;:6;-1:-1:-1;;;;;3651:16:109;;3647:467;;;-1:-1:-1;3691:5:109;3718:14;3691:5;3726:6;3718:14;:::i;:::-;:18;;3735:1;3718:18;:::i;:::-;3710:26;-1:-1:-1;3758:9:109;3710:26;3766:1;3758:9;:::i;:::-;:13;;3770:1;3758:13;:::i;:::-;3750:21;-1:-1:-1;3826:34:109;304:4;-1:-1:-1;;;;;3826:34:109;;;:::i;:::-;3793:30;236:8;3793:5;:30;:::i;:::-;:67;;;;:::i;:::-;3785:75;-1:-1:-1;3882:9:109;3785:75;3890:1;3882:9;:::i;:::-;:13;;3894:1;3882:13;:::i;3647:467::-;4060:43;;-1:-1:-1;;;4060:43:109;;29248:2:145;4060:43:109;;;29230:21:145;29287:2;29267:18;;;29260:30;29326:34;29306:18;;;29299:62;-1:-1:-1;;;29377:18:145;;;29370:31;29418:19;;4060:43:109;29046:397:145;3647:467:109;4130:71;4150:12;4164:5;4171:17;4190:10;4130:19;:71::i;:::-;4123:78;3024:1184;-1:-1:-1;;;;;;;3024:1184:109:o;1420:2836:110:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:110;;-1:-1:-1;2441:14:110;-1:-1:-1;;;2469:25:110;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:110;;;2469:54;2465:236;;;-1:-1:-1;2548:1:110;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:110;;;2566:135;;-1:-1:-1;2620:1:110;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:110;;29650:2:145;2652:38:110;;;29632:21:145;29689:2;29669:18;;;29662:30;29728;29708:18;;;29701:58;29776:18;;2652:38:110;29448:352:145;2566:135:110;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:110;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:110;;30007:2:145;3233:58:110;;;29989:21:145;30046:2;30026:18;;;30019:30;-1:-1:-1;;;30065:18:145;;;30058:52;30127:18;;3233:58:110;29805:346:145;3233:58:110;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:110;;30358:2:145;3450:58:110;;;30340:21:145;30397:2;30377:18;;;30370:30;30436:25;30416:18;;;30409:53;30479:18;;3450:58:110;30156:347:145;3450:58:110;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:110;;30710:2:145;3594:70:110;;;30692:21:145;30749:2;30729:18;;;30722:30;30788:34;30768:18;;;30761:62;-1:-1:-1;;;30839:18:145;;;30832:32;30881:19;;3594:70:110;30508:398:145;3594:70:110;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:110;:15;-1:-1:-1;;;;;3811:33:110;;3803:85;;;;-1:-1:-1;;;3803:85:110;;31113:2:145;3803:85:110;;;31095:21:145;31152:2;31132:18;;;31125:30;31191:34;31171:18;;;31164:62;-1:-1:-1;;;31242:18:145;;;31235:37;31289:19;;3803:85:110;30911:403:145;3803:85:110;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:110;;31521:2:145;4057:142:110;;;31503:21:145;31560:2;31540:18;;;31533:30;31599:34;31579:18;;;31572:62;-1:-1:-1;;;31650:18:145;;;31643:43;31703:19;;4057:142:110;31319:409:145;4057:142:110;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9345:1529:100:-;9473:11;9494:17;9535:24;9602:42;;;9662:7;:21;;;9701:7;:21;;;9740:7;:12;;;9562:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9562:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9562:204:100;-1:-1:-1;;;;;;9562:204:100;;;;;;;;;;9822:26;;;;9562:204;;-1:-1:-1;9880:11:100;-1:-1:-1;;;;;9880:16:100;9897:11;9880:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10350:11:100;;9863:46;;-1:-1:-1;9863:46:100;-1:-1:-1;10306:22:100;;-1:-1:-1;10365:2:100;10350:17;;-1:-1:-1;10346:176:100;;10384:12;10411:4;10400:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10460:51:100;-1:-1:-1;;;10460:51:100;;-1:-1:-1;;10346:176:100;10536:6;:27;;;;;10546:17;10536:27;10532:210;;;10579:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10579:62:100;10608:33;10579:62;;;10532:210;;;10672:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10672:59:100;10701:30;10672:59;;;10532:210;10824:11;10809:7;:13;;;-1:-1:-1;;;;;10757:110:100;10786:7;:21;;;10757:110;;;10837:12;10851:6;10757:110;;;;;;;:::i;:::-;;;;;;;;9463:1411;;;9345:1529;;;:::o;2873:209:39:-;1787:1;3053:7;:22;2873:209::o;1868:111::-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;:::-;1938:34:39::1;:32;:34::i;:::-;1868:111::o:0;2025:65:31:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;735:581:110:-;927:33;;-1:-1:-1;;;;;;33548:2:145;33544:15;;;33540:53;927:33:110;;;33528:66:145;872:7:110;;;;33610:12:145;;927:33:110;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;33762:19:145;;33806:2;33797:12;;33633:182;1014:29:110;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:110;;34022:2:145;1072:58:110;;;34004:21:145;34061:2;34041:18;;;34034:30;-1:-1:-1;;;34080:18:145;;;34073:52;34142:18;;1072:58:110;33820:346:145;1072:58:110;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:110;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;33762:19:145;;33806:2;33797:12;;33633:182;538:26:110;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:110;;34373:2:145;601:65:110;;;34355:21:145;34412:2;34392:18;;;34385:30;34451;34431:18;;;34424:58;34499:18;;601:65:110;34171:352:145;601:65:110;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:110:o;3800:489:107:-;4049:12;4110:7;4131:5;4150:13;4177;4204:18;4236;4268:4;4080:202;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4073:209;;3800:489;;;;;;;;;:::o;4026:501:31:-;4114:22;4122:4;4128:7;4114;:22::i;:::-;4109:412;;4297:39;4328:7;4297:30;:39::i;:::-;4407:49;4446:4;4453:2;4407:30;:49::i;:::-;4204:274;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4204:274:31;;;;;;;;;;-1:-1:-1;;;4152:358:31;;;;;;;:::i;1805:281:35:-;-1:-1:-1;;;;;1476:19:40;;;1878:106:35;;;;-1:-1:-1;;;1878:106:35;;36649:2:145;1878:106:35;;;36631:21:145;36688:2;36668:18;;;36661:30;36727:34;36707:18;;;36700:62;-1:-1:-1;;;36778:18:145;;;36771:43;36831:19;;1878:106:35;36447:409:145;1878:106:35;-1:-1:-1;;;;;;;;;;;1994:85:35;;-1:-1:-1;;;;;;1994:85:35;-1:-1:-1;;;;;1994:85:35;;;;;;;;;;1805:281::o;2478:288::-;2616:29;2627:17;2616:10;:29::i;:::-;2673:1;2659:4;:11;:15;:28;;;;2678:9;2659:28;2655:105;;;2703:46;2725:17;2744:4;2703:21;:46::i;:::-;;2478:288;;;:::o;4295:1028:107:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:107;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:107;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:107;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:107;;4295:1028;-1:-1:-1;;;;;;4295:1028:107:o;1770:281:109:-;1914:4;1934:26;1963:38;1981:4;1987:5;1994:6;1963:17;:38::i;:::-;2018:26;;;;1770:281;-1:-1:-1;;;;;1770:281:109:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;37063:2:145;3101:49:77;;;37045:21:145;37102:2;37082:18;;;37075:30;-1:-1:-1;;;37121:18:145;;;37114:51;37182:18;;3101:49:77;36861:345:145;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;33762:19:145;;33806:2;33797:12;;33633:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;37413:2:145;3636:134:77;;;37395:21:145;37452:2;37432:18;;;37425:30;37491:34;37471:18;;;37464:62;-1:-1:-1;;;37542:18:145;;;37535:44;37596:19;;3636:134:77;37211:410:145;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;33762:19:145;;;33806:2;33797:12;;33633:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;37828:2:145;3893:176:77;;;37810:21:145;37867:2;37847:18;;;37840:30;37906:31;37886:18;;;37879:59;37955:18;;3893:176:77;37626:353:145;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;33762:19:145;;;33806:2;33797:12;;33633:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;38186:2:145;4222:186:77;;;38168:21:145;38225:2;38205:18;;;38198:30;38264:34;38244:18;;;38237:62;-1:-1:-1;;;38315:18:145;;;38308:37;38362:19;;4222:186:77;37984:403:145;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;38594:2:145;4509:156:77;;;38576:21:145;38633:2;38613:18;;;38606:30;38672:34;38652:18;;;38645:62;-1:-1:-1;;;38723:18:145;;;38716:36;38769:19;;4509:156:77;38392:402:145;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;39001:2:145;5384:158:77;;;38983:21:145;39040:2;39020:18;;;39013:30;39079:34;39059:18;;;39052:62;39150:29;39130:18;;;39123:57;39197:19;;5384:158:77;38799:423:145;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;39429:2:145;5626:162:77;;;39411:21:145;39468:2;39448:18;;;39441:30;39507:34;39487:18;;;39480:62;39578:28;39558:18;;;39551:56;39624:19;;5626:162:77;39227:422:145;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;40174:2:145;7009:171:77;;;40156:21:145;40213:2;40193:18;;;40186:30;40252:34;40232:18;;;40225:62;40323:28;40303:18;;;40296:56;40369:19;;7009:171:77;39972:422:145;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;40601:2:145;7843:185:77;;;40583:21:145;40640:2;40620:18;;;40613:30;40679:34;40659:18;;;40652:62;40750:31;40730:18;;;40723:59;40799:19;;7843:185:77;40399:425:145;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;41031:2:145;8463:156:77;;;41013:21:145;41070:2;41050:18;;;41043:30;41109:34;41089:18;;;41082:62;41180:27;41160:18;;;41153:55;41225:19;;8463:156:77;40829:421:145;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;41457:2:145;8703:160:77;;;41439:21:145;41496:2;41476:18;;;41469:30;41535:34;41515:18;;;41508:62;41606:26;41586:18;;;41579:54;41650:19;;8703:160:77;41255:420:145;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;41882:2:145;9439:60:77;;;41864:21:145;41921:2;41901:18;;;41894:30;41960:34;41940:18;;;41933:62;-1:-1:-1;;;42011:18:145;;;42004:48;42069:19;;9439:60:77;41680:414:145;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;42301:2:145;9556:50:77;;;42283:21:145;42340:2;42320:18;;;42313:30;42379:34;42359:18;;;42352:62;-1:-1:-1;;;42430:18:145;;;42423:38;42478:19;;9556:50:77;42099:404:145;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;42710:2:145;9641:47:77;;;42692:21:145;42749:2;42729:18;;;42722:30;42788:34;42768:18;;;42761:62;-1:-1:-1;;;42839:18:145;;;42832:35;42884:19;;9641:47:77;42508:401:145;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;43116:2:145;2161:136:75;;;43098:21:145;43155:2;43135:18;;;43128:30;43194:34;43174:18;;;43167:62;43265:26;43245:18;;;43238:54;43309:19;;2161:136:75;42914:420:145;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;43541:2:145;2308:134:75;;;43523:21:145;43580:2;43560:18;;;43553:30;43619:34;43599:18;;;43592:62;-1:-1:-1;;;43670:18:145;;;43663:48;43728:19;;2308:134:75;43339:414:145;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;43960:2:145;12579:55:75;;;43942:21:145;43999:2;43979:18;;;43972:30;44038:28;44018:18;;;44011:56;44084:18;;12579:55:75;43758:350:145;12579:55:75;12668:16;12680:3;12160:122;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;44315:2:145;11438:55:75;;;44297:21:145;44354:2;44334:18;;;44327:30;44393:28;44373:18;;;44366:56;44439:18;;11438:55:75;44113:350:145;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;44315:2:145;11598:72:75;;;44297:21:145;44354:2;44334:18;;;44327:30;44393:28;44373:18;;;44366:56;44439:18;;11598:72:75;44113:350:145;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1985:109:39:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;1385:419:75:-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;2146:149:43:-;2204:13;2236:52;-1:-1:-1;;;;;2248:22:43;;333:2;1557:437;1632:13;1657:19;1689:10;1693:6;1689:1;:10;:::i;:::-;:14;;1702:1;1689:14;:::i;:::-;-1:-1:-1;;;;;1679:25:43;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1679:25:43;;1657:47;;-1:-1:-1;;;1714:6:43;1721:1;1714:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1714:15:43;;;;;;;;;-1:-1:-1;;;1739:6:43;1746:1;1739:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1739:15:43;;;;;;;;-1:-1:-1;1769:9:43;1781:10;1785:6;1781:1;:10;:::i;:::-;:14;;1794:1;1781:14;:::i;:::-;1769:26;;1764:128;1801:1;1797;:5;1764:128;;;-1:-1:-1;;;1844:5:43;1852:3;1844:11;1835:21;;;;;;;:::i;:::-;;;;1823:6;1830:1;1823:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1823:33:43;;;;;;;;-1:-1:-1;1880:1:43;1870:11;;;;;1804:3;;;:::i;:::-;;;1764:128;;;-1:-1:-1;1909:10:43;;1901:55;;;;-1:-1:-1;;;1901:55:43;;45294:2:145;1901:55:43;;;45276:21:145;;;45313:18;;;45306:30;45372:34;45352:18;;;45345:62;45424:18;;1901:55:43;45092:356:145;2192:152:35;2258:37;2277:17;2258:18;:37::i;:::-;2310:27;;-1:-1:-1;;;;;2310:27:35;;;;;;;;2192:152;:::o;7088:455::-;7171:12;-1:-1:-1;;;;;1476:19:40;;;7195:88:35;;;;-1:-1:-1;;;7195:88:35;;45655:2:145;7195:88:35;;;45637:21:145;45694:2;45674:18;;;45667:30;45733:34;45713:18;;;45706:62;-1:-1:-1;;;45784:18:145;;;45777:36;45830:19;;7195:88:35;45453:402:145;7195:88:35;7354:12;7368:23;7395:6;-1:-1:-1;;;;;7395:19:35;7415:4;7395:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:67;;;;7437:99;7473:7;7482:10;7437:99;;;;;;;;;;;;;;;;;:35;:99::i;205:3191:107:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:107;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:107;;46405:2:145;409:63:107;;;46387:21:145;46444:2;46424:18;;;46417:30;-1:-1:-1;;;46463:18:145;;;46456:47;46520:18;;409:63:107;46203:341:145;409:63:107;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:107;;;2803:2;2786:11;-1:-1:-1;;2782:25:107;2776:4;2769:39;-1:-1:-1;617:2736:107;-1:-1:-1;3380:9:107;205:3191;-1:-1:-1;;;;205:3191:107:o;1213:551:109:-;1341:7;1399:5;1378:6;:13;1394:1;1378:17;;;;:::i;:::-;1372:24;;:1;:24;:::i;:::-;:32;1364:41;;;;;;1431:4;1415:13;1468:268;1475:5;1484:1;1475:10;1468:268;;1505:9;1513:1;1505:5;:9;:::i;:::-;1518:1;1505:14;1501:184;;1547:38;1567:6;1574:1;1567:9;;;;;;;;:::i;:::-;;;;;;;1578:5;1554:30;;;;;;;;48080:19:145;;;48124:2;48115:12;;48108:28;48161:2;48152:12;;47923:247;1554:30:109;;;;-1:-1:-1;;1554:30:109;;;;;;;;;;1547:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1539:46;;1501:184;;;1632:38;1652:5;1659:6;1666:1;1659:9;;;;;;;;:::i;:::-;;;;;;;1639:30;;;;;;;;48080:19:145;;;48124:2;48115:12;;48108:28;48161:2;48152:12;;47923:247;1639:30:109;;;;-1:-1:-1;;1639:30:109;;;;;;;;;;1632:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1624:46;;1501:184;1698:10;1707:1;1698:10;;:::i;:::-;;-1:-1:-1;1722:3:109;;;;:::i;:::-;;;;1468:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;48377:2:145;4505:137:75;;;48359:21:145;48416:2;48396:18;;;48389:30;48455:34;48435:18;;;48428:62;48526:27;48506:18;;;48499:55;48571:19;;4505:137:75;48175:421:145;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;48803:2:145;4653:136:75;;;48785:21:145;48842:2;48822:18;;;48815:30;48881:34;48861:18;;;48854:62;-1:-1:-1;;;48932:18:145;;;48925:50;48992:19;;4653:136:75;48601:416:145;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;49224:2:145;6699:156:75;;;49206:21:145;49263:2;49243:18;;;49236:30;-1:-1:-1;;;;;;;;;;;49282:18:145;;;49275:62;49373:34;49353:18;;;49346:62;-1:-1:-1;;;49424:19:145;;;49417:45;49479:19;;6699:156:75;49022:482:145;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;49711:2:145;7025:177:75;;;49693:21:145;49750:2;49730:18;;;49723:30;49789:34;49769:18;;;49762:62;49860:34;49840:18;;;49833:62;-1:-1:-1;;;49911:19:145;;;49904:44;49965:19;;7025:177:75;49509:481:145;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;50197:2:145;7387:164:75;;;50179:21:145;50236:2;50216:18;;;50209:30;-1:-1:-1;;;;;;;;;;;50255:18:145;;;50248:62;50346:34;50326:18;;;50319:62;-1:-1:-1;;;50397:19:145;;;50390:48;50455:19;;7387:164:75;49995:485:145;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;50687:2:145;7721:159:75;;;50669:21:145;50726:2;50706:18;;;50699:30;-1:-1:-1;;;;;;;;;;;50745:18:145;;;50738:62;50836:34;50816:18;;;50809:62;-1:-1:-1;;;50887:19:145;;;50880:41;50938:19;;7721:159:75;50485:478:145;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;51170:2:145;8042:142:75;;;51152:21:145;51209:2;51189:18;;;51182:30;-1:-1:-1;;;;;;;;;;;51228:18:145;;;51221:62;51319:34;51299:18;;;51292:62;-1:-1:-1;;;51370:19:145;;;51363:39;51419:19;;8042:142:75;50968:476:145;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;51651:2:145;8199:168:75;;;51633:21:145;51690:2;51670:18;;;51663:30;-1:-1:-1;;;;;;;;;;;51709:18:145;;;51702:62;51800:34;51780:18;;;51773:62;-1:-1:-1;;;51851:19:145;;;51844:43;51904:19;;8199:168:75;51449:480:145;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;52136:2:145;8617:153:75;;;52118:21:145;52175:2;52155:18;;;52148:30;-1:-1:-1;;;;;;;;;;;52194:18:145;;;52187:62;52285:34;52265:18;;;52258:62;-1:-1:-1;;;52336:19:145;;;52329:41;52387:19;;8617:153:75;51934:478:145;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;52619:2:145;8935:161:75;;;52601:21:145;52658:2;52638:18;;;52631:30;-1:-1:-1;;;;;;;;;;;52677:18:145;;;52670:62;52768:34;52748:18;;;52741:62;-1:-1:-1;;;52819:19:145;;;52812:44;52873:19;;8935:161:75;52417:481:145;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;53105:2:145;9266:157:75;;;53087:21:145;53144:2;53124:18;;;53117:30;-1:-1:-1;;;;;;;;;;;53163:18:145;;;53156:62;53254:34;53234:18;;;53227:62;-1:-1:-1;;;53305:19:145;;;53298:39;53354:19;;9266:157:75;52903:476:145;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;53586:2:145;9588:141:75;;;53568:21:145;53625:2;53605:18;;;53598:30;-1:-1:-1;;;;;;;;;;;53644:18:145;;;53637:62;53735:34;53715:18;;;53708:62;-1:-1:-1;;;53786:19:145;;;53779:37;53833:19;;9588:141:75;53384:474:145;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;54065:2:145;9744:168:75;;;54047:21:145;54104:2;54084:18;;;54077:30;-1:-1:-1;;;;;;;;;;;54123:18:145;;;54116:62;54214:34;54194:18;;;54187:62;-1:-1:-1;;;54265:19:145;;;54258:41;54316:19;;9744:168:75;53863:478:145;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;7438:295:40:-;7584:12;7612:7;7608:119;;;-1:-1:-1;7642:10:40;7635:17;;7608:119;7683:33;7691:10;7703:12;7683:7;:33::i;4047:125:75:-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;46405:2:145;989:63:74;;;46387:21:145;46444:2;46424:18;;;46417:30;-1:-1:-1;;;46463:18:145;;;46456:47;46520:18;;989:63:74;46203:341:145;7739:540:40;7898:17;;:21;7894:379;;8126:10;8120:17;8182:15;8169:10;8165:2;8161:19;8154:44;7894:379;8249:12;8242:20;;-1:-1:-1;;;8242:20:40;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:145;-1:-1:-1;;;;;;88:32:145;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:171::-;659:20;;-1:-1:-1;;;;;708:30:145;;698:41;;688:69;;753:1;750;743:12;688:69;592:171;;;:::o;768:184::-;826:6;879:2;867:9;858:7;854:23;850:32;847:52;;;895:1;892;885:12;847:52;918:28;936:9;918:28;:::i;1139:163::-;1206:20;;1266:10;1255:22;;1245:33;;1235:61;;1292:1;1289;1282:12;1307:173;1375:20;;-1:-1:-1;;;;;1424:31:145;;1414:42;;1404:70;;1470:1;1467;1460:12;1485:347;1536:8;1546:6;1600:3;1593:4;1585:6;1581:17;1577:27;1567:55;;1618:1;1615;1608:12;1567:55;-1:-1:-1;1641:20:145;;-1:-1:-1;;;;;1673:30:145;;1670:50;;;1716:1;1713;1706:12;1670:50;1753:4;1745:6;1741:17;1729:29;;1805:3;1798:4;1789:6;1781;1777:19;1773:30;1770:39;1767:59;;;1822:1;1819;1812:12;1837:555;1924:6;1932;1940;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2040:28;2058:9;2040:28;:::i;:::-;2030:38;;2087;2121:2;2110:9;2106:18;2087:38;:::i;:::-;2077:48;;2176:2;2165:9;2161:18;2148:32;-1:-1:-1;;;;;2195:6:145;2192:30;2189:50;;;2235:1;2232;2225:12;2189:50;2274:58;2324:7;2315:6;2304:9;2300:22;2274:58;:::i;:::-;1837:555;;;;-1:-1:-1;2351:8:145;-1:-1:-1;;;;1837:555:145:o;2397:184::-;2455:6;2508:2;2496:9;2487:7;2483:23;2479:32;2476:52;;;2524:1;2521;2514:12;2476:52;2547:28;2565:9;2547:28;:::i;2586:180::-;2645:6;2698:2;2686:9;2677:7;2673:23;2669:32;2666:52;;;2714:1;2711;2704:12;2666:52;-1:-1:-1;2737:23:145;;2586:180;-1:-1:-1;2586:180:145:o;2771:254::-;2839:6;2847;2900:2;2888:9;2879:7;2875:23;2871:32;2868:52;;;2916:1;2913;2906:12;2868:52;2952:9;2939:23;2929:33;;2981:38;3015:2;3004:9;3000:18;2981:38;:::i;:::-;2971:48;;2771:254;;;;;:::o;3030:186::-;3089:6;3142:2;3130:9;3121:7;3117:23;3113:32;3110:52;;;3158:1;3155;3148:12;3110:52;3181:29;3200:9;3181:29;:::i;3221:367::-;3284:8;3294:6;3348:3;3341:4;3333:6;3329:17;3325:27;3315:55;;3366:1;3363;3356:12;3315:55;-1:-1:-1;3389:20:145;;-1:-1:-1;;;;;3421:30:145;;3418:50;;;3464:1;3461;3454:12;3418:50;3501:4;3493:6;3489:17;3477:29;;3561:3;3554:4;3544:6;3541:1;3537:14;3529:6;3525:27;3521:38;3518:47;3515:67;;;3578:1;3575;3568:12;3593:127;3654:10;3649:3;3645:20;3642:1;3635:31;3685:4;3682:1;3675:15;3709:4;3706:1;3699:15;3725:275;3796:2;3790:9;3861:2;3842:13;;-1:-1:-1;;3838:27:145;3826:40;;-1:-1:-1;;;;;3881:34:145;;3917:22;;;3878:62;3875:88;;;3943:18;;:::i;:::-;3979:2;3972:22;3725:275;;-1:-1:-1;3725:275:145:o;4005:530::-;4047:5;4100:3;4093:4;4085:6;4081:17;4077:27;4067:55;;4118:1;4115;4108:12;4067:55;4154:6;4141:20;-1:-1:-1;;;;;4176:2:145;4173:26;4170:52;;;4202:18;;:::i;:::-;4246:55;4289:2;4270:13;;-1:-1:-1;;4266:27:145;4295:4;4262:38;4246:55;:::i;:::-;4326:2;4317:7;4310:19;4372:3;4365:4;4360:2;4352:6;4348:15;4344:26;4341:35;4338:55;;;4389:1;4386;4379:12;4338:55;4454:2;4447:4;4439:6;4435:17;4428:4;4419:7;4415:18;4402:55;4502:1;4477:16;;;4495:4;4473:27;4466:38;;;;4481:7;4005:530;-1:-1:-1;;;4005:530:145:o;4540:1652::-;4749:6;4757;4765;4773;4781;4789;4797;4805;4813;4821;4829:7;4883:3;4871:9;4862:7;4858:23;4854:33;4851:53;;;4900:1;4897;4890:12;4851:53;-1:-1:-1;;;;;4981:2:145;4969:9;4956:23;4953:31;4950:51;;;4997:1;4994;4987:12;4950:51;5036:75;5103:7;5090:9;5077:23;5066:9;5062:39;5036:75;:::i;:::-;5130:8;;-1:-1:-1;5157:8:145;-1:-1:-1;5208:2:145;5193:18;;5180:32;5177:40;-1:-1:-1;5174:60:145;;;5230:1;5227;5220:12;5174:60;5269:84;5345:7;5338:2;5327:9;5323:18;5310:32;5299:9;5295:48;5269:84;:::i;:::-;5372:8;;-1:-1:-1;5399:8:145;-1:-1:-1;5450:2:145;5435:18;;5422:32;5419:40;-1:-1:-1;5416:60:145;;;5472:1;5469;5462:12;5416:60;5511:96;5599:7;5592:2;5581:9;5577:18;5564:32;5553:9;5549:48;5511:96;:::i;:::-;5626:8;;-1:-1:-1;5653:8:145;-1:-1:-1;5708:2:145;5693:18;;5680:32;;-1:-1:-1;5755:3:145;5740:19;;5727:33;5724:41;-1:-1:-1;5721:61:145;;;5778:1;5775;5768:12;5721:61;5817:97;5906:7;5898:3;5887:9;5883:19;5870:33;5859:9;5855:49;5817:97;:::i;:::-;5933:8;;-1:-1:-1;5960:8:145;-1:-1:-1;6011:3:145;5996:19;;5983:33;5980:41;-1:-1:-1;5977:61:145;;;6034:1;6031;6024:12;5977:61;;6057:76;6125:7;6117:3;6106:9;6102:19;6089:33;6078:9;6074:49;6057:76;:::i;:::-;6047:86;;6181:3;6170:9;6166:19;6153:33;6142:44;;4540:1652;;;;;;;;;;;;;;:::o;6197:127::-;6258:10;6253:3;6249:20;6246:1;6239:31;6289:4;6286:1;6279:15;6313:4;6310:1;6303:15;6329:347;6480:2;6465:18;;6513:1;6502:13;;6492:144;;6558:10;6553:3;6549:20;6546:1;6539:31;6593:4;6590:1;6583:15;6621:4;6618:1;6611:15;6492:144;6645:25;;;6329:347;:::o;6863:394::-;6940:6;6948;7001:2;6989:9;6980:7;6976:23;6972:32;6969:52;;;7017:1;7014;7007:12;6969:52;7040:29;7059:9;7040:29;:::i;:::-;7030:39;;7120:2;7109:9;7105:18;7092:32;-1:-1:-1;;;;;7139:6:145;7136:30;7133:50;;;7179:1;7176;7169:12;7133:50;7202:49;7243:7;7234:6;7223:9;7219:22;7202:49;:::i;:::-;7192:59;;;6863:394;;;;;:::o;7659:182::-;7718:4;-1:-1:-1;;;;;7743:6:145;7740:30;7737:56;;;7773:18;;:::i;:::-;-1:-1:-1;7818:1:145;7814:14;7830:4;7810:25;;7659:182::o;7846:667::-;7900:5;7953:3;7946:4;7938:6;7934:17;7930:27;7920:55;;7971:1;7968;7961:12;7920:55;8007:6;7994:20;8033:4;8057:59;8073:42;8112:2;8073:42;:::i;:::-;8057:59;:::i;:::-;8150:15;;;8236:1;8232:10;;;;8220:23;;8216:32;;;8181:12;;;;8260:15;;;8257:35;;;8288:1;8285;8278:12;8257:35;8324:2;8316:6;8312:15;8336:148;8352:6;8347:3;8344:15;8336:148;;;8418:23;8437:3;8418:23;:::i;:::-;8406:36;;8462:12;;;;8369;;8336:148;;;-1:-1:-1;8502:5:145;7846:667;-1:-1:-1;;;;;;7846:667:145:o;8518:118::-;8604:5;8597:13;8590:21;8583:5;8580:32;8570:60;;8626:1;8623;8616:12;8641:128;8706:20;;8735:28;8706:20;8735:28;:::i;8774:1588::-;8949:6;8957;8965;8973;8981;8989;9042:3;9030:9;9021:7;9017:23;9013:33;9010:53;;;9059:1;9056;9049:12;9010:53;9099:9;9086:23;-1:-1:-1;;;;;9169:2:145;9161:6;9158:14;9155:34;;;9185:1;9182;9175:12;9155:34;9223:6;9212:9;9208:22;9198:32;;9268:7;9261:4;9257:2;9253:13;9249:27;9239:55;;9290:1;9287;9280:12;9239:55;9326:2;9313:16;9348:4;9372:59;9388:42;9427:2;9388:42;:::i;9372:59::-;9465:15;;;9547:1;9543:10;;;;9535:19;;9531:28;;;9496:12;;;;9571:19;;;9568:39;;;9603:1;9600;9593:12;9568:39;9627:11;;;;9647:147;9663:6;9658:3;9655:15;9647:147;;;9729:22;9747:3;9729:22;:::i;:::-;9717:35;;9680:12;;;;9772;;;;9647:147;;;9813:5;-1:-1:-1;;9856:18:145;;9843:32;;-1:-1:-1;;9887:16:145;;;9884:36;;;9916:1;9913;9906:12;9884:36;9939:63;9994:7;9983:8;9972:9;9968:24;9939:63;:::i;:::-;9929:73;;10055:2;10044:9;10040:18;10027:32;10011:48;;10084:2;10074:8;10071:16;10068:36;;;10100:1;10097;10090:12;10068:36;;10123:63;10178:7;10167:8;10156:9;10152:24;10123:63;:::i;:::-;10113:73;;;10205:38;10239:2;10228:9;10224:18;10205:38;:::i;:::-;10195:48;;10262:39;10296:3;10285:9;10281:19;10262:39;:::i;:::-;10252:49;;10320:36;10351:3;10340:9;10336:19;10320:36;:::i;:::-;10310:46;;8774:1588;;;;;;;;:::o;10367:549::-;10454:6;10462;10470;10478;10531:2;10519:9;10510:7;10506:23;10502:32;10499:52;;;10547:1;10544;10537:12;10499:52;10570:28;10588:9;10570:28;:::i;:::-;10560:38;;10645:2;10634:9;10630:18;10617:32;10607:42;;10700:2;10689:9;10685:18;10672:32;-1:-1:-1;;;;;10719:6:145;10716:30;10713:50;;;10759:1;10756;10749:12;11151:1155;11323:6;11331;11339;11347;11355;11363;11371;11424:3;11412:9;11403:7;11399:23;11395:33;11392:53;;;11441:1;11438;11431:12;11392:53;11464:28;11482:9;11464:28;:::i;:::-;11454:38;;11543:2;11532:9;11528:18;11515:32;-1:-1:-1;;;;;11607:2:145;11599:6;11596:14;11593:34;;;11623:1;11620;11613:12;11593:34;11662:58;11712:7;11703:6;11692:9;11688:22;11662:58;:::i;:::-;11739:8;;-1:-1:-1;11636:84:145;-1:-1:-1;11827:2:145;11812:18;;11799:32;;-1:-1:-1;11843:16:145;;;11840:36;;;11872:1;11869;11862:12;11840:36;11911:72;11975:7;11964:8;11953:9;11949:24;11911:72;:::i;:::-;12002:8;;-1:-1:-1;11885:98:145;-1:-1:-1;12090:2:145;12075:18;;12062:32;;-1:-1:-1;12106:16:145;;;12103:36;;;12135:1;12132;12125:12;12103:36;;12174:72;12238:7;12227:8;12216:9;12212:24;12174:72;:::i;:::-;11151:1155;;;;-1:-1:-1;11151:1155:145;;-1:-1:-1;11151:1155:145;;;;12148:98;;-1:-1:-1;;;11151:1155:145:o;12311:332::-;12387:6;12395;12403;12456:2;12444:9;12435:7;12431:23;12427:32;12424:52;;;12472:1;12469;12462:12;12424:52;12495:28;12513:9;12495:28;:::i;:::-;12485:38;;12542;12576:2;12565:9;12561:18;12542:38;:::i;:::-;12532:48;;12599:38;12633:2;12622:9;12618:18;12599:38;:::i;:::-;12589:48;;12311:332;;;;;:::o;13235:241::-;13291:6;13344:2;13332:9;13323:7;13319:23;13315:32;13312:52;;;13360:1;13357;13350:12;13312:52;13399:9;13386:23;13418:28;13440:5;13418:28;:::i;13481:343::-;13683:2;13665:21;;;13722:2;13702:18;;;13695:30;-1:-1:-1;;;13756:2:145;13741:18;;13734:49;13815:2;13800:18;;13481:343::o;13829:349::-;14031:2;14013:21;;;14070:2;14050:18;;;14043:30;14109:27;14104:2;14089:18;;14082:55;14169:2;14154:18;;13829:349::o;14183:127::-;14244:10;14239:3;14235:20;14232:1;14225:31;14275:4;14272:1;14265:15;14299:4;14296:1;14289:15;14315:209;14353:3;-1:-1:-1;;;;;14434:2:145;14427:5;14423:14;14461:2;14452:7;14449:15;14446:41;;14467:18;;:::i;:::-;14516:1;14503:15;;14315:209;-1:-1:-1;;;14315:209:145:o;14529:250::-;14614:1;14624:113;14638:6;14635:1;14632:13;14624:113;;;14714:11;;;14708:18;14695:11;;;14688:39;14660:2;14653:10;14624:113;;;-1:-1:-1;;14771:1:145;14753:16;;14746:27;14529:250::o;14784:270::-;14825:3;14863:5;14857:12;14890:6;14885:3;14878:19;14906:76;14975:6;14968:4;14963:3;14959:14;14952:4;14945:5;14941:16;14906:76;:::i;:::-;15036:2;15015:15;-1:-1:-1;;15011:29:145;15002:39;;;;15043:4;14998:50;;14784:270;-1:-1:-1;;14784:270:145:o;15059:217::-;15206:2;15195:9;15188:21;15169:4;15226:44;15266:2;15255:9;15251:18;15243:6;15226:44;:::i;15281:417::-;15483:2;15465:21;;;15522:2;15502:18;;;15495:30;15561:34;15556:2;15541:18;;15534:62;-1:-1:-1;;;15627:2:145;15612:18;;15605:51;15688:3;15673:19;;15281:417::o;16119:408::-;16321:2;16303:21;;;16360:2;16340:18;;;16333:30;16399:34;16394:2;16379:18;;16372:62;-1:-1:-1;;;16465:2:145;16450:18;;16443:42;16517:3;16502:19;;16119:408::o;16532:::-;16734:2;16716:21;;;16773:2;16753:18;;;16746:30;16812:34;16807:2;16792:18;;16785:62;-1:-1:-1;;;16878:2:145;16863:18;;16856:42;16930:3;16915:19;;16532:408::o;16945:256::-;17011:6;17019;17072:2;17060:9;17051:7;17047:23;17043:32;17040:52;;;17088:1;17085;17078:12;17040:52;17111:28;17129:9;17111:28;:::i;:::-;17101:38;;17158:37;17191:2;17180:9;17176:18;17158:37;:::i;17412:184::-;17482:6;17535:2;17523:9;17514:7;17510:23;17506:32;17503:52;;;17551:1;17548;17541:12;17503:52;-1:-1:-1;17574:16:145;;17412:184;-1:-1:-1;17412:184:145:o;18307:878::-;18443:9;18478:63;18494:46;18533:6;18494:46;:::i;18478:63::-;18563:3;18587:6;18582:3;18575:19;18613:4;18642:2;18637:3;18633:12;18626:19;;18686:6;18683:1;18679:14;18672:5;18668:26;18717:14;18709:6;18706:26;18703:46;;;18745:1;18742;18735:12;18703:46;18769:5;18783:369;18799:6;18794:3;18791:15;18783:369;;;18885:3;18872:17;-1:-1:-1;;;;;18908:11:145;18905:35;18902:125;;;18981:1;19010:2;19006;18999:14;18902:125;19052:57;19094:14;19080:11;19073:5;19069:23;19052:57;:::i;:::-;19040:70;;-1:-1:-1;19130:12:145;;;;18816;;18783:369;;20380:127;20441:10;20436:3;20432:20;20429:1;20422:31;20472:4;20469:1;20462:15;20496:4;20493:1;20486:15;20512:201;20550:3;20578:10;20623:2;20616:5;20612:14;20650:2;20641:7;20638:15;20635:41;;20656:18;;:::i;21994:417::-;22196:2;22178:21;;;22235:2;22215:18;;;22208:30;22274:34;22269:2;22254:18;;22247:62;-1:-1:-1;;;22340:2:145;22325:18;;22318:51;22401:3;22386:19;;21994:417::o;22416:135::-;22455:3;22476:17;;;22473:43;;22496:18;;:::i;:::-;-1:-1:-1;22543:1:145;22532:13;;22416:135::o;24050:271::-;24233:6;24225;24220:3;24207:33;24189:3;24259:16;;24284:13;;;24259:16;24050:271;-1:-1:-1;24050:271:145:o;26141:245::-;26208:6;26261:2;26249:9;26240:7;26236:23;26232:32;26229:52;;;26277:1;26274;26267:12;26229:52;26309:9;26303:16;26328:28;26350:5;26328:28;:::i;27645:128::-;27712:9;;;27733:11;;;27730:37;;;27747:18;;:::i;28181:168::-;28221:7;28287:1;28283;28279:6;28275:14;28272:1;28269:21;28264:1;28257:9;28250:17;28246:45;28243:71;;;28294:18;;:::i;:::-;-1:-1:-1;28334:9:145;;28181:168::o;28354:125::-;28419:9;;;28440:10;;;28437:36;;;28453:18;;:::i;28484:183::-;-1:-1:-1;;;;;28603:10:145;;;28591;;;28587:27;;28626:12;;;28623:38;;;28641:18;;:::i;:::-;28623:38;28484:183;;;;:::o;28672:127::-;28733:10;28728:3;28724:20;28721:1;28714:31;28764:4;28761:1;28754:15;28788:4;28785:1;28778:15;28804:112;28836:1;28862;28852:35;;28867:18;;:::i;:::-;-1:-1:-1;28901:9:145;;28804:112::o;28921:120::-;28961:1;28987;28977:35;;28992:18;;:::i;:::-;-1:-1:-1;29026:9:145;;28921:120::o;31733:400::-;31946:10;31934:23;;31916:42;;-1:-1:-1;;;;;31994:32:145;;31989:2;31974:18;;31967:60;32063:2;32058;32043:18;;32036:30;;;-1:-1:-1;;32083:44:145;;32108:18;;32100:6;32083:44;:::i;32138:287::-;32267:3;32305:6;32299:13;32321:66;32380:6;32375:3;32368:4;32360:6;32356:17;32321:66;:::i;:::-;32403:16;;;;;32138:287;-1:-1:-1;;32138:287:145:o;32430:249::-;32499:6;32552:2;32540:9;32531:7;32527:23;32523:32;32520:52;;;32568:1;32565;32558:12;32520:52;32600:9;32594:16;32619:30;32643:5;32619:30;:::i;32684:298::-;32853:2;32842:9;32835:21;32816:4;32873:44;32913:2;32902:9;32898:18;32890:6;32873:44;:::i;:::-;32865:52;;32967:6;32960:14;32953:22;32948:2;32937:9;32933:18;32926:50;32684:298;;;;;:::o;32987:407::-;33189:2;33171:21;;;33228:2;33208:18;;;33201:30;33267:34;33262:2;33247:18;;33240:62;-1:-1:-1;;;33333:2:145;33318:18;;33311:41;33384:3;33369:19;;32987:407::o;34528:873::-;-1:-1:-1;;;;;;34871:3:145;34849:16;;;34845:36;34833:49;;-1:-1:-1;;;;;;34937:3:145;34915:16;;;34911:51;34907:1;34898:11;;34891:72;-1:-1:-1;;;;;;34986:3:145;35035:16;;;35031:25;;35027:1;35018:11;;35011:46;-1:-1:-1;;;;;;35095:2:145;35091:15;;;35087:53;35082:2;35073:12;;35066:75;35175:16;;;35171:25;35166:2;35157:12;;35150:47;35222:2;35213:12;;35206:28;;;35257:13;;-1:-1:-1;;35279:75:145;35257:13;35342:2;35333:12;;35326:4;35314:17;;35279:75;:::i;:::-;35374:16;;;;35392:2;35370:25;;34528:873;-1:-1:-1;;;;;;;;34528:873:145:o;35406:812::-;35817:25;35812:3;35805:38;35787:3;35872:6;35866:13;35888:75;35956:6;35951:2;35946:3;35942:12;35935:4;35927:6;35923:17;35888:75;:::i;:::-;-1:-1:-1;;;36022:2:145;35982:16;;;36014:11;;;36007:40;36072:13;;36094:76;36072:13;36156:2;36148:11;;36141:4;36129:17;;36094:76;:::i;:::-;36190:17;36209:2;36186:26;;35406:812;-1:-1:-1;;;;35406:812:145:o;39654:157::-;39684:1;39718:4;39715:1;39711:12;39742:3;39732:37;;39749:18;;:::i;:::-;39801:3;39794:4;39791:1;39787:12;39783:22;39778:27;;;39654:157;;;;:::o;39816:151::-;39906:4;39899:12;;;39885;;;39881:31;;39924:14;;39921:40;;;39941:18;;:::i;44468:478::-;44670:2;44652:21;;;44709:2;44689:18;;;44682:30;44748:34;44743:2;44728:18;;44721:62;44819:34;44814:2;44799:18;;44792:62;-1:-1:-1;;;44885:3:145;44870:19;;44863:41;44936:3;44921:19;;44468:478::o;44951:136::-;44990:3;45018:5;45008:39;;45027:18;;:::i;:::-;-1:-1:-1;;;45063:18:145;;44951:136::o;45860:338::-;46062:2;46044:21;;;46101:2;46081:18;;;46074:30;-1:-1:-1;;;46135:2:145;46120:18;;46113:44;46189:2;46174:18;;45860:338::o;46549:422::-;46638:1;46681:5;46638:1;46695:270;46716:7;46706:8;46703:21;46695:270;;;46775:4;46771:1;46767:6;46763:17;46757:4;46754:27;46751:53;;;46784:18;;:::i;:::-;46834:7;46824:8;46820:22;46817:55;;;46854:16;;;;46817:55;46933:22;;;;46893:15;;;;46695:270;;;46699:3;46549:422;;;;;:::o;46976:806::-;47025:5;47055:8;47045:80;;-1:-1:-1;47096:1:145;47110:5;;47045:80;47144:4;47134:76;;-1:-1:-1;47181:1:145;47195:5;;47134:76;47226:4;47244:1;47239:59;;;;47312:1;47307:130;;;;47219:218;;47239:59;47269:1;47260:10;;47283:5;;;47307:130;47344:3;47334:8;47331:17;47328:43;;;47351:18;;:::i;:::-;-1:-1:-1;;47407:1:145;47393:16;;47422:5;;47219:218;;47521:2;47511:8;47508:16;47502:3;47496:4;47493:13;47489:36;47483:2;47473:8;47470:16;47465:2;47459:4;47456:12;47452:35;47449:77;47446:159;;;-1:-1:-1;47558:19:145;;;47590:5;;47446:159;47637:34;47662:8;47656:4;47637:34;:::i;:::-;47707:6;47703:1;47699:6;47695:19;47686:7;47683:32;47680:58;;;47718:18;;:::i;:::-;47756:20;;46976:806;-1:-1:-1;;;46976:806:145:o;47787:131::-;47847:5;47876:36;47903:8;47897:4;47876:36;:::i", + "linkReferences": {}, + "immutableReferences": { + "29435": [ + { + "start": 2551, + "length": 32 + }, + { + "start": 2615, + "length": 32 + }, + { + "start": 3487, + "length": 32 + }, + { + "start": 3551, + "length": 32 + }, + { + "start": 3694, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "GUARDIAN_ROLE()": "24ea54f4", + "MIN_LIGHT_CLIENT_DELAY()": "e4407b15", + "TIMELOCK_ROLE()": "f288a2e2", + "VERSION()": "ffa1ad74", + "broadcasters(uint32)": "59f89787", + "executeMessage(uint64,bytes,bytes[],bytes[])": "7acc6754", + "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": "37d5af84", + "freeze(uint32)": "9a2ed203", + "freezeAll()": "99464c89", + "frozen(uint32)": "36ae7c18", + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "initialize(uint32[],address[],address[],address,address,bool)": "5cb77819", + "lightClients(uint32)": "7599735c", + "messageStatus(bytes32)": "3c6cf473", + "messages(uint64)": "029d6713", + "nonce()": "affed0e0", + "proxiableUUID()": "52d1902d", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "send(uint32,address,bytes)": "68346a92", + "send(uint32,bytes32,bytes)": "a96a2e92", + "sendViaStorage(uint32,address,bytes)": "147bce49", + "sendViaStorage(uint32,bytes32,bytes)": "6fdbccbf", + "sendingEnabled()": "3e99e9ce", + "setLightClientAndBroadcaster(uint32,address,address)": "91cd8bfd", + "setSendingEnabled(bool)": "ed762d44", + "sourceChainIds(uint256)": "9efeff1c", + "sourceChainIdsLength()": "4552f563", + "storageRootCache(bytes32)": "8d080d1d", + "supportsInterface(bytes4)": "01ffc9a7", + "unfreeze(uint32)": "1f3d25a9", + "unfreezeAll()": "66c5c4a0", + "upgradeTo(address)": "3659cfe6", + "upgradeToAndCall(address,bytes)": "4f1ef286", + "version()": "54fd4d50" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Freeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"SendingEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lightClient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"SetLightClientAndBroadcaster\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"SourceChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Unfreeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UnfreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GUARDIAN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMELOCK_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"freeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"_sourceChainIds\",\"type\":\"uint32[]\"},{\"internalType\":\"address[]\",\"name\":\"_lightClients\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_broadcasters\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_timelock\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_sendingEnabled\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"lightclient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"setLightClientAndBroadcaster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setSendingEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"unfreeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unfreezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"freeze(uint32)\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"freezeAll()\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"send(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"sendViaStorage(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"details\":\"This is controlled by the timelock as it is a potentially dangerous method since both the light client and broadcaster address are critical in verifying that only valid sent messages are executed.\"},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unfreeze(uint32)\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"unfreezeAll()\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"Telepathy Router\",\"version\":1},\"userdoc\":{\"events\":{\"Freeze(uint32)\":{\"notice\":\"Emitted when freeze is called.\"},\"FreezeAll()\":{\"notice\":\"Emitted when freezeAll is called.\"},\"SendingEnabled(bool)\":{\"notice\":\"Emitted when the sendingEnabled flag is changed.\"},\"SetLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Emitted when setLightClientAndBroadcaster is called.\"},\"SourceChainAdded(uint32)\":{\"notice\":\"Emitted when a new source chain is added.\"},\"Unfreeze(uint32)\":{\"notice\":\"Emitted when unfreeze is called.\"},\"UnfreezeAll()\":{\"notice\":\"Emitted when unfreezeAll is called.\"}},\"kind\":\"user\",\"methods\":{\"GUARDIAN_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'guardian'.\"},\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"TIMELOCK_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'timelock'.\"},\"VERSION()\":{\"notice\":\"Returns current contract version.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"constructor\":{\"notice\":\"Prevents the implementation contract from being initialized outside of the upgradeable proxy.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"freeze(uint32)\":{\"notice\":\"Freezes messages from the specified chain.\"},\"freezeAll()\":{\"notice\":\"Freezes messages from all chains.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"initialize(uint32[],address[],address[],address,address,bool)\":{\"notice\":\"Initializes the contract and the parent contracts once.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"send(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.\"},\"sendViaStorage(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Sets the light client contract and broadcaster for a given chainId.\"},\"setSendingEnabled(bool)\":{\"notice\":\"Allows the owner to control whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"unfreeze(uint32)\":{\"notice\":\"Unfreezes messages from the specified chain.\"},\"unfreezeAll()\":{\"notice\":\"Unfreezes messages from all chains.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Send and receive arbitrary messages from other chains.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TelepathyRouter.sol\":\"TelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "previousAdmin", + "type": "address", + "indexed": false + }, + { + "internalType": "address", + "name": "newAdmin", + "type": "address", + "indexed": false + } + ], + "type": "event", + "name": "AdminChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "beacon", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "BeaconUpgraded", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32", + "indexed": true + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes", + "indexed": false + }, + { + "internalType": "bool", + "name": "status", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "ExecutedMessage", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32", + "indexed": true + } + ], + "type": "event", + "name": "Freeze", + "anonymous": false + }, + { + "inputs": [], + "type": "event", + "name": "FreezeAll", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "version", + "type": "uint8", + "indexed": false + } + ], + "type": "event", + "name": "Initialized", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "RoleAdminChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "RoleGranted", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "RoleRevoked", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "enabled", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "SendingEnabled", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes", + "indexed": false + } + ], + "type": "event", + "name": "SentMessage", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32", + "indexed": true + }, + { + "internalType": "address", + "name": "lightClient", + "type": "address", + "indexed": false + }, + { + "internalType": "address", + "name": "broadcaster", + "type": "address", + "indexed": false + } + ], + "type": "event", + "name": "SetLightClientAndBroadcaster", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32", + "indexed": true + } + ], + "type": "event", + "name": "SourceChainAdded", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32", + "indexed": true + } + ], + "type": "event", + "name": "Unfreeze", + "anonymous": false + }, + { + "inputs": [], + "type": "event", + "name": "UnfreezeAll", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "Upgraded", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "GUARDIAN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "MIN_LIGHT_CLIENT_DELAY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "TIMELOCK_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "VERSION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes[]", + "name": "accountProof", + "type": "bytes[]" + }, + { + "internalType": "bytes[]", + "name": "storageProof", + "type": "bytes[]" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "executeMessage" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "executeMessageFromLog" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "freeze" + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "freezeAll" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "grantRole" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32[]", + "name": "_sourceChainIds", + "type": "uint32[]" + }, + { + "internalType": "address[]", + "name": "_lightClients", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "_broadcasters", + "type": "address[]" + }, + { + "internalType": "address", + "name": "_timelock", + "type": "address" + }, + { + "internalType": "address", + "name": "_guardian", + "type": "address" + }, + { + "internalType": "bool", + "name": "_sendingEnabled", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "initialize" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function", + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "renounceRole" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeRole" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "lightclient", + "type": "address" + }, + { + "internalType": "address", + "name": "broadcaster", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setLightClientAndBroadcaster" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setSendingEnabled" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "sourceChainIdsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function", + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "unfreeze" + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "unfreezeAll" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "upgradeTo" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "upgradeToAndCall" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "executeMessage(uint64,bytes,bytes[],bytes[])": { + "params": { + "accountProof": "Used to prove the broadcaster's state root.", + "messageBytes": "The message we want to execute provided as bytes.", + "slot": "Specifies which execution state root should be read from the light client.", + "storageProof": "Used to prove the existence of the message root inside the broadcaster." + } + }, + "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { + "params": { + "logIndex": "The index of the event in our transaction.", + "messageBytes": "The message we want to execute provided as bytes.", + "receiptsRoot": "The receipts root which contains our \"SentMessage\" event.", + "receiptsRootProof": "A merkle proof proving the receiptsRoot in the block header.", + "srcSlotTxSlotPack": "The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.", + "txIndexRLPEncoded": "The index of our transaction inside the block RLP encoded." + } + }, + "freeze(uint32)": { + "details": "This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected." + }, + "freezeAll()": { + "details": "This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected." + }, + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "proxiableUUID()": { + "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event." + }, + "send(uint32,bytes32,bytes)": { + "params": { + "data": "The data passed to the contract on the other chain", + "destinationAddress": "The contract address that will be called on the destination chain.", + "destinationChainId": "The chain id that specifies the destination chain." + }, + "returns": { + "_0": "bytes32 A unique identifier for a message." + } + }, + "sendViaStorage(uint32,bytes32,bytes)": { + "params": { + "data": "The data passed to the contract on the other chain", + "destinationAddress": "The contract address that will be called on the destination chain.", + "destinationChainId": "The chain id that specifies the destination chain." + }, + "returns": { + "_0": "bytes32 A unique identifier for a message." + } + }, + "setLightClientAndBroadcaster(uint32,address,address)": { + "details": "This is controlled by the timelock as it is a potentially dangerous method since both the light client and broadcaster address are critical in verifying that only valid sent messages are executed." + }, + "sourceChainIdsLength()": { + "returns": { + "_0": "The length of the sourceChainIds array." + } + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + }, + "unfreeze(uint32)": { + "details": "This is a safety mechanism to continue usage of the contract after a security vulnerability is patched." + }, + "unfreezeAll()": { + "details": "This is a safety mechanism to continue usage of the contract after a security vulnerability is patched." + }, + "upgradeTo(address)": { + "details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event." + }, + "upgradeToAndCall(address,bytes)": { + "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "GUARDIAN_ROLE()": { + "notice": "A random constant used to identify addresses with the permission of a 'guardian'." + }, + "MIN_LIGHT_CLIENT_DELAY()": { + "notice": "The minimum delay for using any information from the light client." + }, + "TIMELOCK_ROLE()": { + "notice": "A random constant used to identify addresses with the permission of a 'timelock'." + }, + "VERSION()": { + "notice": "Returns current contract version." + }, + "broadcasters(uint32)": { + "notice": "Mapping between source chainId and the address of the Telepathy broadcaster on that chain." + }, + "constructor": { + "notice": "Prevents the implementation contract from being initialized outside of the upgradeable proxy." + }, + "executeMessage(uint64,bytes,bytes[],bytes[])": { + "notice": "Executes a message given a storage proof." + }, + "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { + "notice": "Executes a message given an event proof." + }, + "freeze(uint32)": { + "notice": "Freezes messages from the specified chain." + }, + "freezeAll()": { + "notice": "Freezes messages from all chains." + }, + "frozen(uint32)": { + "notice": "Mapping between a source chainId and whether it's frozen." + }, + "initialize(uint32[],address[],address[],address,address,bool)": { + "notice": "Initializes the contract and the parent contracts once." + }, + "lightClients(uint32)": { + "notice": "Mapping between source chainId and the corresponding light client." + }, + "messageStatus(bytes32)": { + "notice": "Mapping between a message root and its status." + }, + "messages(uint64)": { + "notice": "Mapping between a nonce and a message root." + }, + "nonce()": { + "notice": "Keeps track of the next nonce to be used." + }, + "send(uint32,bytes32,bytes)": { + "notice": "Sends a message to a destination chain." + }, + "sendViaStorage(uint32,bytes32,bytes)": { + "notice": "Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas." + }, + "sendingEnabled()": { + "notice": "Whether sending is enabled or not." + }, + "setLightClientAndBroadcaster(uint32,address,address)": { + "notice": "Sets the light client contract and broadcaster for a given chainId." + }, + "setSendingEnabled(bool)": { + "notice": "Allows the owner to control whether sending is enabled or not." + }, + "sourceChainIds(uint256)": { + "notice": "All sourceChainIds." + }, + "sourceChainIdsLength()": { + "notice": "Gets the length of the sourceChainIds array." + }, + "storageRootCache(bytes32)": { + "notice": "Storage root cache." + }, + "unfreeze(uint32)": { + "notice": "Unfreezes messages from the specified chain." + }, + "unfreezeAll()": { + "notice": "Unfreezes messages from all chains." + }, + "version()": { + "notice": "Returns current contract version." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/amb/TelepathyRouter.sol": "TelepathyRouter" + }, + "libraries": {} + }, + "sources": { + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", + "urls": [ + "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", + "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { + "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", + "urls": [ + "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", + "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { + "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", + "urls": [ + "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", + "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { + "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", + "urls": [ + "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", + "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { + "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", + "urls": [ + "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", + "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { + "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", + "urls": [ + "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", + "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", + "urls": [ + "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", + "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { + "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", + "urls": [ + "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", + "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { + "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", + "urls": [ + "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", + "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { + "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", + "urls": [ + "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", + "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", + "urls": [ + "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", + "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { + "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", + "urls": [ + "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", + "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { + "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", + "urls": [ + "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", + "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", + "urls": [ + "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", + "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { + "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", + "urls": [ + "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", + "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { + "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", + "urls": [ + "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", + "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/Bytes.sol": { + "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", + "urls": [ + "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", + "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { + "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", + "urls": [ + "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", + "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { + "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", + "urls": [ + "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", + "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { + "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", + "urls": [ + "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", + "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" + ], + "license": "MIT" + }, + "src/amb/SourceAMB.sol": { + "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "urls": [ + "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", + "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + ], + "license": null + }, + "src/amb/TargetAMB.sol": { + "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "urls": [ + "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", + "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + ], + "license": null + }, + "src/amb/TelepathyAccess.sol": { + "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", + "urls": [ + "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", + "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" + ], + "license": null + }, + "src/amb/TelepathyRouter.sol": { + "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", + "urls": [ + "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", + "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" + ], + "license": null + }, + "src/amb/TelepathyStorage.sol": { + "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", + "urls": [ + "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", + "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" + ], + "license": null + }, + "src/amb/interfaces/ITelepathy.sol": { + "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", + "urls": [ + "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", + "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" + ], + "license": null + }, + "src/libraries/MessageEncoding.sol": { + "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", + "urls": [ + "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", + "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" + ], + "license": null + }, + "src/libraries/SimpleSerialize.sol": { + "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "urls": [ + "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", + "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + ], + "license": null + }, + "src/libraries/StateProofHelper.sol": { + "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", + "urls": [ + "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", + "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" + ], + "license": null + }, + "src/libraries/Typecast.sol": { + "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", + "urls": [ + "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", + "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" + ], + "license": "MIT OR Apache-2.0" + }, + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/amb/TelepathyRouter.sol", + "id": 42569, + "exportedSymbols": { + "ILightClient": [ + 47862 + ], + "ITelepathyHandler": [ + 42756 + ], + "ITelepathyReceiver": [ + 42744 + ], + "ITelepathyRouter": [ + 42699 + ], + "Message": [ + 42646 + ], + "MessageStatus": [ + 42631 + ], + "SourceAMB": [ + 41473 + ], + "TargetAMB": [ + 42115 + ], + "TelepathyAccess": [ + 42407 + ], + "TelepathyRouter": [ + 42568 + ], + "TelepathyStorage": [ + 42625 + ], + "UUPSUpgradeable": [ + 29540 + ] + }, + "nodeType": "SourceUnit", + "src": "0:2243:102", + "nodes": [ + { + "id": 42409, + "nodeType": "PragmaDirective", + "src": "0:23:102", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 42411, + "nodeType": "ImportDirective", + "src": "25:99:102", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "file": "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "nameLocation": "-1:-1:-1", + "scope": 42569, + "sourceUnit": 29541, + "symbolAliases": [ + { + "foreign": { + "id": 42410, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29540, + "src": "33:15:102", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 42413, + "nodeType": "ImportDirective", + "src": "126:73:102", + "nodes": [], + "absolutePath": "src/lightclient/interfaces/ILightClient.sol", + "file": "src/lightclient/interfaces/ILightClient.sol", + "nameLocation": "-1:-1:-1", + "scope": 42569, + "sourceUnit": 47863, + "symbolAliases": [ + { + "foreign": { + "id": 42412, + "name": "ILightClient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47862, + "src": "134:12:102", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 42415, + "nodeType": "ImportDirective", + "src": "201:62:102", + "nodes": [], + "absolutePath": "src/amb/TelepathyStorage.sol", + "file": "src/amb/TelepathyStorage.sol", + "nameLocation": "-1:-1:-1", + "scope": 42569, + "sourceUnit": 42626, + "symbolAliases": [ + { + "foreign": { + "id": 42414, + "name": "TelepathyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42625, + "src": "209:16:102", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 42421, + "nodeType": "ImportDirective", + "src": "264:152:102", + "nodes": [], + "absolutePath": "src/amb/interfaces/ITelepathy.sol", + "file": "src/amb/interfaces/ITelepathy.sol", + "nameLocation": "-1:-1:-1", + "scope": 42569, + "sourceUnit": 42757, + "symbolAliases": [ + { + "foreign": { + "id": 42416, + "name": "ITelepathyReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42744, + "src": "277:18:102", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 42417, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42646, + "src": "301:7:102", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 42418, + "name": "MessageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42631, + "src": "314:13:102", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 42419, + "name": "ITelepathyHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42756, + "src": "333:17:102", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 42420, + "name": "ITelepathyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42699, + "src": "356:16:102", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 42423, + "nodeType": "ImportDirective", + "src": "417:48:102", + "nodes": [], + "absolutePath": "src/amb/TargetAMB.sol", + "file": "src/amb/TargetAMB.sol", + "nameLocation": "-1:-1:-1", + "scope": 42569, + "sourceUnit": 42116, + "symbolAliases": [ + { + "foreign": { + "id": 42422, + "name": "TargetAMB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42115, + "src": "425:9:102", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 42425, + "nodeType": "ImportDirective", + "src": "466:48:102", + "nodes": [], + "absolutePath": "src/amb/SourceAMB.sol", + "file": "src/amb/SourceAMB.sol", + "nameLocation": "-1:-1:-1", + "scope": 42569, + "sourceUnit": 41474, + "symbolAliases": [ + { + "foreign": { + "id": 42424, + "name": "SourceAMB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41473, + "src": "474:9:102", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 42427, + "nodeType": "ImportDirective", + "src": "515:60:102", + "nodes": [], + "absolutePath": "src/amb/TelepathyAccess.sol", + "file": "src/amb/TelepathyAccess.sol", + "nameLocation": "-1:-1:-1", + "scope": 42569, + "sourceUnit": 42408, + "symbolAliases": [ + { + "foreign": { + "id": 42426, + "name": "TelepathyAccess", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42407, + "src": "523:15:102", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 42568, + "nodeType": "ContractDefinition", + "src": "698:1544:102", + "nodes": [ + { + "id": 42440, + "nodeType": "VariableDeclaration", + "src": "837:33:102", + "nodes": [], + "constant": true, + "documentation": { + "id": 42437, + "nodeType": "StructuredDocumentation", + "src": "787:45:102", + "text": "@notice Returns current contract version." + }, + "functionSelector": "ffa1ad74", + "mutability": "constant", + "name": "VERSION", + "nameLocation": "859:7:102", + "scope": 42568, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 42438, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "837:5:102", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "31", + "id": 42439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "869:1:102", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "public" + }, + { + "id": 42448, + "nodeType": "FunctionDefinition", + "src": "987:53:102", + "nodes": [], + "body": { + "id": 42447, + "nodeType": "Block", + "src": "1001:39:102", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 42444, + "name": "_disableInitializers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29385, + "src": "1011:20:102", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 42445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1011:22:102", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42446, + "nodeType": "ExpressionStatement", + "src": "1011:22:102" + } + ] + }, + "documentation": { + "id": 42441, + "nodeType": "StructuredDocumentation", + "src": "877:105:102", + "text": "@notice Prevents the implementation contract from being initialized outside of the upgradeable proxy." + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 42442, + "nodeType": "ParameterList", + "parameters": [], + "src": "998:2:102" + }, + "returnParameters": { + "id": 42443, + "nodeType": "ParameterList", + "parameters": [], + "src": "1001:0:102" + }, + "scope": 42568, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 42557, + "nodeType": "FunctionDefinition", + "src": "1118:958:102", + "nodes": [], + "body": { + "id": 42556, + "nodeType": "Block", + "src": "1370:706:102", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 42469, + "name": "__ReentrancyGuard_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29563, + "src": "1380:22:102", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 42470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1380:24:102", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42471, + "nodeType": "ExpressionStatement", + "src": "1380:24:102" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 42472, + "name": "__AccessControl_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28327, + "src": "1414:20:102", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 42473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1414:22:102", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42474, + "nodeType": "ExpressionStatement", + "src": "1414:22:102" + }, + { + "expression": { + "arguments": [ + { + "id": 42476, + "name": "GUARDIAN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42168, + "src": "1457:13:102", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 42477, + "name": "_guardian", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42462, + "src": "1472:9:102", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 42475, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28604, + "src": "1446:10:102", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 42478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1446:36:102", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42479, + "nodeType": "ExpressionStatement", + "src": "1446:36:102" + }, + { + "expression": { + "arguments": [ + { + "id": 42481, + "name": "TIMELOCK_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42174, + "src": "1503:13:102", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 42482, + "name": "_timelock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42460, + "src": "1518:9:102", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 42480, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28604, + "src": "1492:10:102", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 42483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1492:36:102", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42484, + "nodeType": "ExpressionStatement", + "src": "1492:36:102" + }, + { + "expression": { + "arguments": [ + { + "id": 42486, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28348, + "src": "1549:18:102", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 42487, + "name": "_timelock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42460, + "src": "1569:9:102", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 42485, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28604, + "src": "1538:10:102", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 42488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1538:41:102", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42489, + "nodeType": "ExpressionStatement", + "src": "1538:41:102" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 42490, + "name": "__UUPSUpgradeable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29422, + "src": "1589:22:102", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 42491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1589:24:102", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42492, + "nodeType": "ExpressionStatement", + "src": "1589:24:102" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 42498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 42494, + "name": "_sourceChainIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42452, + "src": "1632:15:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", + "typeString": "uint32[] memory" + } + }, + "id": 42495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1648:6:102", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1632:22:102", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 42496, + "name": "_lightClients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42455, + "src": "1658:13:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 42497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1672:6:102", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1658:20:102", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1632:46:102", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 42493, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1624:7:102", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 42499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1624:55:102", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42500, + "nodeType": "ExpressionStatement", + "src": "1624:55:102" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 42506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 42502, + "name": "_sourceChainIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42452, + "src": "1697:15:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", + "typeString": "uint32[] memory" + } + }, + "id": 42503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1713:6:102", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1697:22:102", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 42504, + "name": "_broadcasters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42458, + "src": "1723:13:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 42505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1737:6:102", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1723:20:102", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1697:46:102", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 42501, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1689:7:102", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 42507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1689:55:102", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42508, + "nodeType": "ExpressionStatement", + "src": "1689:55:102" + }, + { + "expression": { + "id": 42511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 42509, + "name": "sourceChainIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42589, + "src": "1755:14:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint32_$dyn_storage", + "typeString": "uint32[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 42510, + "name": "_sourceChainIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42452, + "src": "1772:15:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", + "typeString": "uint32[] memory" + } + }, + "src": "1755:32:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint32_$dyn_storage", + "typeString": "uint32[] storage ref" + } + }, + "id": 42512, + "nodeType": "ExpressionStatement", + "src": "1755:32:102" + }, + { + "body": { + "id": 42546, + "nodeType": "Block", + "src": "1848:153:102", + "statements": [ + { + "expression": { + "id": 42534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 42524, + "name": "lightClients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42595, + "src": "1862:12:102", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeString": "mapping(uint32 => contract ILightClient)" + } + }, + "id": 42528, + "indexExpression": { + "baseExpression": { + "id": 42525, + "name": "sourceChainIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42589, + "src": "1875:14:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint32_$dyn_storage", + "typeString": "uint32[] storage ref" + } + }, + "id": 42527, + "indexExpression": { + "id": 42526, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42514, + "src": "1890:1:102", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1875:17:102", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1862:31:102", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 42530, + "name": "_lightClients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42455, + "src": "1909:13:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 42532, + "indexExpression": { + "id": 42531, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42514, + "src": "1923:1:102", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1909:16:102", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 42529, + "name": "ILightClient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47862, + "src": "1896:12:102", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILightClient_$47862_$", + "typeString": "type(contract ILightClient)" + } + }, + "id": 42533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1896:30:102", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "src": "1862:64:102", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeString": "contract ILightClient" + } + }, + "id": 42535, + "nodeType": "ExpressionStatement", + "src": "1862:64:102" + }, + { + "expression": { + "id": 42544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 42536, + "name": "broadcasters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42600, + "src": "1940:12:102", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", + "typeString": "mapping(uint32 => address)" + } + }, + "id": 42540, + "indexExpression": { + "baseExpression": { + "id": 42537, + "name": "sourceChainIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42589, + "src": "1953:14:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint32_$dyn_storage", + "typeString": "uint32[] storage ref" + } + }, + "id": 42539, + "indexExpression": { + "id": 42538, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42514, + "src": "1968:1:102", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1953:17:102", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1940:31:102", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 42541, + "name": "_broadcasters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42458, + "src": "1974:13:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 42543, + "indexExpression": { + "id": 42542, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42514, + "src": "1988:1:102", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1974:16:102", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1940:50:102", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 42545, + "nodeType": "ExpressionStatement", + "src": "1940:50:102" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 42520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 42517, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42514, + "src": "1816:1:102", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 42518, + "name": "sourceChainIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42589, + "src": "1820:14:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint32_$dyn_storage", + "typeString": "uint32[] storage ref" + } + }, + "id": 42519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1835:6:102", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1820:21:102", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1816:25:102", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 42547, + "initializationExpression": { + "assignments": [ + 42514 + ], + "declarations": [ + { + "constant": false, + "id": 42514, + "mutability": "mutable", + "name": "i", + "nameLocation": "1809:1:102", + "nodeType": "VariableDeclaration", + "scope": 42547, + "src": "1802:8:102", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 42513, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1802:6:102", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "id": 42516, + "initialValue": { + "hexValue": "30", + "id": 42515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1813:1:102", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1802:12:102" + }, + "loopExpression": { + "expression": { + "id": 42522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1843:3:102", + "subExpression": { + "id": 42521, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42514, + "src": "1843:1:102", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 42523, + "nodeType": "ExpressionStatement", + "src": "1843:3:102" + }, + "nodeType": "ForStatement", + "src": "1797:204:102" + }, + { + "expression": { + "id": 42550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 42548, + "name": "sendingEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42577, + "src": "2010:14:102", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 42549, + "name": "_sendingEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42464, + "src": "2027:15:102", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2010:32:102", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 42551, + "nodeType": "ExpressionStatement", + "src": "2010:32:102" + }, + { + "expression": { + "id": 42554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 42552, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42614, + "src": "2052:7:102", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 42553, + "name": "VERSION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42440, + "src": "2062:7:102", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2052:17:102", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 42555, + "nodeType": "ExpressionStatement", + "src": "2052:17:102" + } + ] + }, + "documentation": { + "id": 42449, + "nodeType": "StructuredDocumentation", + "src": "1046:67:102", + "text": "@notice Initializes the contract and the parent contracts once." + }, + "functionSelector": "5cb77819", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 42467, + "kind": "modifierInvocation", + "modifierName": { + "id": 42466, + "name": "initializer", + "nameLocations": [ + "1358:11:102" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 29306, + "src": "1358:11:102" + }, + "nodeType": "ModifierInvocation", + "src": "1358:11:102" + } + ], + "name": "initialize", + "nameLocation": "1127:10:102", + "parameters": { + "id": 42465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42452, + "mutability": "mutable", + "name": "_sourceChainIds", + "nameLocation": "1163:15:102", + "nodeType": "VariableDeclaration", + "scope": 42557, + "src": "1147:31:102", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", + "typeString": "uint32[]" + }, + "typeName": { + "baseType": { + "id": 42450, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1147:6:102", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 42451, + "nodeType": "ArrayTypeName", + "src": "1147:8:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr", + "typeString": "uint32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 42455, + "mutability": "mutable", + "name": "_lightClients", + "nameLocation": "1205:13:102", + "nodeType": "VariableDeclaration", + "scope": 42557, + "src": "1188:30:102", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 42453, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1188:7:102", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 42454, + "nodeType": "ArrayTypeName", + "src": "1188:9:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 42458, + "mutability": "mutable", + "name": "_broadcasters", + "nameLocation": "1245:13:102", + "nodeType": "VariableDeclaration", + "scope": 42557, + "src": "1228:30:102", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 42456, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1228:7:102", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 42457, + "nodeType": "ArrayTypeName", + "src": "1228:9:102", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 42460, + "mutability": "mutable", + "name": "_timelock", + "nameLocation": "1276:9:102", + "nodeType": "VariableDeclaration", + "scope": 42557, + "src": "1268:17:102", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 42459, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1268:7:102", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 42462, + "mutability": "mutable", + "name": "_guardian", + "nameLocation": "1303:9:102", + "nodeType": "VariableDeclaration", + "scope": 42557, + "src": "1295:17:102", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 42461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1295:7:102", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 42464, + "mutability": "mutable", + "name": "_sendingEnabled", + "nameLocation": "1327:15:102", + "nodeType": "VariableDeclaration", + "scope": 42557, + "src": "1322:20:102", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 42463, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1322:4:102", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1137:211:102" + }, + "returnParameters": { + "id": 42468, + "nodeType": "ParameterList", + "parameters": [], + "src": "1370:0:102" + }, + "scope": 42568, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 42567, + "nodeType": "FunctionDefinition", + "src": "2153:87:102", + "nodes": [], + "body": { + "id": 42566, + "nodeType": "Block", + "src": "2238:2:102", + "nodes": [], + "statements": [] + }, + "baseFunctions": [ + 29534 + ], + "documentation": { + "id": 42558, + "nodeType": "StructuredDocumentation", + "src": "2082:66:102", + "text": "@notice Authorizes an upgrade for the implementation contract." + }, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 42564, + "kind": "modifierInvocation", + "modifierName": { + "id": 42563, + "name": "onlyTimelock", + "nameLocations": [ + "2225:12:102" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42200, + "src": "2225:12:102" + }, + "nodeType": "ModifierInvocation", + "src": "2225:12:102" + } + ], + "name": "_authorizeUpgrade", + "nameLocation": "2162:17:102", + "overrides": { + "id": 42562, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2216:8:102" + }, + "parameters": { + "id": 42561, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42560, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "2188:17:102", + "nodeType": "VariableDeclaration", + "scope": 42567, + "src": "2180:25:102", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 42559, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2180:7:102", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2179:27:102" + }, + "returnParameters": { + "id": 42565, + "nodeType": "ParameterList", + "parameters": [], + "src": "2238:0:102" + }, + "scope": 42568, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 42429, + "name": "SourceAMB", + "nameLocations": [ + "726:9:102" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 41473, + "src": "726:9:102" + }, + "id": 42430, + "nodeType": "InheritanceSpecifier", + "src": "726:9:102" + }, + { + "baseName": { + "id": 42431, + "name": "TargetAMB", + "nameLocations": [ + "737:9:102" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42115, + "src": "737:9:102" + }, + "id": 42432, + "nodeType": "InheritanceSpecifier", + "src": "737:9:102" + }, + { + "baseName": { + "id": 42433, + "name": "TelepathyAccess", + "nameLocations": [ + "748:15:102" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42407, + "src": "748:15:102" + }, + "id": 42434, + "nodeType": "InheritanceSpecifier", + "src": "748:15:102" + }, + { + "baseName": { + "id": 42435, + "name": "UUPSUpgradeable", + "nameLocations": [ + "765:15:102" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 29540, + "src": "765:15:102" + }, + "id": 42436, + "nodeType": "InheritanceSpecifier", + "src": "765:15:102" + } + ], + "canonicalName": "TelepathyRouter", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 42428, + "nodeType": "StructuredDocumentation", + "src": "577:121:102", + "text": "@title Telepathy Router\n @author Succinct Labs\n @notice Send and receive arbitrary messages from other chains." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 42568, + 29540, + 29225, + 28856, + 42407, + 28641, + 30218, + 30230, + 28714, + 29939, + 42115, + 42744, + 29613, + 29404, + 41473, + 42699, + 42625 + ], + "name": "TelepathyRouter", + "nameLocation": "707:15:102", + "scope": 42569, + "usedErrors": [] + } + ] + }, + "id": 102 +} \ No newline at end of file diff --git a/out/TelepathySubscriber.sol/TelepathySubscriber.json b/out/TelepathySubscriber.sol/TelepathySubscriber.json new file mode 100644 index 0000000..c70415f --- /dev/null +++ b/out/TelepathySubscriber.sol/TelepathySubscriber.json @@ -0,0 +1,2939 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "uint64", + "name": "startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "endSlot", + "type": "uint64" + } + ], + "name": "InvalidSlotRange", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "name": "SubscriptionAlreadyActive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "name": "SubscriptionNotActive", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "startSlot", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "endSlot", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false, + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "Subscribe", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false, + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "Unsubscribe", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "eventsPublished", + "outputs": [ + { + "internalType": "enum PublishStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "_startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "_endSlot", + "type": "uint64" + } + ], + "name": "subscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subscriptions", + "outputs": [ + { + "internalType": "enum SubscriptionStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + } + ], + "name": "unsubscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x608060405234801561001057600080fd5b50610527806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea2646970667358221220aa11394a30f8ff61a65919bc7fe5e6dc7ac36dbea2b6ff2e2bf09b112b8769d164736f6c63430008100033", + "sourceMap": "335:2199:124:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea2646970667358221220aa11394a30f8ff61a65919bc7fe5e6dc7ac36dbea2b6ff2e2bf09b112b8769d164736f6c63430008100033", + "sourceMap": "335:2199:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;837:960:124;;;;;;:::i;:::-;;:::i;:::-;;;1806:25:145;;;1794:2;1779:18;837:960:124;1660:177:145;723:59:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1888:644:124:-;;;;;;:::i;:::-;;:::i;837:960::-;1056:7;1075:32;1122:73;;;;;;;;1135:14;1122:73;;;;;;1151:14;-1:-1:-1;;;;;1122:73:124;;;;;1167:16;-1:-1:-1;;;;;1122:73:124;;;;;1185:9;1122:73;;;1075:120;;1205:22;1251:12;1240:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1240:24:124;;;;;;;;;1230:35;;1240:24;1230:35;;;;;-1:-1:-1;1313:29:124;1280;;;;:13;:29;;;;;;;;;:62;;;;;;;:::i;:::-;;1276:141;;1365:41;;-1:-1:-1;;;1365:41:124;;;;;1806:25:145;;;1779:18;;1365:41:124;;;;;;;;1276:141;1426:29;;;;:13;:29;;;;;:61;;-1:-1:-1;;1426:61:124;1458:29;1426:61;;;1589:21;;;;;;;;1585:97;;;1633:38;;-1:-1:-1;;;1633:38:124;;3168:18:145;3213:15;;;1633:38:124;;;3195:34:145;3265:15;;3245:18;;;3238:43;3131:18;;1633:38:124;2988:299:145;1585:97:124;1735:8;1697:61;;1723:10;1697:61;;1707:14;1697:61;1745:12;1697:61;;;;;;:::i;:::-;;;;;;;;1776:14;837:960;-1:-1:-1;;;;;;;;837:960:124:o;1888:644::-;2009:7;2032:32;2079:67;;;;;;;;2092:14;2079:67;;;;;;2108:14;-1:-1:-1;;;;;2079:67:124;;;;;2124:10;-1:-1:-1;;;;;2079:67:124;;;;;2136:9;2079:67;;;2032:114;;2156:22;2202:12;2191:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2191:24:124;;;;;;;;;2181:35;;2191:24;2181:35;;;;;-1:-1:-1;2264:30:124;2231:29;;;;:13;:29;;;;;;;;;:63;;;;;;;:::i;:::-;;2227:138;;2317:37;;-1:-1:-1;;;2317:37:124;;;;;1806:25:145;;;1779:18;;2317:37:124;1660:177:145;2227:138:124;2406:30;2374:29;;;:13;:29;;;;;;;:62;;-1:-1:-1;;2374:62:124;;;2452:41;2374:29;;2452:41;;;;2480:12;;2452:41;:::i;:::-;;;;;;;;2511:14;1888:644;-1:-1:-1;;;;;1888:644:124:o;14:180:145:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:145;;14:180;-1:-1:-1;14:180:145:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:163::-;653:20;;713:10;702:22;;692:33;;682:61;;739:1;736;729:12;682:61;586:163;;;:::o;754:173::-;822:20;;-1:-1:-1;;;;;871:31:145;;861:42;;851:70;;917:1;914;907:12;932:171;999:20;;1059:18;1048:30;;1038:41;;1028:69;;1093:1;1090;1083:12;1108:547;1209:6;1217;1225;1233;1241;1249;1302:3;1290:9;1281:7;1277:23;1273:33;1270:53;;;1319:1;1316;1309:12;1270:53;1342:28;1360:9;1342:28;:::i;:::-;1332:38;;1389;1423:2;1412:9;1408:18;1389:38;:::i;:::-;1379:48;;1446:38;1480:2;1469:9;1465:18;1446:38;:::i;:::-;1436:48;;1531:2;1520:9;1516:18;1503:32;1493:42;;1554:38;1587:3;1576:9;1572:19;1554:38;:::i;:::-;1544:48;;1611:38;1644:3;1633:9;1629:19;1611:38;:::i;:::-;1601:48;;1108:547;;;;;;;;:::o;1842:255::-;1998:2;1983:18;;2031:1;2020:13;;2010:47;;2037:18;;:::i;2102:326::-;2178:6;2186;2194;2247:2;2235:9;2226:7;2222:23;2218:32;2215:52;;;2263:1;2260;2253:12;2215:52;2286:28;2304:9;2286:28;:::i;:::-;2276:38;;2333;2367:2;2356:9;2352:18;2333:38;:::i;:::-;2323:48;;2418:2;2407:9;2403:18;2390:32;2380:42;;2102:326;;;;;:::o;2433:550::-;2664:13;;2679:10;2660:30;2642:49;;2738:4;2726:17;;;2720:24;-1:-1:-1;;;;;2820:21:145;;;2798:20;;;2791:51;;;;2902:4;2890:17;;;2884:24;2880:33;;;2858:20;;;2851:63;2970:4;2958:17;;;2952:24;2930:20;;;2923:54;;;;2629:3;2614:19;;2433:550::o", + "linkReferences": {} + }, + "methodIdentifiers": { + "eventsPublished(bytes32)": "3cca331c", + "subscribe(uint32,address,address,bytes32,uint64,uint64)": "65138959", + "subscriptions(bytes32)": "94259c6c", + "unsubscribe(uint32,address,bytes32)": "97229719" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathySubscriber\",\"version\":1},\"userdoc\":{\"events\":{\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"This allows contracts to subscribe to cross-chain events from a source contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathySubscriber.sol\":\"TelepathySubscriber\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint64", + "name": "startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "endSlot", + "type": "uint64" + } + ], + "type": "error", + "name": "InvalidSlotRange" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "type": "error", + "name": "SubscriptionAlreadyActive" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "type": "error", + "name": "SubscriptionNotActive" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "uint64", + "name": "startSlot", + "type": "uint64", + "indexed": true + }, + { + "internalType": "uint64", + "name": "endSlot", + "type": "uint64", + "indexed": true + }, + { + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple", + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false + } + ], + "type": "event", + "name": "Subscribe", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple", + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false + } + ], + "type": "event", + "name": "Unsubscribe", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "eventsPublished", + "outputs": [ + { + "internalType": "enum PublishStatus", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "_startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "_endSlot", + "type": "uint64" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "subscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "subscriptions", + "outputs": [ + { + "internalType": "enum SubscriptionStatus", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "unsubscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "subscribe(uint32,address,address,bytes32,uint64,uint64)": { + "details": "The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish." + }, + "unsubscribe(uint32,address,bytes32)": { + "details": "Only the original callbackAddress contract will be able to unsubscribe." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/pubsub/TelepathySubscriber.sol": "TelepathySubscriber" + }, + "libraries": {} + }, + "sources": { + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", + "urls": [ + "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", + "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { + "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", + "urls": [ + "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", + "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { + "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", + "urls": [ + "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", + "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { + "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", + "urls": [ + "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", + "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { + "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", + "urls": [ + "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", + "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { + "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", + "urls": [ + "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", + "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", + "urls": [ + "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", + "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { + "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", + "urls": [ + "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", + "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { + "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", + "urls": [ + "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", + "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { + "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", + "urls": [ + "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", + "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", + "urls": [ + "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", + "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { + "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", + "urls": [ + "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", + "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { + "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", + "urls": [ + "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", + "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", + "urls": [ + "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", + "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { + "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", + "urls": [ + "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", + "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { + "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", + "urls": [ + "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", + "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/Bytes.sol": { + "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", + "urls": [ + "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", + "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { + "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", + "urls": [ + "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", + "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { + "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", + "urls": [ + "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", + "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { + "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", + "urls": [ + "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", + "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" + ], + "license": "MIT" + }, + "src/amb/SourceAMB.sol": { + "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "urls": [ + "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", + "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + ], + "license": null + }, + "src/amb/TargetAMB.sol": { + "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "urls": [ + "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", + "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + ], + "license": null + }, + "src/amb/TelepathyAccess.sol": { + "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", + "urls": [ + "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", + "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" + ], + "license": null + }, + "src/amb/TelepathyRouter.sol": { + "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", + "urls": [ + "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", + "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" + ], + "license": null + }, + "src/amb/TelepathyStorage.sol": { + "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", + "urls": [ + "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", + "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" + ], + "license": null + }, + "src/amb/interfaces/ITelepathy.sol": { + "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", + "urls": [ + "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", + "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" + ], + "license": null + }, + "src/libraries/MessageEncoding.sol": { + "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", + "urls": [ + "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", + "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" + ], + "license": null + }, + "src/libraries/SimpleSerialize.sol": { + "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "urls": [ + "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", + "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + ], + "license": null + }, + "src/libraries/StateProofHelper.sol": { + "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", + "urls": [ + "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", + "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" + ], + "license": null + }, + "src/libraries/Typecast.sol": { + "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", + "urls": [ + "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", + "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" + ], + "license": "MIT OR Apache-2.0" + }, + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + }, + "src/pubsub/PubSubStorage.sol": { + "keccak256": "0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b", + "urls": [ + "bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e", + "dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL" + ], + "license": null + }, + "src/pubsub/TelepathySubscriber.sol": { + "keccak256": "0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd", + "urls": [ + "bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4", + "dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3" + ], + "license": null + }, + "src/pubsub/interfaces/IPubSub.sol": { + "keccak256": "0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c", + "urls": [ + "bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a", + "dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/pubsub/TelepathySubscriber.sol", + "id": 49074, + "exportedSymbols": { + "ISubscriber": [ + 49136 + ], + "PubSubStorage": [ + 48485 + ], + "Subscription": [ + 49087 + ], + "SubscriptionStatus": [ + 49078 + ], + "TelepathySubscriber": [ + 49073 + ] + }, + "nodeType": "SourceUnit", + "src": "0:2535:124", + "nodes": [ + { + "id": 48912, + "nodeType": "PragmaDirective", + "src": "0:24:124", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".16" + ] + }, + { + "id": 48916, + "nodeType": "ImportDirective", + "src": "26:96:124", + "nodes": [], + "absolutePath": "src/pubsub/interfaces/IPubSub.sol", + "file": "src/pubsub/interfaces/IPubSub.sol", + "nameLocation": "-1:-1:-1", + "scope": 49074, + "sourceUnit": 49175, + "symbolAliases": [ + { + "foreign": { + "id": 48913, + "name": "Subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49087, + "src": "34:12:124", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 48914, + "name": "SubscriptionStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49078, + "src": "48:18:124", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 48915, + "name": "ISubscriber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49136, + "src": "68:11:124", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 48918, + "nodeType": "ImportDirective", + "src": "124:59:124", + "nodes": [], + "absolutePath": "src/pubsub/PubSubStorage.sol", + "file": "src/pubsub/PubSubStorage.sol", + "nameLocation": "-1:-1:-1", + "scope": 49074, + "sourceUnit": 48486, + "symbolAliases": [ + { + "foreign": { + "id": 48917, + "name": "PubSubStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48485, + "src": "132:13:124", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 49073, + "nodeType": "ContractDefinition", + "src": "335:2199:124", + "nodes": [ + { + "id": 48927, + "nodeType": "ErrorDefinition", + "src": "400:56:124", + "nodes": [], + "errorSelector": "8e04200e", + "name": "SubscriptionAlreadyActive", + "nameLocation": "406:25:124", + "parameters": { + "id": 48926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48925, + "mutability": "mutable", + "name": "subscriptionId", + "nameLocation": "440:14:124", + "nodeType": "VariableDeclaration", + "scope": 48927, + "src": "432:22:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48924, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "432:7:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "431:24:124" + } + }, + { + "id": 48931, + "nodeType": "ErrorDefinition", + "src": "461:52:124", + "nodes": [], + "errorSelector": "00323a52", + "name": "SubscriptionNotActive", + "nameLocation": "467:21:124", + "parameters": { + "id": 48930, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48929, + "mutability": "mutable", + "name": "subscriptionId", + "nameLocation": "497:14:124", + "nodeType": "VariableDeclaration", + "scope": 48931, + "src": "489:22:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48928, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "489:7:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "488:24:124" + } + }, + { + "id": 48937, + "nodeType": "ErrorDefinition", + "src": "518:57:124", + "nodes": [], + "errorSelector": "f0120c84", + "name": "InvalidSlotRange", + "nameLocation": "524:16:124", + "parameters": { + "id": 48936, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48933, + "mutability": "mutable", + "name": "startSlot", + "nameLocation": "548:9:124", + "nodeType": "VariableDeclaration", + "scope": 48937, + "src": "541:16:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 48932, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "541:6:124", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48935, + "mutability": "mutable", + "name": "endSlot", + "nameLocation": "566:7:124", + "nodeType": "VariableDeclaration", + "scope": 48937, + "src": "559:14:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 48934, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "559:6:124", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "540:34:124" + } + }, + { + "id": 49013, + "nodeType": "FunctionDefinition", + "src": "837:960:124", + "nodes": [], + "body": { + "id": 49012, + "nodeType": "Block", + "src": "1065:732:124", + "nodes": [], + "statements": [ + { + "assignments": [ + 48957 + ], + "declarations": [ + { + "constant": false, + "id": 48957, + "mutability": "mutable", + "name": "subscription", + "nameLocation": "1095:12:124", + "nodeType": "VariableDeclaration", + "scope": 49012, + "src": "1075:32:124", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription" + }, + "typeName": { + "id": 48956, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 48955, + "name": "Subscription", + "nameLocations": [ + "1075:12:124" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49087, + "src": "1075:12:124" + }, + "referencedDeclaration": 49087, + "src": "1075:12:124", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_storage_ptr", + "typeString": "struct Subscription" + } + }, + "visibility": "internal" + } + ], + "id": 48964, + "initialValue": { + "arguments": [ + { + "id": 48959, + "name": "_sourceChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48940, + "src": "1135:14:124", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "id": 48960, + "name": "_sourceAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48942, + "src": "1151:14:124", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 48961, + "name": "_callbackAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48944, + "src": "1167:16:124", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 48962, + "name": "_eventSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48946, + "src": "1185:9:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 48958, + "name": "Subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49087, + "src": "1122:12:124", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Subscription_$49087_storage_ptr_$", + "typeString": "type(struct Subscription storage pointer)" + } + }, + "id": 48963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1122:73:124", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1075:120:124" + }, + { + "assignments": [ + 48966 + ], + "declarations": [ + { + "constant": false, + "id": 48966, + "mutability": "mutable", + "name": "subscriptionId", + "nameLocation": "1213:14:124", + "nodeType": "VariableDeclaration", + "scope": 49012, + "src": "1205:22:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48965, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1205:7:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 48973, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 48970, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48957, + "src": "1251:12:124", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription memory" + } + ], + "expression": { + "id": 48968, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1240:3:124", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 48969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1244:6:124", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "1240:10:124", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 48971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1240:24:124", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 48967, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1230:9:124", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 48972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1230:35:124", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1205:60:124" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + }, + "id": 48979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 48974, + "name": "subscriptions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48479, + "src": "1280:13:124", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49078_$", + "typeString": "mapping(bytes32 => enum SubscriptionStatus)" + } + }, + "id": 48976, + "indexExpression": { + "id": 48975, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48966, + "src": "1294:14:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1280:29:124", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 48977, + "name": "SubscriptionStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49078, + "src": "1313:18:124", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49078_$", + "typeString": "type(enum SubscriptionStatus)" + } + }, + "id": 48978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1332:10:124", + "memberName": "SUBSCRIBED", + "nodeType": "MemberAccess", + "referencedDeclaration": 49077, + "src": "1313:29:124", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + } + }, + "src": "1280:62:124", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 48985, + "nodeType": "IfStatement", + "src": "1276:141:124", + "trueBody": { + "id": 48984, + "nodeType": "Block", + "src": "1344:73:124", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 48981, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48966, + "src": "1391:14:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 48980, + "name": "SubscriptionAlreadyActive", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48927, + "src": "1365:25:124", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 48982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1365:41:124", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48983, + "nodeType": "RevertStatement", + "src": "1358:48:124" + } + ] + } + }, + { + "expression": { + "id": 48991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 48986, + "name": "subscriptions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48479, + "src": "1426:13:124", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49078_$", + "typeString": "mapping(bytes32 => enum SubscriptionStatus)" + } + }, + "id": 48988, + "indexExpression": { + "id": 48987, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48966, + "src": "1440:14:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1426:29:124", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 48989, + "name": "SubscriptionStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49078, + "src": "1458:18:124", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49078_$", + "typeString": "type(enum SubscriptionStatus)" + } + }, + "id": 48990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1477:10:124", + "memberName": "SUBSCRIBED", + "nodeType": "MemberAccess", + "referencedDeclaration": 49077, + "src": "1458:29:124", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + } + }, + "src": "1426:61:124", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + } + }, + "id": 48992, + "nodeType": "ExpressionStatement", + "src": "1426:61:124" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 48995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 48993, + "name": "_endSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48950, + "src": "1589:8:124", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 48994, + "name": "_startSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48948, + "src": "1600:10:124", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "1589:21:124", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 49002, + "nodeType": "IfStatement", + "src": "1585:97:124", + "trueBody": { + "id": 49001, + "nodeType": "Block", + "src": "1612:70:124", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 48997, + "name": "_startSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48948, + "src": "1650:10:124", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 48998, + "name": "_endSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48950, + "src": "1662:8:124", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 48996, + "name": "InvalidSlotRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48937, + "src": "1633:16:124", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint64_$_t_uint64_$returns$__$", + "typeString": "function (uint64,uint64) pure" + } + }, + "id": 48999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1633:38:124", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 49000, + "nodeType": "RevertStatement", + "src": "1626:45:124" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 49004, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48966, + "src": "1707:14:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 49005, + "name": "_startSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48948, + "src": "1723:10:124", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 49006, + "name": "_endSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48950, + "src": "1735:8:124", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 49007, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48957, + "src": "1745:12:124", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription memory" + } + ], + "id": 49003, + "name": "Subscribe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49099, + "src": "1697:9:124", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$_t_uint64_$_t_struct$_Subscription_$49087_memory_ptr_$returns$__$", + "typeString": "function (bytes32,uint64,uint64,struct Subscription memory)" + } + }, + "id": 49008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1697:61:124", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 49009, + "nodeType": "EmitStatement", + "src": "1692:66:124" + }, + { + "expression": { + "id": 49010, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48966, + "src": "1776:14:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 48954, + "id": 49011, + "nodeType": "Return", + "src": "1769:21:124" + } + ] + }, + "baseFunctions": [ + 49124 + ], + "documentation": { + "id": 48938, + "nodeType": "StructuredDocumentation", + "src": "581:251:124", + "text": "@dev The block ranges use as a signal to off-chain, and are NOT enforced by the publisher.\n If events should only a certain range should be valid, the callbackAddress should do their\n own validation when handling the publish." + }, + "functionSelector": "65138959", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "subscribe", + "nameLocation": "846:9:124", + "parameters": { + "id": 48951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48940, + "mutability": "mutable", + "name": "_sourceChainId", + "nameLocation": "872:14:124", + "nodeType": "VariableDeclaration", + "scope": 49013, + "src": "865:21:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 48939, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "865:6:124", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48942, + "mutability": "mutable", + "name": "_sourceAddress", + "nameLocation": "904:14:124", + "nodeType": "VariableDeclaration", + "scope": 49013, + "src": "896:22:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 48941, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "896:7:124", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48944, + "mutability": "mutable", + "name": "_callbackAddress", + "nameLocation": "936:16:124", + "nodeType": "VariableDeclaration", + "scope": 49013, + "src": "928:24:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 48943, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "928:7:124", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48946, + "mutability": "mutable", + "name": "_eventSig", + "nameLocation": "970:9:124", + "nodeType": "VariableDeclaration", + "scope": 49013, + "src": "962:17:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48945, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "962:7:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48948, + "mutability": "mutable", + "name": "_startSlot", + "nameLocation": "996:10:124", + "nodeType": "VariableDeclaration", + "scope": 49013, + "src": "989:17:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 48947, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "989:6:124", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48950, + "mutability": "mutable", + "name": "_endSlot", + "nameLocation": "1023:8:124", + "nodeType": "VariableDeclaration", + "scope": 49013, + "src": "1016:15:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 48949, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1016:6:124", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "855:182:124" + }, + "returnParameters": { + "id": 48954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48953, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 49013, + "src": "1056:7:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48952, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1056:7:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1055:9:124" + }, + "scope": 49073, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 49072, + "nodeType": "FunctionDefinition", + "src": "1888:644:124", + "nodes": [], + "body": { + "id": 49071, + "nodeType": "Block", + "src": "2022:510:124", + "nodes": [], + "statements": [ + { + "assignments": [ + 49027 + ], + "declarations": [ + { + "constant": false, + "id": 49027, + "mutability": "mutable", + "name": "subscription", + "nameLocation": "2052:12:124", + "nodeType": "VariableDeclaration", + "scope": 49071, + "src": "2032:32:124", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription" + }, + "typeName": { + "id": 49026, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 49025, + "name": "Subscription", + "nameLocations": [ + "2032:12:124" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49087, + "src": "2032:12:124" + }, + "referencedDeclaration": 49087, + "src": "2032:12:124", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_storage_ptr", + "typeString": "struct Subscription" + } + }, + "visibility": "internal" + } + ], + "id": 49035, + "initialValue": { + "arguments": [ + { + "id": 49029, + "name": "_sourceChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49016, + "src": "2092:14:124", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "id": 49030, + "name": "_sourceAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49018, + "src": "2108:14:124", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 49031, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2124:3:124", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 49032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2128:6:124", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2124:10:124", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 49033, + "name": "_eventSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49020, + "src": "2136:9:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 49028, + "name": "Subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49087, + "src": "2079:12:124", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Subscription_$49087_storage_ptr_$", + "typeString": "type(struct Subscription storage pointer)" + } + }, + "id": 49034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2079:67:124", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2032:114:124" + }, + { + "assignments": [ + 49037 + ], + "declarations": [ + { + "constant": false, + "id": 49037, + "mutability": "mutable", + "name": "subscriptionId", + "nameLocation": "2164:14:124", + "nodeType": "VariableDeclaration", + "scope": 49071, + "src": "2156:22:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 49036, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2156:7:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 49044, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 49041, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49027, + "src": "2202:12:124", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription memory" + } + ], + "expression": { + "id": 49039, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2191:3:124", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 49040, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2195:6:124", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "2191:10:124", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 49042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2191:24:124", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 49038, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2181:9:124", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 49043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2181:35:124", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2156:60:124" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + }, + "id": 49050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 49045, + "name": "subscriptions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48479, + "src": "2231:13:124", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49078_$", + "typeString": "mapping(bytes32 => enum SubscriptionStatus)" + } + }, + "id": 49047, + "indexExpression": { + "id": 49046, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49037, + "src": "2245:14:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2231:29:124", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 49048, + "name": "SubscriptionStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49078, + "src": "2264:18:124", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49078_$", + "typeString": "type(enum SubscriptionStatus)" + } + }, + "id": 49049, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2283:11:124", + "memberName": "UNSUBSCIBED", + "nodeType": "MemberAccess", + "referencedDeclaration": 49076, + "src": "2264:30:124", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + } + }, + "src": "2231:63:124", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 49056, + "nodeType": "IfStatement", + "src": "2227:138:124", + "trueBody": { + "id": 49055, + "nodeType": "Block", + "src": "2296:69:124", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 49052, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49037, + "src": "2339:14:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 49051, + "name": "SubscriptionNotActive", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48931, + "src": "2317:21:124", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 49053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2317:37:124", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 49054, + "nodeType": "RevertStatement", + "src": "2310:44:124" + } + ] + } + }, + { + "expression": { + "id": 49062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 49057, + "name": "subscriptions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48479, + "src": "2374:13:124", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49078_$", + "typeString": "mapping(bytes32 => enum SubscriptionStatus)" + } + }, + "id": 49059, + "indexExpression": { + "id": 49058, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49037, + "src": "2388:14:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2374:29:124", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 49060, + "name": "SubscriptionStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49078, + "src": "2406:18:124", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49078_$", + "typeString": "type(enum SubscriptionStatus)" + } + }, + "id": 49061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2425:11:124", + "memberName": "UNSUBSCIBED", + "nodeType": "MemberAccess", + "referencedDeclaration": 49076, + "src": "2406:30:124", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + } + }, + "src": "2374:62:124", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeString": "enum SubscriptionStatus" + } + }, + "id": 49063, + "nodeType": "ExpressionStatement", + "src": "2374:62:124" + }, + { + "eventCall": { + "arguments": [ + { + "id": 49065, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49037, + "src": "2464:14:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 49066, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49027, + "src": "2480:12:124", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeString": "struct Subscription memory" + } + ], + "id": 49064, + "name": "Unsubscribe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49107, + "src": "2452:11:124", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49087_memory_ptr_$returns$__$", + "typeString": "function (bytes32,struct Subscription memory)" + } + }, + "id": 49067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2452:41:124", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 49068, + "nodeType": "EmitStatement", + "src": "2447:46:124" + }, + { + "expression": { + "id": 49069, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49037, + "src": "2511:14:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 49024, + "id": 49070, + "nodeType": "Return", + "src": "2504:21:124" + } + ] + }, + "baseFunctions": [ + 49135 + ], + "documentation": { + "id": 49014, + "nodeType": "StructuredDocumentation", + "src": "1803:80:124", + "text": "@dev Only the original callbackAddress contract will be able to unsubscribe." + }, + "functionSelector": "97229719", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unsubscribe", + "nameLocation": "1897:11:124", + "parameters": { + "id": 49021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49016, + "mutability": "mutable", + "name": "_sourceChainId", + "nameLocation": "1916:14:124", + "nodeType": "VariableDeclaration", + "scope": 49072, + "src": "1909:21:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 49015, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1909:6:124", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 49018, + "mutability": "mutable", + "name": "_sourceAddress", + "nameLocation": "1940:14:124", + "nodeType": "VariableDeclaration", + "scope": 49072, + "src": "1932:22:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 49017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1932:7:124", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 49020, + "mutability": "mutable", + "name": "_eventSig", + "nameLocation": "1964:9:124", + "nodeType": "VariableDeclaration", + "scope": 49072, + "src": "1956:17:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 49019, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1956:7:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1908:66:124" + }, + "returnParameters": { + "id": 49024, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49023, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 49072, + "src": "2009:7:124", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 49022, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2009:7:124", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2008:9:124" + }, + "scope": 49073, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 48920, + "name": "ISubscriber", + "nameLocations": [ + "367:11:124" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49136, + "src": "367:11:124" + }, + "id": 48921, + "nodeType": "InheritanceSpecifier", + "src": "367:11:124" + }, + { + "baseName": { + "id": 48922, + "name": "PubSubStorage", + "nameLocations": [ + "380:13:124" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 48485, + "src": "380:13:124" + }, + "id": 48923, + "nodeType": "InheritanceSpecifier", + "src": "380:13:124" + } + ], + "canonicalName": "TelepathySubscriber", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 48919, + "nodeType": "StructuredDocumentation", + "src": "185:150:124", + "text": "@title TelepathySubscriber\n @author Succinct Labs\n @notice This allows contracts to subscribe to cross-chain events from a source contract." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 49073, + 48485, + 49136 + ], + "name": "TelepathySubscriber", + "nameLocation": "344:19:124", + "scope": 49074, + "usedErrors": [ + 48927, + 48931, + 48937 + ] + } + ] + }, + "id": 124 +} \ No newline at end of file diff --git a/out/TelepathyValidator.sol/IBasicHomeAMB.json b/out/TelepathyValidator.sol/IBasicHomeAMB.json new file mode 100644 index 0000000..9aa3d03 --- /dev/null +++ b/out/TelepathyValidator.sol/IBasicHomeAMB.json @@ -0,0 +1,3446 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "executeAffirmation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "methodIdentifiers": { + "executeAffirmation(bytes)": "e7a2c01f" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"executeAffirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"IBasicHomeAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c\",\"urls\":[\"bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde\",\"dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "executeAffirmation" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "examples/pubsub/gnosis/TelepathyValidator.sol": "IBasicHomeAMB" + }, + "libraries": {} + }, + "sources": { + "examples/pubsub/gnosis/TelepathyValidator.sol": { + "keccak256": "0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31", + "urls": [ + "bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42", + "dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk" + ], + "license": null + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", + "urls": [ + "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", + "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { + "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", + "urls": [ + "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", + "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { + "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", + "urls": [ + "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", + "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { + "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", + "urls": [ + "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", + "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { + "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", + "urls": [ + "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", + "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { + "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", + "urls": [ + "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", + "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", + "urls": [ + "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", + "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { + "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", + "urls": [ + "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", + "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { + "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", + "urls": [ + "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", + "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { + "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", + "urls": [ + "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", + "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", + "urls": [ + "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", + "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { + "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", + "urls": [ + "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", + "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { + "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", + "urls": [ + "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", + "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", + "urls": [ + "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", + "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { + "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", + "urls": [ + "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", + "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { + "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", + "urls": [ + "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", + "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", + "urls": [ + "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", + "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/Bytes.sol": { + "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", + "urls": [ + "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", + "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { + "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", + "urls": [ + "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", + "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { + "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", + "urls": [ + "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", + "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { + "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", + "urls": [ + "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", + "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" + ], + "license": "MIT" + }, + "src/amb/SourceAMB.sol": { + "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "urls": [ + "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", + "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + ], + "license": null + }, + "src/amb/TargetAMB.sol": { + "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "urls": [ + "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", + "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + ], + "license": null + }, + "src/amb/TelepathyAccess.sol": { + "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", + "urls": [ + "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", + "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" + ], + "license": null + }, + "src/amb/TelepathyRouter.sol": { + "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", + "urls": [ + "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", + "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" + ], + "license": null + }, + "src/amb/TelepathyStorage.sol": { + "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", + "urls": [ + "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", + "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" + ], + "license": null + }, + "src/amb/interfaces/ITelepathy.sol": { + "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", + "urls": [ + "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", + "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" + ], + "license": null + }, + "src/libraries/MessageEncoding.sol": { + "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", + "urls": [ + "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", + "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" + ], + "license": null + }, + "src/libraries/SimpleSerialize.sol": { + "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "urls": [ + "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", + "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + ], + "license": null + }, + "src/libraries/StateProofHelper.sol": { + "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", + "urls": [ + "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", + "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" + ], + "license": null + }, + "src/libraries/Typecast.sol": { + "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", + "urls": [ + "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", + "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" + ], + "license": "MIT OR Apache-2.0" + }, + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + }, + "src/pubsub/EventProof.sol": { + "keccak256": "0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e", + "urls": [ + "bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78", + "dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi" + ], + "license": null + }, + "src/pubsub/PubSubStorage.sol": { + "keccak256": "0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b", + "urls": [ + "bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e", + "dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL" + ], + "license": null + }, + "src/pubsub/TelepathyPubSub.sol": { + "keccak256": "0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61", + "urls": [ + "bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241", + "dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG" + ], + "license": null + }, + "src/pubsub/TelepathyPublisher.sol": { + "keccak256": "0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c", + "urls": [ + "bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde", + "dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk" + ], + "license": null + }, + "src/pubsub/TelepathySubscriber.sol": { + "keccak256": "0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd", + "urls": [ + "bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4", + "dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3" + ], + "license": null + }, + "src/pubsub/interfaces/IPubSub.sol": { + "keccak256": "0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c", + "urls": [ + "bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a", + "dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt" + ], + "license": null + }, + "src/pubsub/interfaces/ISubscriptionReceiver.sol": { + "keccak256": "0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c", + "urls": [ + "bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb", + "dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx" + ], + "license": null + }, + "src/pubsub/interfaces/SubscriptionReceiver.sol": { + "keccak256": "0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412", + "urls": [ + "bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9", + "dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "examples/pubsub/gnosis/TelepathyValidator.sol", + "id": 2860, + "exportedSymbols": { + "IBasicHomeAMB": [ + 2859 + ], + "Ownable": [ + 31597 + ], + "SubscriptionReceiver": [ + 49286 + ], + "TelepathyPubSub": [ + 48516 + ], + "TelepathyValidator": [ + 2853 + ] + }, + "nodeType": "SourceUnit", + "src": "0:3719:12", + "nodes": [ + { + "id": 2618, + "nodeType": "PragmaDirective", + "src": "0:24:12", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".16" + ] + }, + { + "id": 2620, + "nodeType": "ImportDirective", + "src": "26:63:12", + "nodes": [], + "absolutePath": "src/pubsub/TelepathyPubSub.sol", + "file": "src/pubsub/TelepathyPubSub.sol", + "nameLocation": "-1:-1:-1", + "scope": 2860, + "sourceUnit": 48517, + "symbolAliases": [ + { + "foreign": { + "id": 2619, + "name": "TelepathyPubSub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48516, + "src": "34:15:12", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 2622, + "nodeType": "ImportDirective", + "src": "90:84:12", + "nodes": [], + "absolutePath": "src/pubsub/interfaces/SubscriptionReceiver.sol", + "file": "src/pubsub/interfaces/SubscriptionReceiver.sol", + "nameLocation": "-1:-1:-1", + "scope": 2860, + "sourceUnit": 49287, + "symbolAliases": [ + { + "foreign": { + "id": 2621, + "name": "SubscriptionReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49286, + "src": "98:20:12", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 2624, + "nodeType": "ImportDirective", + "src": "175:66:12", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "file": "openzeppelin-contracts/access/Ownable.sol", + "nameLocation": "-1:-1:-1", + "scope": 2860, + "sourceUnit": 31598, + "symbolAliases": [ + { + "foreign": { + "id": 2623, + "name": "Ownable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31597, + "src": "183:7:12", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 2853, + "nodeType": "ContractDefinition", + "src": "516:3107:12", + "nodes": [ + { + "id": 2637, + "nodeType": "EventDefinition", + "src": "583:78:12", + "nodes": [], + "anonymous": false, + "eventSelector": "1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa", + "name": "AffirmationHandled", + "nameLocation": "589:18:12", + "parameters": { + "id": 2636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2631, + "indexed": true, + "mutability": "mutable", + "name": "messageId", + "nameLocation": "624:9:12", + "nodeType": "VariableDeclaration", + "scope": 2637, + "src": "608:25:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2630, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "608:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2633, + "indexed": false, + "mutability": "mutable", + "name": "header", + "nameLocation": "641:6:12", + "nodeType": "VariableDeclaration", + "scope": 2637, + "src": "635:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2632, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "635:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2635, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nameLocation": "655:4:12", + "nodeType": "VariableDeclaration", + "scope": 2637, + "src": "649:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2634, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "649:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "607:53:12" + } + }, + { + "id": 2641, + "nodeType": "ErrorDefinition", + "src": "667:47:12", + "nodes": [], + "errorSelector": "950ae30c", + "name": "InvalidSourceChain", + "nameLocation": "673:18:12", + "parameters": { + "id": 2640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2639, + "mutability": "mutable", + "name": "sourceChainId", + "nameLocation": "699:13:12", + "nodeType": "VariableDeclaration", + "scope": 2641, + "src": "692:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2638, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "692:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "691:22:12" + } + }, + { + "id": 2645, + "nodeType": "ErrorDefinition", + "src": "719:50:12", + "nodes": [], + "errorSelector": "98785edb", + "name": "InvalidSourceAddress", + "nameLocation": "725:20:12", + "parameters": { + "id": 2644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2643, + "mutability": "mutable", + "name": "sourceAddress", + "nameLocation": "754:13:12", + "nodeType": "VariableDeclaration", + "scope": 2645, + "src": "746:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "746:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "745:23:12" + } + }, + { + "id": 2649, + "nodeType": "ErrorDefinition", + "src": "774:31:12", + "nodes": [], + "errorSelector": "fb77f7f2", + "name": "InvalidSlot", + "nameLocation": "780:11:12", + "parameters": { + "id": 2648, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2647, + "mutability": "mutable", + "name": "slot", + "nameLocation": "799:4:12", + "nodeType": "VariableDeclaration", + "scope": 2649, + "src": "792:11:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2646, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "792:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "791:13:12" + } + }, + { + "id": 2653, + "nodeType": "ErrorDefinition", + "src": "810:52:12", + "nodes": [], + "errorSelector": "adc1a22b", + "name": "InvalidSubscriptionId", + "nameLocation": "816:21:12", + "parameters": { + "id": 2652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2651, + "mutability": "mutable", + "name": "subscriptionId", + "nameLocation": "846:14:12", + "nodeType": "VariableDeclaration", + "scope": 2653, + "src": "838:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2650, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "838:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "837:24:12" + } + }, + { + "id": 2659, + "nodeType": "VariableDeclaration", + "src": "1054:94:12", + "nodes": [], + "constant": true, + "documentation": { + "id": 2654, + "nodeType": "StructuredDocumentation", + "src": "868:181:12", + "text": "@dev Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData)\n where the encodedData is the ABI encoded message from the Foreign AMB." + }, + "mutability": "constant", + "name": "AFFIRMATION_EVENT_SIG", + "nameLocation": "1071:21:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2655, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1054:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5573657252657175657374466f7241666669726d6174696f6e28627974657333322c627974657329", + "id": 2657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1105:42:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58", + "typeString": "literal_string \"UserRequestForAffirmation(bytes32,bytes)\"" + }, + "value": "UserRequestForAffirmation(bytes32,bytes)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58", + "typeString": "literal_string \"UserRequestForAffirmation(bytes32,bytes)\"" + } + ], + "id": 2656, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1095:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1095:53:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "id": 2661, + "nodeType": "VariableDeclaration", + "src": "1155:38:12", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "EVENT_SOURCE_CHAIN_ID", + "nameLocation": "1172:21:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2660, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1155:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "id": 2663, + "nodeType": "VariableDeclaration", + "src": "1199:38:12", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "EVENT_SOURCE_ADDRESS", + "nameLocation": "1217:20:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1199:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "id": 2665, + "nodeType": "VariableDeclaration", + "src": "1243:27:12", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "START_SLOT", + "nameLocation": "1260:10:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2664, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1243:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "id": 2667, + "nodeType": "VariableDeclaration", + "src": "1276:25:12", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "END_SLOT", + "nameLocation": "1293:8:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2666, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1276:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "id": 2670, + "nodeType": "VariableDeclaration", + "src": "1307:32:12", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "HOME_AMB", + "nameLocation": "1331:8:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + }, + "typeName": { + "id": 2669, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2668, + "name": "IBasicHomeAMB", + "nameLocations": [ + "1307:13:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2859, + "src": "1307:13:12" + }, + "referencedDeclaration": 2859, + "src": "1307:13:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + } + }, + "visibility": "internal" + }, + { + "id": 2672, + "nodeType": "VariableDeclaration", + "src": "1346:29:12", + "nodes": [], + "constant": false, + "functionSelector": "09c1ba2e", + "mutability": "mutable", + "name": "subscriptionId", + "nameLocation": "1361:14:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2671, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1346:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "id": 2674, + "nodeType": "VariableDeclaration", + "src": "1381:31:12", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "executeAffirmationsEnabled", + "nameLocation": "1386:26:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2673, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1381:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "id": 2721, + "nodeType": "FunctionDefinition", + "src": "1419:499:12", + "nodes": [], + "body": { + "id": 2720, + "nodeType": "Block", + "src": "1675:243:12", + "nodes": [], + "statements": [ + { + "expression": { + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2694, + "name": "EVENT_SOURCE_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "1685:21:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2695, + "name": "_sourceChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2678, + "src": "1709:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "1685:38:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 2697, + "nodeType": "ExpressionStatement", + "src": "1685:38:12" + }, + { + "expression": { + "id": 2700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2698, + "name": "EVENT_SOURCE_ADDRESS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "1733:20:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2699, + "name": "_sourceAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2680, + "src": "1756:14:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1733:37:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2701, + "nodeType": "ExpressionStatement", + "src": "1733:37:12" + }, + { + "expression": { + "id": 2704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2702, + "name": "START_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "1780:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2703, + "name": "_startSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2682, + "src": "1793:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "1780:23:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 2705, + "nodeType": "ExpressionStatement", + "src": "1780:23:12" + }, + { + "expression": { + "id": 2708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2706, + "name": "END_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "1813:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2707, + "name": "_endSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2684, + "src": "1824:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "1813:19:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 2709, + "nodeType": "ExpressionStatement", + "src": "1813:19:12" + }, + { + "expression": { + "id": 2714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2710, + "name": "HOME_AMB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2670, + "src": "1842:8:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2712, + "name": "_homeAMB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2686, + "src": "1867:8:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2711, + "name": "IBasicHomeAMB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2859, + "src": "1853:13:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBasicHomeAMB_$2859_$", + "typeString": "type(contract IBasicHomeAMB)" + } + }, + "id": 2713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1853:23:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + } + }, + "src": "1842:34:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + } + }, + "id": 2715, + "nodeType": "ExpressionStatement", + "src": "1842:34:12" + }, + { + "expression": { + "arguments": [ + { + "id": 2717, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2688, + "src": "1904:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2716, + "name": "transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31576, + "src": "1886:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1886:25:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2719, + "nodeType": "ExpressionStatement", + "src": "1886:25:12" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 2691, + "name": "_telepathyPubSub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2676, + "src": "1657:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2692, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 2690, + "name": "SubscriptionReceiver", + "nameLocations": [ + "1636:20:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49286, + "src": "1636:20:12" + }, + "nodeType": "ModifierInvocation", + "src": "1636:38:12" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 2689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2676, + "mutability": "mutable", + "name": "_telepathyPubSub", + "nameLocation": "1448:16:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1440:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1440:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2678, + "mutability": "mutable", + "name": "_sourceChainId", + "nameLocation": "1481:14:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1474:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2677, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1474:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2680, + "mutability": "mutable", + "name": "_sourceAddress", + "nameLocation": "1513:14:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1505:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1505:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2682, + "mutability": "mutable", + "name": "_startSlot", + "nameLocation": "1544:10:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1537:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2681, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1537:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2684, + "mutability": "mutable", + "name": "_endSlot", + "nameLocation": "1571:8:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1564:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2683, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1564:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2686, + "mutability": "mutable", + "name": "_homeAMB", + "nameLocation": "1597:8:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1589:16:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1589:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2688, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "1623:6:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1615:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2687, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1615:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1430:205:12" + }, + "returnParameters": { + "id": 2693, + "nodeType": "ParameterList", + "parameters": [], + "src": "1675:0:12" + }, + "scope": 2853, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 2732, + "nodeType": "FunctionDefinition", + "src": "1924:129:12", + "nodes": [], + "body": { + "id": 2731, + "nodeType": "Block", + "src": "1980:73:12", + "nodes": [], + "statements": [ + { + "expression": { + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2726, + "name": "executeAffirmationsEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2674, + "src": "1990:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2019:27:12", + "subExpression": { + "id": 2727, + "name": "executeAffirmationsEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2674, + "src": "2020:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1990:56:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2730, + "nodeType": "ExpressionStatement", + "src": "1990:56:12" + } + ] + }, + "functionSelector": "a27c0863", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2724, + "kind": "modifierInvocation", + "modifierName": { + "id": 2723, + "name": "onlyOwner", + "nameLocations": [ + "1970:9:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31516, + "src": "1970:9:12" + }, + "nodeType": "ModifierInvocation", + "src": "1970:9:12" + } + ], + "name": "toggleExecuteAffirmations", + "nameLocation": "1933:25:12", + "parameters": { + "id": 2722, + "nodeType": "ParameterList", + "parameters": [], + "src": "1958:2:12" + }, + "returnParameters": { + "id": 2725, + "nodeType": "ParameterList", + "parameters": [], + "src": "1980:0:12" + }, + "scope": 2853, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 2757, + "nodeType": "FunctionDefinition", + "src": "2059:353:12", + "nodes": [], + "body": { + "id": 2756, + "nodeType": "Block", + "src": "2135:277:12", + "nodes": [], + "statements": [ + { + "expression": { + "id": 2752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2739, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2672, + "src": "2145:14:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2742, + "name": "EVENT_SOURCE_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "2201:21:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "id": 2743, + "name": "EVENT_SOURCE_ADDRESS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "2236:20:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 2746, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2278:4:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyValidator_$2853", + "typeString": "contract TelepathyValidator" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TelepathyValidator_$2853", + "typeString": "contract TelepathyValidator" + } + ], + "id": 2745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2270:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2270:7:12", + "typeDescriptions": {} + } + }, + "id": 2747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2270:13:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2748, + "name": "AFFIRMATION_EVENT_SIG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2659, + "src": "2297:21:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2749, + "name": "START_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "2332:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 2750, + "name": "END_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "2356:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "id": 2740, + "name": "telepathyPubSub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49210, + "src": "2162:15:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyPubSub_$48516", + "typeString": "contract TelepathyPubSub" + } + }, + "id": 2741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2178:9:12", + "memberName": "subscribe", + "nodeType": "MemberAccess", + "referencedDeclaration": 49013, + "src": "2162:25:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_address_$_t_address_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bytes32_$", + "typeString": "function (uint32,address,address,bytes32,uint64,uint64) external returns (bytes32)" + } + }, + "id": 2751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2162:212:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2145:229:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2753, + "nodeType": "ExpressionStatement", + "src": "2145:229:12" + }, + { + "expression": { + "id": 2754, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2672, + "src": "2391:14:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2738, + "id": 2755, + "nodeType": "Return", + "src": "2384:21:12" + } + ] + }, + "functionSelector": "0908a386", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2735, + "kind": "modifierInvocation", + "modifierName": { + "id": 2734, + "name": "onlyOwner", + "nameLocations": [ + "2107:9:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31516, + "src": "2107:9:12" + }, + "nodeType": "ModifierInvocation", + "src": "2107:9:12" + } + ], + "name": "subscribeToAffirmationEvent", + "nameLocation": "2068:27:12", + "parameters": { + "id": 2733, + "nodeType": "ParameterList", + "parameters": [], + "src": "2095:2:12" + }, + "returnParameters": { + "id": 2738, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2737, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "2126:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2736, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2126:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2125:9:12" + }, + "scope": 2853, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 2852, + "nodeType": "FunctionDefinition", + "src": "2636:985:12", + "nodes": [], + "body": { + "id": 2851, + "nodeType": "Block", + "src": "2875:746:12", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 2777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2775, + "name": "_sourceChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2762, + "src": "2889:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2776, + "name": "EVENT_SOURCE_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "2907:21:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "2889:39:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2783, + "nodeType": "IfStatement", + "src": "2885:111:12", + "trueBody": { + "id": 2782, + "nodeType": "Block", + "src": "2930:66:12", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2779, + "name": "_sourceChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2762, + "src": "2970:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 2778, + "name": "InvalidSourceChain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2641, + "src": "2951:18:12", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint32_$returns$__$", + "typeString": "function (uint32) pure" + } + }, + "id": 2780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2951:34:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2781, + "nodeType": "RevertStatement", + "src": "2944:41:12" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2784, + "name": "_sourceAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2764, + "src": "3010:14:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2785, + "name": "EVENT_SOURCE_ADDRESS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "3028:20:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3010:38:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2792, + "nodeType": "IfStatement", + "src": "3006:112:12", + "trueBody": { + "id": 2791, + "nodeType": "Block", + "src": "3050:68:12", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2788, + "name": "_sourceAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2764, + "src": "3092:14:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2787, + "name": "InvalidSourceAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2645, + "src": "3071:20:12", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3071:36:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2790, + "nodeType": "RevertStatement", + "src": "3064:43:12" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 2795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2793, + "name": "_slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2766, + "src": "3132:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2794, + "name": "START_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "3140:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "3132:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 2798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2796, + "name": "END_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "3155:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3167:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3155:13:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 2801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2799, + "name": "_slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2766, + "src": "3172:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 2800, + "name": "END_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "3180:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "3172:16:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3155:33:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2803, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3154:35:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3132:57:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2810, + "nodeType": "IfStatement", + "src": "3128:113:12", + "trueBody": { + "id": 2809, + "nodeType": "Block", + "src": "3191:50:12", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2806, + "name": "_slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2766, + "src": "3224:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 2805, + "name": "InvalidSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2649, + "src": "3212:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint64_$returns$__$", + "typeString": "function (uint64) pure" + } + }, + "id": 2807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3212:18:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2808, + "nodeType": "RevertStatement", + "src": "3205:25:12" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2811, + "name": "_subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2760, + "src": "3255:15:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2812, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2672, + "src": "3274:14:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3255:33:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2819, + "nodeType": "IfStatement", + "src": "3251:109:12", + "trueBody": { + "id": 2818, + "nodeType": "Block", + "src": "3290:70:12", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2815, + "name": "_subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2760, + "src": "3333:15:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2814, + "name": "InvalidSubscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2653, + "src": "3311:21:12", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 2816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3311:38:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2817, + "nodeType": "RevertStatement", + "src": "3304:45:12" + } + ] + } + }, + { + "assignments": [ + 2821, + 2823 + ], + "declarations": [ + { + "constant": false, + "id": 2821, + "mutability": "mutable", + "name": "header", + "nameLocation": "3384:6:12", + "nodeType": "VariableDeclaration", + "scope": 2851, + "src": "3371:19:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2820, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3371:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2823, + "mutability": "mutable", + "name": "data", + "nameLocation": "3405:4:12", + "nodeType": "VariableDeclaration", + "scope": 2851, + "src": "3392:17:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2822, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3392:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2833, + "initialValue": { + "arguments": [ + { + "id": 2826, + "name": "eventdata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2771, + "src": "3424:9:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 2828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3436:5:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2827, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3436:5:12", + "typeDescriptions": {} + } + }, + { + "id": 2830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3443:5:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2829, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3443:5:12", + "typeDescriptions": {} + } + } + ], + "id": 2831, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3435:14:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", + "typeString": "tuple(type(bytes storage pointer),type(bytes storage pointer))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", + "typeString": "tuple(type(bytes storage pointer),type(bytes storage pointer))" + } + ], + "expression": { + "id": 2824, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3413:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2825, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3417:6:12", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3413:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3413:37:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bytes memory,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3370:80:12" + }, + { + "condition": { + "id": 2834, + "name": "executeAffirmationsEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2674, + "src": "3465:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2842, + "nodeType": "IfStatement", + "src": "3461:90:12", + "trueBody": { + "id": 2841, + "nodeType": "Block", + "src": "3493:58:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2838, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2823, + "src": "3535:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 2835, + "name": "HOME_AMB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2670, + "src": "3507:8:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + } + }, + "id": 2837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3516:18:12", + "memberName": "executeAffirmation", + "nodeType": "MemberAccess", + "referencedDeclaration": 2858, + "src": "3507:27:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) external" + } + }, + "id": 2839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3507:33:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2840, + "nodeType": "ExpressionStatement", + "src": "3507:33:12" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "baseExpression": { + "id": 2844, + "name": "eventTopics", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2769, + "src": "3585:11:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2846, + "indexExpression": { + "hexValue": "31", + "id": 2845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3597:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3585:14:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2847, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2821, + "src": "3601:6:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2848, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2823, + "src": "3609:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2843, + "name": "AffirmationHandled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "3566:18:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory,bytes memory)" + } + }, + "id": 2849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3566:48:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2850, + "nodeType": "EmitStatement", + "src": "3561:53:12" + } + ] + }, + "baseFunctions": [ + 49285 + ], + "documentation": { + "id": 2758, + "nodeType": "StructuredDocumentation", + "src": "2418:213:12", + "text": "@notice Handle the published affirmation event by executing the affirmation in the Home AMB.\n @dev We decode 'abi.encodePacked(header, _data)' to extract just the encoded message '_data' from the event." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "handlePublishImpl", + "nameLocation": "2645:17:12", + "overrides": { + "id": 2773, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2866:8:12" + }, + "parameters": { + "id": 2772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2760, + "mutability": "mutable", + "name": "_subscriptionId", + "nameLocation": "2680:15:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2672:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2759, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2672:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2762, + "mutability": "mutable", + "name": "_sourceChainId", + "nameLocation": "2712:14:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2705:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2761, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2705:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2764, + "mutability": "mutable", + "name": "_sourceAddress", + "nameLocation": "2744:14:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2736:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2763, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2736:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2766, + "mutability": "mutable", + "name": "_slot", + "nameLocation": "2775:5:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2768:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2765, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2768:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2769, + "mutability": "mutable", + "name": "eventTopics", + "nameLocation": "2807:11:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2790:28:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2767, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2790:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2768, + "nodeType": "ArrayTypeName", + "src": "2790:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2771, + "mutability": "mutable", + "name": "eventdata", + "nameLocation": "2841:9:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2828:22:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2770, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2828:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2662:194:12" + }, + "returnParameters": { + "id": 2774, + "nodeType": "ParameterList", + "parameters": [], + "src": "2875:0:12" + }, + "scope": 2853, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2626, + "name": "SubscriptionReceiver", + "nameLocations": [ + "547:20:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49286, + "src": "547:20:12" + }, + "id": 2627, + "nodeType": "InheritanceSpecifier", + "src": "547:20:12" + }, + { + "baseName": { + "id": 2628, + "name": "Ownable", + "nameLocations": [ + "569:7:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31597, + "src": "569:7:12" + }, + "id": 2629, + "nodeType": "InheritanceSpecifier", + "src": "569:7:12" + } + ], + "canonicalName": "TelepathyValidator", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2625, + "nodeType": "StructuredDocumentation", + "src": "243:273:12", + "text": "@title TelepathyValidator\n @author Succinct Labs\n @notice A validator for the ETH (Foreign) -> Gnosis (Home) bridge that relies on the Telepathy Protocol\n for proof of consensus in verifying the UserRequestForAffirmation event was emitted on Ethereum." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 2853, + 31597, + 35292, + 49286, + 49195 + ], + "name": "TelepathyValidator", + "nameLocation": "525:18:12", + "scope": 2860, + "usedErrors": [ + 2641, + 2645, + 2649, + 2653, + 49207 + ] + }, + { + "id": 2859, + "nodeType": "ContractDefinition", + "src": "3625:93:12", + "nodes": [ + { + "id": 2858, + "nodeType": "FunctionDefinition", + "src": "3655:61:12", + "nodes": [], + "functionSelector": "e7a2c01f", + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "executeAffirmation", + "nameLocation": "3664:18:12", + "parameters": { + "id": 2856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2855, + "mutability": "mutable", + "name": "message", + "nameLocation": "3698:7:12", + "nodeType": "VariableDeclaration", + "scope": 2858, + "src": "3683:22:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2854, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3683:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3682:24:12" + }, + "returnParameters": { + "id": 2857, + "nodeType": "ParameterList", + "parameters": [], + "src": "3715:0:12" + }, + "scope": 2859, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [], + "canonicalName": "IBasicHomeAMB", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "linearizedBaseContracts": [ + 2859 + ], + "name": "IBasicHomeAMB", + "nameLocation": "3635:13:12", + "scope": 2860, + "usedErrors": [] + } + ] + }, + "id": 12 +} \ No newline at end of file diff --git a/out/TelepathyValidator.sol/TelepathyValidator.json b/out/TelepathyValidator.sol/TelepathyValidator.json new file mode 100644 index 0000000..1a452f0 --- /dev/null +++ b/out/TelepathyValidator.sol/TelepathyValidator.json @@ -0,0 +1,4013 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_telepathyPubSub", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "uint64", + "name": "_startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "_endSlot", + "type": "uint64" + }, + { + "internalType": "address", + "name": "_homeAMB", + "type": "address" + }, + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + } + ], + "name": "InvalidSlot", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + } + ], + "name": "InvalidSourceAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + } + ], + "name": "InvalidSourceChain", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "name": "InvalidSubscriptionId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "NotFromTelepathyPubSub", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "messageId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "header", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "AffirmationHandled", + "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" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subscriptionId", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "uint64", + "name": "_slot", + "type": "uint64" + }, + { + "internalType": "bytes32[]", + "name": "_eventTopics", + "type": "bytes32[]" + }, + { + "internalType": "bytes", + "name": "_eventdata", + "type": "bytes" + } + ], + "name": "handlePublish", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "subscribeToAffirmationEvent", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "subscriptionId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "telepathyPubSub", + "outputs": [ + { + "internalType": "contract TelepathyPubSub", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "toggleExecuteAffirmations", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x6101206040523480156200001257600080fd5b5060405162000ddf38038062000ddf833981016040819052620000359162000213565b600080546001600160a01b0319166001600160a01b038916179055620000626200005c3390565b620000ab565b63ffffffff86166080526001600160a01b0380861660a0526001600160401b0380861660c052841660e0528216610100526200009e81620000fd565b50505050505050620002b2565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200010762000180565b6001600160a01b038116620001725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200017d81620000ab565b50565b6001546001600160a01b03163314620001dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000169565b565b80516001600160a01b0381168114620001f657600080fd5b919050565b80516001600160401b0381168114620001f657600080fd5b600080600080600080600060e0888a0312156200022f57600080fd5b6200023a88620001de565b9650602088015163ffffffff811681146200025457600080fd5b95506200026460408901620001de565b94506200027460608901620001fb565b93506200028460808901620001fb565b92506200029460a08901620001de565b9150620002a460c08901620001de565b905092959891949750929550565b60805160a05160c05160e05161010051610ac56200031a60003960006106230152600081816102140152818161053501526105600152600081816101ec01526104ef015260008181610186015261049201526000818161015f015261043e0152610ac56000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea264697066735822122081ae5fefe82e920bbae0235e9674a3916abbb86f6a4eb94273229f2a4b7e33b964736f6c63430008100033", + "sourceMap": "516:3107:12:-:0;;;1419:499;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;392:15:127;:51;;-1:-1:-1;;;;;;392:51:127;-1:-1:-1;;;;;392:51:127;;;;;936:32:49;955:12;719:10:68;;640:96;955:12:49;936:18;:32::i;:::-;1685:38:12::1;::::0;::::1;;::::0;-1:-1:-1;;;;;1733:37:12;;::::1;;::::0;-1:-1:-1;;;;;1780:23:12;;::::1;;::::0;1813:19;::::1;;::::0;1842:34;::::1;;::::0;1886:25:::1;1904:6:::0;1886:17:::1;:25::i;:::-;1419:499:::0;;;;;;;516:3107;;2433:187:49;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;1373:2:145;2161:73:49::1;::::0;::::1;1355:21:145::0;1412:2;1392:18;;;1385:30;1451:34;1431:18;;;1424:62;-1:-1:-1;;;1502:18:145;;;1495:36;1548:19;;2161:73:49::1;;;;;;;;;2244:28;2263:8:::0;2244:18:::1;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;1780:2:145;1414:68:49;;;1762:21:145;;;1799:18;;;1792:30;1858:34;1838:18;;;1831:62;1910:18;;1414:68:49;1578:356:145;1414:68:49;1359:130::o;14:177:145:-;93:13;;-1:-1:-1;;;;;135:31:145;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:175::-;274:13;;-1:-1:-1;;;;;316:30:145;;306:41;;296:69;;361:1;358;351:12;376:790;497:6;505;513;521;529;537;545;598:3;586:9;577:7;573:23;569:33;566:53;;;615:1;612;605:12;566:53;638:40;668:9;638:40;:::i;:::-;628:50;;721:2;710:9;706:18;700:25;765:10;758:5;754:22;747:5;744:33;734:61;;791:1;788;781:12;734:61;814:5;-1:-1:-1;838:49:145;883:2;868:18;;838:49;:::i;:::-;828:59;;906:48;950:2;939:9;935:18;906:48;:::i;:::-;896:58;;973:49;1017:3;1006:9;1002:19;973:49;:::i;:::-;963:59;;1041:50;1086:3;1075:9;1071:19;1041:50;:::i;:::-;1031:60;;1110:50;1155:3;1144:9;1140:19;1110:50;:::i;:::-;1100:60;;376:790;;;;;;;;;;:::o;1578:356::-;516:3107:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea264697066735822122081ae5fefe82e920bbae0235e9674a3916abbb86f6a4eb94273229f2a4b7e33b964736f6c63430008100033", + "sourceMap": "516:3107:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2059:353;;;:::i;:::-;;;160:25:145;;;148:2;133:18;2059:353:12;;;;;;;;1346:29;;;;;;299:38:127;;;;;-1:-1:-1;;;;;299:38:127;;;;;;-1:-1:-1;;;;;385:32:145;;;367:51;;355:2;340:18;299:38:127;196:228:145;1831:101:49;;;:::i;:::-;;1201:85;1273:6;;-1:-1:-1;;;;;1273:6:49;1201:85;;1924:129:12;;;:::i;456:572:127:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3809:33:145;;;3791:52;;3779:2;3764:18;456:572:127;3647:202:145;2081:198:49;;;;;;:::i;:::-;;:::i;2059:353:12:-;2126:7;1094:13:49;:11;:13::i;:::-;2162:15:12::1;::::0;:212:::1;::::0;-1:-1:-1;;;2162:212:12;;4356:10:145;2201:21:12::1;4344:23:145::0;2162:212:12::1;::::0;::::1;4326:42:145::0;2236:20:12::1;-1:-1:-1::0;;;;;4442:15:145;;;4422:18;;;4415:43;2278:4:12::1;4474:18:145::0;;;4467:43;1095:53:12::1;4526:18:145::0;;;4519:34;4572:18;2332:10:12::1;4627:15:145::0;;4606:19;;;4599:44;2356:8:12::1;4680:15:145::0;4659:19;;;4652:44;2162:15:12;;::::1;::::0;:25:::1;::::0;4298:19:145;;2162:212:12::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2145:14;:229:::0;;;;-1:-1:-1;2059:353:12;:::o;1831:101:49:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1924:129:12:-;1094:13:49;:11;:13::i;:::-;2020:26:12::1;::::0;;-1:-1:-1;;1990:56:12;::::1;2020:26;::::0;;::::1;2019:27;1990:56;::::0;;1924:129::o;456:572:127:-;702:6;746:15;;-1:-1:-1;;;;;746:15:127;724:10;:38;720:110;;785:34;;-1:-1:-1;;;785:34:127;;808:10;785:34;;;367:51:145;340:18;;785:34:127;;;;;;;;720:110;839:121;870:15;887:14;903;919:5;926:12;940:10;839:17;:121::i;:::-;-1:-1:-1;;;;456:572:127;;;;;;;;:::o;2081:198:49:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;5098:2:145;2161:73:49::1;::::0;::::1;5080:21:145::0;5137:2;5117:18;;;5110:30;5176:34;5156:18;;;5149:62;-1:-1:-1;;;5227:18:145;;;5220:36;5273:19;;2161:73:49::1;4896:402:145::0;2161:73:49::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;5505:2:145;1414:68:49;;;5487:21:145;;;5524:18;;;5517:30;5583:34;5563:18;;;5556:62;5635:18;;1414:68:49;5303:356:145;2433:187:49;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2636:985:12:-;2907:21;2889:39;;:14;:39;;;2885:111;;2951:34;;-1:-1:-1;;;2951:34:12;;5838:10:145;5826:23;;2951:34:12;;;5808:42:145;5781:18;;2951:34:12;5664:192:145;2885:111:12;3028:20;-1:-1:-1;;;;;3010:38:12;:14;-1:-1:-1;;;;;3010:38:12;;3006:112;;3071:36;;-1:-1:-1;;;3071:36:12;;-1:-1:-1;;;;;385:32:145;;3071:36:12;;;367:51:145;340:18;;3071:36:12;196:228:145;3006:112:12;3140:10;3132:18;;:5;:18;;;:57;;;-1:-1:-1;3155:13:12;:8;:13;;;;;:33;;;3180:8;3172:16;;:5;:16;;;3155:33;3128:113;;;3212:18;;-1:-1:-1;;;3212:18:12;;6035::145;6023:31;;3212:18:12;;;6005:50:145;5978:18;;3212::12;5861:200:145;3128:113:12;3274:14;;3255:15;:33;3251:109;;3311:38;;-1:-1:-1;;;3311:38:12;;;;;160:25:145;;;133:18;;3311:38:12;14:177:145;3251:109:12;3371:19;3392:17;3424:9;3413:37;;;;;;;;;;;;:::i;:::-;3465:26;;3370:80;;-1:-1:-1;3370:80:12;-1:-1:-1;3465:26:12;;3461:90;;;3507:33;;-1:-1:-1;;;3507:33:12;;-1:-1:-1;;;;;3507:8:12;:27;;;;:33;;3535:4;;3507:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3461:90;3585:11;3597:1;3585:14;;;;;;;;:::i;:::-;;;;;;;3566:48;3601:6;3609:4;3566:48;;;;;;;:::i;:::-;;;;;;;;2875:746;;2636:985;;;;;;:::o;637:173:145:-;705:20;;-1:-1:-1;;;;;754:31:145;;744:42;;734:70;;800:1;797;790:12;734:70;637:173;;;:::o;815:127::-;876:10;871:3;867:20;864:1;857:31;907:4;904:1;897:15;931:4;928:1;921:15;947:275;1018:2;1012:9;1083:2;1064:13;;-1:-1:-1;;1060:27:145;1048:40;;1118:18;1103:34;;1139:22;;;1100:62;1097:88;;;1165:18;;:::i;:::-;1201:2;1194:22;947:275;;-1:-1:-1;947:275:145:o;1227:712::-;1281:5;1334:3;1327:4;1319:6;1315:17;1311:27;1301:55;;1352:1;1349;1342:12;1301:55;1388:6;1375:20;1414:4;1437:18;1433:2;1430:26;1427:52;;;1459:18;;:::i;:::-;1505:2;1502:1;1498:10;1528:28;1552:2;1548;1544:11;1528:28;:::i;:::-;1590:15;;;1660;;;1656:24;;;1621:12;;;;1692:15;;;1689:35;;;1720:1;1717;1710:12;1689:35;1756:2;1748:6;1744:15;1733:26;;1768:142;1784:6;1779:3;1776:15;1768:142;;;1850:17;;1838:30;;1801:12;;;;1888;;;;1768:142;;;1928:5;1227:712;-1:-1:-1;;;;;;;1227:712:145:o;1944:186::-;1992:4;2025:18;2017:6;2014:30;2011:56;;;2047:18;;:::i;:::-;-1:-1:-1;2113:2:145;2092:15;-1:-1:-1;;2088:29:145;2119:4;2084:40;;1944:186::o;2135:462::-;2177:5;2230:3;2223:4;2215:6;2211:17;2207:27;2197:55;;2248:1;2245;2238:12;2197:55;2284:6;2271:20;2315:48;2331:31;2359:2;2331:31;:::i;:::-;2315:48;:::i;:::-;2388:2;2379:7;2372:19;2434:3;2427:4;2422:2;2414:6;2410:15;2406:26;2403:35;2400:55;;;2451:1;2448;2441:12;2400:55;2516:2;2509:4;2501:6;2497:17;2490:4;2481:7;2477:18;2464:55;2564:1;2539:16;;;2557:4;2535:27;2528:38;;;;2543:7;2135:462;-1:-1:-1;;;2135:462:145:o;2602:1040::-;2738:6;2746;2754;2762;2770;2778;2831:3;2819:9;2810:7;2806:23;2802:33;2799:53;;;2848:1;2845;2838:12;2799:53;2884:9;2871:23;2861:33;;2944:2;2933:9;2929:18;2916:32;2988:10;2981:5;2977:22;2970:5;2967:33;2957:61;;3014:1;3011;3004:12;2957:61;3037:5;-1:-1:-1;3061:38:145;3095:2;3080:18;;3061:38;:::i;:::-;3051:48;;3151:2;3140:9;3136:18;3123:32;3174:18;3236:2;3227:7;3223:16;3214:7;3211:29;3201:57;;3254:1;3251;3244:12;3201:57;3277:7;;-1:-1:-1;3335:3:145;3320:19;;3307:33;;3352:14;;;3349:34;;;3379:1;3376;3369:12;3349:34;3402:61;3455:7;3446:6;3435:9;3431:22;3402:61;:::i;:::-;3392:71;;3516:3;3505:9;3501:19;3488:33;3472:49;;3546:2;3536:8;3533:16;3530:36;;;3562:1;3559;3552:12;3530:36;;3585:51;3628:7;3617:8;3606:9;3602:24;3585:51;:::i;:::-;3575:61;;;2602:1040;;;;;;;;:::o;3854:186::-;3913:6;3966:2;3954:9;3945:7;3941:23;3937:32;3934:52;;;3982:1;3979;3972:12;3934:52;4005:29;4024:9;4005:29;:::i;:::-;3995:39;3854:186;-1:-1:-1;;;3854:186:145:o;4707:184::-;4777:6;4830:2;4818:9;4809:7;4805:23;4801:32;4798:52;;;4846:1;4843;4836:12;4798:52;-1:-1:-1;4869:16:145;;4707:184;-1:-1:-1;4707:184:145:o;6066:250::-;6151:1;6161:113;6175:6;6172:1;6169:13;6161:113;;;6251:11;;;6245:18;6232:11;;;6225:39;6197:2;6190:10;6161:113;;;-1:-1:-1;;6308:1:145;6290:16;;6283:27;6066:250::o;6321:441::-;6374:5;6427:3;6420:4;6412:6;6408:17;6404:27;6394:55;;6445:1;6442;6435:12;6394:55;6474:6;6468:13;6505:48;6521:31;6549:2;6521:31;:::i;6505:48::-;6578:2;6569:7;6562:19;6624:3;6617:4;6612:2;6604:6;6600:15;6596:26;6593:35;6590:55;;;6641:1;6638;6631:12;6590:55;6654:77;6728:2;6721:4;6712:7;6708:18;6701:4;6693:6;6689:17;6654:77;:::i;:::-;6749:7;6321:441;-1:-1:-1;;;;6321:441:145:o;6767:558::-;6864:6;6872;6925:2;6913:9;6904:7;6900:23;6896:32;6893:52;;;6941:1;6938;6931:12;6893:52;6974:9;6968:16;7003:18;7044:2;7036:6;7033:14;7030:34;;;7060:1;7057;7050:12;7030:34;7083:60;7135:7;7126:6;7115:9;7111:22;7083:60;:::i;:::-;7073:70;;7189:2;7178:9;7174:18;7168:25;7152:41;;7218:2;7208:8;7205:16;7202:36;;;7234:1;7231;7224:12;7202:36;;7257:62;7311:7;7300:8;7289:9;7285:24;7257:62;:::i;:::-;7247:72;;;6767:558;;;;;:::o;7330:270::-;7371:3;7409:5;7403:12;7436:6;7431:3;7424:19;7452:76;7521:6;7514:4;7509:3;7505:14;7498:4;7491:5;7487:16;7452:76;:::i;:::-;7582:2;7561:15;-1:-1:-1;;7557:29:145;7548:39;;;;7589:4;7544:50;;7330:270;-1:-1:-1;;7330:270:145:o;7605:217::-;7752:2;7741:9;7734:21;7715:4;7772:44;7812:2;7801:9;7797:18;7789:6;7772:44;:::i;7827:127::-;7888:10;7883:3;7879:20;7876:1;7869:31;7919:4;7916:1;7909:15;7943:4;7940:1;7933:15;7959:377;8152:2;8141:9;8134:21;8115:4;8178:44;8218:2;8207:9;8203:18;8195:6;8178:44;:::i;:::-;8270:9;8262:6;8258:22;8253:2;8242:9;8238:18;8231:50;8298:32;8323:6;8315;8298:32;:::i;:::-;8290:40;7959:377;-1:-1:-1;;;;;7959:377:145:o", + "linkReferences": {}, + "immutableReferences": { + "2661": [ + { + "start": 351, + "length": 32 + }, + { + "start": 1086, + "length": 32 + } + ], + "2663": [ + { + "start": 390, + "length": 32 + }, + { + "start": 1170, + "length": 32 + } + ], + "2665": [ + { + "start": 492, + "length": 32 + }, + { + "start": 1263, + "length": 32 + } + ], + "2667": [ + { + "start": 532, + "length": 32 + }, + { + "start": 1333, + "length": 32 + }, + { + "start": 1376, + "length": 32 + } + ], + "2670": [ + { + "start": 1571, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "handlePublish(bytes32,uint32,address,uint64,bytes32[],bytes)": "a2c12a3a", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "subscribeToAffirmationEvent()": "0908a386", + "subscriptionId()": "09c1ba2e", + "telepathyPubSub()": "35cb25c3", + "toggleExecuteAffirmations()": "a27c0863", + "transferOwnership(address)": "f2fde38b" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyPubSub\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_homeAMB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"}],\"name\":\"InvalidSourceAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"}],\"name\":\"InvalidSourceChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubscriptionId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"NotFromTelepathyPubSub\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"AffirmationHandled\",\"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\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_subscriptionId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[]\",\"name\":\"_eventTopics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"_eventdata\",\"type\":\"bytes\"}],\"name\":\"handlePublish\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscribeToAffirmationEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscriptionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"telepathyPubSub\",\"outputs\":[{\"internalType\":\"contract TelepathyPubSub\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleExecuteAffirmations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"AFFIRMATION_EVENT_SIG\":{\"details\":\"Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData) where the encodedData is the ABI encoded message from the Foreign AMB.\"}},\"title\":\"TelepathyValidator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A validator for the ETH (Foreign) -> Gnosis (Home) bridge that relies on the Telepathy Protocol for proof of consensus in verifying the UserRequestForAffirmation event was emitted on Ethereum.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"TelepathyValidator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c\",\"urls\":[\"bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde\",\"dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_telepathyPubSub", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "uint64", + "name": "_startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "_endSlot", + "type": "uint64" + }, + { + "internalType": "address", + "name": "_homeAMB", + "type": "address" + }, + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + } + ], + "type": "error", + "name": "InvalidSlot" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + } + ], + "type": "error", + "name": "InvalidSourceAddress" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + } + ], + "type": "error", + "name": "InvalidSourceChain" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "type": "error", + "name": "InvalidSubscriptionId" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "type": "error", + "name": "NotFromTelepathyPubSub" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "messageId", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes", + "name": "header", + "type": "bytes", + "indexed": false + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes", + "indexed": false + } + ], + "type": "event", + "name": "AffirmationHandled", + "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": "bytes32", + "name": "_subscriptionId", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "uint64", + "name": "_slot", + "type": "uint64" + }, + { + "internalType": "bytes32[]", + "name": "_eventTopics", + "type": "bytes32[]" + }, + { + "internalType": "bytes", + "name": "_eventdata", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handlePublish", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "renounceOwnership" + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "subscribeToAffirmationEvent", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "subscriptionId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "telepathyPubSub", + "outputs": [ + { + "internalType": "contract TelepathyPubSub", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "toggleExecuteAffirmations" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferOwnership" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "owner()": { + "details": "Returns the address of the current owner." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "examples/pubsub/gnosis/TelepathyValidator.sol": "TelepathyValidator" + }, + "libraries": {} + }, + "sources": { + "examples/pubsub/gnosis/TelepathyValidator.sol": { + "keccak256": "0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31", + "urls": [ + "bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42", + "dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk" + ], + "license": null + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", + "urls": [ + "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", + "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { + "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", + "urls": [ + "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", + "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { + "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", + "urls": [ + "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", + "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { + "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", + "urls": [ + "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", + "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { + "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", + "urls": [ + "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", + "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { + "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", + "urls": [ + "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", + "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", + "urls": [ + "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", + "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { + "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", + "urls": [ + "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", + "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { + "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", + "urls": [ + "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", + "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { + "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", + "urls": [ + "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", + "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", + "urls": [ + "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", + "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { + "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", + "urls": [ + "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", + "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { + "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", + "urls": [ + "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", + "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", + "urls": [ + "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", + "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { + "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", + "urls": [ + "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", + "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { + "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", + "urls": [ + "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", + "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", + "urls": [ + "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", + "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/Bytes.sol": { + "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", + "urls": [ + "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", + "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { + "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", + "urls": [ + "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", + "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { + "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", + "urls": [ + "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", + "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" + ], + "license": "MIT" + }, + "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { + "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", + "urls": [ + "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", + "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" + ], + "license": "MIT" + }, + "src/amb/SourceAMB.sol": { + "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "urls": [ + "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", + "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + ], + "license": null + }, + "src/amb/TargetAMB.sol": { + "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "urls": [ + "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", + "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + ], + "license": null + }, + "src/amb/TelepathyAccess.sol": { + "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", + "urls": [ + "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", + "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" + ], + "license": null + }, + "src/amb/TelepathyRouter.sol": { + "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", + "urls": [ + "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", + "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" + ], + "license": null + }, + "src/amb/TelepathyStorage.sol": { + "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", + "urls": [ + "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", + "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" + ], + "license": null + }, + "src/amb/interfaces/ITelepathy.sol": { + "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", + "urls": [ + "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", + "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" + ], + "license": null + }, + "src/libraries/MessageEncoding.sol": { + "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", + "urls": [ + "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", + "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" + ], + "license": null + }, + "src/libraries/SimpleSerialize.sol": { + "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "urls": [ + "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", + "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + ], + "license": null + }, + "src/libraries/StateProofHelper.sol": { + "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", + "urls": [ + "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", + "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" + ], + "license": null + }, + "src/libraries/Typecast.sol": { + "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", + "urls": [ + "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", + "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" + ], + "license": "MIT OR Apache-2.0" + }, + "src/lightclient/interfaces/ILightClient.sol": { + "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", + "urls": [ + "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", + "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" + ], + "license": null + }, + "src/pubsub/EventProof.sol": { + "keccak256": "0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e", + "urls": [ + "bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78", + "dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi" + ], + "license": null + }, + "src/pubsub/PubSubStorage.sol": { + "keccak256": "0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b", + "urls": [ + "bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e", + "dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL" + ], + "license": null + }, + "src/pubsub/TelepathyPubSub.sol": { + "keccak256": "0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61", + "urls": [ + "bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241", + "dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG" + ], + "license": null + }, + "src/pubsub/TelepathyPublisher.sol": { + "keccak256": "0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c", + "urls": [ + "bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde", + "dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk" + ], + "license": null + }, + "src/pubsub/TelepathySubscriber.sol": { + "keccak256": "0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd", + "urls": [ + "bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4", + "dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3" + ], + "license": null + }, + "src/pubsub/interfaces/IPubSub.sol": { + "keccak256": "0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c", + "urls": [ + "bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a", + "dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt" + ], + "license": null + }, + "src/pubsub/interfaces/ISubscriptionReceiver.sol": { + "keccak256": "0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c", + "urls": [ + "bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb", + "dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx" + ], + "license": null + }, + "src/pubsub/interfaces/SubscriptionReceiver.sol": { + "keccak256": "0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412", + "urls": [ + "bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9", + "dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "examples/pubsub/gnosis/TelepathyValidator.sol", + "id": 2860, + "exportedSymbols": { + "IBasicHomeAMB": [ + 2859 + ], + "Ownable": [ + 31597 + ], + "SubscriptionReceiver": [ + 49286 + ], + "TelepathyPubSub": [ + 48516 + ], + "TelepathyValidator": [ + 2853 + ] + }, + "nodeType": "SourceUnit", + "src": "0:3719:12", + "nodes": [ + { + "id": 2618, + "nodeType": "PragmaDirective", + "src": "0:24:12", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".16" + ] + }, + { + "id": 2620, + "nodeType": "ImportDirective", + "src": "26:63:12", + "nodes": [], + "absolutePath": "src/pubsub/TelepathyPubSub.sol", + "file": "src/pubsub/TelepathyPubSub.sol", + "nameLocation": "-1:-1:-1", + "scope": 2860, + "sourceUnit": 48517, + "symbolAliases": [ + { + "foreign": { + "id": 2619, + "name": "TelepathyPubSub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48516, + "src": "34:15:12", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 2622, + "nodeType": "ImportDirective", + "src": "90:84:12", + "nodes": [], + "absolutePath": "src/pubsub/interfaces/SubscriptionReceiver.sol", + "file": "src/pubsub/interfaces/SubscriptionReceiver.sol", + "nameLocation": "-1:-1:-1", + "scope": 2860, + "sourceUnit": 49287, + "symbolAliases": [ + { + "foreign": { + "id": 2621, + "name": "SubscriptionReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49286, + "src": "98:20:12", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 2624, + "nodeType": "ImportDirective", + "src": "175:66:12", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "file": "openzeppelin-contracts/access/Ownable.sol", + "nameLocation": "-1:-1:-1", + "scope": 2860, + "sourceUnit": 31598, + "symbolAliases": [ + { + "foreign": { + "id": 2623, + "name": "Ownable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31597, + "src": "183:7:12", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 2853, + "nodeType": "ContractDefinition", + "src": "516:3107:12", + "nodes": [ + { + "id": 2637, + "nodeType": "EventDefinition", + "src": "583:78:12", + "nodes": [], + "anonymous": false, + "eventSelector": "1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa", + "name": "AffirmationHandled", + "nameLocation": "589:18:12", + "parameters": { + "id": 2636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2631, + "indexed": true, + "mutability": "mutable", + "name": "messageId", + "nameLocation": "624:9:12", + "nodeType": "VariableDeclaration", + "scope": 2637, + "src": "608:25:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2630, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "608:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2633, + "indexed": false, + "mutability": "mutable", + "name": "header", + "nameLocation": "641:6:12", + "nodeType": "VariableDeclaration", + "scope": 2637, + "src": "635:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2632, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "635:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2635, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nameLocation": "655:4:12", + "nodeType": "VariableDeclaration", + "scope": 2637, + "src": "649:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2634, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "649:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "607:53:12" + } + }, + { + "id": 2641, + "nodeType": "ErrorDefinition", + "src": "667:47:12", + "nodes": [], + "errorSelector": "950ae30c", + "name": "InvalidSourceChain", + "nameLocation": "673:18:12", + "parameters": { + "id": 2640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2639, + "mutability": "mutable", + "name": "sourceChainId", + "nameLocation": "699:13:12", + "nodeType": "VariableDeclaration", + "scope": 2641, + "src": "692:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2638, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "692:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "691:22:12" + } + }, + { + "id": 2645, + "nodeType": "ErrorDefinition", + "src": "719:50:12", + "nodes": [], + "errorSelector": "98785edb", + "name": "InvalidSourceAddress", + "nameLocation": "725:20:12", + "parameters": { + "id": 2644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2643, + "mutability": "mutable", + "name": "sourceAddress", + "nameLocation": "754:13:12", + "nodeType": "VariableDeclaration", + "scope": 2645, + "src": "746:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "746:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "745:23:12" + } + }, + { + "id": 2649, + "nodeType": "ErrorDefinition", + "src": "774:31:12", + "nodes": [], + "errorSelector": "fb77f7f2", + "name": "InvalidSlot", + "nameLocation": "780:11:12", + "parameters": { + "id": 2648, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2647, + "mutability": "mutable", + "name": "slot", + "nameLocation": "799:4:12", + "nodeType": "VariableDeclaration", + "scope": 2649, + "src": "792:11:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2646, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "792:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "791:13:12" + } + }, + { + "id": 2653, + "nodeType": "ErrorDefinition", + "src": "810:52:12", + "nodes": [], + "errorSelector": "adc1a22b", + "name": "InvalidSubscriptionId", + "nameLocation": "816:21:12", + "parameters": { + "id": 2652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2651, + "mutability": "mutable", + "name": "subscriptionId", + "nameLocation": "846:14:12", + "nodeType": "VariableDeclaration", + "scope": 2653, + "src": "838:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2650, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "838:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "837:24:12" + } + }, + { + "id": 2659, + "nodeType": "VariableDeclaration", + "src": "1054:94:12", + "nodes": [], + "constant": true, + "documentation": { + "id": 2654, + "nodeType": "StructuredDocumentation", + "src": "868:181:12", + "text": "@dev Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData)\n where the encodedData is the ABI encoded message from the Foreign AMB." + }, + "mutability": "constant", + "name": "AFFIRMATION_EVENT_SIG", + "nameLocation": "1071:21:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2655, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1054:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5573657252657175657374466f7241666669726d6174696f6e28627974657333322c627974657329", + "id": 2657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1105:42:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58", + "typeString": "literal_string \"UserRequestForAffirmation(bytes32,bytes)\"" + }, + "value": "UserRequestForAffirmation(bytes32,bytes)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58", + "typeString": "literal_string \"UserRequestForAffirmation(bytes32,bytes)\"" + } + ], + "id": 2656, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1095:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1095:53:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "id": 2661, + "nodeType": "VariableDeclaration", + "src": "1155:38:12", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "EVENT_SOURCE_CHAIN_ID", + "nameLocation": "1172:21:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2660, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1155:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "id": 2663, + "nodeType": "VariableDeclaration", + "src": "1199:38:12", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "EVENT_SOURCE_ADDRESS", + "nameLocation": "1217:20:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1199:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "id": 2665, + "nodeType": "VariableDeclaration", + "src": "1243:27:12", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "START_SLOT", + "nameLocation": "1260:10:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2664, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1243:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "id": 2667, + "nodeType": "VariableDeclaration", + "src": "1276:25:12", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "END_SLOT", + "nameLocation": "1293:8:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2666, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1276:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "id": 2670, + "nodeType": "VariableDeclaration", + "src": "1307:32:12", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "HOME_AMB", + "nameLocation": "1331:8:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + }, + "typeName": { + "id": 2669, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2668, + "name": "IBasicHomeAMB", + "nameLocations": [ + "1307:13:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2859, + "src": "1307:13:12" + }, + "referencedDeclaration": 2859, + "src": "1307:13:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + } + }, + "visibility": "internal" + }, + { + "id": 2672, + "nodeType": "VariableDeclaration", + "src": "1346:29:12", + "nodes": [], + "constant": false, + "functionSelector": "09c1ba2e", + "mutability": "mutable", + "name": "subscriptionId", + "nameLocation": "1361:14:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2671, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1346:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "id": 2674, + "nodeType": "VariableDeclaration", + "src": "1381:31:12", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "executeAffirmationsEnabled", + "nameLocation": "1386:26:12", + "scope": 2853, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2673, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1381:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "id": 2721, + "nodeType": "FunctionDefinition", + "src": "1419:499:12", + "nodes": [], + "body": { + "id": 2720, + "nodeType": "Block", + "src": "1675:243:12", + "nodes": [], + "statements": [ + { + "expression": { + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2694, + "name": "EVENT_SOURCE_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "1685:21:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2695, + "name": "_sourceChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2678, + "src": "1709:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "1685:38:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 2697, + "nodeType": "ExpressionStatement", + "src": "1685:38:12" + }, + { + "expression": { + "id": 2700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2698, + "name": "EVENT_SOURCE_ADDRESS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "1733:20:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2699, + "name": "_sourceAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2680, + "src": "1756:14:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1733:37:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2701, + "nodeType": "ExpressionStatement", + "src": "1733:37:12" + }, + { + "expression": { + "id": 2704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2702, + "name": "START_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "1780:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2703, + "name": "_startSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2682, + "src": "1793:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "1780:23:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 2705, + "nodeType": "ExpressionStatement", + "src": "1780:23:12" + }, + { + "expression": { + "id": 2708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2706, + "name": "END_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "1813:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2707, + "name": "_endSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2684, + "src": "1824:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "1813:19:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 2709, + "nodeType": "ExpressionStatement", + "src": "1813:19:12" + }, + { + "expression": { + "id": 2714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2710, + "name": "HOME_AMB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2670, + "src": "1842:8:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2712, + "name": "_homeAMB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2686, + "src": "1867:8:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2711, + "name": "IBasicHomeAMB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2859, + "src": "1853:13:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBasicHomeAMB_$2859_$", + "typeString": "type(contract IBasicHomeAMB)" + } + }, + "id": 2713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1853:23:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + } + }, + "src": "1842:34:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + } + }, + "id": 2715, + "nodeType": "ExpressionStatement", + "src": "1842:34:12" + }, + { + "expression": { + "arguments": [ + { + "id": 2717, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2688, + "src": "1904:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2716, + "name": "transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31576, + "src": "1886:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1886:25:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2719, + "nodeType": "ExpressionStatement", + "src": "1886:25:12" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 2691, + "name": "_telepathyPubSub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2676, + "src": "1657:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2692, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 2690, + "name": "SubscriptionReceiver", + "nameLocations": [ + "1636:20:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49286, + "src": "1636:20:12" + }, + "nodeType": "ModifierInvocation", + "src": "1636:38:12" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 2689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2676, + "mutability": "mutable", + "name": "_telepathyPubSub", + "nameLocation": "1448:16:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1440:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1440:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2678, + "mutability": "mutable", + "name": "_sourceChainId", + "nameLocation": "1481:14:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1474:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2677, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1474:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2680, + "mutability": "mutable", + "name": "_sourceAddress", + "nameLocation": "1513:14:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1505:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1505:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2682, + "mutability": "mutable", + "name": "_startSlot", + "nameLocation": "1544:10:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1537:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2681, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1537:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2684, + "mutability": "mutable", + "name": "_endSlot", + "nameLocation": "1571:8:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1564:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2683, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1564:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2686, + "mutability": "mutable", + "name": "_homeAMB", + "nameLocation": "1597:8:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1589:16:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1589:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2688, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "1623:6:12", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "1615:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2687, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1615:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1430:205:12" + }, + "returnParameters": { + "id": 2693, + "nodeType": "ParameterList", + "parameters": [], + "src": "1675:0:12" + }, + "scope": 2853, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 2732, + "nodeType": "FunctionDefinition", + "src": "1924:129:12", + "nodes": [], + "body": { + "id": 2731, + "nodeType": "Block", + "src": "1980:73:12", + "nodes": [], + "statements": [ + { + "expression": { + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2726, + "name": "executeAffirmationsEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2674, + "src": "1990:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2019:27:12", + "subExpression": { + "id": 2727, + "name": "executeAffirmationsEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2674, + "src": "2020:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1990:56:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2730, + "nodeType": "ExpressionStatement", + "src": "1990:56:12" + } + ] + }, + "functionSelector": "a27c0863", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2724, + "kind": "modifierInvocation", + "modifierName": { + "id": 2723, + "name": "onlyOwner", + "nameLocations": [ + "1970:9:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31516, + "src": "1970:9:12" + }, + "nodeType": "ModifierInvocation", + "src": "1970:9:12" + } + ], + "name": "toggleExecuteAffirmations", + "nameLocation": "1933:25:12", + "parameters": { + "id": 2722, + "nodeType": "ParameterList", + "parameters": [], + "src": "1958:2:12" + }, + "returnParameters": { + "id": 2725, + "nodeType": "ParameterList", + "parameters": [], + "src": "1980:0:12" + }, + "scope": 2853, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 2757, + "nodeType": "FunctionDefinition", + "src": "2059:353:12", + "nodes": [], + "body": { + "id": 2756, + "nodeType": "Block", + "src": "2135:277:12", + "nodes": [], + "statements": [ + { + "expression": { + "id": 2752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2739, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2672, + "src": "2145:14:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2742, + "name": "EVENT_SOURCE_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "2201:21:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "id": 2743, + "name": "EVENT_SOURCE_ADDRESS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "2236:20:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 2746, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2278:4:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyValidator_$2853", + "typeString": "contract TelepathyValidator" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TelepathyValidator_$2853", + "typeString": "contract TelepathyValidator" + } + ], + "id": 2745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2270:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2270:7:12", + "typeDescriptions": {} + } + }, + "id": 2747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2270:13:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2748, + "name": "AFFIRMATION_EVENT_SIG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2659, + "src": "2297:21:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2749, + "name": "START_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "2332:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 2750, + "name": "END_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "2356:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "id": 2740, + "name": "telepathyPubSub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49210, + "src": "2162:15:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TelepathyPubSub_$48516", + "typeString": "contract TelepathyPubSub" + } + }, + "id": 2741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2178:9:12", + "memberName": "subscribe", + "nodeType": "MemberAccess", + "referencedDeclaration": 49013, + "src": "2162:25:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_address_$_t_address_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bytes32_$", + "typeString": "function (uint32,address,address,bytes32,uint64,uint64) external returns (bytes32)" + } + }, + "id": 2751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2162:212:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2145:229:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2753, + "nodeType": "ExpressionStatement", + "src": "2145:229:12" + }, + { + "expression": { + "id": 2754, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2672, + "src": "2391:14:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2738, + "id": 2755, + "nodeType": "Return", + "src": "2384:21:12" + } + ] + }, + "functionSelector": "0908a386", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2735, + "kind": "modifierInvocation", + "modifierName": { + "id": 2734, + "name": "onlyOwner", + "nameLocations": [ + "2107:9:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31516, + "src": "2107:9:12" + }, + "nodeType": "ModifierInvocation", + "src": "2107:9:12" + } + ], + "name": "subscribeToAffirmationEvent", + "nameLocation": "2068:27:12", + "parameters": { + "id": 2733, + "nodeType": "ParameterList", + "parameters": [], + "src": "2095:2:12" + }, + "returnParameters": { + "id": 2738, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2737, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "2126:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2736, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2126:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2125:9:12" + }, + "scope": 2853, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 2852, + "nodeType": "FunctionDefinition", + "src": "2636:985:12", + "nodes": [], + "body": { + "id": 2851, + "nodeType": "Block", + "src": "2875:746:12", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 2777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2775, + "name": "_sourceChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2762, + "src": "2889:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2776, + "name": "EVENT_SOURCE_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "2907:21:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "2889:39:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2783, + "nodeType": "IfStatement", + "src": "2885:111:12", + "trueBody": { + "id": 2782, + "nodeType": "Block", + "src": "2930:66:12", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2779, + "name": "_sourceChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2762, + "src": "2970:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 2778, + "name": "InvalidSourceChain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2641, + "src": "2951:18:12", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint32_$returns$__$", + "typeString": "function (uint32) pure" + } + }, + "id": 2780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2951:34:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2781, + "nodeType": "RevertStatement", + "src": "2944:41:12" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2784, + "name": "_sourceAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2764, + "src": "3010:14:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2785, + "name": "EVENT_SOURCE_ADDRESS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "3028:20:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3010:38:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2792, + "nodeType": "IfStatement", + "src": "3006:112:12", + "trueBody": { + "id": 2791, + "nodeType": "Block", + "src": "3050:68:12", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2788, + "name": "_sourceAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2764, + "src": "3092:14:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2787, + "name": "InvalidSourceAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2645, + "src": "3071:20:12", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3071:36:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2790, + "nodeType": "RevertStatement", + "src": "3064:43:12" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 2795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2793, + "name": "_slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2766, + "src": "3132:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2794, + "name": "START_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "3140:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "3132:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 2798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2796, + "name": "END_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "3155:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3167:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3155:13:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 2801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2799, + "name": "_slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2766, + "src": "3172:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 2800, + "name": "END_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "3180:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "3172:16:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3155:33:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2803, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3154:35:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3132:57:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2810, + "nodeType": "IfStatement", + "src": "3128:113:12", + "trueBody": { + "id": 2809, + "nodeType": "Block", + "src": "3191:50:12", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2806, + "name": "_slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2766, + "src": "3224:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 2805, + "name": "InvalidSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2649, + "src": "3212:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint64_$returns$__$", + "typeString": "function (uint64) pure" + } + }, + "id": 2807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3212:18:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2808, + "nodeType": "RevertStatement", + "src": "3205:25:12" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2811, + "name": "_subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2760, + "src": "3255:15:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2812, + "name": "subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2672, + "src": "3274:14:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3255:33:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2819, + "nodeType": "IfStatement", + "src": "3251:109:12", + "trueBody": { + "id": 2818, + "nodeType": "Block", + "src": "3290:70:12", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2815, + "name": "_subscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2760, + "src": "3333:15:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2814, + "name": "InvalidSubscriptionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2653, + "src": "3311:21:12", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 2816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3311:38:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2817, + "nodeType": "RevertStatement", + "src": "3304:45:12" + } + ] + } + }, + { + "assignments": [ + 2821, + 2823 + ], + "declarations": [ + { + "constant": false, + "id": 2821, + "mutability": "mutable", + "name": "header", + "nameLocation": "3384:6:12", + "nodeType": "VariableDeclaration", + "scope": 2851, + "src": "3371:19:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2820, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3371:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2823, + "mutability": "mutable", + "name": "data", + "nameLocation": "3405:4:12", + "nodeType": "VariableDeclaration", + "scope": 2851, + "src": "3392:17:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2822, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3392:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2833, + "initialValue": { + "arguments": [ + { + "id": 2826, + "name": "eventdata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2771, + "src": "3424:9:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 2828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3436:5:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2827, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3436:5:12", + "typeDescriptions": {} + } + }, + { + "id": 2830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3443:5:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2829, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3443:5:12", + "typeDescriptions": {} + } + } + ], + "id": 2831, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3435:14:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", + "typeString": "tuple(type(bytes storage pointer),type(bytes storage pointer))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", + "typeString": "tuple(type(bytes storage pointer),type(bytes storage pointer))" + } + ], + "expression": { + "id": 2824, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3413:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2825, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3417:6:12", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3413:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3413:37:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bytes memory,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3370:80:12" + }, + { + "condition": { + "id": 2834, + "name": "executeAffirmationsEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2674, + "src": "3465:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2842, + "nodeType": "IfStatement", + "src": "3461:90:12", + "trueBody": { + "id": 2841, + "nodeType": "Block", + "src": "3493:58:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2838, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2823, + "src": "3535:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 2835, + "name": "HOME_AMB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2670, + "src": "3507:8:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", + "typeString": "contract IBasicHomeAMB" + } + }, + "id": 2837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3516:18:12", + "memberName": "executeAffirmation", + "nodeType": "MemberAccess", + "referencedDeclaration": 2858, + "src": "3507:27:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) external" + } + }, + "id": 2839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3507:33:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2840, + "nodeType": "ExpressionStatement", + "src": "3507:33:12" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "baseExpression": { + "id": 2844, + "name": "eventTopics", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2769, + "src": "3585:11:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2846, + "indexExpression": { + "hexValue": "31", + "id": 2845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3597:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3585:14:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2847, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2821, + "src": "3601:6:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2848, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2823, + "src": "3609:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2843, + "name": "AffirmationHandled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "3566:18:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory,bytes memory)" + } + }, + "id": 2849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3566:48:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2850, + "nodeType": "EmitStatement", + "src": "3561:53:12" + } + ] + }, + "baseFunctions": [ + 49285 + ], + "documentation": { + "id": 2758, + "nodeType": "StructuredDocumentation", + "src": "2418:213:12", + "text": "@notice Handle the published affirmation event by executing the affirmation in the Home AMB.\n @dev We decode 'abi.encodePacked(header, _data)' to extract just the encoded message '_data' from the event." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "handlePublishImpl", + "nameLocation": "2645:17:12", + "overrides": { + "id": 2773, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2866:8:12" + }, + "parameters": { + "id": 2772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2760, + "mutability": "mutable", + "name": "_subscriptionId", + "nameLocation": "2680:15:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2672:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2759, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2672:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2762, + "mutability": "mutable", + "name": "_sourceChainId", + "nameLocation": "2712:14:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2705:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2761, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2705:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2764, + "mutability": "mutable", + "name": "_sourceAddress", + "nameLocation": "2744:14:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2736:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2763, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2736:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2766, + "mutability": "mutable", + "name": "_slot", + "nameLocation": "2775:5:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2768:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2765, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2768:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2769, + "mutability": "mutable", + "name": "eventTopics", + "nameLocation": "2807:11:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2790:28:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2767, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2790:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2768, + "nodeType": "ArrayTypeName", + "src": "2790:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2771, + "mutability": "mutable", + "name": "eventdata", + "nameLocation": "2841:9:12", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "2828:22:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2770, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2828:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2662:194:12" + }, + "returnParameters": { + "id": 2774, + "nodeType": "ParameterList", + "parameters": [], + "src": "2875:0:12" + }, + "scope": 2853, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2626, + "name": "SubscriptionReceiver", + "nameLocations": [ + "547:20:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49286, + "src": "547:20:12" + }, + "id": 2627, + "nodeType": "InheritanceSpecifier", + "src": "547:20:12" + }, + { + "baseName": { + "id": 2628, + "name": "Ownable", + "nameLocations": [ + "569:7:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31597, + "src": "569:7:12" + }, + "id": 2629, + "nodeType": "InheritanceSpecifier", + "src": "569:7:12" + } + ], + "canonicalName": "TelepathyValidator", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2625, + "nodeType": "StructuredDocumentation", + "src": "243:273:12", + "text": "@title TelepathyValidator\n @author Succinct Labs\n @notice A validator for the ETH (Foreign) -> Gnosis (Home) bridge that relies on the Telepathy Protocol\n for proof of consensus in verifying the UserRequestForAffirmation event was emitted on Ethereum." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 2853, + 31597, + 35292, + 49286, + 49195 + ], + "name": "TelepathyValidator", + "nameLocation": "525:18:12", + "scope": 2860, + "usedErrors": [ + 2641, + 2645, + 2649, + 2653, + 49207 + ] + }, + { + "id": 2859, + "nodeType": "ContractDefinition", + "src": "3625:93:12", + "nodes": [ + { + "id": 2858, + "nodeType": "FunctionDefinition", + "src": "3655:61:12", + "nodes": [], + "functionSelector": "e7a2c01f", + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "executeAffirmation", + "nameLocation": "3664:18:12", + "parameters": { + "id": 2856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2855, + "mutability": "mutable", + "name": "message", + "nameLocation": "3698:7:12", + "nodeType": "VariableDeclaration", + "scope": 2858, + "src": "3683:22:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2854, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3683:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3682:24:12" + }, + "returnParameters": { + "id": 2857, + "nodeType": "ParameterList", + "parameters": [], + "src": "3715:0:12" + }, + "scope": 2859, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [], + "canonicalName": "IBasicHomeAMB", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "linearizedBaseContracts": [ + 2859 + ], + "name": "IBasicHomeAMB", + "nameLocation": "3635:13:12", + "scope": 2860, + "usedErrors": [] + } + ] + }, + "id": 12 +} \ No newline at end of file diff --git a/out/Timelock.sol/Timelock.json b/out/Timelock.sol/Timelock.json new file mode 100644 index 0000000..c0631b9 --- /dev/null +++ b/out/Timelock.sol/Timelock.json @@ -0,0 +1,2330 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "minDelay", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "proposers", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "executors", + "type": "address[]" + }, + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "CallExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "CallScheduled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "Cancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldDuration", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newDuration", + "type": "uint256" + } + ], + "name": "MinDelayChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "CANCELLER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EXECUTOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PROPOSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TIMELOCK_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "cancel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "payload", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "executeBatch", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getMinDelay", + "outputs": [ + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "getTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "hashOperation", + "outputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "hashOperationBatch", + "outputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperation", + "outputs": [ + { + "internalType": "bool", + "name": "registered", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationDone", + "outputs": [ + { + "internalType": "bool", + "name": "done", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationPending", + "outputs": [ + { + "internalType": "bool", + "name": "pending", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationReady", + "outputs": [ + { + "internalType": "bool", + "name": "ready", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "schedule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "scheduleBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newDelay", + "type": "uint256" + } + ], + "name": "updateDelay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": { + "object": "0x60806040523480156200001157600080fd5b506040516200231038038062002310833981016040819052620000349162000410565b8383838362000053600080516020620022908339815191528062000235565b6200007d600080516020620022b08339815191526000805160206200229083398151915262000235565b620000a7600080516020620022d08339815191526000805160206200229083398151915262000235565b620000d1600080516020620022f08339815191526000805160206200229083398151915262000235565b620000ec600080516020620022908339815191523062000280565b6001600160a01b03811615620001175762000117600080516020620022908339815191528262000280565b60005b83518110156200019d5762000161600080516020620022b08339815191528583815181106200014d576200014d62000497565b60200260200101516200028060201b60201c565b6200018a600080516020620022f08339815191528583815181106200014d576200014d62000497565b6200019581620004ad565b90506200011a565b5060005b8251811015620001e757620001d4600080516020620022d08339815191528483815181106200014d576200014d62000497565b620001df81620004ad565b9050620001a1565b5060028490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15050505050505050620004d5565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6200028c828262000290565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200028c576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002ec3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200035e57600080fd5b919050565b600082601f8301126200037557600080fd5b815160206001600160401b038083111562000394576200039462000330565b8260051b604051601f19603f83011681018181108482111715620003bc57620003bc62000330565b604052938452858101830193838101925087851115620003db57600080fd5b83870191505b848210156200040557620003f58262000346565b83529183019190830190620003e1565b979650505050505050565b600080600080608085870312156200042757600080fd5b845160208601519094506001600160401b03808211156200044757600080fd5b620004558883890162000363565b945060408701519150808211156200046c57600080fd5b506200047b8782880162000363565b9250506200048c6060860162000346565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b600060018201620004ce57634e487b7160e01b600052601160045260246000fd5b5060010190565b611dab80620004e56000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113c0565b6105f6565b005b3480156101f557600080fd5b50610209610204366004611434565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a236600461145e565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c9565b61076b565b3480156102d357600080fd5b506102f26102e2366004611597565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c9565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c9565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115fe565b610791565b34801561039857600080fd5b506102096103a73660046114c9565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115fe565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c9565b610857565b3480156103f857600080fd5b506101e76104073660046114c9565b61086d565b34801561041857600080fd5b5061025261042736600461145e565b610911565b34801561043857600080fd5b506101e761044736600461166e565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115fe565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b5061025261050436600461171f565b610acb565b34801561051557600080fd5b506102f2610524366004611846565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c9565b610b10565b34801561056157600080fd5b506102526105703660046114c9565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115fe565b610be5565b6101e76105b036600461171f565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118ef565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106789695949392919061197c565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f1e565b61071888888888610fba565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b9565b60405180910390a36107618161108d565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110c6565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610853828261114a565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e9695949392919061197c565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119eb565b8885146109b85760405162461bcd60e51b8152600401610840906119eb565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a2e565b9050602002016020810190610a2b9190611a44565b8d8d86818110610a3d57610a3d611a2e565b905060200201358c8c87818110610a5657610a56611a2e565b9050602002810190610a689190611a5f565b8c8b604051610a7c9695949392919061197c565b60405180910390a3610a8d81611abb565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b65565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b6838361114a565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119eb565b878414610c825760405162461bcd60e51b8152600401610840906119eb565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f1e565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a2e565b9050602002016020810190610cd49190611a44565b905060008a8a84818110610cea57610cea611a2e565b9050602002013590503660008a8a86818110610d0857610d08611a2e565b9050602002810190610d1a9190611a5f565b91509150610d2a84848484610fba565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b9565b60405180910390a35050505080610d7790611abb565b9050610ca3565b50610d888161108d565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c06565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610edc816111af565b610ee78360206111c1565b604051602001610ef8929190611c3d565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cb2565b610f278261076b565b610f435760405162461bcd60e51b815260040161084090611ce5565b801580610f5f5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fd7929190611d2f565b60006040518083038185875af1925050503d8060008114611014576040519150601f19603f3d011682016040523d82523d6000602084013e611019565b606091505b50509050806110865760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110968161076b565b6110b25760405162461bcd60e51b815260040161084090611ce5565b600090815260016020819052604090912055565b6110d08282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111063390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6111548282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606106b06001600160a01b03831660145b606060006111d0836002611d3f565b6111db906002611c06565b6001600160401b038111156111f2576111f26114e2565b6040519080825280601f01601f19166020018201604052801561121c576020820181803683370190505b509050600360fc1b8160008151811061123757611237611a2e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061126657611266611a2e565b60200101906001600160f81b031916908160001a905350600061128a846002611d3f565b611295906001611c06565b90505b600181111561130d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c9576112c9611a2e565b1a60f81b8282815181106112df576112df611a2e565b60200101906001600160f81b031916908160001a90535060049490941c9361130681611d5e565b9050611298565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461137357600080fd5b919050565b60008083601f84011261138a57600080fd5b5081356001600160401b038111156113a157600080fd5b6020830191508360208285010111156113b957600080fd5b9250929050565b600080600080600080600060c0888a0312156113db57600080fd5b6113e48861135c565b96506020880135955060408801356001600160401b0381111561140657600080fd5b6114128a828b01611378565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561144657600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147757600080fd5b6114808761135c565b95506020870135945060408701356001600160401b038111156114a257600080fd5b6114ae89828a01611378565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114db57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611520576115206114e2565b604052919050565b600082601f83011261153957600080fd5b81356001600160401b03811115611552576115526114e2565b611565601f8201601f19166020016114f8565b81815284602083860101111561157a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115ad57600080fd5b6115b68561135c565b93506115c46020860161135c565b92506040850135915060608501356001600160401b038111156115e657600080fd5b6115f287828801611528565b91505092959194509250565b6000806040838503121561161157600080fd5b823591506116216020840161135c565b90509250929050565b60008083601f84011261163c57600080fd5b5081356001600160401b0381111561165357600080fd5b6020830191508360208260051b85010111156113b957600080fd5b600080600080600080600080600060c08a8c03121561168c57600080fd5b89356001600160401b03808211156116a357600080fd5b6116af8d838e0161162a565b909b50995060208c01359150808211156116c857600080fd5b6116d48d838e0161162a565b909950975060408c01359150808211156116ed57600080fd5b506116fa8c828d0161162a565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173b57600080fd5b88356001600160401b038082111561175257600080fd5b61175e8c838d0161162a565b909a50985060208b013591508082111561177757600080fd5b6117838c838d0161162a565b909850965060408b013591508082111561179c57600080fd5b506117a98b828c0161162a565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d857600080fd5b813560206001600160401b038211156117f3576117f36114e2565b8160051b6118028282016114f8565b928352848101820192828101908785111561181c57600080fd5b83870192505b8483101561183b57823582529183019190830190611822565b979650505050505050565b600080600080600060a0868803121561185e57600080fd5b6118678661135c565b94506118756020870161135c565b935060408601356001600160401b038082111561189157600080fd5b61189d89838a016117c7565b945060608801359150808211156118b357600080fd5b6118bf89838a016117c7565b935060808801359150808211156118d557600080fd5b506118e288828901611528565b9150509295509295909350565b600080600080600060a0868803121561190757600080fd5b6119108661135c565b945061191e6020870161135c565b9350604086013592506060860135915060808601356001600160401b0381111561194757600080fd5b6118e288828901611528565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006119a460a083018688611953565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119e1606083018486611953565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a5657600080fd5b61078a8261135c565b6000808335601e19843603018112611a7657600080fd5b8301803591506001600160401b03821115611a9057600080fd5b6020019150368190038213156113b957600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611acd57611acd611aa5565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b585782840389528135601e19883603018112611b0f57600080fd5b870185810190356001600160401b03811115611b2a57600080fd5b803603821315611b3957600080fd5b611b44868284611953565b9a87019a9550505090840190600101611aee565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba6576001600160a01b03611b918461135c565b16825260209283019290910190600101611b78565b5083810360208501528881526001600160fb1b03891115611bc657600080fd5b8860051b9150818a60208301370182810360209081016040850152611bee9082018789611ad4565b60608401959095525050608001529695505050505050565b808201808211156106b0576106b0611aa5565b60005b83811015611c34578181015183820152602001611c1c565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c75816017850160208801611c19565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611ca6816028840160208801611c19565b01602801949350505050565b6020815260008251806020840152611cd1816040850160208701611c19565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d5957611d59611aa5565b500290565b600081611d6d57611d6d611aa5565b50600019019056fea2646970667358221220b844616ba7755911759550aa7ec2f72326fc02dcbea65f7b104671736ad141d464736f6c634300081000335f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783", + "sourceMap": "119:616:111:-:0;;;534:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;692:8;702:9;713;724:5;3238:55:50;-1:-1:-1;;;;;;;;;;;1162:32:50;3238:13;:55::i;:::-;3303:49;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3303:13:50;:49::i;:::-;3362;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3362:13:50;:49::i;:::-;3421:50;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3421:13:50;:50::i;:::-;3513:46;-1:-1:-1;;;;;;;;;;;3553:4:50;3513:10;:46::i;:::-;-1:-1:-1;;;;;3600:19:50;;;3596:88;;3635:38;-1:-1:-1;;;;;;;;;;;3667:5:50;3635:10;:38::i;:::-;3744:9;3739:165;3763:9;:16;3759:1;:20;3739:165;;;3800:39;-1:-1:-1;;;;;;;;;;;3826:9:50;3836:1;3826:12;;;;;;;;:::i;:::-;;;;;;;3800:10;;;:39;;:::i;:::-;3853:40;-1:-1:-1;;;;;;;;;;;3880:9:50;3890:1;3880:12;;;;;;;;:::i;3853:40::-;3781:3;;;:::i;:::-;;;3739:165;;;;3949:9;3944:111;3968:9;:16;3964:1;:20;3944:111;;;4005:39;-1:-1:-1;;;;;;;;;;;4031:9:50;4041:1;4031:12;;;;;;;;:::i;4005:39::-;3986:3;;;:::i;:::-;;;3944:111;;;-1:-1:-1;4065:9:50;:20;;;4100:27;;;4115:1;2573:25:145;;2629:2;2614:18;;2607:34;;;4100:27:50;;2546:18:145;4100:27:50;;;;;;;3089:1045;;;;534:199:111;;;;119:616;;7046:247:47;7129:25;4478:12;;;;;;;;;;;:22;;;;7185:34;;;;7234:52;;4478:22;;7185:34;;4478:22;;:12;;7234:52;;7129:25;7234:52;7119:174;7046:247;;:::o;6811:110::-;6889:25;6900:4;6906:7;6889:10;:25::i;:::-;6811:110;;:::o;7461:233::-;2981:4;3004:12;;;;;;;;;;;-1:-1:-1;;;;;3004:29:47;;;;;;;;;;;;7539:149;;7582:6;:12;;;;;;;;;;;-1:-1:-1;;;;;7582:29:47;;;;;;;;;:36;;-1:-1:-1;;7582:36:47;7614:4;7582:36;;;7664:12;719:10:68;;640:96;7664:12:47;-1:-1:-1;;;;;7637:40:47;7655:7;-1:-1:-1;;;;;7637:40:47;7649:4;7637:40;;;;;;;;;;7461:233;;:::o;14:127:145:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:177;225:13;;-1:-1:-1;;;;;267:31:145;;257:42;;247:70;;313:1;310;303:12;247:70;146:177;;;:::o;328:923::-;393:5;446:3;439:4;431:6;427:17;423:27;413:55;;464:1;461;454:12;413:55;487:13;;519:4;-1:-1:-1;;;;;572:10:145;;;569:36;;;585:18;;:::i;:::-;631:2;628:1;624:10;663:2;657:9;726:2;722:7;717:2;713;709:11;705:25;697:6;693:38;781:6;769:10;766:22;761:2;749:10;746:18;743:46;740:72;;;792:18;;:::i;:::-;828:2;821:22;878:18;;;954:15;;;950:24;;;912:15;;;;-1:-1:-1;986:15:145;;;983:35;;;1014:1;1011;1004:12;983:35;1050:2;1042:6;1038:15;1027:26;;1062:159;1078:6;1073:3;1070:15;1062:159;;;1144:34;1174:3;1144:34;:::i;:::-;1132:47;;1199:12;;;;1095;;;;1062:159;;;1239:6;328:923;-1:-1:-1;;;;;;;328:923:145:o;1256:761::-;1403:6;1411;1419;1427;1480:3;1468:9;1459:7;1455:23;1451:33;1448:53;;;1497:1;1494;1487:12;1448:53;1520:16;;1580:2;1565:18;;1559:25;1520:16;;-1:-1:-1;;;;;;1633:14:145;;;1630:34;;;1660:1;1657;1650:12;1630:34;1683:72;1747:7;1738:6;1727:9;1723:22;1683:72;:::i;:::-;1673:82;;1801:2;1790:9;1786:18;1780:25;1764:41;;1830:2;1820:8;1817:16;1814:36;;;1846:1;1843;1836:12;1814:36;;1869:74;1935:7;1924:8;1913:9;1909:24;1869:74;:::i;:::-;1859:84;;;1962:49;2007:2;1996:9;1992:18;1962:49;:::i;:::-;1952:59;;1256:761;;;;;;;:::o;2022:127::-;2083:10;2078:3;2074:20;2071:1;2064:31;2114:4;2111:1;2104:15;2138:4;2135:1;2128:15;2154:232;2193:3;2214:17;;;2211:140;;2273:10;2268:3;2264:20;2261:1;2254:31;2308:4;2305:1;2298:15;2336:4;2333:1;2326:15;2211:140;-1:-1:-1;2378:1:145;2367:13;;2154:232::o;2391:256::-;119:616:111;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113c0565b6105f6565b005b3480156101f557600080fd5b50610209610204366004611434565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a236600461145e565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c9565b61076b565b3480156102d357600080fd5b506102f26102e2366004611597565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c9565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c9565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115fe565b610791565b34801561039857600080fd5b506102096103a73660046114c9565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115fe565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c9565b610857565b3480156103f857600080fd5b506101e76104073660046114c9565b61086d565b34801561041857600080fd5b5061025261042736600461145e565b610911565b34801561043857600080fd5b506101e761044736600461166e565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115fe565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b5061025261050436600461171f565b610acb565b34801561051557600080fd5b506102f2610524366004611846565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c9565b610b10565b34801561056157600080fd5b506102526105703660046114c9565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115fe565b610be5565b6101e76105b036600461171f565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118ef565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106789695949392919061197c565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f1e565b61071888888888610fba565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b9565b60405180910390a36107618161108d565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110c6565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610853828261114a565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e9695949392919061197c565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119eb565b8885146109b85760405162461bcd60e51b8152600401610840906119eb565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a2e565b9050602002016020810190610a2b9190611a44565b8d8d86818110610a3d57610a3d611a2e565b905060200201358c8c87818110610a5657610a56611a2e565b9050602002810190610a689190611a5f565b8c8b604051610a7c9695949392919061197c565b60405180910390a3610a8d81611abb565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b65565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b6838361114a565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119eb565b878414610c825760405162461bcd60e51b8152600401610840906119eb565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f1e565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a2e565b9050602002016020810190610cd49190611a44565b905060008a8a84818110610cea57610cea611a2e565b9050602002013590503660008a8a86818110610d0857610d08611a2e565b9050602002810190610d1a9190611a5f565b91509150610d2a84848484610fba565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b9565b60405180910390a35050505080610d7790611abb565b9050610ca3565b50610d888161108d565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c06565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610edc816111af565b610ee78360206111c1565b604051602001610ef8929190611c3d565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cb2565b610f278261076b565b610f435760405162461bcd60e51b815260040161084090611ce5565b801580610f5f5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fd7929190611d2f565b60006040518083038185875af1925050503d8060008114611014576040519150601f19603f3d011682016040523d82523d6000602084013e611019565b606091505b50509050806110865760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110968161076b565b6110b25760405162461bcd60e51b815260040161084090611ce5565b600090815260016020819052604090912055565b6110d08282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111063390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6111548282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606106b06001600160a01b03831660145b606060006111d0836002611d3f565b6111db906002611c06565b6001600160401b038111156111f2576111f26114e2565b6040519080825280601f01601f19166020018201604052801561121c576020820181803683370190505b509050600360fc1b8160008151811061123757611237611a2e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061126657611266611a2e565b60200101906001600160f81b031916908160001a905350600061128a846002611d3f565b611295906001611c06565b90505b600181111561130d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c9576112c9611a2e565b1a60f81b8282815181106112df576112df611a2e565b60200101906001600160f81b031916908160001a90535060049490941c9361130681611d5e565b9050611298565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461137357600080fd5b919050565b60008083601f84011261138a57600080fd5b5081356001600160401b038111156113a157600080fd5b6020830191508360208285010111156113b957600080fd5b9250929050565b600080600080600080600060c0888a0312156113db57600080fd5b6113e48861135c565b96506020880135955060408801356001600160401b0381111561140657600080fd5b6114128a828b01611378565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561144657600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147757600080fd5b6114808761135c565b95506020870135945060408701356001600160401b038111156114a257600080fd5b6114ae89828a01611378565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114db57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611520576115206114e2565b604052919050565b600082601f83011261153957600080fd5b81356001600160401b03811115611552576115526114e2565b611565601f8201601f19166020016114f8565b81815284602083860101111561157a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115ad57600080fd5b6115b68561135c565b93506115c46020860161135c565b92506040850135915060608501356001600160401b038111156115e657600080fd5b6115f287828801611528565b91505092959194509250565b6000806040838503121561161157600080fd5b823591506116216020840161135c565b90509250929050565b60008083601f84011261163c57600080fd5b5081356001600160401b0381111561165357600080fd5b6020830191508360208260051b85010111156113b957600080fd5b600080600080600080600080600060c08a8c03121561168c57600080fd5b89356001600160401b03808211156116a357600080fd5b6116af8d838e0161162a565b909b50995060208c01359150808211156116c857600080fd5b6116d48d838e0161162a565b909950975060408c01359150808211156116ed57600080fd5b506116fa8c828d0161162a565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173b57600080fd5b88356001600160401b038082111561175257600080fd5b61175e8c838d0161162a565b909a50985060208b013591508082111561177757600080fd5b6117838c838d0161162a565b909850965060408b013591508082111561179c57600080fd5b506117a98b828c0161162a565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d857600080fd5b813560206001600160401b038211156117f3576117f36114e2565b8160051b6118028282016114f8565b928352848101820192828101908785111561181c57600080fd5b83870192505b8483101561183b57823582529183019190830190611822565b979650505050505050565b600080600080600060a0868803121561185e57600080fd5b6118678661135c565b94506118756020870161135c565b935060408601356001600160401b038082111561189157600080fd5b61189d89838a016117c7565b945060608801359150808211156118b357600080fd5b6118bf89838a016117c7565b935060808801359150808211156118d557600080fd5b506118e288828901611528565b9150509295509295909350565b600080600080600060a0868803121561190757600080fd5b6119108661135c565b945061191e6020870161135c565b9350604086013592506060860135915060808601356001600160401b0381111561194757600080fd5b6118e288828901611528565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006119a460a083018688611953565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119e1606083018486611953565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a5657600080fd5b61078a8261135c565b6000808335601e19843603018112611a7657600080fd5b8301803591506001600160401b03821115611a9057600080fd5b6020019150368190038213156113b957600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611acd57611acd611aa5565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b585782840389528135601e19883603018112611b0f57600080fd5b870185810190356001600160401b03811115611b2a57600080fd5b803603821315611b3957600080fd5b611b44868284611953565b9a87019a9550505090840190600101611aee565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba6576001600160a01b03611b918461135c565b16825260209283019290910190600101611b78565b5083810360208501528881526001600160fb1b03891115611bc657600080fd5b8860051b9150818a60208301370182810360209081016040850152611bee9082018789611ad4565b60608401959095525050608001529695505050505050565b808201808211156106b0576106b0611aa5565b60005b83811015611c34578181015183820152602001611c1c565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c75816017850160208801611c19565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611ca6816028840160208801611c19565b01602801949350505050565b6020815260008251806020840152611cd1816040850160208701611c19565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d5957611d59611aa5565b500290565b600081611d6d57611d6d611aa5565b50600019019056fea2646970667358221220b844616ba7755911759550aa7ec2f72326fc02dcbea65f7b104671736ad141d464736f6c63430008100033", + "sourceMap": "119:616:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7619:402:50;;;;;;;;;;-1:-1:-1;7619:402:50;;;;;:::i;:::-;;:::i;:::-;;4770:228;;;;;;;;;;-1:-1:-1;4770:228:50;;;;;:::i;:::-;;:::i;:::-;;;1763:14:145;;1756:22;1738:41;;1726:2;1711:18;4770:228:50;;;;;;;;1272:66;;;;;;;;;;;;1312:26;1272:66;;;;;1936:25:145;;;1924:2;1909:18;1272:66:50;1790:177:145;1116:78:50;;;;;;;;;;;;1162:32;1116:78;;10216:459;;;;;;:::i;:::-;;:::i;5580:208::-;;;;;;;;;;-1:-1:-1;5580:208:50;;;;;:::i;:::-;;:::i;13466:200::-;;;;;;;;;;-1:-1:-1;13466:200:50;;;;;:::i;:::-;-1:-1:-1;;;13466:200:50;;;;;;;;;;-1:-1:-1;;;;;;4502:33:145;;;4484:52;;4472:2;4457:18;13466:200:50;4340:202:145;4378:129:47;;;;;;;;;;-1:-1:-1;4378:129:47;;;;;:::i;:::-;4452:7;4478:12;;;;;;;;;;:22;;;;4378:129;5867:136:50;;;;;;;;;;-1:-1:-1;5867:136:50;;;;;:::i;:::-;5933:9;6250:15;;;1470:1;6250:15;;;;;;;;;5961:35;;5867:136;4803:145:47;;;;;;;;;;-1:-1:-1;4803:145:47;;;;;:::i;:::-;;:::i;5154:123:50:-;;;;;;;;;;-1:-1:-1;5154:123:50;;;;;:::i;:::-;;:::i;5912:214:47:-;;;;;;;;;;-1:-1:-1;5912:214:47;;;;;:::i;:::-;;:::i;5359:141:50:-;;;;;;;;;;-1:-1:-1;5359:141:50;;;;;:::i;:::-;;:::i;13156:236::-;;;;;;;;;;-1:-1:-1;13156:236:50;;;;;:::i;:::-;;:::i;6674:284::-;;;;;;;;;;-1:-1:-1;6674:284:50;;;;;:::i;:::-;;:::i;8275:713::-;;;;;;;;;;-1:-1:-1;8275:713:50;;;;;:::i;:::-;;:::i;1200:66::-;;;;;;;;;;;;1240:26;1200:66;;2895:145:47;;;;;;;;;;-1:-1:-1;2895:145:47;;;;;:::i;:::-;;:::i;2027:49::-;;;;;;;;;;-1:-1:-1;2027:49:47;2072:4;2027:49;;1344:68:50;;;;;;;;;;;;1385:27;1344:68;;7074:325;;;;;;;;;;-1:-1:-1;7074:325:50;;;;;:::i;:::-;;:::i;14042:247::-;;;;;;;;;;-1:-1:-1;14042:247:50;;;;;:::i;:::-;-1:-1:-1;;;14042:247:50;;;;;;;;9512:230;;;;;;;;;;-1:-1:-1;9512:230:50;;;;;:::i;:::-;;:::i;6151:121::-;;;;;;;;;;-1:-1:-1;6151:121:50;;;;;:::i;:::-;6214:17;6250:15;;;:11;:15;;;;;;;6151:121;5228:147:47;;;;;;;;;;-1:-1:-1;5228:147:47;;;;;:::i;:::-;;:::i;10935:883:50:-;;;;;;:::i;:::-;;:::i;13742:219::-;;;;;;;;;;-1:-1:-1;13742:219:50;;;;;:::i;:::-;-1:-1:-1;;;13742:219:50;;;;;;;;6458:103;;;;;;;;;;-1:-1:-1;6545:9:50;;6458:103;;7619:402;1240:26;2505:16:47;2516:4;2505:10;:16::i;:::-;7842:10:50::1;7855:53;7869:6;7877:5;7884:4;;7890:11;7903:4;7855:13;:53::i;:::-;7842:66;;7918:20;7928:2;7932:5;7918:9;:20::i;:::-;7971:1;7967:2;7953:61;7974:6;7982:5;7989:4;;7995:11;8008:5;7953:61;;;;;;;;;;;:::i;:::-;;;;;;;;7832:189;7619:402:::0;;;;;;;;:::o;4770:228::-;4879:4;-1:-1:-1;;;;;;4902:49:50;;-1:-1:-1;;;4902:49:50;;:89;;;4955:36;4979:11;4955:23;:36::i;:::-;4895:96;4770:228;-1:-1:-1;;4770:228:50:o;10216:459::-;1312:26;4473:25;4481:4;4495:1;4473:7;:25::i;:::-;4468:87;;4514:30;4525:4;719:10:68;4514::50;:30::i;:::-;10436:10:::1;10449:56;10463:6;10471:5;10478:7;;10487:11;10500:4;10449:13;:56::i;:::-;10436:69;;10516:28;10528:2;10532:11;10516;:28::i;:::-;10554:32;10563:6;10571:5;10578:7;;10554:8;:32::i;:::-;10618:1;10614:2;10601:43;10621:6;10629:5;10636:7;;10601:43;;;;;;;;;:::i;:::-;;;;;;;;10654:14;10665:2;10654:10;:14::i;:::-;10426:249;10216:459:::0;;;;;;;:::o;5580:208::-;5647:10;6250:15;;;:11;:15;;;;;;1470:1;5722:9;:27;:59;;;;;5766:15;5753:9;:28;;5722:59;5715:66;5580:208;-1:-1:-1;;;5580:208:50:o;4803:145:47:-;4452:7;4478:12;;;;;;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;4916:25:::1;4927:4;4933:7;4916:10;:25::i;:::-;4803:145:::0;;;:::o;5154:123:50:-;5216:15;6250;;;:11;:15;;;;;;5216;;5250:16;:20;;5154:123;-1:-1:-1;;5154:123:50:o;5912:214:47:-;-1:-1:-1;;;;;6007:23:47;;719:10:68;6007:23:47;5999:83;;;;-1:-1:-1;;;5999:83:47;;11826:2:145;5999:83:47;;;11808:21:145;11865:2;11845:18;;;11838:30;11904:34;11884:18;;;11877:62;-1:-1:-1;;;11955:18:145;;;11948:45;12010:19;;5999:83:47;;;;;;;;;6093:26;6105:4;6111:7;6093:11;:26::i;:::-;5912:214;;:::o;5359:141:50:-;5428:12;6250:15;;;1470:1;6250:15;;;;;;;;5459:16;6151:121;13156:236;13230:10;13252:4;13230:27;13222:83;;;;-1:-1:-1;;;13222:83:50;;12242:2:145;13222:83:50;;;12224:21:145;12281:2;12261:18;;;12254:30;12320:34;12300:18;;;12293:62;-1:-1:-1;;;12371:18:145;;;12364:41;12422:19;;13222:83:50;12040:407:145;13222:83:50;13335:9;;13320:35;;;12626:25:145;;;12682:2;12667:18;;12660:34;;;13320:35:50;;12599:18:145;13320:35:50;;;;;;;13365:9;:20;13156:236::o;6674:284::-;6859:12;6911:6;6919:5;6926:4;;6932:11;6945:4;6900:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6890:61;;;;;;6883:68;;6674:284;;;;;;;;:::o;8275:713::-;1240:26;2505:16:47;2516:4;2505:10;:16::i;:::-;8541:31:50;;::::1;8533:79;;;;-1:-1:-1::0;;;8533:79:50::1;;;;;;;:::i;:::-;8630:33:::0;;::::1;8622:81;;;;-1:-1:-1::0;;;8622:81:50::1;;;;;;;:::i;:::-;8714:10;8727:64;8746:7;;8755:6;;8763:8;;8773:11;8786:4;8727:18;:64::i;:::-;8714:77;;8801:20;8811:2;8815:5;8801:9;:20::i;:::-;8836:9;8831:151;8851:18:::0;;::::1;8831:151;;;8913:1;8909:2;8895:76;8916:7;;8924:1;8916:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8928:6;;8935:1;8928:9;;;;;;;:::i;:::-;;;;;;;8939:8;;8948:1;8939:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;8952;8965:5;8895:76;;;;;;;;;;;:::i;:::-;;;;;;;;8871:3;::::0;::::1;:::i;:::-;;;8831:151;;;;8523:465;8275:713:::0;;;;;;;;;;:::o;2895:145:47:-;2981:4;3004:12;;;;;;;;;;;-1:-1:-1;;;;;3004:29:47;;;;;;;;;;;;;;;2895:145::o;7074:325:50:-;7294:12;7346:7;;7355:6;;7363:8;;7373:11;7386:4;7335:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7325:67;;;;;;7318:74;;7074:325;;;;;;;;;;:::o;9512:230::-;1385:27;2505:16:47;2516:4;2505:10;:16::i;:::-;9598:22:50::1;9617:2;9598:18;:22::i;:::-;9590:84;;;::::0;-1:-1:-1;;;9590:84:50;;17464:2:145;9590:84:50::1;::::0;::::1;17446:21:145::0;17503:2;17483:18;;;17476:30;17542:34;17522:18;;;17515:62;-1:-1:-1;;;17593:18:145;;;17586:47;17650:19;;9590:84:50::1;17262:413:145::0;9590:84:50::1;9691:15;::::0;;;:11:::1;:15;::::0;;;;;9684:22;;;9722:13;9703:2;;9722:13:::1;::::0;::::1;9512:230:::0;;:::o;5228:147:47:-;4452:7;4478:12;;;;;;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;5342:26:::1;5354:4;5360:7;5342:11;:26::i;10935:883:50:-:0;1312:26;4473:25;4481:4;4495:1;4473:7;:25::i;:::-;4468:87;;4514:30;4525:4;719:10:68;4514::50;:30::i;:::-;11195:31;;::::1;11187:79;;;;-1:-1:-1::0;;;11187:79:50::1;;;;;;;:::i;:::-;11284:33:::0;;::::1;11276:81;;;;-1:-1:-1::0;;;11276:81:50::1;;;;;;;:::i;:::-;11368:10;11381:64;11400:7;;11409:6;;11417:8;;11427:11;11440:4;11381:18;:64::i;:::-;11368:77;;11456:28;11468:2;11472:11;11456;:28::i;:::-;11499:9;11494:294;11514:18:::0;;::::1;11494:294;;;11553:14;11570:7;;11578:1;11570:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11553:27;;11594:13;11610:6;;11617:1;11610:9;;;;;;;:::i;:::-;;;;;;;11594:25;;11633:22;;11658:8;;11667:1;11658:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;11633:36;;;;11683:32;11692:6;11700:5;11707:7;;11683:8;:32::i;:::-;11751:1;11747:2;11734:43;11754:6;11762:5;11769:7;;11734:43;;;;;;;;;:::i;:::-;;;;;;;;11539:249;;;;11534:3;;;;:::i;:::-;;;11494:294;;;;11797:14;11808:2;11797:10;:14::i;:::-;11177:641;10935:883:::0;;;;;;;;;:::o;3334:103:47:-;3400:30;3411:4;719:10:68;4514::50;:30::i;3400::47:-;3334:103;:::o;9089:281:50:-;9162:15;9174:2;9162:11;:15::i;:::-;9161:16;9153:76;;;;-1:-1:-1;;;9153:76:50;;17882:2:145;9153:76:50;;;17864:21:145;17921:2;17901:18;;;17894:30;17960:34;17940:18;;;17933:62;-1:-1:-1;;;18011:18:145;;;18004:45;18066:19;;9153:76:50;17680:411:145;9153:76:50;6545:9;;9247:5;:22;;9239:73;;;;-1:-1:-1;;;9239:73:50;;18298:2:145;9239:73:50;;;18280:21:145;18337:2;18317:18;;;18310:30;18376:34;18356:18;;;18349:62;-1:-1:-1;;;18427:18:145;;;18420:36;18473:19;;9239:73:50;18096:402:145;9239:73:50;9340:23;9358:5;9340:15;:23;:::i;:::-;9322:15;;;;:11;:15;;;;;;:41;;;;-1:-1:-1;9089:281:50:o;2606:202:47:-;2691:4;-1:-1:-1;;;;;;2714:47:47;;-1:-1:-1;;;2714:47:47;;:87;;-1:-1:-1;;;;;;;;;;937:40:71;;;2765:36:47;829:155:71;3718:479:47;3806:22;3814:4;3820:7;3806;:22::i;:::-;3801:390;;3989:28;4009:7;3989:19;:28::i;:::-;4088:38;4116:4;4123:2;4088:19;:38::i;:::-;3896:252;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3896:252:47;;;;;;;;;;-1:-1:-1;;;3844:336:47;;;;;;;:::i;12229:277:50:-;12314:20;12331:2;12314:16;:20::i;:::-;12306:75;;;;-1:-1:-1;;;12306:75:50;;;;;;;:::i;:::-;12399:25;;;:57;;-1:-1:-1;5933:9:50;6250:15;;;1470:1;6250:15;;;;;;;;;5961:35;12428:28;12391:108;;;;-1:-1:-1;;;12391:108:50;;20719:2:145;12391:108:50;;;20701:21:145;20758:2;20738:18;;;20731:30;20797:34;20777:18;;;20770:62;-1:-1:-1;;;20848:18:145;;;20841:36;20894:19;;12391:108:50;20517:402:145;11881:265:50;12009:12;12027:6;-1:-1:-1;;;;;12027:11:50;12046:5;12053:4;;12027:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12008:50;;;12076:7;12068:71;;;;-1:-1:-1;;;12068:71:50;;21402:2:145;12068:71:50;;;21384:21:145;21441:2;21421:18;;;21414:30;21480:34;21460:18;;;21453:62;-1:-1:-1;;;21531:18:145;;;21524:49;21590:19;;12068:71:50;21200:415:145;12068:71:50;11998:148;11881:265;;;;:::o;12588:175::-;12646:20;12663:2;12646:16;:20::i;:::-;12638:75;;;;-1:-1:-1;;;12638:75:50;;;;;;;:::i;:::-;12723:15;;;;1470:1;12723:15;;;;;;;;:33;12588:175::o;7461:233:47:-;7544:22;7552:4;7558:7;7544;:22::i;:::-;7539:149;;7582:6;:12;;;;;;;;;;;-1:-1:-1;;;;;7582:29:47;;;;;;;;;:36;;-1:-1:-1;;7582:36:47;7614:4;7582:36;;;7664:12;719:10:68;;640:96;7664:12:47;-1:-1:-1;;;;;7637:40:47;7655:7;-1:-1:-1;;;;;7637:40:47;7649:4;7637:40;;;;;;;;;;7461:233;;:::o;7865:234::-;7948:22;7956:4;7962:7;7948;:22::i;:::-;7944:149;;;8018:5;7986:12;;;;;;;;;;;-1:-1:-1;;;;;7986:29:47;;;;;;;;;;:37;;-1:-1:-1;;7986:37:47;;;8042:40;719:10:68;;7986:12:47;;8042:40;;8018:5;8042:40;7865:234;;:::o;2102:149:70:-;2160:13;2192:52;-1:-1:-1;;;;;2204:22:70;;311:2;1513:437;1588:13;1613:19;1645:10;1649:6;1645:1;:10;:::i;:::-;:14;;1658:1;1645:14;:::i;:::-;-1:-1:-1;;;;;1635:25:70;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1635:25:70;;1613:47;;-1:-1:-1;;;1670:6:70;1677:1;1670:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1670:15:70;;;;;;;;;-1:-1:-1;;;1695:6:70;1702:1;1695:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1695:15:70;;;;;;;;-1:-1:-1;1725:9:70;1737:10;1741:6;1737:1;:10;:::i;:::-;:14;;1750:1;1737:14;:::i;:::-;1725:26;;1720:128;1757:1;1753;:5;1720:128;;;-1:-1:-1;;;1800:5:70;1808:3;1800:11;1791:21;;;;;;;:::i;:::-;;;;1779:6;1786:1;1779:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1779:33:70;;;;;;;;-1:-1:-1;1836:1:70;1826:11;;;;;1760:3;;;:::i;:::-;;;1720:128;;;-1:-1:-1;1865:10:70;;1857:55;;;;-1:-1:-1;;;1857:55:70;;22136:2:145;1857:55:70;;;22118:21:145;;;22155:18;;;22148:30;22214:34;22194:18;;;22187:62;22266:18;;1857:55:70;21934:356:145;14:173;82:20;;-1:-1:-1;;;;;131:31:145;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:347::-;243:8;253:6;307:3;300:4;292:6;288:17;284:27;274:55;;325:1;322;315:12;274:55;-1:-1:-1;348:20:145;;-1:-1:-1;;;;;380:30:145;;377:50;;;423:1;420;413:12;377:50;460:4;452:6;448:17;436:29;;512:3;505:4;496:6;488;484:19;480:30;477:39;474:59;;;529:1;526;519:12;474:59;192:347;;;;;:::o;544:758::-;659:6;667;675;683;691;699;707;760:3;748:9;739:7;735:23;731:33;728:53;;;777:1;774;767:12;728:53;800:29;819:9;800:29;:::i;:::-;790:39;;876:2;865:9;861:18;848:32;838:42;;931:2;920:9;916:18;903:32;-1:-1:-1;;;;;950:6:145;947:30;944:50;;;990:1;987;980:12;944:50;1029:58;1079:7;1070:6;1059:9;1055:22;1029:58;:::i;:::-;544:758;;;;-1:-1:-1;1106:8:145;1188:2;1173:18;;1160:32;;1239:3;1224:19;;1211:33;;-1:-1:-1;1291:3:145;1276:19;;;1263:33;;-1:-1:-1;544:758:145;-1:-1:-1;;;;544:758:145:o;1307:286::-;1365:6;1418:2;1406:9;1397:7;1393:23;1389:32;1386:52;;;1434:1;1431;1424:12;1386:52;1460:23;;-1:-1:-1;;;;;;1512:32:145;;1502:43;;1492:71;;1559:1;1556;1549:12;1972:689;2078:6;2086;2094;2102;2110;2118;2171:3;2159:9;2150:7;2146:23;2142:33;2139:53;;;2188:1;2185;2178:12;2139:53;2211:29;2230:9;2211:29;:::i;:::-;2201:39;;2287:2;2276:9;2272:18;2259:32;2249:42;;2342:2;2331:9;2327:18;2314:32;-1:-1:-1;;;;;2361:6:145;2358:30;2355:50;;;2401:1;2398;2391:12;2355:50;2440:58;2490:7;2481:6;2470:9;2466:22;2440:58;:::i;:::-;1972:689;;;;-1:-1:-1;2517:8:145;2599:2;2584:18;;2571:32;;2650:3;2635:19;;;2622:33;;-1:-1:-1;1972:689:145;-1:-1:-1;;;;1972:689:145:o;2666:180::-;2725:6;2778:2;2766:9;2757:7;2753:23;2749:32;2746:52;;;2794:1;2791;2784:12;2746:52;-1:-1:-1;2817:23:145;;2666:180;-1:-1:-1;2666:180:145:o;2851:127::-;2912:10;2907:3;2903:20;2900:1;2893:31;2943:4;2940:1;2933:15;2967:4;2964:1;2957:15;2983:275;3054:2;3048:9;3119:2;3100:13;;-1:-1:-1;;3096:27:145;3084:40;;-1:-1:-1;;;;;3139:34:145;;3175:22;;;3136:62;3133:88;;;3201:18;;:::i;:::-;3237:2;3230:22;2983:275;;-1:-1:-1;2983:275:145:o;3263:530::-;3305:5;3358:3;3351:4;3343:6;3339:17;3335:27;3325:55;;3376:1;3373;3366:12;3325:55;3412:6;3399:20;-1:-1:-1;;;;;3434:2:145;3431:26;3428:52;;;3460:18;;:::i;:::-;3504:55;3547:2;3528:13;;-1:-1:-1;;3524:27:145;3553:4;3520:38;3504:55;:::i;:::-;3584:2;3575:7;3568:19;3630:3;3623:4;3618:2;3610:6;3606:15;3602:26;3599:35;3596:55;;;3647:1;3644;3637:12;3596:55;3712:2;3705:4;3697:6;3693:17;3686:4;3677:7;3673:18;3660:55;3760:1;3735:16;;;3753:4;3731:27;3724:38;;;;3739:7;3263:530;-1:-1:-1;;;3263:530:145:o;3798:537::-;3893:6;3901;3909;3917;3970:3;3958:9;3949:7;3945:23;3941:33;3938:53;;;3987:1;3984;3977:12;3938:53;4010:29;4029:9;4010:29;:::i;:::-;4000:39;;4058:38;4092:2;4081:9;4077:18;4058:38;:::i;:::-;4048:48;;4143:2;4132:9;4128:18;4115:32;4105:42;;4198:2;4187:9;4183:18;4170:32;-1:-1:-1;;;;;4217:6:145;4214:30;4211:50;;;4257:1;4254;4247:12;4211:50;4280:49;4321:7;4312:6;4301:9;4297:22;4280:49;:::i;:::-;4270:59;;;3798:537;;;;;;;:::o;4547:254::-;4615:6;4623;4676:2;4664:9;4655:7;4651:23;4647:32;4644:52;;;4692:1;4689;4682:12;4644:52;4728:9;4715:23;4705:33;;4757:38;4791:2;4780:9;4776:18;4757:38;:::i;:::-;4747:48;;4547:254;;;;;:::o;4991:367::-;5054:8;5064:6;5118:3;5111:4;5103:6;5099:17;5095:27;5085:55;;5136:1;5133;5126:12;5085:55;-1:-1:-1;5159:20:145;;-1:-1:-1;;;;;5191:30:145;;5188:50;;;5234:1;5231;5224:12;5188:50;5271:4;5263:6;5259:17;5247:29;;5331:3;5324:4;5314:6;5311:1;5307:14;5299:6;5295:27;5291:38;5288:47;5285:67;;;5348:1;5345;5338:12;5363:1306;5559:6;5567;5575;5583;5591;5599;5607;5615;5623;5676:3;5664:9;5655:7;5651:23;5647:33;5644:53;;;5693:1;5690;5683:12;5644:53;5733:9;5720:23;-1:-1:-1;;;;;5803:2:145;5795:6;5792:14;5789:34;;;5819:1;5816;5809:12;5789:34;5858:70;5920:7;5911:6;5900:9;5896:22;5858:70;:::i;:::-;5947:8;;-1:-1:-1;5832:96:145;-1:-1:-1;6035:2:145;6020:18;;6007:32;;-1:-1:-1;6051:16:145;;;6048:36;;;6080:1;6077;6070:12;6048:36;6119:72;6183:7;6172:8;6161:9;6157:24;6119:72;:::i;:::-;6210:8;;-1:-1:-1;6093:98:145;-1:-1:-1;6298:2:145;6283:18;;6270:32;;-1:-1:-1;6314:16:145;;;6311:36;;;6343:1;6340;6333:12;6311:36;;6382:72;6446:7;6435:8;6424:9;6420:24;6382:72;:::i;:::-;5363:1306;;;;-1:-1:-1;5363:1306:145;;;;6473:8;;6555:2;6540:18;;6527:32;;6606:3;6591:19;;6578:33;;-1:-1:-1;6658:3:145;6643:19;6630:33;;-1:-1:-1;5363:1306:145;-1:-1:-1;;;;5363:1306:145:o;6674:1237::-;6861:6;6869;6877;6885;6893;6901;6909;6917;6970:3;6958:9;6949:7;6945:23;6941:33;6938:53;;;6987:1;6984;6977:12;6938:53;7027:9;7014:23;-1:-1:-1;;;;;7097:2:145;7089:6;7086:14;7083:34;;;7113:1;7110;7103:12;7083:34;7152:70;7214:7;7205:6;7194:9;7190:22;7152:70;:::i;:::-;7241:8;;-1:-1:-1;7126:96:145;-1:-1:-1;7329:2:145;7314:18;;7301:32;;-1:-1:-1;7345:16:145;;;7342:36;;;7374:1;7371;7364:12;7342:36;7413:72;7477:7;7466:8;7455:9;7451:24;7413:72;:::i;:::-;7504:8;;-1:-1:-1;7387:98:145;-1:-1:-1;7592:2:145;7577:18;;7564:32;;-1:-1:-1;7608:16:145;;;7605:36;;;7637:1;7634;7627:12;7605:36;;7676:72;7740:7;7729:8;7718:9;7714:24;7676:72;:::i;:::-;6674:1237;;;;-1:-1:-1;6674:1237:145;;;;7767:8;;7849:2;7834:18;;7821:32;;7900:3;7885:19;7872:33;;-1:-1:-1;6674:1237:145;-1:-1:-1;;;;6674:1237:145:o;7916:712::-;7970:5;8023:3;8016:4;8008:6;8004:17;8000:27;7990:55;;8041:1;8038;8031:12;7990:55;8077:6;8064:20;8103:4;-1:-1:-1;;;;;8122:2:145;8119:26;8116:52;;;8148:18;;:::i;:::-;8194:2;8191:1;8187:10;8217:28;8241:2;8237;8233:11;8217:28;:::i;:::-;8279:15;;;8349;;;8345:24;;;8310:12;;;;8381:15;;;8378:35;;;8409:1;8406;8399:12;8378:35;8445:2;8437:6;8433:15;8422:26;;8457:142;8473:6;8468:3;8465:15;8457:142;;;8539:17;;8527:30;;8490:12;;;;8577;;;;8457:142;;;8617:5;7916:712;-1:-1:-1;;;;;;;7916:712:145:o;8633:943::-;8787:6;8795;8803;8811;8819;8872:3;8860:9;8851:7;8847:23;8843:33;8840:53;;;8889:1;8886;8879:12;8840:53;8912:29;8931:9;8912:29;:::i;:::-;8902:39;;8960:38;8994:2;8983:9;8979:18;8960:38;:::i;:::-;8950:48;;9049:2;9038:9;9034:18;9021:32;-1:-1:-1;;;;;9113:2:145;9105:6;9102:14;9099:34;;;9129:1;9126;9119:12;9099:34;9152:61;9205:7;9196:6;9185:9;9181:22;9152:61;:::i;:::-;9142:71;;9266:2;9255:9;9251:18;9238:32;9222:48;;9295:2;9285:8;9282:16;9279:36;;;9311:1;9308;9301:12;9279:36;9334:63;9389:7;9378:8;9367:9;9363:24;9334:63;:::i;:::-;9324:73;;9450:3;9439:9;9435:19;9422:33;9406:49;;9480:2;9470:8;9467:16;9464:36;;;9496:1;9493;9486:12;9464:36;;9519:51;9562:7;9551:8;9540:9;9536:24;9519:51;:::i;:::-;9509:61;;;8633:943;;;;;;;;:::o;9763:606::-;9867:6;9875;9883;9891;9899;9952:3;9940:9;9931:7;9927:23;9923:33;9920:53;;;9969:1;9966;9959:12;9920:53;9992:29;10011:9;9992:29;:::i;:::-;9982:39;;10040:38;10074:2;10063:9;10059:18;10040:38;:::i;:::-;10030:48;;10125:2;10114:9;10110:18;10097:32;10087:42;;10176:2;10165:9;10161:18;10148:32;10138:42;;10231:3;10220:9;10216:19;10203:33;-1:-1:-1;;;;;10251:6:145;10248:30;10245:50;;;10291:1;10288;10281:12;10245:50;10314:49;10355:7;10346:6;10335:9;10331:22;10314:49;:::i;10374:266::-;10462:6;10457:3;10450:19;10514:6;10507:5;10500:4;10495:3;10491:14;10478:43;-1:-1:-1;10566:1:145;10541:16;;;10559:4;10537:27;;;10530:38;;;;10622:2;10601:15;;;-1:-1:-1;;10597:29:145;10588:39;;;10584:50;;10374:266::o;10645:557::-;10943:1;10939;10934:3;10930:11;10926:19;10918:6;10914:32;10903:9;10896:51;10983:6;10978:2;10967:9;10963:18;10956:34;11026:3;11021:2;11010:9;11006:18;10999:31;10877:4;11047:62;11104:3;11093:9;11089:19;11081:6;11073;11047:62;:::i;:::-;11140:2;11125:18;;11118:34;;;;-1:-1:-1;11183:3:145;11168:19;11161:35;11039:70;10645:557;-1:-1:-1;;;;10645:557:145:o;11207:412::-;11449:1;11445;11440:3;11436:11;11432:19;11424:6;11420:32;11409:9;11402:51;11489:6;11484:2;11473:9;11469:18;11462:34;11532:2;11527;11516:9;11512:18;11505:30;11383:4;11552:61;11609:2;11598:9;11594:18;11586:6;11578;11552:61;:::i;:::-;11544:69;11207:412;-1:-1:-1;;;;;;11207:412:145:o;13267:399::-;13469:2;13451:21;;;13508:2;13488:18;;;13481:30;13547:34;13542:2;13527:18;;13520:62;-1:-1:-1;;;13613:2:145;13598:18;;13591:33;13656:3;13641:19;;13267:399::o;13671:127::-;13732:10;13727:3;13723:20;13720:1;13713:31;13763:4;13760:1;13753:15;13787:4;13784:1;13777:15;13803:186;13862:6;13915:2;13903:9;13894:7;13890:23;13886:32;13883:52;;;13931:1;13928;13921:12;13883:52;13954:29;13973:9;13954:29;:::i;13994:521::-;14071:4;14077:6;14137:11;14124:25;14231:2;14227:7;14216:8;14200:14;14196:29;14192:43;14172:18;14168:68;14158:96;;14250:1;14247;14240:12;14158:96;14277:33;;14329:20;;;-1:-1:-1;;;;;;14361:30:145;;14358:50;;;14404:1;14401;14394:12;14358:50;14437:4;14425:17;;-1:-1:-1;14468:14:145;14464:27;;;14454:38;;14451:58;;;14505:1;14502;14495:12;14520:127;14581:10;14576:3;14572:20;14569:1;14562:31;14612:4;14609:1;14602:15;14636:4;14633:1;14626:15;14652:135;14691:3;14712:17;;;14709:43;;14732:18;;:::i;:::-;-1:-1:-1;14779:1:145;14768:13;;14652:135::o;14792:1067::-;14899:6;14894:3;14887:19;14869:3;14925:4;14966:2;14961:3;14957:12;14991:11;15018;15011:18;;15068:6;15065:1;15061:14;15054:5;15050:26;15038:38;;15099:5;15122:1;15132:701;15146:6;15143:1;15140:13;15132:701;;;15217:5;15211:4;15207:16;15202:3;15195:29;15276:6;15263:20;15366:2;15362:7;15354:5;15338:14;15334:26;15330:40;15310:18;15306:65;15296:93;;15385:1;15382;15375:12;15296:93;15417:30;;15525:16;;;;15476:21;-1:-1:-1;;;;;15557:32:145;;15554:52;;;15602:1;15599;15592:12;15554:52;15655:8;15639:14;15635:29;15626:7;15622:43;15619:63;;;15678:1;15675;15668:12;15619:63;15703:50;15748:4;15738:8;15729:7;15703:50;:::i;:::-;15811:12;;;;15695:58;-1:-1:-1;;;15776:15:145;;;;15168:1;15161:9;15132:701;;;-1:-1:-1;15849:4:145;;14792:1067;-1:-1:-1;;;;;;;14792:1067:145:o;15864:1393::-;16316:3;16329:22;;;16301:19;;16386:22;;;16268:4;16466:6;16439:3;16424:19;;16268:4;16500:235;16514:6;16511:1;16508:13;16500:235;;;-1:-1:-1;;;;;16579:26:145;16598:6;16579:26;:::i;:::-;16575:52;16563:65;;16651:4;16710:15;;;;16675:12;;;;16536:1;16529:9;16500:235;;;-1:-1:-1;16773:19:145;;;16766:4;16751:20;;16744:49;16802:19;;;-1:-1:-1;;;;;16833:31:145;;16830:51;;;16877:1;16874;16867:12;16830:51;16911:6;16908:1;16904:14;16890:28;;16964:6;16956;16949:4;16944:3;16940:14;16927:44;16990:16;17046:18;;;17066:4;17042:29;;;17037:2;17022:18;;17015:57;17089:75;;17150:13;;17142:6;17134;17089:75;:::i;:::-;17195:2;17180:18;;17173:34;;;;-1:-1:-1;;17238:3:145;17223:19;17216:35;17081:83;15864:1393;-1:-1:-1;;;;;;15864:1393:145:o;18503:125::-;18568:9;;;18589:10;;;18586:36;;;18602:18;;:::i;18633:250::-;18718:1;18728:113;18742:6;18739:1;18736:13;18728:113;;;18818:11;;;18812:18;18799:11;;;18792:39;18764:2;18757:10;18728:113;;;-1:-1:-1;;18875:1:145;18857:16;;18850:27;18633:250::o;18888:812::-;19299:25;19294:3;19287:38;19269:3;19354:6;19348:13;19370:75;19438:6;19433:2;19428:3;19424:12;19417:4;19409:6;19405:17;19370:75;:::i;:::-;-1:-1:-1;;;19504:2:145;19464:16;;;19496:11;;;19489:40;19554:13;;19576:76;19554:13;19638:2;19630:11;;19623:4;19611:17;;19576:76;:::i;:::-;19672:17;19691:2;19668:26;;18888:812;-1:-1:-1;;;;18888:812:145:o;19705:396::-;19854:2;19843:9;19836:21;19817:4;19886:6;19880:13;19929:6;19924:2;19913:9;19909:18;19902:34;19945:79;20017:6;20012:2;20001:9;19997:18;19992:2;19984:6;19980:15;19945:79;:::i;:::-;20085:2;20064:15;-1:-1:-1;;20060:29:145;20045:45;;;;20092:2;20041:54;;19705:396;-1:-1:-1;;19705:396:145:o;20106:406::-;20308:2;20290:21;;;20347:2;20327:18;;;20320:30;20386:34;20381:2;20366:18;;20359:62;-1:-1:-1;;;20452:2:145;20437:18;;20430:40;20502:3;20487:19;;20106:406::o;20924:271::-;21107:6;21099;21094:3;21081:33;21063:3;21133:16;;21158:13;;;21133:16;20924:271;-1:-1:-1;20924:271:145:o;21620:168::-;21660:7;21726:1;21722;21718:6;21714:14;21711:1;21708:21;21703:1;21696:9;21689:17;21685:45;21682:71;;;21733:18;;:::i;:::-;-1:-1:-1;21773:9:145;;21620:168::o;21793:136::-;21832:3;21860:5;21850:39;;21869:18;;:::i;:::-;-1:-1:-1;;;21905:18:145;;21793:136::o", + "linkReferences": {} + }, + "methodIdentifiers": { + "CANCELLER_ROLE()": "b08e51c0", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "EXECUTOR_ROLE()": "07bd0265", + "PROPOSER_ROLE()": "8f61f4f5", + "TIMELOCK_ADMIN_ROLE()": "0d3cf6fc", + "cancel(bytes32)": "c4d252f5", + "execute(address,uint256,bytes,bytes32,bytes32)": "134008d3", + "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)": "e38335e5", + "getMinDelay()": "f27a0c92", + "getRoleAdmin(bytes32)": "248a9ca3", + "getTimestamp(bytes32)": "d45c4435", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "hashOperation(address,uint256,bytes,bytes32,bytes32)": "8065657f", + "hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)": "b1c5f427", + "isOperation(bytes32)": "31d50750", + "isOperationDone(bytes32)": "2ab0f529", + "isOperationPending(bytes32)": "584b153e", + "isOperationReady(bytes32)": "13bc9f20", + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81", + "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61", + "onERC721Received(address,address,uint256,bytes)": "150b7a02", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "schedule(address,uint256,bytes,bytes32,bytes32,uint256)": "01d5062a", + "scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)": "8f2a0bb0", + "supportsInterface(bytes4)": "01ffc9a7", + "updateDelay(uint256)": "64d62353" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minDelay\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"proposers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"executors\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"CallExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"CallScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"Cancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldDuration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"MinDelayChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CANCELLER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXECUTOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROPOSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMELOCK_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"payloads\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"hashOperation\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"payloads\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"hashOperationBatch\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationDone\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"done\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationPending\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationReady\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ready\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"schedule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"payloads\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"scheduleBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDelay\",\"type\":\"uint256\"}],\"name\":\"updateDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"cancel(bytes32)\":{\"details\":\"Cancel an operation. Requirements: - the caller must have the 'canceller' role.\"},\"constructor\":{\"details\":\"Initializes the contract with the following parameters: - `minDelay`: initial minimum delay for operations - `proposers`: accounts to be granted proposer and canceller roles - `executors`: accounts to be granted executor role - `admin`: optional account to be granted admin role; disable with zero address\"},\"execute(address,uint256,bytes,bytes32,bytes32)\":{\"details\":\"Execute an (ready) operation containing a single transaction. Emits a {CallExecuted} event. Requirements: - the caller must have the 'executor' role.\"},\"executeBatch(address[],uint256[],bytes[],bytes32,bytes32)\":{\"details\":\"Execute an (ready) operation containing a batch of transactions. Emits one {CallExecuted} event per transaction in the batch. Requirements: - the caller must have the 'executor' role.\"},\"getMinDelay()\":{\"details\":\"Returns the minimum delay for an operation to become valid. This value can be changed by executing an operation that calls `updateDelay`.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getTimestamp(bytes32)\":{\"details\":\"Returns the timestamp at which an operation becomes ready (0 for unset operations, 1 for done operations).\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"hashOperation(address,uint256,bytes,bytes32,bytes32)\":{\"details\":\"Returns the identifier of an operation containing a single transaction.\"},\"hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)\":{\"details\":\"Returns the identifier of an operation containing a batch of transactions.\"},\"isOperation(bytes32)\":{\"details\":\"Returns whether an id correspond to a registered operation. This includes both Pending, Ready and Done operations.\"},\"isOperationDone(bytes32)\":{\"details\":\"Returns whether an operation is done or not.\"},\"isOperationPending(bytes32)\":{\"details\":\"Returns whether an operation is pending or not.\"},\"isOperationReady(bytes32)\":{\"details\":\"Returns whether an operation is ready or not.\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155Receiver-onERC1155BatchReceived}.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155Receiver-onERC1155Received}.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"schedule(address,uint256,bytes,bytes32,bytes32,uint256)\":{\"details\":\"Schedule an operation containing a single transaction. Emits a {CallScheduled} event. Requirements: - the caller must have the 'proposer' role.\"},\"scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)\":{\"details\":\"Schedule an operation containing a batch of transactions. Emits one {CallScheduled} event per transaction in the batch. Requirements: - the caller must have the 'proposer' role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"updateDelay(uint256)\":{\"details\":\"Changes the minimum timelock duration for future operations. Emits a {MinDelayChange} event. Requirements: - the caller must be the timelock itself. This can only be achieved by scheduling and later executing an operation where the timelock is the target and the data is the ABI-encoded call to this function.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Timelock.sol\":\"Timelock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x67e3daf189111d6d5b0464ed09cf9f0605a22c4b965a7fcecd707101faff008a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbbb1a75e4064d564bf69e74970eef35064e51fcc09cbf3589aee7faa60d6afe\",\"dweb:/ipfs/QmYfAtQwFSGmxomnyAV3tpBDbfDwiFXV61osWW2zzQVg5Q\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"lib/openzeppelin-contracts/contracts/governance/TimelockController.sol\":{\"keccak256\":\"0xabd9b960dc296e735a752cad0adc1369b9142d1a5e320e9283a1f3aec5783465\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8f371184d206df6767785273ba00a3536f8f7b3874346fdc4160e5692223608\",\"dweb:/ipfs/QmNmYEqB4nygLsguAefVVVCYxVGmwR3MiAub3QXkg69Nyi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x68404b57d114b893554b0e54334b32f578f5d1abf61830025c83fb71dc1944ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3d0a94b3c8afd92c2a9f03f3325e9ac22cec56e995b94ff212670ff3653f0d3\",\"dweb:/ipfs/QmPqKWUysbo8QqKcqH5Lp7SQiL1LfjeoGCSa7iFWmAP8Mw\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x50d8442df21e003cffe241feead16ae1f817afb016e9caab96235d7017816fd8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d079afcda8d243ca111f3471d5bb351b90d64806eb5e9704c414a2808ff02d44\",\"dweb:/ipfs/QmeUcosk8rKGvV9yghc58fd2Te66D943JFBS5jD4mbUZaC\"]},\"src/libraries/Timelock.sol\":{\"keccak256\":\"0x33d33f6ed1049a73c3f75d3e2a97876be0c778caf74a572be0f65c224e0cafe8\",\"urls\":[\"bzz-raw://44f11a42d86e565efbbd40ce3cd49a1842652f89278625dc692caa9ee22df3e3\",\"dweb:/ipfs/QmUsdx2sq9n8QNTUZkQsfqjFHPNwqTW4SDNea9F2bxZnYR\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "minDelay", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "proposers", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "executors", + "type": "address[]" + }, + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256", + "indexed": true + }, + { + "internalType": "address", + "name": "target", + "type": "address", + "indexed": false + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256", + "indexed": false + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes", + "indexed": false + } + ], + "type": "event", + "name": "CallExecuted", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256", + "indexed": true + }, + { + "internalType": "address", + "name": "target", + "type": "address", + "indexed": false + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256", + "indexed": false + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes", + "indexed": false + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32", + "indexed": false + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "CallScheduled", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "Cancelled", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "oldDuration", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "newDuration", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "MinDelayChange", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "RoleAdminChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "RoleGranted", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "RoleRevoked", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "CANCELLER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "EXECUTOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "PROPOSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "TIMELOCK_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "cancel" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "payload", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "execute" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "executeBatch" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getMinDelay", + "outputs": [ + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "grantRole" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "hashOperation", + "outputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "hashOperationBatch", + "outputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isOperation", + "outputs": [ + { + "internalType": "bool", + "name": "registered", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isOperationDone", + "outputs": [ + { + "internalType": "bool", + "name": "done", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isOperationPending", + "outputs": [ + { + "internalType": "bool", + "name": "pending", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isOperationReady", + "outputs": [ + { + "internalType": "bool", + "name": "ready", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "renounceRole" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeRole" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "schedule" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "scheduleBatch" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function", + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newDelay", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "updateDelay" + }, + { + "inputs": [], + "stateMutability": "payable", + "type": "receive" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "cancel(bytes32)": { + "details": "Cancel an operation. Requirements: - the caller must have the 'canceller' role." + }, + "constructor": { + "details": "Initializes the contract with the following parameters: - `minDelay`: initial minimum delay for operations - `proposers`: accounts to be granted proposer and canceller roles - `executors`: accounts to be granted executor role - `admin`: optional account to be granted admin role; disable with zero address" + }, + "execute(address,uint256,bytes,bytes32,bytes32)": { + "details": "Execute an (ready) operation containing a single transaction. Emits a {CallExecuted} event. Requirements: - the caller must have the 'executor' role." + }, + "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)": { + "details": "Execute an (ready) operation containing a batch of transactions. Emits one {CallExecuted} event per transaction in the batch. Requirements: - the caller must have the 'executor' role." + }, + "getMinDelay()": { + "details": "Returns the minimum delay for an operation to become valid. This value can be changed by executing an operation that calls `updateDelay`." + }, + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getTimestamp(bytes32)": { + "details": "Returns the timestamp at which an operation becomes ready (0 for unset operations, 1 for done operations)." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "hashOperation(address,uint256,bytes,bytes32,bytes32)": { + "details": "Returns the identifier of an operation containing a single transaction." + }, + "hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)": { + "details": "Returns the identifier of an operation containing a batch of transactions." + }, + "isOperation(bytes32)": { + "details": "Returns whether an id correspond to a registered operation. This includes both Pending, Ready and Done operations." + }, + "isOperationDone(bytes32)": { + "details": "Returns whether an operation is done or not." + }, + "isOperationPending(bytes32)": { + "details": "Returns whether an operation is pending or not." + }, + "isOperationReady(bytes32)": { + "details": "Returns whether an operation is ready or not." + }, + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": { + "details": "See {IERC1155Receiver-onERC1155BatchReceived}." + }, + "onERC1155Received(address,address,uint256,uint256,bytes)": { + "details": "See {IERC1155Receiver-onERC1155Received}." + }, + "onERC721Received(address,address,uint256,bytes)": { + "details": "See {IERC721Receiver-onERC721Received}." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event." + }, + "schedule(address,uint256,bytes,bytes32,bytes32,uint256)": { + "details": "Schedule an operation containing a single transaction. Emits a {CallScheduled} event. Requirements: - the caller must have the 'proposer' role." + }, + "scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)": { + "details": "Schedule an operation containing a batch of transactions. Emits one {CallScheduled} event per transaction in the batch. Requirements: - the caller must have the 'proposer' role." + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + }, + "updateDelay(uint256)": { + "details": "Changes the minimum timelock duration for future operations. Emits a {MinDelayChange} event. Requirements: - the caller must be the timelock itself. This can only be achieved by scheduling and later executing an operation where the timelock is the target and the data is the ABI-encoded call to this function." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", + ":@uniswap/=lib/", + ":Solidity-RLP/=lib/Solidity-RLP/contracts/", + ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", + ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", + ":v3-core/=lib/v3-core/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/libraries/Timelock.sol": "Timelock" + }, + "libraries": {} + }, + "sources": { + "lib/openzeppelin-contracts/contracts/access/AccessControl.sol": { + "keccak256": "0x67e3daf189111d6d5b0464ed09cf9f0605a22c4b965a7fcecd707101faff008a", + "urls": [ + "bzz-raw://cbbb1a75e4064d564bf69e74970eef35064e51fcc09cbf3589aee7faa60d6afe", + "dweb:/ipfs/QmYfAtQwFSGmxomnyAV3tpBDbfDwiFXV61osWW2zzQVg5Q" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol": { + "keccak256": "0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57", + "urls": [ + "bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a", + "dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol": { + "keccak256": "0xabd9b960dc296e735a752cad0adc1369b9142d1a5e320e9283a1f3aec5783465", + "urls": [ + "bzz-raw://d8f371184d206df6767785273ba00a3536f8f7b3874346fdc4160e5692223608", + "dweb:/ipfs/QmNmYEqB4nygLsguAefVVVCYxVGmwR3MiAub3QXkg69Nyi" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol": { + "keccak256": "0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b", + "urls": [ + "bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec", + "dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": { + "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da", + "urls": [ + "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708", + "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "keccak256": "0x68404b57d114b893554b0e54334b32f578f5d1abf61830025c83fb71dc1944ce", + "urls": [ + "bzz-raw://d3d0a94b3c8afd92c2a9f03f3325e9ac22cec56e995b94ff212670ff3653f0d3", + "dweb:/ipfs/QmPqKWUysbo8QqKcqH5Lp7SQiL1LfjeoGCSa7iFWmAP8Mw" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Strings.sol": { + "keccak256": "0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a", + "urls": [ + "bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634", + "dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": { + "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b", + "urls": [ + "bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d", + "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { + "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", + "urls": [ + "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", + "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { + "keccak256": "0x50d8442df21e003cffe241feead16ae1f817afb016e9caab96235d7017816fd8", + "urls": [ + "bzz-raw://d079afcda8d243ca111f3471d5bb351b90d64806eb5e9704c414a2808ff02d44", + "dweb:/ipfs/QmeUcosk8rKGvV9yghc58fd2Te66D943JFBS5jD4mbUZaC" + ], + "license": "MIT" + }, + "src/libraries/Timelock.sol": { + "keccak256": "0x33d33f6ed1049a73c3f75d3e2a97876be0c778caf74a572be0f65c224e0cafe8", + "urls": [ + "bzz-raw://44f11a42d86e565efbbd40ce3cd49a1842652f89278625dc692caa9ee22df3e3", + "dweb:/ipfs/QmUsdx2sq9n8QNTUZkQsfqjFHPNwqTW4SDNea9F2bxZnYR" + ], + "license": null + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/libraries/Timelock.sol", + "id": 44224, + "exportedSymbols": { + "Timelock": [ + 44223 + ], + "TimelockController": [ + 32511 + ] + }, + "nodeType": "SourceUnit", + "src": "0:736:111", + "nodes": [ + { + "id": 44197, + "nodeType": "PragmaDirective", + "src": "0:23:111", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 44199, + "nodeType": "ImportDirective", + "src": "25:92:111", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol", + "file": "openzeppelin-contracts/governance/TimelockController.sol", + "nameLocation": "-1:-1:-1", + "scope": 44224, + "sourceUnit": 32512, + "symbolAliases": [ + { + "foreign": { + "id": 44198, + "name": "TimelockController", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32511, + "src": "33:18:111", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 44223, + "nodeType": "ContractDefinition", + "src": "119:616:111", + "nodes": [ + { + "id": 44222, + "nodeType": "FunctionDefinition", + "src": "534:199:111", + "nodes": [], + "body": { + "id": 44221, + "nodeType": "Block", + "src": "731:2:111", + "nodes": [], + "statements": [] + }, + "documentation": { + "id": 44202, + "nodeType": "StructuredDocumentation", + "src": "165:364:111", + "text": " @dev Initializes the contract with the following parameters:\n - `minDelay`: initial minimum delay for operations\n - `proposers`: accounts to be granted proposer and canceller roles\n - `executors`: accounts to be granted executor role\n - `admin`: optional account to be granted admin role; disable with zero address" + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 44215, + "name": "minDelay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44204, + "src": "692:8:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 44216, + "name": "proposers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44207, + "src": "702:9:111", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "id": 44217, + "name": "executors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44210, + "src": "713:9:111", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "id": 44218, + "name": "admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44212, + "src": "724:5:111", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 44219, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 44214, + "name": "TimelockController", + "nameLocations": [ + "673:18:111" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 32511, + "src": "673:18:111" + }, + "nodeType": "ModifierInvocation", + "src": "673:57:111" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 44213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44204, + "mutability": "mutable", + "name": "minDelay", + "nameLocation": "563:8:111", + "nodeType": "VariableDeclaration", + "scope": 44222, + "src": "555:16:111", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "555:7:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44207, + "mutability": "mutable", + "name": "proposers", + "nameLocation": "598:9:111", + "nodeType": "VariableDeclaration", + "scope": 44222, + "src": "581:26:111", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 44205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "581:7:111", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 44206, + "nodeType": "ArrayTypeName", + "src": "581:9:111", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44210, + "mutability": "mutable", + "name": "executors", + "nameLocation": "634:9:111", + "nodeType": "VariableDeclaration", + "scope": 44222, + "src": "617:26:111", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 44208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:111", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 44209, + "nodeType": "ArrayTypeName", + "src": "617:9:111", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44212, + "mutability": "mutable", + "name": "admin", + "nameLocation": "661:5:111", + "nodeType": "VariableDeclaration", + "scope": 44222, + "src": "653:13:111", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44211, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "653:7:111", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "545:127:111" + }, + "returnParameters": { + "id": 44220, + "nodeType": "ParameterList", + "parameters": [], + "src": "731:0:111" + }, + "scope": 44223, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 44200, + "name": "TimelockController", + "nameLocations": [ + "140:18:111" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 32511, + "src": "140:18:111" + }, + "id": 44201, + "nodeType": "InheritanceSpecifier", + "src": "140:18:111" + } + ], + "canonicalName": "Timelock", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 44223, + 32511, + 33071, + 34913, + 31411, + 35551, + 35563, + 31484, + 35292 + ], + "name": "Timelock", + "nameLocation": "128:8:111", + "scope": 44224, + "usedErrors": [] + } + ] + }, + "id": 111 +} \ No newline at end of file diff --git a/package.json b/package.json index 5830eed..bb5d9ee 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,8 @@ "scripts": { "lint": "forge fmt --check src test script examples", "test": "forge test", - "turbo:build": "FOUNDRY_IGNORED_ERROR_CODES='[5740,1878]' forge build --extra-output-files abi --out abi", + "turbo:build": "FOUNDRY_IGNORED_ERROR_CODES='[5740,1878]' forge build", "turbo:lint": "forge fmt --check src test script examples", "turbo:test": "forge test" } -} +} \ No newline at end of file From 7e32b8ac109088c1b068581f60ba1c24807aa49f Mon Sep 17 00:00:00 2001 From: Chris T Date: Tue, 28 Mar 2023 15:07:00 -0700 Subject: [PATCH 02/18] Fix .gitignore (#286) GitOrigin-RevId: 04488a8aba977a87227d231dbed861624012add1 --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ef67697..f400302 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +abi/ broadcast/ cache/ logs/ From 8c8309932f0ca4be0d58ee009efb6e28187874a9 Mon Sep 17 00:00:00 2001 From: Ratan Kaliani Date: Tue, 28 Mar 2023 17:45:12 -0700 Subject: [PATCH 03/18] feat: migrate tasks to subgraph from alchemy (#281) * migrate queryFilter to GraphClient * migrate to subgraph in relayer * simplify types for tasks using graphclient * lint: rm comments * parse cursor correctly * update cursors to include deployment id, except for indexblocknumbers * minor lints, fix for getting blocks with sent msgs * migrate queryFilter to GraphClient * migrate to subgraph in relayer * simplify types for tasks using graphclient * lint: rm comments * parse cursor correctly * update cursors to include deployment id, except for indexblocknumbers * minor lints, fix for getting blocks with sent msgs * rebase on main * rm diff w main * migrate queryFilter to GraphClient * migrate to subgraph in relayer * simplify types for tasks using graphclient * lint: rm comments * parse cursor correctly * update cursors to include deployment id, except for indexblocknumbers * minor lints, fix for getting blocks with sent msgs * clean up exports * clean up exports * clean up imports * clean up imports for script * fix cursor to be deployment specific, clean imports for graphclient * fix import * fix import * fix cursor --------- Co-authored-by: Ubuntu GitOrigin-RevId: 243e3dcc8014594fe5bb6b780d7a56774ee553b1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bb5d9ee..2830332 100644 --- a/package.json +++ b/package.json @@ -12,4 +12,4 @@ "turbo:lint": "forge fmt --check src test script examples", "turbo:test": "forge test" } -} \ No newline at end of file +} From 1e065c1ab093a60f1de94b1431a15ba387f4da7c Mon Sep 17 00:00:00 2001 From: Matt Stam Date: Wed, 5 Apr 2023 11:00:58 -0700 Subject: [PATCH 04/18] make telepathyRouter public in abstract contract (#278) GitOrigin-RevId: 002685dea844bb6d6d1c229fda9769fadcb7be28 --- out/LightClientMock.sol/LightClientMock.json | 254 ++-- out/TelepathyPubSub.sol/TelepathyPubSub.json | 124 +- .../TelepathyPublisher.json | 1244 ++++++++--------- .../TelepathySubscriber.json | 604 ++++---- out/TelepathyValidator.sol/IBasicHomeAMB.json | 30 +- .../TelepathyValidator.json | 30 +- src/amb/interfaces/TelepathyHandler.sol | 8 +- .../TelepathyHandlerUpgradeable.sol | 8 +- src/oracle/TelepathyOracle.sol | 3 - 9 files changed, 1151 insertions(+), 1154 deletions(-) diff --git a/out/LightClientMock.sol/LightClientMock.json b/out/LightClientMock.sol/LightClientMock.json index b6d2e75..a16988c 100644 --- a/out/LightClientMock.sol/LightClientMock.json +++ b/out/LightClientMock.sol/LightClientMock.json @@ -362,20 +362,20 @@ }, "ast": { "absolutePath": "test/amb/LightClientMock.sol", - "id": 49377, + "id": 49370, "exportedSymbols": { "ILightClientMock": [ 47862 ], "LightClientMock": [ - 49376 + 49369 ] }, "nodeType": "SourceUnit", "src": "0:1067:128", "nodes": [ { - "id": 49288, + "id": 49281, "nodeType": "PragmaDirective", "src": "0:23:128", "nodes": [], @@ -386,19 +386,19 @@ ] }, { - "id": 49290, + "id": 49283, "nodeType": "ImportDirective", "src": "171:93:128", "nodes": [], "absolutePath": "src/lightclient/interfaces/ILightClient.sol", "file": "src/lightclient/interfaces/ILightClient.sol", "nameLocation": "-1:-1:-1", - "scope": 49377, + "scope": 49370, "sourceUnit": 47863, "symbolAliases": [ { "foreign": { - "id": 49289, + "id": 49282, "name": "ILightClient", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -413,12 +413,12 @@ "unitAlias": "" }, { - "id": 49376, + "id": 49369, "nodeType": "ContractDefinition", "src": "266:800:128", "nodes": [ { - "id": 49295, + "id": 49288, "nodeType": "VariableDeclaration", "src": "317:29:128", "nodes": [], @@ -430,7 +430,7 @@ "mutability": "mutable", "name": "consistent", "nameLocation": "329:10:128", - "scope": 49376, + "scope": 49369, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -438,7 +438,7 @@ "typeString": "bool" }, "typeName": { - "id": 49293, + "id": 49286, "name": "bool", "nodeType": "ElementaryTypeName", "src": "317:4:128", @@ -449,7 +449,7 @@ }, "value": { "hexValue": "74727565", - "id": 49294, + "id": 49287, "isConstant": false, "isLValue": false, "isPure": true, @@ -466,7 +466,7 @@ "visibility": "public" }, { - "id": 49297, + "id": 49290, "nodeType": "VariableDeclaration", "src": "352:19:128", "nodes": [], @@ -478,7 +478,7 @@ "mutability": "mutable", "name": "head", "nameLocation": "367:4:128", - "scope": 49376, + "scope": 49369, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -486,7 +486,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49296, + "id": 49289, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "352:7:128", @@ -498,7 +498,7 @@ "visibility": "public" }, { - "id": 49301, + "id": 49294, "nodeType": "VariableDeclaration", "src": "377:42:128", "nodes": [], @@ -510,7 +510,7 @@ "mutability": "mutable", "name": "headers", "nameLocation": "412:7:128", - "scope": 49376, + "scope": 49369, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -518,9 +518,9 @@ "typeString": "mapping(uint256 => bytes32)" }, "typeName": { - "id": 49300, + "id": 49293, "keyType": { - "id": 49298, + "id": 49291, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "385:7:128", @@ -536,7 +536,7 @@ "typeString": "mapping(uint256 => bytes32)" }, "valueType": { - "id": 49299, + "id": 49292, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "396:7:128", @@ -549,7 +549,7 @@ "visibility": "public" }, { - "id": 49305, + "id": 49298, "nodeType": "VariableDeclaration", "src": "425:54:128", "nodes": [], @@ -561,7 +561,7 @@ "mutability": "mutable", "name": "executionStateRoots", "nameLocation": "460:19:128", - "scope": 49376, + "scope": 49369, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -569,9 +569,9 @@ "typeString": "mapping(uint256 => bytes32)" }, "typeName": { - "id": 49304, + "id": 49297, "keyType": { - "id": 49302, + "id": 49295, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "433:7:128", @@ -587,7 +587,7 @@ "typeString": "mapping(uint256 => bytes32)" }, "valueType": { - "id": 49303, + "id": 49296, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "444:7:128", @@ -600,7 +600,7 @@ "visibility": "public" }, { - "id": 49309, + "id": 49302, "nodeType": "VariableDeclaration", "src": "485:45:128", "nodes": [], @@ -612,7 +612,7 @@ "mutability": "mutable", "name": "timestamps", "nameLocation": "520:10:128", - "scope": 49376, + "scope": 49369, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -620,9 +620,9 @@ "typeString": "mapping(uint256 => uint256)" }, "typeName": { - "id": 49308, + "id": 49301, "keyType": { - "id": 49306, + "id": 49299, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "493:7:128", @@ -638,7 +638,7 @@ "typeString": "mapping(uint256 => uint256)" }, "valueType": { - "id": 49307, + "id": 49300, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "504:7:128", @@ -651,7 +651,7 @@ "visibility": "public" }, { - "id": 49315, + "id": 49308, "nodeType": "EventDefinition", "src": "537:61:128", "nodes": [], @@ -660,18 +660,18 @@ "name": "HeadUpdate", "nameLocation": "543:10:128", "parameters": { - "id": 49314, + "id": 49307, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49311, + "id": 49304, "indexed": true, "mutability": "mutable", "name": "slot", "nameLocation": "570:4:128", "nodeType": "VariableDeclaration", - "scope": 49315, + "scope": 49308, "src": "554:20:128", "stateVariable": false, "storageLocation": "default", @@ -680,7 +680,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49310, + "id": 49303, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "554:7:128", @@ -693,13 +693,13 @@ }, { "constant": false, - "id": 49313, + "id": 49306, "indexed": true, "mutability": "mutable", "name": "root", "nameLocation": "592:4:128", "nodeType": "VariableDeclaration", - "scope": 49315, + "scope": 49308, "src": "576:20:128", "stateVariable": false, "storageLocation": "default", @@ -708,7 +708,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 49312, + "id": 49305, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "576:7:128", @@ -724,43 +724,43 @@ } }, { - "id": 49345, + "id": 49338, "nodeType": "FunctionDefinition", "src": "604:213:128", "nodes": [], "body": { - "id": 49344, + "id": 49337, "nodeType": "Block", "src": "666:151:128", "nodes": [], "statements": [ { "expression": { - "id": 49326, + "id": 49319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 49322, + "id": 49315, "name": "headers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49301, + "referencedDeclaration": 49294, "src": "676:7:128", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 49324, + "id": 49317, "indexExpression": { - "id": 49323, + "id": 49316, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49317, + "referencedDeclaration": 49310, "src": "684:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -781,11 +781,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 49325, + "id": 49318, "name": "headerRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49319, + "referencedDeclaration": 49312, "src": "692:10:128", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -798,37 +798,37 @@ "typeString": "bytes32" } }, - "id": 49327, + "id": 49320, "nodeType": "ExpressionStatement", "src": "676:26:128" }, { "expression": { - "id": 49333, + "id": 49326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 49328, + "id": 49321, "name": "timestamps", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49309, + "referencedDeclaration": 49302, "src": "712:10:128", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", "typeString": "mapping(uint256 => uint256)" } }, - "id": 49330, + "id": 49323, "indexExpression": { - "id": 49329, + "id": 49322, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49317, + "referencedDeclaration": 49310, "src": "723:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -850,7 +850,7 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 49331, + "id": 49324, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -861,7 +861,7 @@ "typeString": "block" } }, - "id": 49332, + "id": 49325, "isConstant": false, "isLValue": false, "isPure": false, @@ -881,23 +881,23 @@ "typeString": "uint256" } }, - "id": 49334, + "id": 49327, "nodeType": "ExpressionStatement", "src": "712:34:128" }, { "expression": { - "id": 49337, + "id": 49330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49335, + "id": 49328, "name": "head", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49297, + "referencedDeclaration": 49290, "src": "756:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -907,11 +907,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 49336, + "id": 49329, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49317, + "referencedDeclaration": 49310, "src": "763:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -924,7 +924,7 @@ "typeString": "uint256" } }, - "id": 49338, + "id": 49331, "nodeType": "ExpressionStatement", "src": "756:11:128" }, @@ -932,11 +932,11 @@ "eventCall": { "arguments": [ { - "id": 49340, + "id": 49333, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49317, + "referencedDeclaration": 49310, "src": "793:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -944,11 +944,11 @@ } }, { - "id": 49341, + "id": 49334, "name": "headerRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49319, + "referencedDeclaration": 49312, "src": "799:10:128", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -967,18 +967,18 @@ "typeString": "bytes32" } ], - "id": 49339, + "id": 49332, "name": "HeadUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49315, + "referencedDeclaration": 49308, "src": "782:10:128", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (uint256,bytes32)" } }, - "id": 49342, + "id": 49335, "isConstant": false, "isLValue": false, "isPure": false, @@ -994,7 +994,7 @@ "typeString": "tuple()" } }, - "id": 49343, + "id": 49336, "nodeType": "EmitStatement", "src": "777:33:128" } @@ -1007,17 +1007,17 @@ "name": "setHeader", "nameLocation": "613:9:128", "parameters": { - "id": 49320, + "id": 49313, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49317, + "id": 49310, "mutability": "mutable", "name": "slot", "nameLocation": "631:4:128", "nodeType": "VariableDeclaration", - "scope": 49345, + "scope": 49338, "src": "623:12:128", "stateVariable": false, "storageLocation": "default", @@ -1026,7 +1026,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49316, + "id": 49309, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "623:7:128", @@ -1039,12 +1039,12 @@ }, { "constant": false, - "id": 49319, + "id": 49312, "mutability": "mutable", "name": "headerRoot", "nameLocation": "645:10:128", "nodeType": "VariableDeclaration", - "scope": 49345, + "scope": 49338, "src": "637:18:128", "stateVariable": false, "storageLocation": "default", @@ -1053,7 +1053,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 49318, + "id": 49311, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "637:7:128", @@ -1068,54 +1068,54 @@ "src": "622:34:128" }, "returnParameters": { - "id": 49321, + "id": 49314, "nodeType": "ParameterList", "parameters": [], "src": "666:0:128" }, - "scope": 49376, + "scope": 49369, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 49375, + "id": 49368, "nodeType": "FunctionDefinition", "src": "823:241:128", "nodes": [], "body": { - "id": 49374, + "id": 49367, "nodeType": "Block", "src": "895:169:128", "nodes": [], "statements": [ { "expression": { - "id": 49356, + "id": 49349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 49352, + "id": 49345, "name": "executionStateRoots", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49305, + "referencedDeclaration": 49298, "src": "905:19:128", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 49354, + "id": 49347, "indexExpression": { - "id": 49353, + "id": 49346, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49347, + "referencedDeclaration": 49340, "src": "925:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1136,11 +1136,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 49355, + "id": 49348, "name": "executionRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49349, + "referencedDeclaration": 49342, "src": "933:13:128", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1153,37 +1153,37 @@ "typeString": "bytes32" } }, - "id": 49357, + "id": 49350, "nodeType": "ExpressionStatement", "src": "905:41:128" }, { "expression": { - "id": 49363, + "id": 49356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 49358, + "id": 49351, "name": "timestamps", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49309, + "referencedDeclaration": 49302, "src": "956:10:128", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", "typeString": "mapping(uint256 => uint256)" } }, - "id": 49360, + "id": 49353, "indexExpression": { - "id": 49359, + "id": 49352, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49347, + "referencedDeclaration": 49340, "src": "967:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1205,7 +1205,7 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 49361, + "id": 49354, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1216,7 +1216,7 @@ "typeString": "block" } }, - "id": 49362, + "id": 49355, "isConstant": false, "isLValue": false, "isPure": false, @@ -1236,23 +1236,23 @@ "typeString": "uint256" } }, - "id": 49364, + "id": 49357, "nodeType": "ExpressionStatement", "src": "956:34:128" }, { "expression": { - "id": 49367, + "id": 49360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49365, + "id": 49358, "name": "head", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49297, + "referencedDeclaration": 49290, "src": "1000:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1262,11 +1262,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 49366, + "id": 49359, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49347, + "referencedDeclaration": 49340, "src": "1007:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1279,7 +1279,7 @@ "typeString": "uint256" } }, - "id": 49368, + "id": 49361, "nodeType": "ExpressionStatement", "src": "1000:11:128" }, @@ -1287,11 +1287,11 @@ "eventCall": { "arguments": [ { - "id": 49370, + "id": 49363, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49347, + "referencedDeclaration": 49340, "src": "1037:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1299,11 +1299,11 @@ } }, { - "id": 49371, + "id": 49364, "name": "executionRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49349, + "referencedDeclaration": 49342, "src": "1043:13:128", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1322,18 +1322,18 @@ "typeString": "bytes32" } ], - "id": 49369, + "id": 49362, "name": "HeadUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49315, + "referencedDeclaration": 49308, "src": "1026:10:128", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (uint256,bytes32)" } }, - "id": 49372, + "id": 49365, "isConstant": false, "isLValue": false, "isPure": false, @@ -1349,7 +1349,7 @@ "typeString": "tuple()" } }, - "id": 49373, + "id": 49366, "nodeType": "EmitStatement", "src": "1021:36:128" } @@ -1362,17 +1362,17 @@ "name": "setExecutionRoot", "nameLocation": "832:16:128", "parameters": { - "id": 49350, + "id": 49343, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49347, + "id": 49340, "mutability": "mutable", "name": "slot", "nameLocation": "857:4:128", "nodeType": "VariableDeclaration", - "scope": 49375, + "scope": 49368, "src": "849:12:128", "stateVariable": false, "storageLocation": "default", @@ -1381,7 +1381,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49346, + "id": 49339, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "849:7:128", @@ -1394,12 +1394,12 @@ }, { "constant": false, - "id": 49349, + "id": 49342, "mutability": "mutable", "name": "executionRoot", "nameLocation": "871:13:128", "nodeType": "VariableDeclaration", - "scope": 49375, + "scope": 49368, "src": "863:21:128", "stateVariable": false, "storageLocation": "default", @@ -1408,7 +1408,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 49348, + "id": 49341, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "863:7:128", @@ -1423,12 +1423,12 @@ "src": "848:37:128" }, "returnParameters": { - "id": 49351, + "id": 49344, "nodeType": "ParameterList", "parameters": [], "src": "895:0:128" }, - "scope": 49376, + "scope": 49369, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -1438,7 +1438,7 @@ "baseContracts": [ { "baseName": { - "id": 49291, + "id": 49284, "name": "ILightClientMock", "nameLocations": [ "294:16:128" @@ -1447,7 +1447,7 @@ "referencedDeclaration": 47862, "src": "294:16:128" }, - "id": 49292, + "id": 49285, "nodeType": "InheritanceSpecifier", "src": "294:16:128" } @@ -1457,12 +1457,12 @@ "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 49376, + 49369, 47862 ], "name": "LightClientMock", "nameLocation": "275:15:128", - "scope": 49377, + "scope": 49370, "usedErrors": [] } ] diff --git a/out/TelepathyPubSub.sol/TelepathyPubSub.json b/out/TelepathyPubSub.sol/TelepathyPubSub.json index 0375a72..e75f50a 100644 --- a/out/TelepathyPubSub.sol/TelepathyPubSub.json +++ b/out/TelepathyPubSub.sol/TelepathyPubSub.json @@ -1134,29 +1134,29 @@ }, "ast": { "absolutePath": "src/pubsub/TelepathyPubSub.sol", - "id": 48517, + "id": 48510, "exportedSymbols": { "PubSubStorage": [ - 48485 + 48478 ], "TelepathyPubSub": [ - 48516 + 48509 ], "TelepathyPublisher": [ - 48910 + 48903 ], "TelepathyRouter": [ 42568 ], "TelepathySubscriber": [ - 49073 + 49066 ] }, "nodeType": "SourceUnit", "src": "0:1230:122", "nodes": [ { - "id": 48487, + "id": 48480, "nodeType": "PragmaDirective", "src": "0:24:122", "nodes": [], @@ -1168,23 +1168,23 @@ ] }, { - "id": 48489, + "id": 48482, "nodeType": "ImportDirective", "src": "26:69:122", "nodes": [], "absolutePath": "src/pubsub/TelepathyPublisher.sol", "file": "src/pubsub/TelepathyPublisher.sol", "nameLocation": "-1:-1:-1", - "scope": 48517, - "sourceUnit": 48911, + "scope": 48510, + "sourceUnit": 48904, "symbolAliases": [ { "foreign": { - "id": 48488, + "id": 48481, "name": "TelepathyPublisher", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48910, + "referencedDeclaration": 48903, "src": "34:18:122", "typeDescriptions": {} }, @@ -1194,23 +1194,23 @@ "unitAlias": "" }, { - "id": 48491, + "id": 48484, "nodeType": "ImportDirective", "src": "97:71:122", "nodes": [], "absolutePath": "src/pubsub/TelepathySubscriber.sol", "file": "src/pubsub/TelepathySubscriber.sol", "nameLocation": "-1:-1:-1", - "scope": 48517, - "sourceUnit": 49074, + "scope": 48510, + "sourceUnit": 49067, "symbolAliases": [ { "foreign": { - "id": 48490, + "id": 48483, "name": "TelepathySubscriber", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49073, + "referencedDeclaration": 49066, "src": "105:19:122", "typeDescriptions": {} }, @@ -1220,23 +1220,23 @@ "unitAlias": "" }, { - "id": 48493, + "id": 48486, "nodeType": "ImportDirective", "src": "170:59:122", "nodes": [], "absolutePath": "src/pubsub/PubSubStorage.sol", "file": "src/pubsub/PubSubStorage.sol", "nameLocation": "-1:-1:-1", - "scope": 48517, - "sourceUnit": 48486, + "scope": 48510, + "sourceUnit": 48479, "symbolAliases": [ { "foreign": { - "id": 48492, + "id": 48485, "name": "PubSubStorage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48485, + "referencedDeclaration": 48478, "src": "178:13:122", "typeDescriptions": {} }, @@ -1246,19 +1246,19 @@ "unitAlias": "" }, { - "id": 48495, + "id": 48488, "nodeType": "ImportDirective", "src": "231:60:122", "nodes": [], "absolutePath": "src/amb/TelepathyRouter.sol", "file": "src/amb/TelepathyRouter.sol", "nameLocation": "-1:-1:-1", - "scope": 48517, + "scope": 48510, "sourceUnit": 42569, "symbolAliases": [ { "foreign": { - "id": 48494, + "id": 48487, "name": "TelepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1272,12 +1272,12 @@ "unitAlias": "" }, { - "id": 48516, + "id": 48509, "nodeType": "ContractDefinition", "src": "843:386:122", "nodes": [ { - "id": 48503, + "id": 48496, "nodeType": "VariableDeclaration", "src": "917:33:122", "nodes": [], @@ -1286,7 +1286,7 @@ "mutability": "constant", "name": "VERSION", "nameLocation": "939:7:122", - "scope": 48516, + "scope": 48509, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1294,7 +1294,7 @@ "typeString": "uint8" }, "typeName": { - "id": 48501, + "id": 48494, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "917:5:122", @@ -1305,7 +1305,7 @@ }, "value": { "hexValue": "31", - "id": 48502, + "id": 48495, "isConstant": false, "isLValue": false, "isPure": true, @@ -1322,29 +1322,29 @@ "visibility": "public" }, { - "id": 48515, + "id": 48508, "nodeType": "FunctionDefinition", "src": "957:106:122", "nodes": [], "body": { - "id": 48514, + "id": 48507, "nodeType": "Block", "src": "995:68:122", "nodes": [], "statements": [ { "expression": { - "id": 48512, + "id": 48505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48508, + "id": 48501, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48469, + "referencedDeclaration": 48462, "src": "1005:15:122", "typeDescriptions": { "typeIdentifier": "t_contract$_TelepathyRouter_$42568", @@ -1356,11 +1356,11 @@ "rightHandSide": { "arguments": [ { - "id": 48510, + "id": 48503, "name": "_telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48505, + "referencedDeclaration": 48498, "src": "1039:16:122", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1375,7 +1375,7 @@ "typeString": "address" } ], - "id": 48509, + "id": 48502, "name": "TelepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1386,7 +1386,7 @@ "typeString": "type(contract TelepathyRouter)" } }, - "id": 48511, + "id": 48504, "isConstant": false, "isLValue": false, "isPure": false, @@ -1408,7 +1408,7 @@ "typeString": "contract TelepathyRouter" } }, - "id": 48513, + "id": 48506, "nodeType": "ExpressionStatement", "src": "1005:51:122" } @@ -1420,17 +1420,17 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 48506, + "id": 48499, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48505, + "id": 48498, "mutability": "mutable", "name": "_telepathyRouter", "nameLocation": "977:16:122", "nodeType": "VariableDeclaration", - "scope": 48515, + "scope": 48508, "src": "969:24:122", "stateVariable": false, "storageLocation": "default", @@ -1439,7 +1439,7 @@ "typeString": "address" }, "typeName": { - "id": 48504, + "id": 48497, "name": "address", "nodeType": "ElementaryTypeName", "src": "969:7:122", @@ -1455,12 +1455,12 @@ "src": "968:26:122" }, "returnParameters": { - "id": 48507, + "id": 48500, "nodeType": "ParameterList", "parameters": [], "src": "995:0:122" }, - "scope": 48516, + "scope": 48509, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -1470,31 +1470,31 @@ "baseContracts": [ { "baseName": { - "id": 48497, + "id": 48490, "name": "TelepathyPublisher", "nameLocations": [ "871:18:122" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48910, + "referencedDeclaration": 48903, "src": "871:18:122" }, - "id": 48498, + "id": 48491, "nodeType": "InheritanceSpecifier", "src": "871:18:122" }, { "baseName": { - "id": 48499, + "id": 48492, "name": "TelepathySubscriber", "nameLocations": [ "891:19:122" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49073, + "referencedDeclaration": 49066, "src": "891:19:122" }, - "id": 48500, + "id": 48493, "nodeType": "InheritanceSpecifier", "src": "891:19:122" } @@ -1503,27 +1503,27 @@ "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 48496, + "id": 48489, "nodeType": "StructuredDocumentation", "src": "418:425:122", "text": "@title TelepathyPubSub\n @author Succinct Labs\n @notice This allows an on-chain Publisher-Suscriber model to be used for events. Contracts can subscribe to\n events emitted from a source contract, and it will be relayed these events through the publisher. Before\n the events are relayed, they are verified using the Telepathy Light Client for proof of consensus on the\n source chain." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 48516, - 49073, - 48910, - 48485, - 49136, - 49174 + 48509, + 49066, + 48903, + 48478, + 49129, + 49167 ], "name": "TelepathyPubSub", "nameLocation": "852:15:122", - "scope": 48517, + "scope": 48510, "usedErrors": [ - 48927, - 48931, - 48937 + 48920, + 48924, + 48930 ] } ] diff --git a/out/TelepathyPublisher.sol/TelepathyPublisher.json b/out/TelepathyPublisher.sol/TelepathyPublisher.json index dc9b0cb..a374052 100644 --- a/out/TelepathyPublisher.sol/TelepathyPublisher.json +++ b/out/TelepathyPublisher.sol/TelepathyPublisher.json @@ -651,34 +651,34 @@ }, "ast": { "absolutePath": "src/pubsub/TelepathyPublisher.sol", - "id": 48911, + "id": 48904, "exportedSymbols": { "Address": [ 44245 ], "EventProof": [ - 48458 + 48451 ], "IPublisher": [ - 49174 + 49167 ], "ISubscriptionReceiver": [ - 49195 + 49188 ], "PubSubStorage": [ - 48485 + 48478 ], "PublishStatus": [ - 49140 + 49133 ], "SSZ": [ 43867 ], "Subscription": [ - 49087 + 49080 ], "TelepathyPublisher": [ - 48910 + 48903 ], "TelepathyRouter": [ 42568 @@ -688,7 +688,7 @@ "src": "0:6067:123", "nodes": [ { - "id": 48518, + "id": 48511, "nodeType": "PragmaDirective", "src": "0:24:123", "nodes": [], @@ -700,23 +700,23 @@ ] }, { - "id": 48521, + "id": 48514, "nodeType": "ImportDirective", "src": "26:75:123", "nodes": [], "absolutePath": "src/pubsub/interfaces/IPubSub.sol", "file": "src/pubsub/interfaces/IPubSub.sol", "nameLocation": "-1:-1:-1", - "scope": 48911, - "sourceUnit": 49175, + "scope": 48904, + "sourceUnit": 49168, "symbolAliases": [ { "foreign": { - "id": 48519, + "id": 48512, "name": "Subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "34:12:123", "typeDescriptions": {} }, @@ -724,11 +724,11 @@ }, { "foreign": { - "id": 48520, + "id": 48513, "name": "IPublisher", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49174, + "referencedDeclaration": 49167, "src": "48:10:123", "typeDescriptions": {} }, @@ -738,23 +738,23 @@ "unitAlias": "" }, { - "id": 48523, + "id": 48516, "nodeType": "ImportDirective", "src": "102:53:123", "nodes": [], "absolutePath": "src/pubsub/EventProof.sol", "file": "src/pubsub/EventProof.sol", "nameLocation": "-1:-1:-1", - "scope": 48911, - "sourceUnit": 48459, + "scope": 48904, + "sourceUnit": 48452, "symbolAliases": [ { "foreign": { - "id": 48522, + "id": 48515, "name": "EventProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48458, + "referencedDeclaration": 48451, "src": "110:10:123", "typeDescriptions": {} }, @@ -764,23 +764,23 @@ "unitAlias": "" }, { - "id": 48525, + "id": 48518, "nodeType": "ImportDirective", "src": "156:86:123", "nodes": [], "absolutePath": "src/pubsub/interfaces/ISubscriptionReceiver.sol", "file": "src/pubsub/interfaces/ISubscriptionReceiver.sol", "nameLocation": "-1:-1:-1", - "scope": 48911, - "sourceUnit": 49196, + "scope": 48904, + "sourceUnit": 49189, "symbolAliases": [ { "foreign": { - "id": 48524, + "id": 48517, "name": "ISubscriptionReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49195, + "referencedDeclaration": 49188, "src": "164:21:123", "typeDescriptions": {} }, @@ -790,19 +790,19 @@ "unitAlias": "" }, { - "id": 48527, + "id": 48520, "nodeType": "ImportDirective", "src": "243:60:123", "nodes": [], "absolutePath": "src/amb/TelepathyRouter.sol", "file": "src/amb/TelepathyRouter.sol", "nameLocation": "-1:-1:-1", - "scope": 48911, + "scope": 48904, "sourceUnit": 42569, "symbolAliases": [ { "foreign": { - "id": 48526, + "id": 48519, "name": "TelepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -816,19 +816,19 @@ "unitAlias": "" }, { - "id": 48529, + "id": 48522, "nodeType": "ImportDirective", "src": "304:54:123", "nodes": [], "absolutePath": "src/libraries/SimpleSerialize.sol", "file": "src/libraries/SimpleSerialize.sol", "nameLocation": "-1:-1:-1", - "scope": 48911, + "scope": 48904, "sourceUnit": 43868, "symbolAliases": [ { "foreign": { - "id": 48528, + "id": 48521, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -842,19 +842,19 @@ "unitAlias": "" }, { - "id": 48531, + "id": 48524, "nodeType": "ImportDirective", "src": "359:51:123", "nodes": [], "absolutePath": "src/libraries/Typecast.sol", "file": "src/libraries/Typecast.sol", "nameLocation": "-1:-1:-1", - "scope": 48911, + "scope": 48904, "sourceUnit": 44266, "symbolAliases": [ { "foreign": { - "id": 48530, + "id": 48523, "name": "Address", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -868,23 +868,23 @@ "unitAlias": "" }, { - "id": 48533, + "id": 48526, "nodeType": "ImportDirective", "src": "411:59:123", "nodes": [], "absolutePath": "src/pubsub/PubSubStorage.sol", "file": "src/pubsub/PubSubStorage.sol", "nameLocation": "-1:-1:-1", - "scope": 48911, - "sourceUnit": 48486, + "scope": 48904, + "sourceUnit": 48479, "symbolAliases": [ { "foreign": { - "id": 48532, + "id": 48525, "name": "PubSubStorage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48485, + "referencedDeclaration": 48478, "src": "419:13:123", "typeDescriptions": {} }, @@ -894,23 +894,23 @@ "unitAlias": "" }, { - "id": 48535, + "id": 48528, "nodeType": "ImportDirective", "src": "472:64:123", "nodes": [], "absolutePath": "src/pubsub/interfaces/IPubSub.sol", "file": "src/pubsub/interfaces/IPubSub.sol", "nameLocation": "-1:-1:-1", - "scope": 48911, - "sourceUnit": 49175, + "scope": 48904, + "sourceUnit": 49168, "symbolAliases": [ { "foreign": { - "id": 48534, + "id": 48527, "name": "PublishStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49140, + "referencedDeclaration": 49133, "src": "480:13:123", "typeDescriptions": {} }, @@ -920,17 +920,17 @@ "unitAlias": "" }, { - "id": 48910, + "id": 48903, "nodeType": "ContractDefinition", "src": "678:5388:123", "nodes": [ { - "id": 48688, + "id": 48681, "nodeType": "FunctionDefinition", "src": "1533:1728:123", "nodes": [], "body": { - "id": 48687, + "id": 48680, "nodeType": "Block", "src": "1837:1424:123", "nodes": [], @@ -940,18 +940,18 @@ "arguments": [ { "expression": { - "id": 48562, + "id": 48555, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48558, + "referencedDeclaration": 48551, "src": "1877:12:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48563, + "id": 48556, "isConstant": false, "isLValue": false, "isPure": false, @@ -959,7 +959,7 @@ "memberLocation": "1890:13:123", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49080, + "referencedDeclaration": 49073, "src": "1877:26:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -974,18 +974,18 @@ "typeString": "uint32" } ], - "id": 48561, + "id": 48554, "name": "requireLightClientConsistency", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48721, + "referencedDeclaration": 48714, "src": "1847:29:123", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", "typeString": "function (uint32) view" } }, - "id": 48564, + "id": 48557, "isConstant": false, "isLValue": false, "isPure": false, @@ -1001,7 +1001,7 @@ "typeString": "tuple()" } }, - "id": 48565, + "id": 48558, "nodeType": "ExpressionStatement", "src": "1847:57:123" }, @@ -1010,18 +1010,18 @@ "arguments": [ { "expression": { - "id": 48567, + "id": 48560, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48558, + "referencedDeclaration": 48551, "src": "1931:12:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48568, + "id": 48561, "isConstant": false, "isLValue": false, "isPure": false, @@ -1029,7 +1029,7 @@ "memberLocation": "1944:13:123", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49080, + "referencedDeclaration": 49073, "src": "1931:26:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -1044,18 +1044,18 @@ "typeString": "uint32" } ], - "id": 48566, + "id": 48559, "name": "requireNotFrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48737, + "referencedDeclaration": 48730, "src": "1914:16:123", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", "typeString": "function (uint32) view" } }, - "id": 48569, + "id": 48562, "isConstant": false, "isLValue": false, "isPure": false, @@ -1071,23 +1071,23 @@ "typeString": "tuple()" } }, - "id": 48570, + "id": 48563, "nodeType": "ExpressionStatement", "src": "1914:44:123" }, { "assignments": [ - 48572 + 48565 ], "declarations": [ { "constant": false, - "id": 48572, + "id": 48565, "mutability": "mutable", "name": "subscriptionId", "nameLocation": "2053:14:123", "nodeType": "VariableDeclaration", - "scope": 48687, + "scope": 48680, "src": "2045:22:123", "stateVariable": false, "storageLocation": "default", @@ -1096,7 +1096,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 48571, + "id": 48564, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2045:7:123", @@ -1108,20 +1108,20 @@ "visibility": "internal" } ], - "id": 48579, + "id": 48572, "initialValue": { "arguments": [ { "arguments": [ { - "id": 48576, + "id": 48569, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48558, + "referencedDeclaration": 48551, "src": "2091:12:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } } @@ -1129,12 +1129,12 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } ], "expression": { - "id": 48574, + "id": 48567, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1145,7 +1145,7 @@ "typeString": "abi" } }, - "id": 48575, + "id": 48568, "isConstant": false, "isLValue": false, "isPure": true, @@ -1159,7 +1159,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 48577, + "id": 48570, "isConstant": false, "isLValue": false, "isPure": false, @@ -1183,7 +1183,7 @@ "typeString": "bytes memory" } ], - "id": 48573, + "id": 48566, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1194,7 +1194,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 48578, + "id": 48571, "isConstant": false, "isLValue": false, "isPure": false, @@ -1215,17 +1215,17 @@ }, { "assignments": [ - 48581 + 48574 ], "declarations": [ { "constant": false, - "id": 48581, + "id": 48574, "mutability": "mutable", "name": "publishKey", "nameLocation": "2123:10:123", "nodeType": "VariableDeclaration", - "scope": 48687, + "scope": 48680, "src": "2115:18:123", "stateVariable": false, "storageLocation": "default", @@ -1234,7 +1234,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 48580, + "id": 48573, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2115:7:123", @@ -1246,17 +1246,17 @@ "visibility": "internal" } ], - "id": 48591, + "id": 48584, "initialValue": { "arguments": [ { "arguments": [ { - "id": 48585, + "id": 48578, "name": "srcSlotTxSlotPack", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48543, + "referencedDeclaration": 48536, "src": "2169:17:123", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", @@ -1264,11 +1264,11 @@ } }, { - "id": 48586, + "id": 48579, "name": "txIndexRLPEncoded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48553, + "referencedDeclaration": 48546, "src": "2188:17:123", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -1276,11 +1276,11 @@ } }, { - "id": 48587, + "id": 48580, "name": "logIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48555, + "referencedDeclaration": 48548, "src": "2207:8:123", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1288,11 +1288,11 @@ } }, { - "id": 48588, + "id": 48581, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48572, + "referencedDeclaration": 48565, "src": "2217:14:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1320,7 +1320,7 @@ } ], "expression": { - "id": 48583, + "id": 48576, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1331,7 +1331,7 @@ "typeString": "abi" } }, - "id": 48584, + "id": 48577, "isConstant": false, "isLValue": false, "isPure": true, @@ -1345,7 +1345,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 48589, + "id": 48582, "isConstant": false, "isLValue": false, "isPure": false, @@ -1369,7 +1369,7 @@ "typeString": "bytes memory" } ], - "id": 48582, + "id": 48575, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1380,7 +1380,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 48590, + "id": 48583, "isConstant": false, "isLValue": false, "isPure": false, @@ -1404,34 +1404,34 @@ "arguments": [ { "commonType": { - "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeIdentifier": "t_enum$_PublishStatus_$49133", "typeString": "enum PublishStatus" }, - "id": 48598, + "id": 48591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 48593, + "id": 48586, "name": "eventsPublished", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48474, + "referencedDeclaration": 48467, "src": "2264:15:123", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49140_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49133_$", "typeString": "mapping(bytes32 => enum PublishStatus)" } }, - "id": 48595, + "id": 48588, "indexExpression": { - "id": 48594, + "id": 48587, "name": "publishKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48581, + "referencedDeclaration": 48574, "src": "2280:10:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1445,7 +1445,7 @@ "nodeType": "IndexAccess", "src": "2264:27:123", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeIdentifier": "t_enum$_PublishStatus_$49133", "typeString": "enum PublishStatus" } }, @@ -1453,18 +1453,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 48596, + "id": 48589, "name": "PublishStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49140, + "referencedDeclaration": 49133, "src": "2295:13:123", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49140_$", + "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49133_$", "typeString": "type(enum PublishStatus)" } }, - "id": 48597, + "id": 48590, "isConstant": false, "isLValue": false, "isPure": true, @@ -1472,10 +1472,10 @@ "memberLocation": "2309:12:123", "memberName": "NOT_EXECUTED", "nodeType": "MemberAccess", - "referencedDeclaration": 49137, + "referencedDeclaration": 49130, "src": "2295:26:123", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeIdentifier": "t_enum$_PublishStatus_$49133", "typeString": "enum PublishStatus" } }, @@ -1487,7 +1487,7 @@ }, { "hexValue": "4576656e7420616c7265616479207075626c6973686564", - "id": 48599, + "id": 48592, "isConstant": false, "isLValue": false, "isPure": true, @@ -1513,7 +1513,7 @@ "typeString": "literal_string \"Event already published\"" } ], - "id": 48592, + "id": 48585, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -1527,7 +1527,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 48600, + "id": 48593, "isConstant": false, "isLValue": false, "isPure": false, @@ -1543,24 +1543,24 @@ "typeString": "tuple()" } }, - "id": 48601, + "id": 48594, "nodeType": "ExpressionStatement", "src": "2243:115:123" }, { "assignments": [ - 48603, - 48605 + 48596, + 48598 ], "declarations": [ { "constant": false, - "id": 48603, + "id": 48596, "mutability": "mutable", "name": "srcSlot", "nameLocation": "2377:7:123", "nodeType": "VariableDeclaration", - "scope": 48687, + "scope": 48680, "src": "2370:14:123", "stateVariable": false, "storageLocation": "default", @@ -1569,7 +1569,7 @@ "typeString": "uint64" }, "typeName": { - "id": 48602, + "id": 48595, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2370:6:123", @@ -1582,12 +1582,12 @@ }, { "constant": false, - "id": 48605, + "id": 48598, "mutability": "mutable", "name": "txSlot", "nameLocation": "2393:6:123", "nodeType": "VariableDeclaration", - "scope": 48687, + "scope": 48680, "src": "2386:13:123", "stateVariable": false, "storageLocation": "default", @@ -1596,7 +1596,7 @@ "typeString": "uint64" }, "typeName": { - "id": 48604, + "id": 48597, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2386:6:123", @@ -1608,15 +1608,15 @@ "visibility": "internal" } ], - "id": 48615, + "id": 48608, "initialValue": { "arguments": [ { - "id": 48608, + "id": 48601, "name": "srcSlotTxSlotPack", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48543, + "referencedDeclaration": 48536, "src": "2414:17:123", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", @@ -1626,7 +1626,7 @@ { "components": [ { - "id": 48610, + "id": 48603, "isConstant": false, "isLValue": false, "isPure": true, @@ -1638,7 +1638,7 @@ "typeString": "type(uint64)" }, "typeName": { - "id": 48609, + "id": 48602, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2434:6:123", @@ -1646,7 +1646,7 @@ } }, { - "id": 48612, + "id": 48605, "isConstant": false, "isLValue": false, "isPure": true, @@ -1658,7 +1658,7 @@ "typeString": "type(uint64)" }, "typeName": { - "id": 48611, + "id": 48604, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2442:6:123", @@ -1666,7 +1666,7 @@ } } ], - "id": 48613, + "id": 48606, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -1692,7 +1692,7 @@ } ], "expression": { - "id": 48606, + "id": 48599, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1703,7 +1703,7 @@ "typeString": "abi" } }, - "id": 48607, + "id": 48600, "isConstant": false, "isLValue": false, "isPure": true, @@ -1717,7 +1717,7 @@ "typeString": "function () pure" } }, - "id": 48614, + "id": 48607, "isConstant": false, "isLValue": false, "isPure": false, @@ -1740,11 +1740,11 @@ "expression": { "arguments": [ { - "id": 48617, + "id": 48610, "name": "srcSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48603, + "referencedDeclaration": 48596, "src": "2484:7:123", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -1753,18 +1753,18 @@ }, { "expression": { - "id": 48618, + "id": 48611, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48558, + "referencedDeclaration": 48551, "src": "2493:12:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48619, + "id": 48612, "isConstant": false, "isLValue": false, "isPure": false, @@ -1772,7 +1772,7 @@ "memberLocation": "2506:13:123", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49080, + "referencedDeclaration": 49073, "src": "2493:26:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -1791,18 +1791,18 @@ "typeString": "uint32" } ], - "id": 48616, + "id": 48609, "name": "requireLightClientDelay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48797, + "referencedDeclaration": 48790, "src": "2460:23:123", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint32_$returns$__$", "typeString": "function (uint64,uint32) view" } }, - "id": 48620, + "id": 48613, "isConstant": false, "isLValue": false, "isPure": false, @@ -1818,23 +1818,23 @@ "typeString": "tuple()" } }, - "id": 48621, + "id": 48614, "nodeType": "ExpressionStatement", "src": "2460:60:123" }, { "assignments": [ - 48623 + 48616 ], "declarations": [ { "constant": false, - "id": 48623, + "id": 48616, "mutability": "mutable", "name": "headerRoot", "nameLocation": "2538:10:123", "nodeType": "VariableDeclaration", - "scope": 48687, + "scope": 48680, "src": "2530:18:123", "stateVariable": false, "storageLocation": "default", @@ -1843,7 +1843,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 48622, + "id": 48615, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2530:7:123", @@ -1855,15 +1855,15 @@ "visibility": "internal" } ], - "id": 48632, + "id": 48625, "initialValue": { "arguments": [ { - "id": 48630, + "id": 48623, "name": "srcSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48603, + "referencedDeclaration": 48596, "src": "2628:7:123", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -1882,18 +1882,18 @@ "arguments": [ { "expression": { - "id": 48626, + "id": 48619, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48558, + "referencedDeclaration": 48551, "src": "2592:12:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48627, + "id": 48620, "isConstant": false, "isLValue": false, "isPure": false, @@ -1901,7 +1901,7 @@ "memberLocation": "2605:13:123", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49080, + "referencedDeclaration": 49073, "src": "2592:26:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -1917,18 +1917,18 @@ } ], "expression": { - "id": 48624, + "id": 48617, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48469, + "referencedDeclaration": 48462, "src": "2563:15:123", "typeDescriptions": { "typeIdentifier": "t_contract$_TelepathyRouter_$42568", "typeString": "contract TelepathyRouter" } }, - "id": 48625, + "id": 48618, "isConstant": false, "isLValue": false, "isPure": false, @@ -1943,7 +1943,7 @@ "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48628, + "id": 48621, "isConstant": false, "isLValue": false, "isPure": false, @@ -1959,7 +1959,7 @@ "typeString": "contract ILightClient" } }, - "id": 48629, + "id": 48622, "isConstant": false, "isLValue": false, "isPure": false, @@ -1974,7 +1974,7 @@ "typeString": "function (uint256) view external returns (bytes32)" } }, - "id": 48631, + "id": 48624, "isConstant": false, "isLValue": false, "isPure": false, @@ -2001,17 +2001,17 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 48639, + "id": 48632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48634, + "id": 48627, "name": "headerRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48623, + "referencedDeclaration": 48616, "src": "2654:10:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2024,7 +2024,7 @@ "arguments": [ { "hexValue": "30", - "id": 48637, + "id": 48630, "isConstant": false, "isLValue": false, "isPure": true, @@ -2046,7 +2046,7 @@ "typeString": "int_const 0" } ], - "id": 48636, + "id": 48629, "isConstant": false, "isLValue": false, "isPure": true, @@ -2058,14 +2058,14 @@ "typeString": "type(bytes32)" }, "typeName": { - "id": 48635, + "id": 48628, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2668:7:123", "typeDescriptions": {} } }, - "id": 48638, + "id": 48631, "isConstant": false, "isLValue": false, "isPure": true, @@ -2089,7 +2089,7 @@ }, { "hexValue": "486561646572526f6f74206973206d697373696e67", - "id": 48640, + "id": 48633, "isConstant": false, "isLValue": false, "isPure": true, @@ -2115,7 +2115,7 @@ "typeString": "literal_string \"HeaderRoot is missing\"" } ], - "id": 48633, + "id": 48626, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2129,7 +2129,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 48641, + "id": 48634, "isConstant": false, "isLValue": false, "isPure": false, @@ -2145,23 +2145,23 @@ "typeString": "tuple()" } }, - "id": 48642, + "id": 48635, "nodeType": "ExpressionStatement", "src": "2646:58:123" }, { "assignments": [ - 48644 + 48637 ], "declarations": [ { "constant": false, - "id": 48644, + "id": 48637, "mutability": "mutable", "name": "isValid", "nameLocation": "2719:7:123", "nodeType": "VariableDeclaration", - "scope": 48687, + "scope": 48680, "src": "2714:12:123", "stateVariable": false, "storageLocation": "default", @@ -2170,7 +2170,7 @@ "typeString": "bool" }, "typeName": { - "id": 48643, + "id": 48636, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2714:4:123", @@ -2182,15 +2182,15 @@ "visibility": "internal" } ], - "id": 48653, + "id": 48646, "initialValue": { "arguments": [ { - "id": 48647, + "id": 48640, "name": "receiptsRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48548, + "referencedDeclaration": 48541, "src": "2764:12:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2198,11 +2198,11 @@ } }, { - "id": 48648, + "id": 48641, "name": "receiptsRootProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48546, + "referencedDeclaration": 48539, "src": "2778:17:123", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", @@ -2210,11 +2210,11 @@ } }, { - "id": 48649, + "id": 48642, "name": "headerRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48623, + "referencedDeclaration": 48616, "src": "2797:10:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2222,11 +2222,11 @@ } }, { - "id": 48650, + "id": 48643, "name": "srcSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48603, + "referencedDeclaration": 48596, "src": "2809:7:123", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -2234,11 +2234,11 @@ } }, { - "id": 48651, + "id": 48644, "name": "txSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48605, + "referencedDeclaration": 48598, "src": "2818:6:123", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -2270,7 +2270,7 @@ } ], "expression": { - "id": 48645, + "id": 48638, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2281,7 +2281,7 @@ "typeString": "type(library SSZ)" } }, - "id": 48646, + "id": 48639, "isConstant": false, "isLValue": false, "isPure": false, @@ -2296,7 +2296,7 @@ "typeString": "function (bytes32,bytes32[] memory,bytes32,uint64,uint64) pure returns (bool)" } }, - "id": 48652, + "id": 48645, "isConstant": false, "isLValue": false, "isPure": false, @@ -2319,11 +2319,11 @@ "expression": { "arguments": [ { - "id": 48655, + "id": 48648, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48644, + "referencedDeclaration": 48637, "src": "2843:7:123", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2332,7 +2332,7 @@ }, { "hexValue": "496e76616c696420726563656970747320726f6f742070726f6f66", - "id": 48656, + "id": 48649, "isConstant": false, "isLValue": false, "isPure": true, @@ -2358,7 +2358,7 @@ "typeString": "literal_string \"Invalid receipts root proof\"" } ], - "id": 48654, + "id": 48647, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2372,7 +2372,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 48657, + "id": 48650, "isConstant": false, "isLValue": false, "isPure": false, @@ -2388,24 +2388,24 @@ "typeString": "tuple()" } }, - "id": 48658, + "id": 48651, "nodeType": "ExpressionStatement", "src": "2835:47:123" }, { "assignments": [ - 48663, - 48665 + 48656, + 48658 ], "declarations": [ { "constant": false, - "id": 48663, + "id": 48656, "mutability": "mutable", "name": "eventTopics", "nameLocation": "2911:11:123", "nodeType": "VariableDeclaration", - "scope": 48687, + "scope": 48680, "src": "2894:28:123", "stateVariable": false, "storageLocation": "memory", @@ -2415,7 +2415,7 @@ }, "typeName": { "baseType": { - "id": 48661, + "id": 48654, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2894:7:123", @@ -2424,7 +2424,7 @@ "typeString": "bytes32" } }, - "id": 48662, + "id": 48655, "nodeType": "ArrayTypeName", "src": "2894:9:123", "typeDescriptions": { @@ -2436,12 +2436,12 @@ }, { "constant": false, - "id": 48665, + "id": 48658, "mutability": "mutable", "name": "eventData", "nameLocation": "2937:9:123", "nodeType": "VariableDeclaration", - "scope": 48687, + "scope": 48680, "src": "2924:22:123", "stateVariable": false, "storageLocation": "memory", @@ -2450,7 +2450,7 @@ "typeString": "bytes" }, "typeName": { - "id": 48664, + "id": 48657, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2924:5:123", @@ -2462,15 +2462,15 @@ "visibility": "internal" } ], - "id": 48677, + "id": 48670, "initialValue": { "arguments": [ { - "id": 48668, + "id": 48661, "name": "receiptProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48551, + "referencedDeclaration": 48544, "src": "2985:12:123", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", @@ -2478,11 +2478,11 @@ } }, { - "id": 48669, + "id": 48662, "name": "receiptsRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48548, + "referencedDeclaration": 48541, "src": "3011:12:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2490,11 +2490,11 @@ } }, { - "id": 48670, + "id": 48663, "name": "txIndexRLPEncoded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48553, + "referencedDeclaration": 48546, "src": "3037:17:123", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -2502,11 +2502,11 @@ } }, { - "id": 48671, + "id": 48664, "name": "logIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48555, + "referencedDeclaration": 48548, "src": "3068:8:123", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2515,18 +2515,18 @@ }, { "expression": { - "id": 48672, + "id": 48665, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48558, + "referencedDeclaration": 48551, "src": "3090:12:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48673, + "id": 48666, "isConstant": false, "isLValue": false, "isPure": false, @@ -2534,7 +2534,7 @@ "memberLocation": "3103:13:123", "memberName": "sourceAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 49082, + "referencedDeclaration": 49075, "src": "3090:26:123", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2543,18 +2543,18 @@ }, { "expression": { - "id": 48674, + "id": 48667, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48558, + "referencedDeclaration": 48551, "src": "3130:12:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48675, + "id": 48668, "isConstant": false, "isLValue": false, "isPure": false, @@ -2562,7 +2562,7 @@ "memberLocation": "3143:8:123", "memberName": "eventSig", "nodeType": "MemberAccess", - "referencedDeclaration": 49086, + "referencedDeclaration": 49079, "src": "3130:21:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2598,18 +2598,18 @@ } ], "expression": { - "id": 48666, + "id": 48659, "name": "EventProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48458, + "referencedDeclaration": 48451, "src": "2950:10:123", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_EventProof_$48458_$", + "typeIdentifier": "t_type$_t_contract$_EventProof_$48451_$", "typeString": "type(library EventProof)" } }, - "id": 48667, + "id": 48660, "isConstant": false, "isLValue": false, "isPure": false, @@ -2617,14 +2617,14 @@ "memberLocation": "2961:10:123", "memberName": "parseEvent", "nodeType": "MemberAccess", - "referencedDeclaration": 48406, + "referencedDeclaration": 48399, "src": "2950:21:123", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory[] memory,bytes32,bytes memory,uint256,address,bytes32) pure returns (bytes32[] memory,bytes memory)" } }, - "id": 48676, + "id": 48669, "isConstant": false, "isLValue": false, "isPure": false, @@ -2647,11 +2647,11 @@ "expression": { "arguments": [ { - "id": 48679, + "id": 48672, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48572, + "referencedDeclaration": 48565, "src": "3181:14:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2659,23 +2659,23 @@ } }, { - "id": 48680, + "id": 48673, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48558, + "referencedDeclaration": 48551, "src": "3197:12:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, { - "id": 48681, + "id": 48674, "name": "publishKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48581, + "referencedDeclaration": 48574, "src": "3211:10:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2683,11 +2683,11 @@ } }, { - "id": 48682, + "id": 48675, "name": "txSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48605, + "referencedDeclaration": 48598, "src": "3223:6:123", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -2695,11 +2695,11 @@ } }, { - "id": 48683, + "id": 48676, "name": "eventTopics", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48663, + "referencedDeclaration": 48656, "src": "3231:11:123", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", @@ -2707,11 +2707,11 @@ } }, { - "id": 48684, + "id": 48677, "name": "eventData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48665, + "referencedDeclaration": 48658, "src": "3244:9:123", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -2726,7 +2726,7 @@ "typeString": "bytes32" }, { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" }, { @@ -2746,18 +2746,18 @@ "typeString": "bytes memory" } ], - "id": 48678, + "id": 48671, "name": "_publish", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48909, + "referencedDeclaration": 48902, "src": "3172:8:123", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49087_calldata_ptr_$_t_bytes32_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49080_calldata_ptr_$_t_bytes32_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes32,struct Subscription calldata,bytes32,uint64,bytes32[] memory,bytes memory)" } }, - "id": 48685, + "id": 48678, "isConstant": false, "isLValue": false, "isPure": false, @@ -2773,17 +2773,17 @@ "typeString": "tuple()" } }, - "id": 48686, + "id": 48679, "nodeType": "ExpressionStatement", "src": "3172:82:123" } ] }, "baseFunctions": [ - 49173 + 49166 ], "documentation": { - "id": 48541, + "id": 48534, "nodeType": "StructuredDocumentation", "src": "741:787:123", "text": "@notice Publishes an event emit to a callback Subscriber, given an event proof.\n @param srcSlotTxSlotPack The slot where we want to read the header from and the slot where\n the tx executed, packed as two uint64s.\n @param receiptsRootProof A merkle proof proving the receiptsRoot in the block header.\n @param receiptsRoot The receipts root which contains the event.\n @param txIndexRLPEncoded The index of our transaction inside the block RLP encoded.\n @param logIndex The index of the event in our transaction.\n @param subscription The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\n @dev This function should be called for every subscriber that is subscribed to the event." @@ -2795,17 +2795,17 @@ "name": "publishEvent", "nameLocation": "1542:12:123", "parameters": { - "id": 48559, + "id": 48552, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48543, + "id": 48536, "mutability": "mutable", "name": "srcSlotTxSlotPack", "nameLocation": "1579:17:123", "nodeType": "VariableDeclaration", - "scope": 48688, + "scope": 48681, "src": "1564:32:123", "stateVariable": false, "storageLocation": "calldata", @@ -2814,7 +2814,7 @@ "typeString": "bytes" }, "typeName": { - "id": 48542, + "id": 48535, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1564:5:123", @@ -2827,12 +2827,12 @@ }, { "constant": false, - "id": 48546, + "id": 48539, "mutability": "mutable", "name": "receiptsRootProof", "nameLocation": "1625:17:123", "nodeType": "VariableDeclaration", - "scope": 48688, + "scope": 48681, "src": "1606:36:123", "stateVariable": false, "storageLocation": "calldata", @@ -2842,7 +2842,7 @@ }, "typeName": { "baseType": { - "id": 48544, + "id": 48537, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1606:7:123", @@ -2851,7 +2851,7 @@ "typeString": "bytes32" } }, - "id": 48545, + "id": 48538, "nodeType": "ArrayTypeName", "src": "1606:9:123", "typeDescriptions": { @@ -2863,12 +2863,12 @@ }, { "constant": false, - "id": 48548, + "id": 48541, "mutability": "mutable", "name": "receiptsRoot", "nameLocation": "1660:12:123", "nodeType": "VariableDeclaration", - "scope": 48688, + "scope": 48681, "src": "1652:20:123", "stateVariable": false, "storageLocation": "default", @@ -2877,7 +2877,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 48547, + "id": 48540, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1652:7:123", @@ -2890,12 +2890,12 @@ }, { "constant": false, - "id": 48551, + "id": 48544, "mutability": "mutable", "name": "receiptProof", "nameLocation": "1699:12:123", "nodeType": "VariableDeclaration", - "scope": 48688, + "scope": 48681, "src": "1682:29:123", "stateVariable": false, "storageLocation": "calldata", @@ -2905,7 +2905,7 @@ }, "typeName": { "baseType": { - "id": 48549, + "id": 48542, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1682:5:123", @@ -2914,7 +2914,7 @@ "typeString": "bytes" } }, - "id": 48550, + "id": 48543, "nodeType": "ArrayTypeName", "src": "1682:7:123", "typeDescriptions": { @@ -2926,12 +2926,12 @@ }, { "constant": false, - "id": 48553, + "id": 48546, "mutability": "mutable", "name": "txIndexRLPEncoded", "nameLocation": "1734:17:123", "nodeType": "VariableDeclaration", - "scope": 48688, + "scope": 48681, "src": "1721:30:123", "stateVariable": false, "storageLocation": "memory", @@ -2940,7 +2940,7 @@ "typeString": "bytes" }, "typeName": { - "id": 48552, + "id": 48545, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1721:5:123", @@ -2953,12 +2953,12 @@ }, { "constant": false, - "id": 48555, + "id": 48548, "mutability": "mutable", "name": "logIndex", "nameLocation": "1769:8:123", "nodeType": "VariableDeclaration", - "scope": 48688, + "scope": 48681, "src": "1761:16:123", "stateVariable": false, "storageLocation": "default", @@ -2967,7 +2967,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48554, + "id": 48547, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1761:7:123", @@ -2980,36 +2980,36 @@ }, { "constant": false, - "id": 48558, + "id": 48551, "mutability": "mutable", "name": "subscription", "nameLocation": "1809:12:123", "nodeType": "VariableDeclaration", - "scope": 48688, + "scope": 48681, "src": "1787:34:123", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription" }, "typeName": { - "id": 48557, + "id": 48550, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48556, + "id": 48549, "name": "Subscription", "nameLocations": [ "1787:12:123" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "1787:12:123" }, - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "1787:12:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_storage_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_storage_ptr", "typeString": "struct Subscription" } }, @@ -3019,23 +3019,23 @@ "src": "1554:273:123" }, "returnParameters": { - "id": 48560, + "id": 48553, "nodeType": "ParameterList", "parameters": [], "src": "1837:0:123" }, - "scope": 48910, + "scope": 48903, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 48721, + "id": 48714, "nodeType": "FunctionDefinition", "src": "3347:307:123", "nodes": [], "body": { - "id": 48720, + "id": 48713, "nodeType": "Block", "src": "3416:238:123", "nodes": [], @@ -3048,7 +3048,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 48706, + "id": 48699, "isConstant": false, "isLValue": false, "isPure": false, @@ -3058,11 +3058,11 @@ { "arguments": [ { - "id": 48699, + "id": 48692, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48691, + "referencedDeclaration": 48684, "src": "3484:7:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3078,18 +3078,18 @@ } ], "expression": { - "id": 48697, + "id": 48690, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48469, + "referencedDeclaration": 48462, "src": "3455:15:123", "typeDescriptions": { "typeIdentifier": "t_contract$_TelepathyRouter_$42568", "typeString": "contract TelepathyRouter" } }, - "id": 48698, + "id": 48691, "isConstant": false, "isLValue": false, "isPure": false, @@ -3104,7 +3104,7 @@ "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48700, + "id": 48693, "isConstant": false, "isLValue": false, "isPure": false, @@ -3128,7 +3128,7 @@ "typeString": "contract ILightClient" } ], - "id": 48696, + "id": 48689, "isConstant": false, "isLValue": false, "isPure": true, @@ -3140,14 +3140,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48695, + "id": 48688, "name": "address", "nodeType": "ElementaryTypeName", "src": "3447:7:123", "typeDescriptions": {} } }, - "id": 48701, + "id": 48694, "isConstant": false, "isLValue": false, "isPure": false, @@ -3169,7 +3169,7 @@ "arguments": [ { "hexValue": "30", - "id": 48704, + "id": 48697, "isConstant": false, "isLValue": false, "isPure": true, @@ -3191,7 +3191,7 @@ "typeString": "int_const 0" } ], - "id": 48703, + "id": 48696, "isConstant": false, "isLValue": false, "isPure": true, @@ -3203,14 +3203,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48702, + "id": 48695, "name": "address", "nodeType": "ElementaryTypeName", "src": "3497:7:123", "typeDescriptions": {} } }, - "id": 48705, + "id": 48698, "isConstant": false, "isLValue": false, "isPure": true, @@ -3234,7 +3234,7 @@ }, { "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", - "id": 48707, + "id": 48700, "isConstant": false, "isLValue": false, "isPure": true, @@ -3260,7 +3260,7 @@ "typeString": "literal_string \"Light client is not set.\"" } ], - "id": 48694, + "id": 48687, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3274,7 +3274,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 48708, + "id": 48701, "isConstant": false, "isLValue": false, "isPure": false, @@ -3290,7 +3290,7 @@ "typeString": "tuple()" } }, - "id": 48709, + "id": 48702, "nodeType": "ExpressionStatement", "src": "3426:119:123" }, @@ -3304,11 +3304,11 @@ "expression": { "arguments": [ { - "id": 48713, + "id": 48706, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48691, + "referencedDeclaration": 48684, "src": "3592:7:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3324,18 +3324,18 @@ } ], "expression": { - "id": 48711, + "id": 48704, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48469, + "referencedDeclaration": 48462, "src": "3563:15:123", "typeDescriptions": { "typeIdentifier": "t_contract$_TelepathyRouter_$42568", "typeString": "contract TelepathyRouter" } }, - "id": 48712, + "id": 48705, "isConstant": false, "isLValue": false, "isPure": false, @@ -3350,7 +3350,7 @@ "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48714, + "id": 48707, "isConstant": false, "isLValue": false, "isPure": false, @@ -3366,7 +3366,7 @@ "typeString": "contract ILightClient" } }, - "id": 48715, + "id": 48708, "isConstant": false, "isLValue": false, "isPure": false, @@ -3381,7 +3381,7 @@ "typeString": "function () view external returns (bool)" } }, - "id": 48716, + "id": 48709, "isConstant": false, "isLValue": false, "isPure": false, @@ -3399,7 +3399,7 @@ }, { "hexValue": "4c6967687420636c69656e7420697320696e636f6e73697374656e742e", - "id": 48717, + "id": 48710, "isConstant": false, "isLValue": false, "isPure": true, @@ -3425,7 +3425,7 @@ "typeString": "literal_string \"Light client is inconsistent.\"" } ], - "id": 48710, + "id": 48703, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3439,7 +3439,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 48718, + "id": 48711, "isConstant": false, "isLValue": false, "isPure": false, @@ -3455,14 +3455,14 @@ "typeString": "tuple()" } }, - "id": 48719, + "id": 48712, "nodeType": "ExpressionStatement", "src": "3555:92:123" } ] }, "documentation": { - "id": 48689, + "id": 48682, "nodeType": "StructuredDocumentation", "src": "3267:75:123", "text": "@notice Checks that the light client for a given chainId is consistent." @@ -3473,17 +3473,17 @@ "name": "requireLightClientConsistency", "nameLocation": "3356:29:123", "parameters": { - "id": 48692, + "id": 48685, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48691, + "id": 48684, "mutability": "mutable", "name": "chainId", "nameLocation": "3393:7:123", "nodeType": "VariableDeclaration", - "scope": 48721, + "scope": 48714, "src": "3386:14:123", "stateVariable": false, "storageLocation": "default", @@ -3492,7 +3492,7 @@ "typeString": "uint32" }, "typeName": { - "id": 48690, + "id": 48683, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "3386:6:123", @@ -3507,23 +3507,23 @@ "src": "3385:16:123" }, "returnParameters": { - "id": 48693, + "id": 48686, "nodeType": "ParameterList", "parameters": [], "src": "3416:0:123" }, - "scope": 48910, + "scope": 48903, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 48737, + "id": 48730, "nodeType": "FunctionDefinition", "src": "3715:137:123", "nodes": [], "body": { - "id": 48736, + "id": 48729, "nodeType": "Block", "src": "3771:81:123", "nodes": [], @@ -3532,7 +3532,7 @@ "expression": { "arguments": [ { - "id": 48732, + "id": 48725, "isConstant": false, "isLValue": false, "isPure": false, @@ -3544,11 +3544,11 @@ "subExpression": { "arguments": [ { - "id": 48730, + "id": 48723, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48724, + "referencedDeclaration": 48717, "src": "3813:7:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3564,18 +3564,18 @@ } ], "expression": { - "id": 48728, + "id": 48721, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48469, + "referencedDeclaration": 48462, "src": "3790:15:123", "typeDescriptions": { "typeIdentifier": "t_contract$_TelepathyRouter_$42568", "typeString": "contract TelepathyRouter" } }, - "id": 48729, + "id": 48722, "isConstant": false, "isLValue": false, "isPure": false, @@ -3590,7 +3590,7 @@ "typeString": "function (uint32) view external returns (bool)" } }, - "id": 48731, + "id": 48724, "isConstant": false, "isLValue": false, "isPure": false, @@ -3613,7 +3613,7 @@ }, { "hexValue": "436f6e74726163742069732066726f7a656e2e", - "id": 48733, + "id": 48726, "isConstant": false, "isLValue": false, "isPure": true, @@ -3639,7 +3639,7 @@ "typeString": "literal_string \"Contract is frozen.\"" } ], - "id": 48727, + "id": 48720, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3653,7 +3653,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 48734, + "id": 48727, "isConstant": false, "isLValue": false, "isPure": false, @@ -3669,14 +3669,14 @@ "typeString": "tuple()" } }, - "id": 48735, + "id": 48728, "nodeType": "ExpressionStatement", "src": "3781:64:123" } ] }, "documentation": { - "id": 48722, + "id": 48715, "nodeType": "StructuredDocumentation", "src": "3660:50:123", "text": "@notice Checks that the chainId is not frozen." @@ -3687,17 +3687,17 @@ "name": "requireNotFrozen", "nameLocation": "3724:16:123", "parameters": { - "id": 48725, + "id": 48718, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48724, + "id": 48717, "mutability": "mutable", "name": "chainId", "nameLocation": "3748:7:123", "nodeType": "VariableDeclaration", - "scope": 48737, + "scope": 48730, "src": "3741:14:123", "stateVariable": false, "storageLocation": "default", @@ -3706,7 +3706,7 @@ "typeString": "uint32" }, "typeName": { - "id": 48723, + "id": 48716, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "3741:6:123", @@ -3721,23 +3721,23 @@ "src": "3740:16:123" }, "returnParameters": { - "id": 48726, + "id": 48719, "nodeType": "ParameterList", "parameters": [], "src": "3771:0:123" }, - "scope": 48910, + "scope": 48903, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 48797, + "id": 48790, "nodeType": "FunctionDefinition", "src": "3922:620:123", "nodes": [], "body": { - "id": 48796, + "id": 48789, "nodeType": "Block", "src": "3998:544:123", "nodes": [], @@ -3750,7 +3750,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 48757, + "id": 48750, "isConstant": false, "isLValue": false, "isPure": false, @@ -3760,11 +3760,11 @@ { "arguments": [ { - "id": 48750, + "id": 48743, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48742, + "referencedDeclaration": 48735, "src": "4066:7:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3780,18 +3780,18 @@ } ], "expression": { - "id": 48748, + "id": 48741, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48469, + "referencedDeclaration": 48462, "src": "4037:15:123", "typeDescriptions": { "typeIdentifier": "t_contract$_TelepathyRouter_$42568", "typeString": "contract TelepathyRouter" } }, - "id": 48749, + "id": 48742, "isConstant": false, "isLValue": false, "isPure": false, @@ -3806,7 +3806,7 @@ "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48751, + "id": 48744, "isConstant": false, "isLValue": false, "isPure": false, @@ -3830,7 +3830,7 @@ "typeString": "contract ILightClient" } ], - "id": 48747, + "id": 48740, "isConstant": false, "isLValue": false, "isPure": true, @@ -3842,14 +3842,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48746, + "id": 48739, "name": "address", "nodeType": "ElementaryTypeName", "src": "4029:7:123", "typeDescriptions": {} } }, - "id": 48752, + "id": 48745, "isConstant": false, "isLValue": false, "isPure": false, @@ -3871,7 +3871,7 @@ "arguments": [ { "hexValue": "30", - "id": 48755, + "id": 48748, "isConstant": false, "isLValue": false, "isPure": true, @@ -3893,7 +3893,7 @@ "typeString": "int_const 0" } ], - "id": 48754, + "id": 48747, "isConstant": false, "isLValue": false, "isPure": true, @@ -3905,14 +3905,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48753, + "id": 48746, "name": "address", "nodeType": "ElementaryTypeName", "src": "4079:7:123", "typeDescriptions": {} } }, - "id": 48756, + "id": 48749, "isConstant": false, "isLValue": false, "isPure": true, @@ -3936,7 +3936,7 @@ }, { "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", - "id": 48758, + "id": 48751, "isConstant": false, "isLValue": false, "isPure": true, @@ -3962,7 +3962,7 @@ "typeString": "literal_string \"Light client is not set.\"" } ], - "id": 48745, + "id": 48738, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3976,7 +3976,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 48759, + "id": 48752, "isConstant": false, "isLValue": false, "isPure": false, @@ -3992,7 +3992,7 @@ "typeString": "tuple()" } }, - "id": 48760, + "id": 48753, "nodeType": "ExpressionStatement", "src": "4008:119:123" }, @@ -4004,7 +4004,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48770, + "id": 48763, "isConstant": false, "isLValue": false, "isPure": false, @@ -4012,11 +4012,11 @@ "leftExpression": { "arguments": [ { - "id": 48767, + "id": 48760, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48740, + "referencedDeclaration": 48733, "src": "4207:4:123", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -4034,11 +4034,11 @@ "expression": { "arguments": [ { - "id": 48764, + "id": 48757, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48742, + "referencedDeclaration": 48735, "src": "4187:7:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -4054,18 +4054,18 @@ } ], "expression": { - "id": 48762, + "id": 48755, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48469, + "referencedDeclaration": 48462, "src": "4158:15:123", "typeDescriptions": { "typeIdentifier": "t_contract$_TelepathyRouter_$42568", "typeString": "contract TelepathyRouter" } }, - "id": 48763, + "id": 48756, "isConstant": false, "isLValue": false, "isPure": false, @@ -4080,7 +4080,7 @@ "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48765, + "id": 48758, "isConstant": false, "isLValue": false, "isPure": false, @@ -4096,7 +4096,7 @@ "typeString": "contract ILightClient" } }, - "id": 48766, + "id": 48759, "isConstant": false, "isLValue": false, "isPure": false, @@ -4111,7 +4111,7 @@ "typeString": "function (uint256) view external returns (uint256)" } }, - "id": 48768, + "id": 48761, "isConstant": false, "isLValue": false, "isPure": false, @@ -4131,7 +4131,7 @@ "operator": "!=", "rightExpression": { "hexValue": "30", - "id": 48769, + "id": 48762, "isConstant": false, "isLValue": false, "isPure": true, @@ -4153,7 +4153,7 @@ }, { "hexValue": "54696d657374616d70206973206e6f742073657420666f7220736c6f742e", - "id": 48771, + "id": 48764, "isConstant": false, "isLValue": false, "isPure": true, @@ -4179,7 +4179,7 @@ "typeString": "literal_string \"Timestamp is not set for slot.\"" } ], - "id": 48761, + "id": 48754, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4193,7 +4193,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 48772, + "id": 48765, "isConstant": false, "isLValue": false, "isPure": false, @@ -4209,23 +4209,23 @@ "typeString": "tuple()" } }, - "id": 48773, + "id": 48766, "nodeType": "ExpressionStatement", "src": "4137:136:123" }, { "assignments": [ - 48775 + 48768 ], "declarations": [ { "constant": false, - "id": 48775, + "id": 48768, "mutability": "mutable", "name": "elapsedTime", "nameLocation": "4291:11:123", "nodeType": "VariableDeclaration", - "scope": 48796, + "scope": 48789, "src": "4283:19:123", "stateVariable": false, "storageLocation": "default", @@ -4234,7 +4234,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48774, + "id": 48767, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4283:7:123", @@ -4246,20 +4246,20 @@ "visibility": "internal" } ], - "id": 48786, + "id": 48779, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48785, + "id": 48778, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 48776, + "id": 48769, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4270,7 +4270,7 @@ "typeString": "block" } }, - "id": 48777, + "id": 48770, "isConstant": false, "isLValue": false, "isPure": false, @@ -4289,11 +4289,11 @@ "rightExpression": { "arguments": [ { - "id": 48783, + "id": 48776, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48740, + "referencedDeclaration": 48733, "src": "4384:4:123", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -4311,11 +4311,11 @@ "expression": { "arguments": [ { - "id": 48780, + "id": 48773, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48742, + "referencedDeclaration": 48735, "src": "4364:7:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -4331,18 +4331,18 @@ } ], "expression": { - "id": 48778, + "id": 48771, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48469, + "referencedDeclaration": 48462, "src": "4335:15:123", "typeDescriptions": { "typeIdentifier": "t_contract$_TelepathyRouter_$42568", "typeString": "contract TelepathyRouter" } }, - "id": 48779, + "id": 48772, "isConstant": false, "isLValue": false, "isPure": false, @@ -4357,7 +4357,7 @@ "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48781, + "id": 48774, "isConstant": false, "isLValue": false, "isPure": false, @@ -4373,7 +4373,7 @@ "typeString": "contract ILightClient" } }, - "id": 48782, + "id": 48775, "isConstant": false, "isLValue": false, "isPure": false, @@ -4388,7 +4388,7 @@ "typeString": "function (uint256) view external returns (uint256)" } }, - "id": 48784, + "id": 48777, "isConstant": false, "isLValue": false, "isPure": false, @@ -4421,17 +4421,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48792, + "id": 48785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48788, + "id": 48781, "name": "elapsedTime", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48775, + "referencedDeclaration": 48768, "src": "4420:11:123", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4445,18 +4445,18 @@ "expression": { "argumentTypes": [], "expression": { - "id": 48789, + "id": 48782, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48469, + "referencedDeclaration": 48462, "src": "4435:15:123", "typeDescriptions": { "typeIdentifier": "t_contract$_TelepathyRouter_$42568", "typeString": "contract TelepathyRouter" } }, - "id": 48790, + "id": 48783, "isConstant": false, "isLValue": false, "isPure": true, @@ -4471,7 +4471,7 @@ "typeString": "function () view external returns (uint256)" } }, - "id": 48791, + "id": 48784, "isConstant": false, "isLValue": false, "isPure": false, @@ -4495,7 +4495,7 @@ }, { "hexValue": "4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f742e", - "id": 48793, + "id": 48786, "isConstant": false, "isLValue": false, "isPure": true, @@ -4521,7 +4521,7 @@ "typeString": "literal_string \"Must wait longer to use this slot.\"" } ], - "id": 48787, + "id": 48780, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4535,7 +4535,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 48794, + "id": 48787, "isConstant": false, "isLValue": false, "isPure": false, @@ -4551,14 +4551,14 @@ "typeString": "tuple()" } }, - "id": 48795, + "id": 48788, "nodeType": "ExpressionStatement", "src": "4399:136:123" } ] }, "documentation": { - "id": 48738, + "id": 48731, "nodeType": "StructuredDocumentation", "src": "3858:59:123", "text": "@notice Checks that the light client delay is adequate." @@ -4569,17 +4569,17 @@ "name": "requireLightClientDelay", "nameLocation": "3931:23:123", "parameters": { - "id": 48743, + "id": 48736, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48740, + "id": 48733, "mutability": "mutable", "name": "slot", "nameLocation": "3962:4:123", "nodeType": "VariableDeclaration", - "scope": 48797, + "scope": 48790, "src": "3955:11:123", "stateVariable": false, "storageLocation": "default", @@ -4588,7 +4588,7 @@ "typeString": "uint64" }, "typeName": { - "id": 48739, + "id": 48732, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3955:6:123", @@ -4601,12 +4601,12 @@ }, { "constant": false, - "id": 48742, + "id": 48735, "mutability": "mutable", "name": "chainId", "nameLocation": "3975:7:123", "nodeType": "VariableDeclaration", - "scope": 48797, + "scope": 48790, "src": "3968:14:123", "stateVariable": false, "storageLocation": "default", @@ -4615,7 +4615,7 @@ "typeString": "uint32" }, "typeName": { - "id": 48741, + "id": 48734, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "3968:6:123", @@ -4630,40 +4630,40 @@ "src": "3954:29:123" }, "returnParameters": { - "id": 48744, + "id": 48737, "nodeType": "ParameterList", "parameters": [], "src": "3998:0:123" }, - "scope": 48910, + "scope": 48903, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 48909, + "id": 48902, "nodeType": "FunctionDefinition", "src": "4667:1397:123", "nodes": [], "body": { - "id": 48908, + "id": 48901, "nodeType": "Block", "src": "4903:1161:123", "nodes": [], "statements": [ { "assignments": [ - 48816 + 48809 ], "declarations": [ { "constant": false, - "id": 48816, + "id": 48809, "mutability": "mutable", "name": "success", "nameLocation": "4918:7:123", "nodeType": "VariableDeclaration", - "scope": 48908, + "scope": 48901, "src": "4913:12:123", "stateVariable": false, "storageLocation": "default", @@ -4672,7 +4672,7 @@ "typeString": "bool" }, "typeName": { - "id": 48815, + "id": 48808, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4913:4:123", @@ -4684,23 +4684,23 @@ "visibility": "internal" } ], - "id": 48817, + "id": 48810, "nodeType": "VariableDeclarationStatement", "src": "4913:12:123" }, { "assignments": [ - 48819 + 48812 ], "declarations": [ { "constant": false, - "id": 48819, + "id": 48812, "mutability": "mutable", "name": "data", "nameLocation": "4948:4:123", "nodeType": "VariableDeclaration", - "scope": 48908, + "scope": 48901, "src": "4935:17:123", "stateVariable": false, "storageLocation": "memory", @@ -4709,7 +4709,7 @@ "typeString": "bytes" }, "typeName": { - "id": 48818, + "id": 48811, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4935:5:123", @@ -4721,28 +4721,28 @@ "visibility": "internal" } ], - "id": 48820, + "id": 48813, "nodeType": "VariableDeclarationStatement", "src": "4935:17:123" }, { - "id": 48848, + "id": 48841, "nodeType": "Block", "src": "4962:435:123", "statements": [ { "assignments": [ - 48822 + 48815 ], "declarations": [ { "constant": false, - "id": 48822, + "id": 48815, "mutability": "mutable", "name": "receiveCall", "nameLocation": "4989:11:123", "nodeType": "VariableDeclaration", - "scope": 48848, + "scope": 48841, "src": "4976:24:123", "stateVariable": false, "storageLocation": "memory", @@ -4751,7 +4751,7 @@ "typeString": "bytes" }, "typeName": { - "id": 48821, + "id": 48814, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4976:5:123", @@ -4763,24 +4763,24 @@ "visibility": "internal" } ], - "id": 48837, + "id": 48830, "initialValue": { "arguments": [ { "expression": { "expression": { - "id": 48825, + "id": 48818, "name": "ISubscriptionReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49195, + "referencedDeclaration": 49188, "src": "5043:21:123", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49195_$", + "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49188_$", "typeString": "type(contract ISubscriptionReceiver)" } }, - "id": 48826, + "id": 48819, "isConstant": false, "isLValue": false, "isPure": true, @@ -4788,14 +4788,14 @@ "memberLocation": "5065:13:123", "memberName": "handlePublish", "nodeType": "MemberAccess", - "referencedDeclaration": 49194, + "referencedDeclaration": 49187, "src": "5043:35:123", "typeDescriptions": { "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function ISubscriptionReceiver.handlePublish(bytes32,uint32,address,uint64,bytes32[] memory,bytes memory) returns (bytes4)" } }, - "id": 48827, + "id": 48820, "isConstant": false, "isLValue": false, "isPure": true, @@ -4810,11 +4810,11 @@ } }, { - "id": 48828, + "id": 48821, "name": "_subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48800, + "referencedDeclaration": 48793, "src": "5105:15:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -4823,18 +4823,18 @@ }, { "expression": { - "id": 48829, + "id": 48822, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48803, + "referencedDeclaration": 48796, "src": "5138:13:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48830, + "id": 48823, "isConstant": false, "isLValue": false, "isPure": false, @@ -4842,7 +4842,7 @@ "memberLocation": "5152:13:123", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49080, + "referencedDeclaration": 49073, "src": "5138:27:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -4851,18 +4851,18 @@ }, { "expression": { - "id": 48831, + "id": 48824, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48803, + "referencedDeclaration": 48796, "src": "5183:13:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48832, + "id": 48825, "isConstant": false, "isLValue": false, "isPure": false, @@ -4870,7 +4870,7 @@ "memberLocation": "5197:13:123", "memberName": "sourceAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 49082, + "referencedDeclaration": 49075, "src": "5183:27:123", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4878,11 +4878,11 @@ } }, { - "id": 48833, + "id": 48826, "name": "_txSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48807, + "referencedDeclaration": 48800, "src": "5228:7:123", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -4890,11 +4890,11 @@ } }, { - "id": 48834, + "id": 48827, "name": "_eventTopics", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48810, + "referencedDeclaration": 48803, "src": "5253:12:123", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", @@ -4902,11 +4902,11 @@ } }, { - "id": 48835, + "id": 48828, "name": "_eventData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48812, + "referencedDeclaration": 48805, "src": "5283:10:123", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -4946,7 +4946,7 @@ } ], "expression": { - "id": 48823, + "id": 48816, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4957,7 +4957,7 @@ "typeString": "abi" } }, - "id": 48824, + "id": 48817, "isConstant": false, "isLValue": false, "isPure": true, @@ -4971,7 +4971,7 @@ "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 48836, + "id": 48829, "isConstant": false, "isLValue": false, "isPure": false, @@ -4992,7 +4992,7 @@ }, { "expression": { - "id": 48846, + "id": 48839, "isConstant": false, "isLValue": false, "isPure": false, @@ -5000,11 +5000,11 @@ "leftHandSide": { "components": [ { - "id": 48838, + "id": 48831, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48816, + "referencedDeclaration": 48809, "src": "5322:7:123", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5012,11 +5012,11 @@ } }, { - "id": 48839, + "id": 48832, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48819, + "referencedDeclaration": 48812, "src": "5331:4:123", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -5024,7 +5024,7 @@ } } ], - "id": 48840, + "id": 48833, "isConstant": false, "isInlineArray": false, "isLValue": true, @@ -5042,11 +5042,11 @@ "rightHandSide": { "arguments": [ { - "id": 48844, + "id": 48837, "name": "receiveCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48822, + "referencedDeclaration": 48815, "src": "5374:11:123", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -5063,18 +5063,18 @@ ], "expression": { "expression": { - "id": 48841, + "id": 48834, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48803, + "referencedDeclaration": 48796, "src": "5339:13:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48842, + "id": 48835, "isConstant": false, "isLValue": false, "isPure": false, @@ -5082,14 +5082,14 @@ "memberLocation": "5353:15:123", "memberName": "callbackAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 49084, + "referencedDeclaration": 49077, "src": "5339:29:123", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 48843, + "id": 48836, "isConstant": false, "isLValue": false, "isPure": false, @@ -5103,7 +5103,7 @@ "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 48845, + "id": 48838, "isConstant": false, "isLValue": false, "isPure": false, @@ -5125,7 +5125,7 @@ "typeString": "tuple()" } }, - "id": 48847, + "id": 48840, "nodeType": "ExpressionStatement", "src": "5321:65:123" } @@ -5133,17 +5133,17 @@ }, { "assignments": [ - 48850 + 48843 ], "declarations": [ { "constant": false, - "id": 48850, + "id": 48843, "mutability": "mutable", "name": "implementsHandler", "nameLocation": "5412:17:123", "nodeType": "VariableDeclaration", - "scope": 48908, + "scope": 48901, "src": "5407:22:123", "stateVariable": false, "storageLocation": "default", @@ -5152,7 +5152,7 @@ "typeString": "bool" }, "typeName": { - "id": 48849, + "id": 48842, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5407:4:123", @@ -5164,10 +5164,10 @@ "visibility": "internal" } ], - "id": 48852, + "id": 48845, "initialValue": { "hexValue": "66616c7365", - "id": 48851, + "id": 48844, "isConstant": false, "isLValue": false, "isPure": true, @@ -5190,25 +5190,25 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48856, + "id": 48849, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 48853, + "id": 48846, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48819, + "referencedDeclaration": 48812, "src": "5451:4:123", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 48854, + "id": 48847, "isConstant": false, "isLValue": false, "isPure": false, @@ -5226,7 +5226,7 @@ "operator": "==", "rightExpression": { "hexValue": "3332", - "id": 48855, + "id": 48848, "isConstant": false, "isLValue": false, "isPure": true, @@ -5246,27 +5246,27 @@ "typeString": "bool" } }, - "id": 48876, + "id": 48869, "nodeType": "IfStatement", "src": "5447:178:123", "trueBody": { - "id": 48875, + "id": 48868, "nodeType": "Block", "src": "5470:155:123", "statements": [ { "assignments": [ - 48858 + 48851 ], "declarations": [ { "constant": false, - "id": 48858, + "id": 48851, "mutability": "mutable", "name": "magic", "nameLocation": "5492:5:123", "nodeType": "VariableDeclaration", - "scope": 48875, + "scope": 48868, "src": "5485:12:123", "stateVariable": false, "storageLocation": "default", @@ -5275,7 +5275,7 @@ "typeString": "bytes4" }, "typeName": { - "id": 48857, + "id": 48850, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5485:6:123", @@ -5287,15 +5287,15 @@ "visibility": "internal" } ], - "id": 48866, + "id": 48859, "initialValue": { "arguments": [ { - "id": 48861, + "id": 48854, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48819, + "referencedDeclaration": 48812, "src": "5512:4:123", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -5305,7 +5305,7 @@ { "components": [ { - "id": 48863, + "id": 48856, "isConstant": false, "isLValue": false, "isPure": true, @@ -5317,7 +5317,7 @@ "typeString": "type(bytes4)" }, "typeName": { - "id": 48862, + "id": 48855, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5519:6:123", @@ -5325,7 +5325,7 @@ } } ], - "id": 48864, + "id": 48857, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -5351,7 +5351,7 @@ } ], "expression": { - "id": 48859, + "id": 48852, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -5362,7 +5362,7 @@ "typeString": "abi" } }, - "id": 48860, + "id": 48853, "isConstant": false, "isLValue": false, "isPure": true, @@ -5376,7 +5376,7 @@ "typeString": "function () pure" } }, - "id": 48865, + "id": 48858, "isConstant": false, "isLValue": false, "isPure": false, @@ -5397,17 +5397,17 @@ }, { "expression": { - "id": 48873, + "id": 48866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48867, + "id": 48860, "name": "implementsHandler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48850, + "referencedDeclaration": 48843, "src": "5541:17:123", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5421,17 +5421,17 @@ "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, - "id": 48872, + "id": 48865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48868, + "id": 48861, "name": "magic", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48858, + "referencedDeclaration": 48851, "src": "5561:5:123", "typeDescriptions": { "typeIdentifier": "t_bytes4", @@ -5443,18 +5443,18 @@ "rightExpression": { "expression": { "expression": { - "id": 48869, + "id": 48862, "name": "ISubscriptionReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49195, + "referencedDeclaration": 49188, "src": "5570:21:123", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49195_$", + "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49188_$", "typeString": "type(contract ISubscriptionReceiver)" } }, - "id": 48870, + "id": 48863, "isConstant": false, "isLValue": false, "isPure": true, @@ -5462,14 +5462,14 @@ "memberLocation": "5592:13:123", "memberName": "handlePublish", "nodeType": "MemberAccess", - "referencedDeclaration": 49194, + "referencedDeclaration": 49187, "src": "5570:35:123", "typeDescriptions": { "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function ISubscriptionReceiver.handlePublish(bytes32,uint32,address,uint64,bytes32[] memory,bytes memory) returns (bytes4)" } }, - "id": 48871, + "id": 48864, "isConstant": false, "isLValue": false, "isPure": true, @@ -5495,7 +5495,7 @@ "typeString": "bool" } }, - "id": 48874, + "id": 48867, "nodeType": "ExpressionStatement", "src": "5541:73:123" } @@ -5508,17 +5508,17 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 48879, + "id": 48872, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48877, + "id": 48870, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48816, + "referencedDeclaration": 48809, "src": "5639:7:123", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5528,11 +5528,11 @@ "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { - "id": 48878, + "id": 48871, "name": "implementsHandler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48850, + "referencedDeclaration": 48843, "src": "5650:17:123", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5546,37 +5546,37 @@ } }, "falseBody": { - "id": 48895, + "id": 48888, "nodeType": "Block", "src": "5764:86:123", "statements": [ { "expression": { - "id": 48893, + "id": 48886, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 48888, + "id": 48881, "name": "eventsPublished", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48474, + "referencedDeclaration": 48467, "src": "5778:15:123", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49140_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49133_$", "typeString": "mapping(bytes32 => enum PublishStatus)" } }, - "id": 48890, + "id": 48883, "indexExpression": { - "id": 48889, + "id": 48882, "name": "_publishKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48805, + "referencedDeclaration": 48798, "src": "5794:11:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -5590,7 +5590,7 @@ "nodeType": "IndexAccess", "src": "5778:28:123", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeIdentifier": "t_enum$_PublishStatus_$49133", "typeString": "enum PublishStatus" } }, @@ -5598,18 +5598,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 48891, + "id": 48884, "name": "PublishStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49140, + "referencedDeclaration": 49133, "src": "5809:13:123", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49140_$", + "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49133_$", "typeString": "type(enum PublishStatus)" } }, - "id": 48892, + "id": 48885, "isConstant": false, "isLValue": false, "isPure": true, @@ -5617,60 +5617,60 @@ "memberLocation": "5823:16:123", "memberName": "EXECUTION_FAILED", "nodeType": "MemberAccess", - "referencedDeclaration": 49138, + "referencedDeclaration": 49131, "src": "5809:30:123", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeIdentifier": "t_enum$_PublishStatus_$49133", "typeString": "enum PublishStatus" } }, "src": "5778:61:123", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeIdentifier": "t_enum$_PublishStatus_$49133", "typeString": "enum PublishStatus" } }, - "id": 48894, + "id": 48887, "nodeType": "ExpressionStatement", "src": "5778:61:123" } ] }, - "id": 48896, + "id": 48889, "nodeType": "IfStatement", "src": "5635:215:123", "trueBody": { - "id": 48887, + "id": 48880, "nodeType": "Block", "src": "5669:89:123", "statements": [ { "expression": { - "id": 48885, + "id": 48878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 48880, + "id": 48873, "name": "eventsPublished", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48474, + "referencedDeclaration": 48467, "src": "5683:15:123", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49140_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49133_$", "typeString": "mapping(bytes32 => enum PublishStatus)" } }, - "id": 48882, + "id": 48875, "indexExpression": { - "id": 48881, + "id": 48874, "name": "_publishKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48805, + "referencedDeclaration": 48798, "src": "5699:11:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -5684,7 +5684,7 @@ "nodeType": "IndexAccess", "src": "5683:28:123", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeIdentifier": "t_enum$_PublishStatus_$49133", "typeString": "enum PublishStatus" } }, @@ -5692,18 +5692,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 48883, + "id": 48876, "name": "PublishStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49140, + "referencedDeclaration": 49133, "src": "5714:13:123", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49140_$", + "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49133_$", "typeString": "type(enum PublishStatus)" } }, - "id": 48884, + "id": 48877, "isConstant": false, "isLValue": false, "isPure": true, @@ -5711,20 +5711,20 @@ "memberLocation": "5728:19:123", "memberName": "EXECUTION_SUCCEEDED", "nodeType": "MemberAccess", - "referencedDeclaration": 49139, + "referencedDeclaration": 49132, "src": "5714:33:123", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeIdentifier": "t_enum$_PublishStatus_$49133", "typeString": "enum PublishStatus" } }, "src": "5683:64:123", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49140", + "typeIdentifier": "t_enum$_PublishStatus_$49133", "typeString": "enum PublishStatus" } }, - "id": 48886, + "id": 48879, "nodeType": "ExpressionStatement", "src": "5683:64:123" } @@ -5735,11 +5735,11 @@ "eventCall": { "arguments": [ { - "id": 48898, + "id": 48891, "name": "_subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48800, + "referencedDeclaration": 48793, "src": "5886:15:123", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -5748,18 +5748,18 @@ }, { "expression": { - "id": 48899, + "id": 48892, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48803, + "referencedDeclaration": 48796, "src": "5915:13:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48900, + "id": 48893, "isConstant": false, "isLValue": false, "isPure": false, @@ -5767,7 +5767,7 @@ "memberLocation": "5929:13:123", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49080, + "referencedDeclaration": 49073, "src": "5915:27:123", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -5776,18 +5776,18 @@ }, { "expression": { - "id": 48901, + "id": 48894, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48803, + "referencedDeclaration": 48796, "src": "5956:13:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48902, + "id": 48895, "isConstant": false, "isLValue": false, "isPure": false, @@ -5795,7 +5795,7 @@ "memberLocation": "5970:13:123", "memberName": "sourceAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 49082, + "referencedDeclaration": 49075, "src": "5956:27:123", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5804,18 +5804,18 @@ }, { "expression": { - "id": 48903, + "id": 48896, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48803, + "referencedDeclaration": 48796, "src": "5997:13:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48904, + "id": 48897, "isConstant": false, "isLValue": false, "isPure": false, @@ -5823,7 +5823,7 @@ "memberLocation": "6011:15:123", "memberName": "callbackAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 49084, + "referencedDeclaration": 49077, "src": "5997:29:123", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5831,11 +5831,11 @@ } }, { - "id": 48905, + "id": 48898, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48816, + "referencedDeclaration": 48809, "src": "6040:7:123", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5866,18 +5866,18 @@ "typeString": "bool" } ], - "id": 48897, + "id": 48890, "name": "Publish", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49153, + "referencedDeclaration": 49146, "src": "5865:7:123", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (bytes32,uint32,address,address,bool)" } }, - "id": 48906, + "id": 48899, "isConstant": false, "isLValue": false, "isPure": false, @@ -5893,14 +5893,14 @@ "typeString": "tuple()" } }, - "id": 48907, + "id": 48900, "nodeType": "EmitStatement", "src": "5860:197:123" } ] }, "documentation": { - "id": 48798, + "id": 48791, "nodeType": "StructuredDocumentation", "src": "4548:114:123", "text": "@notice Executes the callback function on the subscriber, and marks the event publish as successful or failed." @@ -5911,17 +5911,17 @@ "name": "_publish", "nameLocation": "4676:8:123", "parameters": { - "id": 48813, + "id": 48806, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48800, + "id": 48793, "mutability": "mutable", "name": "_subscriptionId", "nameLocation": "4702:15:123", "nodeType": "VariableDeclaration", - "scope": 48909, + "scope": 48902, "src": "4694:23:123", "stateVariable": false, "storageLocation": "default", @@ -5930,7 +5930,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 48799, + "id": 48792, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4694:7:123", @@ -5943,36 +5943,36 @@ }, { "constant": false, - "id": 48803, + "id": 48796, "mutability": "mutable", "name": "_subscription", "nameLocation": "4749:13:123", "nodeType": "VariableDeclaration", - "scope": 48909, + "scope": 48902, "src": "4727:35:123", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", "typeString": "struct Subscription" }, "typeName": { - "id": 48802, + "id": 48795, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48801, + "id": 48794, "name": "Subscription", "nameLocations": [ "4727:12:123" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "4727:12:123" }, - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "4727:12:123", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_storage_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_storage_ptr", "typeString": "struct Subscription" } }, @@ -5980,12 +5980,12 @@ }, { "constant": false, - "id": 48805, + "id": 48798, "mutability": "mutable", "name": "_publishKey", "nameLocation": "4780:11:123", "nodeType": "VariableDeclaration", - "scope": 48909, + "scope": 48902, "src": "4772:19:123", "stateVariable": false, "storageLocation": "default", @@ -5994,7 +5994,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 48804, + "id": 48797, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4772:7:123", @@ -6007,12 +6007,12 @@ }, { "constant": false, - "id": 48807, + "id": 48800, "mutability": "mutable", "name": "_txSlot", "nameLocation": "4808:7:123", "nodeType": "VariableDeclaration", - "scope": 48909, + "scope": 48902, "src": "4801:14:123", "stateVariable": false, "storageLocation": "default", @@ -6021,7 +6021,7 @@ "typeString": "uint64" }, "typeName": { - "id": 48806, + "id": 48799, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4801:6:123", @@ -6034,12 +6034,12 @@ }, { "constant": false, - "id": 48810, + "id": 48803, "mutability": "mutable", "name": "_eventTopics", "nameLocation": "4842:12:123", "nodeType": "VariableDeclaration", - "scope": 48909, + "scope": 48902, "src": "4825:29:123", "stateVariable": false, "storageLocation": "memory", @@ -6049,7 +6049,7 @@ }, "typeName": { "baseType": { - "id": 48808, + "id": 48801, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4825:7:123", @@ -6058,7 +6058,7 @@ "typeString": "bytes32" } }, - "id": 48809, + "id": 48802, "nodeType": "ArrayTypeName", "src": "4825:9:123", "typeDescriptions": { @@ -6070,12 +6070,12 @@ }, { "constant": false, - "id": 48812, + "id": 48805, "mutability": "mutable", "name": "_eventData", "nameLocation": "4877:10:123", "nodeType": "VariableDeclaration", - "scope": 48909, + "scope": 48902, "src": "4864:23:123", "stateVariable": false, "storageLocation": "memory", @@ -6084,7 +6084,7 @@ "typeString": "bytes" }, "typeName": { - "id": 48811, + "id": 48804, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4864:5:123", @@ -6099,12 +6099,12 @@ "src": "4684:209:123" }, "returnParameters": { - "id": 48814, + "id": 48807, "nodeType": "ParameterList", "parameters": [], "src": "4903:0:123" }, - "scope": 48910, + "scope": 48903, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" @@ -6114,31 +6114,31 @@ "baseContracts": [ { "baseName": { - "id": 48537, + "id": 48530, "name": "IPublisher", "nameLocations": [ "709:10:123" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49174, + "referencedDeclaration": 49167, "src": "709:10:123" }, - "id": 48538, + "id": 48531, "nodeType": "InheritanceSpecifier", "src": "709:10:123" }, { "baseName": { - "id": 48539, + "id": 48532, "name": "PubSubStorage", "nameLocations": [ "721:13:123" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48485, + "referencedDeclaration": 48478, "src": "721:13:123" }, - "id": 48540, + "id": 48533, "nodeType": "InheritanceSpecifier", "src": "721:13:123" } @@ -6147,20 +6147,20 @@ "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 48536, + "id": 48529, "nodeType": "StructuredDocumentation", "src": "538:140:123", "text": "@title TelepathyPublisher\n @author Succinct Labs\n @notice A contract that can publish events to a ISubscriptionReceiver contract." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 48910, - 48485, - 49174 + 48903, + 48478, + 49167 ], "name": "TelepathyPublisher", "nameLocation": "687:18:123", - "scope": 48911, + "scope": 48904, "usedErrors": [] } ] diff --git a/out/TelepathySubscriber.sol/TelepathySubscriber.json b/out/TelepathySubscriber.sol/TelepathySubscriber.json index c70415f..61cd34a 100644 --- a/out/TelepathySubscriber.sol/TelepathySubscriber.json +++ b/out/TelepathySubscriber.sol/TelepathySubscriber.json @@ -834,29 +834,29 @@ }, "ast": { "absolutePath": "src/pubsub/TelepathySubscriber.sol", - "id": 49074, + "id": 49067, "exportedSymbols": { "ISubscriber": [ - 49136 + 49129 ], "PubSubStorage": [ - 48485 + 48478 ], "Subscription": [ - 49087 + 49080 ], "SubscriptionStatus": [ - 49078 + 49071 ], "TelepathySubscriber": [ - 49073 + 49066 ] }, "nodeType": "SourceUnit", "src": "0:2535:124", "nodes": [ { - "id": 48912, + "id": 48905, "nodeType": "PragmaDirective", "src": "0:24:124", "nodes": [], @@ -868,23 +868,23 @@ ] }, { - "id": 48916, + "id": 48909, "nodeType": "ImportDirective", "src": "26:96:124", "nodes": [], "absolutePath": "src/pubsub/interfaces/IPubSub.sol", "file": "src/pubsub/interfaces/IPubSub.sol", "nameLocation": "-1:-1:-1", - "scope": 49074, - "sourceUnit": 49175, + "scope": 49067, + "sourceUnit": 49168, "symbolAliases": [ { "foreign": { - "id": 48913, + "id": 48906, "name": "Subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "34:12:124", "typeDescriptions": {} }, @@ -892,11 +892,11 @@ }, { "foreign": { - "id": 48914, + "id": 48907, "name": "SubscriptionStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49078, + "referencedDeclaration": 49071, "src": "48:18:124", "typeDescriptions": {} }, @@ -904,11 +904,11 @@ }, { "foreign": { - "id": 48915, + "id": 48908, "name": "ISubscriber", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49136, + "referencedDeclaration": 49129, "src": "68:11:124", "typeDescriptions": {} }, @@ -918,23 +918,23 @@ "unitAlias": "" }, { - "id": 48918, + "id": 48911, "nodeType": "ImportDirective", "src": "124:59:124", "nodes": [], "absolutePath": "src/pubsub/PubSubStorage.sol", "file": "src/pubsub/PubSubStorage.sol", "nameLocation": "-1:-1:-1", - "scope": 49074, - "sourceUnit": 48486, + "scope": 49067, + "sourceUnit": 48479, "symbolAliases": [ { "foreign": { - "id": 48917, + "id": 48910, "name": "PubSubStorage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48485, + "referencedDeclaration": 48478, "src": "132:13:124", "typeDescriptions": {} }, @@ -944,12 +944,12 @@ "unitAlias": "" }, { - "id": 49073, + "id": 49066, "nodeType": "ContractDefinition", "src": "335:2199:124", "nodes": [ { - "id": 48927, + "id": 48920, "nodeType": "ErrorDefinition", "src": "400:56:124", "nodes": [], @@ -957,17 +957,17 @@ "name": "SubscriptionAlreadyActive", "nameLocation": "406:25:124", "parameters": { - "id": 48926, + "id": 48919, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48925, + "id": 48918, "mutability": "mutable", "name": "subscriptionId", "nameLocation": "440:14:124", "nodeType": "VariableDeclaration", - "scope": 48927, + "scope": 48920, "src": "432:22:124", "stateVariable": false, "storageLocation": "default", @@ -976,7 +976,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 48924, + "id": 48917, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "432:7:124", @@ -992,7 +992,7 @@ } }, { - "id": 48931, + "id": 48924, "nodeType": "ErrorDefinition", "src": "461:52:124", "nodes": [], @@ -1000,17 +1000,17 @@ "name": "SubscriptionNotActive", "nameLocation": "467:21:124", "parameters": { - "id": 48930, + "id": 48923, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48929, + "id": 48922, "mutability": "mutable", "name": "subscriptionId", "nameLocation": "497:14:124", "nodeType": "VariableDeclaration", - "scope": 48931, + "scope": 48924, "src": "489:22:124", "stateVariable": false, "storageLocation": "default", @@ -1019,7 +1019,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 48928, + "id": 48921, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "489:7:124", @@ -1035,7 +1035,7 @@ } }, { - "id": 48937, + "id": 48930, "nodeType": "ErrorDefinition", "src": "518:57:124", "nodes": [], @@ -1043,17 +1043,17 @@ "name": "InvalidSlotRange", "nameLocation": "524:16:124", "parameters": { - "id": 48936, + "id": 48929, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48933, + "id": 48926, "mutability": "mutable", "name": "startSlot", "nameLocation": "548:9:124", "nodeType": "VariableDeclaration", - "scope": 48937, + "scope": 48930, "src": "541:16:124", "stateVariable": false, "storageLocation": "default", @@ -1062,7 +1062,7 @@ "typeString": "uint64" }, "typeName": { - "id": 48932, + "id": 48925, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "541:6:124", @@ -1075,12 +1075,12 @@ }, { "constant": false, - "id": 48935, + "id": 48928, "mutability": "mutable", "name": "endSlot", "nameLocation": "566:7:124", "nodeType": "VariableDeclaration", - "scope": 48937, + "scope": 48930, "src": "559:14:124", "stateVariable": false, "storageLocation": "default", @@ -1089,7 +1089,7 @@ "typeString": "uint64" }, "typeName": { - "id": 48934, + "id": 48927, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "559:6:124", @@ -1105,68 +1105,68 @@ } }, { - "id": 49013, + "id": 49006, "nodeType": "FunctionDefinition", "src": "837:960:124", "nodes": [], "body": { - "id": 49012, + "id": 49005, "nodeType": "Block", "src": "1065:732:124", "nodes": [], "statements": [ { "assignments": [ - 48957 + 48950 ], "declarations": [ { "constant": false, - "id": 48957, + "id": 48950, "mutability": "mutable", "name": "subscription", "nameLocation": "1095:12:124", "nodeType": "VariableDeclaration", - "scope": 49012, + "scope": 49005, "src": "1075:32:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription" }, "typeName": { - "id": 48956, + "id": 48949, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48955, + "id": 48948, "name": "Subscription", "nameLocations": [ "1075:12:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "1075:12:124" }, - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "1075:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_storage_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_storage_ptr", "typeString": "struct Subscription" } }, "visibility": "internal" } ], - "id": 48964, + "id": 48957, "initialValue": { "arguments": [ { - "id": 48959, + "id": 48952, "name": "_sourceChainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48940, + "referencedDeclaration": 48933, "src": "1135:14:124", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -1174,11 +1174,11 @@ } }, { - "id": 48960, + "id": 48953, "name": "_sourceAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48942, + "referencedDeclaration": 48935, "src": "1151:14:124", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1186,11 +1186,11 @@ } }, { - "id": 48961, + "id": 48954, "name": "_callbackAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48944, + "referencedDeclaration": 48937, "src": "1167:16:124", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1198,11 +1198,11 @@ } }, { - "id": 48962, + "id": 48955, "name": "_eventSig", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48946, + "referencedDeclaration": 48939, "src": "1185:9:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1229,18 +1229,18 @@ "typeString": "bytes32" } ], - "id": 48958, + "id": 48951, "name": "Subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "1122:12:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Subscription_$49087_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Subscription_$49080_storage_ptr_$", "typeString": "type(struct Subscription storage pointer)" } }, - "id": 48963, + "id": 48956, "isConstant": false, "isLValue": false, "isPure": false, @@ -1252,7 +1252,7 @@ "src": "1122:73:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription memory" } }, @@ -1261,17 +1261,17 @@ }, { "assignments": [ - 48966 + 48959 ], "declarations": [ { "constant": false, - "id": 48966, + "id": 48959, "mutability": "mutable", "name": "subscriptionId", "nameLocation": "1213:14:124", "nodeType": "VariableDeclaration", - "scope": 49012, + "scope": 49005, "src": "1205:22:124", "stateVariable": false, "storageLocation": "default", @@ -1280,7 +1280,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 48965, + "id": 48958, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1205:7:124", @@ -1292,20 +1292,20 @@ "visibility": "internal" } ], - "id": 48973, + "id": 48966, "initialValue": { "arguments": [ { "arguments": [ { - "id": 48970, + "id": 48963, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48957, + "referencedDeclaration": 48950, "src": "1251:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription memory" } } @@ -1313,12 +1313,12 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription memory" } ], "expression": { - "id": 48968, + "id": 48961, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1329,7 +1329,7 @@ "typeString": "abi" } }, - "id": 48969, + "id": 48962, "isConstant": false, "isLValue": false, "isPure": true, @@ -1343,7 +1343,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 48971, + "id": 48964, "isConstant": false, "isLValue": false, "isPure": false, @@ -1367,7 +1367,7 @@ "typeString": "bytes memory" } ], - "id": 48967, + "id": 48960, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1378,7 +1378,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 48972, + "id": 48965, "isConstant": false, "isLValue": false, "isPure": false, @@ -1400,34 +1400,34 @@ { "condition": { "commonType": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" }, - "id": 48979, + "id": 48972, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 48974, + "id": 48967, "name": "subscriptions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48479, + "referencedDeclaration": 48472, "src": "1280:13:124", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49078_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49071_$", "typeString": "mapping(bytes32 => enum SubscriptionStatus)" } }, - "id": 48976, + "id": 48969, "indexExpression": { - "id": 48975, + "id": 48968, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48966, + "referencedDeclaration": 48959, "src": "1294:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1441,7 +1441,7 @@ "nodeType": "IndexAccess", "src": "1280:29:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" } }, @@ -1449,18 +1449,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 48977, + "id": 48970, "name": "SubscriptionStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49078, + "referencedDeclaration": 49071, "src": "1313:18:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49078_$", + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49071_$", "typeString": "type(enum SubscriptionStatus)" } }, - "id": 48978, + "id": 48971, "isConstant": false, "isLValue": false, "isPure": true, @@ -1468,10 +1468,10 @@ "memberLocation": "1332:10:124", "memberName": "SUBSCRIBED", "nodeType": "MemberAccess", - "referencedDeclaration": 49077, + "referencedDeclaration": 49070, "src": "1313:29:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" } }, @@ -1481,11 +1481,11 @@ "typeString": "bool" } }, - "id": 48985, + "id": 48978, "nodeType": "IfStatement", "src": "1276:141:124", "trueBody": { - "id": 48984, + "id": 48977, "nodeType": "Block", "src": "1344:73:124", "statements": [ @@ -1493,11 +1493,11 @@ "errorCall": { "arguments": [ { - "id": 48981, + "id": 48974, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48966, + "referencedDeclaration": 48959, "src": "1391:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1512,18 +1512,18 @@ "typeString": "bytes32" } ], - "id": 48980, + "id": 48973, "name": "SubscriptionAlreadyActive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48927, + "referencedDeclaration": 48920, "src": "1365:25:124", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", "typeString": "function (bytes32) pure" } }, - "id": 48982, + "id": 48975, "isConstant": false, "isLValue": false, "isPure": false, @@ -1539,7 +1539,7 @@ "typeString": "tuple()" } }, - "id": 48983, + "id": 48976, "nodeType": "RevertStatement", "src": "1358:48:124" } @@ -1548,31 +1548,31 @@ }, { "expression": { - "id": 48991, + "id": 48984, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 48986, + "id": 48979, "name": "subscriptions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48479, + "referencedDeclaration": 48472, "src": "1426:13:124", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49078_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49071_$", "typeString": "mapping(bytes32 => enum SubscriptionStatus)" } }, - "id": 48988, + "id": 48981, "indexExpression": { - "id": 48987, + "id": 48980, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48966, + "referencedDeclaration": 48959, "src": "1440:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1586,7 +1586,7 @@ "nodeType": "IndexAccess", "src": "1426:29:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" } }, @@ -1594,18 +1594,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 48989, + "id": 48982, "name": "SubscriptionStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49078, + "referencedDeclaration": 49071, "src": "1458:18:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49078_$", + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49071_$", "typeString": "type(enum SubscriptionStatus)" } }, - "id": 48990, + "id": 48983, "isConstant": false, "isLValue": false, "isPure": true, @@ -1613,20 +1613,20 @@ "memberLocation": "1477:10:124", "memberName": "SUBSCRIBED", "nodeType": "MemberAccess", - "referencedDeclaration": 49077, + "referencedDeclaration": 49070, "src": "1458:29:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" } }, "src": "1426:61:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" } }, - "id": 48992, + "id": 48985, "nodeType": "ExpressionStatement", "src": "1426:61:124" }, @@ -1636,17 +1636,17 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 48995, + "id": 48988, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48993, + "id": 48986, "name": "_endSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48950, + "referencedDeclaration": 48943, "src": "1589:8:124", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -1656,11 +1656,11 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 48994, + "id": 48987, "name": "_startSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48948, + "referencedDeclaration": 48941, "src": "1600:10:124", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -1673,11 +1673,11 @@ "typeString": "bool" } }, - "id": 49002, + "id": 48995, "nodeType": "IfStatement", "src": "1585:97:124", "trueBody": { - "id": 49001, + "id": 48994, "nodeType": "Block", "src": "1612:70:124", "statements": [ @@ -1685,11 +1685,11 @@ "errorCall": { "arguments": [ { - "id": 48997, + "id": 48990, "name": "_startSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48948, + "referencedDeclaration": 48941, "src": "1650:10:124", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -1697,11 +1697,11 @@ } }, { - "id": 48998, + "id": 48991, "name": "_endSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48950, + "referencedDeclaration": 48943, "src": "1662:8:124", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -1720,18 +1720,18 @@ "typeString": "uint64" } ], - "id": 48996, + "id": 48989, "name": "InvalidSlotRange", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48937, + "referencedDeclaration": 48930, "src": "1633:16:124", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (uint64,uint64) pure" } }, - "id": 48999, + "id": 48992, "isConstant": false, "isLValue": false, "isPure": false, @@ -1747,7 +1747,7 @@ "typeString": "tuple()" } }, - "id": 49000, + "id": 48993, "nodeType": "RevertStatement", "src": "1626:45:124" } @@ -1758,11 +1758,11 @@ "eventCall": { "arguments": [ { - "id": 49004, + "id": 48997, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48966, + "referencedDeclaration": 48959, "src": "1707:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1770,11 +1770,11 @@ } }, { - "id": 49005, + "id": 48998, "name": "_startSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48948, + "referencedDeclaration": 48941, "src": "1723:10:124", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -1782,11 +1782,11 @@ } }, { - "id": 49006, + "id": 48999, "name": "_endSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48950, + "referencedDeclaration": 48943, "src": "1735:8:124", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -1794,14 +1794,14 @@ } }, { - "id": 49007, + "id": 49000, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48957, + "referencedDeclaration": 48950, "src": "1745:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription memory" } } @@ -1821,22 +1821,22 @@ "typeString": "uint64" }, { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription memory" } ], - "id": 49003, + "id": 48996, "name": "Subscribe", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49099, + "referencedDeclaration": 49092, "src": "1697:9:124", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$_t_uint64_$_t_struct$_Subscription_$49087_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$_t_uint64_$_t_struct$_Subscription_$49080_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint64,uint64,struct Subscription memory)" } }, - "id": 49008, + "id": 49001, "isConstant": false, "isLValue": false, "isPure": false, @@ -1852,35 +1852,35 @@ "typeString": "tuple()" } }, - "id": 49009, + "id": 49002, "nodeType": "EmitStatement", "src": "1692:66:124" }, { "expression": { - "id": 49010, + "id": 49003, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48966, + "referencedDeclaration": 48959, "src": "1776:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 48954, - "id": 49011, + "functionReturnParameters": 48947, + "id": 49004, "nodeType": "Return", "src": "1769:21:124" } ] }, "baseFunctions": [ - 49124 + 49117 ], "documentation": { - "id": 48938, + "id": 48931, "nodeType": "StructuredDocumentation", "src": "581:251:124", "text": "@dev The block ranges use as a signal to off-chain, and are NOT enforced by the publisher.\n If events should only a certain range should be valid, the callbackAddress should do their\n own validation when handling the publish." @@ -1892,17 +1892,17 @@ "name": "subscribe", "nameLocation": "846:9:124", "parameters": { - "id": 48951, + "id": 48944, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48940, + "id": 48933, "mutability": "mutable", "name": "_sourceChainId", "nameLocation": "872:14:124", "nodeType": "VariableDeclaration", - "scope": 49013, + "scope": 49006, "src": "865:21:124", "stateVariable": false, "storageLocation": "default", @@ -1911,7 +1911,7 @@ "typeString": "uint32" }, "typeName": { - "id": 48939, + "id": 48932, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "865:6:124", @@ -1924,12 +1924,12 @@ }, { "constant": false, - "id": 48942, + "id": 48935, "mutability": "mutable", "name": "_sourceAddress", "nameLocation": "904:14:124", "nodeType": "VariableDeclaration", - "scope": 49013, + "scope": 49006, "src": "896:22:124", "stateVariable": false, "storageLocation": "default", @@ -1938,7 +1938,7 @@ "typeString": "address" }, "typeName": { - "id": 48941, + "id": 48934, "name": "address", "nodeType": "ElementaryTypeName", "src": "896:7:124", @@ -1952,12 +1952,12 @@ }, { "constant": false, - "id": 48944, + "id": 48937, "mutability": "mutable", "name": "_callbackAddress", "nameLocation": "936:16:124", "nodeType": "VariableDeclaration", - "scope": 49013, + "scope": 49006, "src": "928:24:124", "stateVariable": false, "storageLocation": "default", @@ -1966,7 +1966,7 @@ "typeString": "address" }, "typeName": { - "id": 48943, + "id": 48936, "name": "address", "nodeType": "ElementaryTypeName", "src": "928:7:124", @@ -1980,12 +1980,12 @@ }, { "constant": false, - "id": 48946, + "id": 48939, "mutability": "mutable", "name": "_eventSig", "nameLocation": "970:9:124", "nodeType": "VariableDeclaration", - "scope": 49013, + "scope": 49006, "src": "962:17:124", "stateVariable": false, "storageLocation": "default", @@ -1994,7 +1994,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 48945, + "id": 48938, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "962:7:124", @@ -2007,12 +2007,12 @@ }, { "constant": false, - "id": 48948, + "id": 48941, "mutability": "mutable", "name": "_startSlot", "nameLocation": "996:10:124", "nodeType": "VariableDeclaration", - "scope": 49013, + "scope": 49006, "src": "989:17:124", "stateVariable": false, "storageLocation": "default", @@ -2021,7 +2021,7 @@ "typeString": "uint64" }, "typeName": { - "id": 48947, + "id": 48940, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "989:6:124", @@ -2034,12 +2034,12 @@ }, { "constant": false, - "id": 48950, + "id": 48943, "mutability": "mutable", "name": "_endSlot", "nameLocation": "1023:8:124", "nodeType": "VariableDeclaration", - "scope": 49013, + "scope": 49006, "src": "1016:15:124", "stateVariable": false, "storageLocation": "default", @@ -2048,7 +2048,7 @@ "typeString": "uint64" }, "typeName": { - "id": 48949, + "id": 48942, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1016:6:124", @@ -2063,17 +2063,17 @@ "src": "855:182:124" }, "returnParameters": { - "id": 48954, + "id": 48947, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48953, + "id": 48946, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 49013, + "scope": 49006, "src": "1056:7:124", "stateVariable": false, "storageLocation": "default", @@ -2082,7 +2082,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 48952, + "id": 48945, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1056:7:124", @@ -2096,74 +2096,74 @@ ], "src": "1055:9:124" }, - "scope": 49073, + "scope": 49066, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 49072, + "id": 49065, "nodeType": "FunctionDefinition", "src": "1888:644:124", "nodes": [], "body": { - "id": 49071, + "id": 49064, "nodeType": "Block", "src": "2022:510:124", "nodes": [], "statements": [ { "assignments": [ - 49027 + 49020 ], "declarations": [ { "constant": false, - "id": 49027, + "id": 49020, "mutability": "mutable", "name": "subscription", "nameLocation": "2052:12:124", "nodeType": "VariableDeclaration", - "scope": 49071, + "scope": 49064, "src": "2032:32:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription" }, "typeName": { - "id": 49026, + "id": 49019, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49025, + "id": 49018, "name": "Subscription", "nameLocations": [ "2032:12:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "2032:12:124" }, - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "2032:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_storage_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_storage_ptr", "typeString": "struct Subscription" } }, "visibility": "internal" } ], - "id": 49035, + "id": 49028, "initialValue": { "arguments": [ { - "id": 49029, + "id": 49022, "name": "_sourceChainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49016, + "referencedDeclaration": 49009, "src": "2092:14:124", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -2171,11 +2171,11 @@ } }, { - "id": 49030, + "id": 49023, "name": "_sourceAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49018, + "referencedDeclaration": 49011, "src": "2108:14:124", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2184,7 +2184,7 @@ }, { "expression": { - "id": 49031, + "id": 49024, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2195,7 +2195,7 @@ "typeString": "msg" } }, - "id": 49032, + "id": 49025, "isConstant": false, "isLValue": false, "isPure": false, @@ -2210,11 +2210,11 @@ } }, { - "id": 49033, + "id": 49026, "name": "_eventSig", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49020, + "referencedDeclaration": 49013, "src": "2136:9:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2241,18 +2241,18 @@ "typeString": "bytes32" } ], - "id": 49028, + "id": 49021, "name": "Subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49087, + "referencedDeclaration": 49080, "src": "2079:12:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Subscription_$49087_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Subscription_$49080_storage_ptr_$", "typeString": "type(struct Subscription storage pointer)" } }, - "id": 49034, + "id": 49027, "isConstant": false, "isLValue": false, "isPure": false, @@ -2264,7 +2264,7 @@ "src": "2079:67:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription memory" } }, @@ -2273,17 +2273,17 @@ }, { "assignments": [ - 49037 + 49030 ], "declarations": [ { "constant": false, - "id": 49037, + "id": 49030, "mutability": "mutable", "name": "subscriptionId", "nameLocation": "2164:14:124", "nodeType": "VariableDeclaration", - "scope": 49071, + "scope": 49064, "src": "2156:22:124", "stateVariable": false, "storageLocation": "default", @@ -2292,7 +2292,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 49036, + "id": 49029, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2156:7:124", @@ -2304,20 +2304,20 @@ "visibility": "internal" } ], - "id": 49044, + "id": 49037, "initialValue": { "arguments": [ { "arguments": [ { - "id": 49041, + "id": 49034, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49027, + "referencedDeclaration": 49020, "src": "2202:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription memory" } } @@ -2325,12 +2325,12 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription memory" } ], "expression": { - "id": 49039, + "id": 49032, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2341,7 +2341,7 @@ "typeString": "abi" } }, - "id": 49040, + "id": 49033, "isConstant": false, "isLValue": false, "isPure": true, @@ -2355,7 +2355,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 49042, + "id": 49035, "isConstant": false, "isLValue": false, "isPure": false, @@ -2379,7 +2379,7 @@ "typeString": "bytes memory" } ], - "id": 49038, + "id": 49031, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2390,7 +2390,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 49043, + "id": 49036, "isConstant": false, "isLValue": false, "isPure": false, @@ -2412,34 +2412,34 @@ { "condition": { "commonType": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" }, - "id": 49050, + "id": 49043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 49045, + "id": 49038, "name": "subscriptions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48479, + "referencedDeclaration": 48472, "src": "2231:13:124", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49078_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49071_$", "typeString": "mapping(bytes32 => enum SubscriptionStatus)" } }, - "id": 49047, + "id": 49040, "indexExpression": { - "id": 49046, + "id": 49039, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49037, + "referencedDeclaration": 49030, "src": "2245:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2453,7 +2453,7 @@ "nodeType": "IndexAccess", "src": "2231:29:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" } }, @@ -2461,18 +2461,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 49048, + "id": 49041, "name": "SubscriptionStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49078, + "referencedDeclaration": 49071, "src": "2264:18:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49078_$", + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49071_$", "typeString": "type(enum SubscriptionStatus)" } }, - "id": 49049, + "id": 49042, "isConstant": false, "isLValue": false, "isPure": true, @@ -2480,10 +2480,10 @@ "memberLocation": "2283:11:124", "memberName": "UNSUBSCIBED", "nodeType": "MemberAccess", - "referencedDeclaration": 49076, + "referencedDeclaration": 49069, "src": "2264:30:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" } }, @@ -2493,11 +2493,11 @@ "typeString": "bool" } }, - "id": 49056, + "id": 49049, "nodeType": "IfStatement", "src": "2227:138:124", "trueBody": { - "id": 49055, + "id": 49048, "nodeType": "Block", "src": "2296:69:124", "statements": [ @@ -2505,11 +2505,11 @@ "errorCall": { "arguments": [ { - "id": 49052, + "id": 49045, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49037, + "referencedDeclaration": 49030, "src": "2339:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2524,18 +2524,18 @@ "typeString": "bytes32" } ], - "id": 49051, + "id": 49044, "name": "SubscriptionNotActive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48931, + "referencedDeclaration": 48924, "src": "2317:21:124", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", "typeString": "function (bytes32) pure" } }, - "id": 49053, + "id": 49046, "isConstant": false, "isLValue": false, "isPure": false, @@ -2551,7 +2551,7 @@ "typeString": "tuple()" } }, - "id": 49054, + "id": 49047, "nodeType": "RevertStatement", "src": "2310:44:124" } @@ -2560,31 +2560,31 @@ }, { "expression": { - "id": 49062, + "id": 49055, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 49057, + "id": 49050, "name": "subscriptions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48479, + "referencedDeclaration": 48472, "src": "2374:13:124", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49078_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49071_$", "typeString": "mapping(bytes32 => enum SubscriptionStatus)" } }, - "id": 49059, + "id": 49052, "indexExpression": { - "id": 49058, + "id": 49051, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49037, + "referencedDeclaration": 49030, "src": "2388:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2598,7 +2598,7 @@ "nodeType": "IndexAccess", "src": "2374:29:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" } }, @@ -2606,18 +2606,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 49060, + "id": 49053, "name": "SubscriptionStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49078, + "referencedDeclaration": 49071, "src": "2406:18:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49078_$", + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49071_$", "typeString": "type(enum SubscriptionStatus)" } }, - "id": 49061, + "id": 49054, "isConstant": false, "isLValue": false, "isPure": true, @@ -2625,20 +2625,20 @@ "memberLocation": "2425:11:124", "memberName": "UNSUBSCIBED", "nodeType": "MemberAccess", - "referencedDeclaration": 49076, + "referencedDeclaration": 49069, "src": "2406:30:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" } }, "src": "2374:62:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49078", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", "typeString": "enum SubscriptionStatus" } }, - "id": 49063, + "id": 49056, "nodeType": "ExpressionStatement", "src": "2374:62:124" }, @@ -2646,11 +2646,11 @@ "eventCall": { "arguments": [ { - "id": 49065, + "id": 49058, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49037, + "referencedDeclaration": 49030, "src": "2464:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2658,14 +2658,14 @@ } }, { - "id": 49066, + "id": 49059, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49027, + "referencedDeclaration": 49020, "src": "2480:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription memory" } } @@ -2677,22 +2677,22 @@ "typeString": "bytes32" }, { - "typeIdentifier": "t_struct$_Subscription_$49087_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", "typeString": "struct Subscription memory" } ], - "id": 49064, + "id": 49057, "name": "Unsubscribe", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49107, + "referencedDeclaration": 49100, "src": "2452:11:124", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49087_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49080_memory_ptr_$returns$__$", "typeString": "function (bytes32,struct Subscription memory)" } }, - "id": 49067, + "id": 49060, "isConstant": false, "isLValue": false, "isPure": false, @@ -2708,35 +2708,35 @@ "typeString": "tuple()" } }, - "id": 49068, + "id": 49061, "nodeType": "EmitStatement", "src": "2447:46:124" }, { "expression": { - "id": 49069, + "id": 49062, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49037, + "referencedDeclaration": 49030, "src": "2511:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 49024, - "id": 49070, + "functionReturnParameters": 49017, + "id": 49063, "nodeType": "Return", "src": "2504:21:124" } ] }, "baseFunctions": [ - 49135 + 49128 ], "documentation": { - "id": 49014, + "id": 49007, "nodeType": "StructuredDocumentation", "src": "1803:80:124", "text": "@dev Only the original callbackAddress contract will be able to unsubscribe." @@ -2748,17 +2748,17 @@ "name": "unsubscribe", "nameLocation": "1897:11:124", "parameters": { - "id": 49021, + "id": 49014, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49016, + "id": 49009, "mutability": "mutable", "name": "_sourceChainId", "nameLocation": "1916:14:124", "nodeType": "VariableDeclaration", - "scope": 49072, + "scope": 49065, "src": "1909:21:124", "stateVariable": false, "storageLocation": "default", @@ -2767,7 +2767,7 @@ "typeString": "uint32" }, "typeName": { - "id": 49015, + "id": 49008, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1909:6:124", @@ -2780,12 +2780,12 @@ }, { "constant": false, - "id": 49018, + "id": 49011, "mutability": "mutable", "name": "_sourceAddress", "nameLocation": "1940:14:124", "nodeType": "VariableDeclaration", - "scope": 49072, + "scope": 49065, "src": "1932:22:124", "stateVariable": false, "storageLocation": "default", @@ -2794,7 +2794,7 @@ "typeString": "address" }, "typeName": { - "id": 49017, + "id": 49010, "name": "address", "nodeType": "ElementaryTypeName", "src": "1932:7:124", @@ -2808,12 +2808,12 @@ }, { "constant": false, - "id": 49020, + "id": 49013, "mutability": "mutable", "name": "_eventSig", "nameLocation": "1964:9:124", "nodeType": "VariableDeclaration", - "scope": 49072, + "scope": 49065, "src": "1956:17:124", "stateVariable": false, "storageLocation": "default", @@ -2822,7 +2822,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 49019, + "id": 49012, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1956:7:124", @@ -2837,17 +2837,17 @@ "src": "1908:66:124" }, "returnParameters": { - "id": 49024, + "id": 49017, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49023, + "id": 49016, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 49072, + "scope": 49065, "src": "2009:7:124", "stateVariable": false, "storageLocation": "default", @@ -2856,7 +2856,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 49022, + "id": 49015, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2009:7:124", @@ -2870,7 +2870,7 @@ ], "src": "2008:9:124" }, - "scope": 49073, + "scope": 49066, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -2880,31 +2880,31 @@ "baseContracts": [ { "baseName": { - "id": 48920, + "id": 48913, "name": "ISubscriber", "nameLocations": [ "367:11:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49136, + "referencedDeclaration": 49129, "src": "367:11:124" }, - "id": 48921, + "id": 48914, "nodeType": "InheritanceSpecifier", "src": "367:11:124" }, { "baseName": { - "id": 48922, + "id": 48915, "name": "PubSubStorage", "nameLocations": [ "380:13:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48485, + "referencedDeclaration": 48478, "src": "380:13:124" }, - "id": 48923, + "id": 48916, "nodeType": "InheritanceSpecifier", "src": "380:13:124" } @@ -2913,24 +2913,24 @@ "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 48919, + "id": 48912, "nodeType": "StructuredDocumentation", "src": "185:150:124", "text": "@title TelepathySubscriber\n @author Succinct Labs\n @notice This allows contracts to subscribe to cross-chain events from a source contract." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 49073, - 48485, - 49136 + 49066, + 48478, + 49129 ], "name": "TelepathySubscriber", "nameLocation": "344:19:124", - "scope": 49074, + "scope": 49067, "usedErrors": [ - 48927, - 48931, - 48937 + 48920, + 48924, + 48930 ] } ] diff --git a/out/TelepathyValidator.sol/IBasicHomeAMB.json b/out/TelepathyValidator.sol/IBasicHomeAMB.json index 9aa3d03..1a97a99 100644 --- a/out/TelepathyValidator.sol/IBasicHomeAMB.json +++ b/out/TelepathyValidator.sol/IBasicHomeAMB.json @@ -436,10 +436,10 @@ 31597 ], "SubscriptionReceiver": [ - 49286 + 49279 ], "TelepathyPubSub": [ - 48516 + 48509 ], "TelepathyValidator": [ 2853 @@ -469,7 +469,7 @@ "file": "src/pubsub/TelepathyPubSub.sol", "nameLocation": "-1:-1:-1", "scope": 2860, - "sourceUnit": 48517, + "sourceUnit": 48510, "symbolAliases": [ { "foreign": { @@ -477,7 +477,7 @@ "name": "TelepathyPubSub", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48516, + "referencedDeclaration": 48509, "src": "34:15:12", "typeDescriptions": {} }, @@ -495,7 +495,7 @@ "file": "src/pubsub/interfaces/SubscriptionReceiver.sol", "nameLocation": "-1:-1:-1", "scope": 2860, - "sourceUnit": 49287, + "sourceUnit": 49280, "symbolAliases": [ { "foreign": { @@ -503,7 +503,7 @@ "name": "SubscriptionReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49286, + "referencedDeclaration": 49279, "src": "98:20:12", "typeDescriptions": {} }, @@ -1458,7 +1458,7 @@ "1636:20:12" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49286, + "referencedDeclaration": 49279, "src": "1636:20:12" }, "nodeType": "ModifierInvocation", @@ -1973,10 +1973,10 @@ "name": "telepathyPubSub", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49210, + "referencedDeclaration": 49203, "src": "2162:15:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyPubSub_$48516", + "typeIdentifier": "t_contract$_TelepathyPubSub_$48509", "typeString": "contract TelepathyPubSub" } }, @@ -1988,7 +1988,7 @@ "memberLocation": "2178:9:12", "memberName": "subscribe", "nodeType": "MemberAccess", - "referencedDeclaration": 49013, + "referencedDeclaration": 49006, "src": "2162:25:12", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_address_$_t_address_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bytes32_$", @@ -3093,7 +3093,7 @@ ] }, "baseFunctions": [ - 49285 + 49278 ], "documentation": { "id": 2758, @@ -3313,7 +3313,7 @@ "547:20:12" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49286, + "referencedDeclaration": 49279, "src": "547:20:12" }, "id": 2627, @@ -3350,8 +3350,8 @@ 2853, 31597, 35292, - 49286, - 49195 + 49279, + 49188 ], "name": "TelepathyValidator", "nameLocation": "525:18:12", @@ -3361,7 +3361,7 @@ 2645, 2649, 2653, - 49207 + 49200 ] }, { diff --git a/out/TelepathyValidator.sol/TelepathyValidator.json b/out/TelepathyValidator.sol/TelepathyValidator.json index 1a452f0..b7aaa9a 100644 --- a/out/TelepathyValidator.sol/TelepathyValidator.json +++ b/out/TelepathyValidator.sol/TelepathyValidator.json @@ -1003,10 +1003,10 @@ 31597 ], "SubscriptionReceiver": [ - 49286 + 49279 ], "TelepathyPubSub": [ - 48516 + 48509 ], "TelepathyValidator": [ 2853 @@ -1036,7 +1036,7 @@ "file": "src/pubsub/TelepathyPubSub.sol", "nameLocation": "-1:-1:-1", "scope": 2860, - "sourceUnit": 48517, + "sourceUnit": 48510, "symbolAliases": [ { "foreign": { @@ -1044,7 +1044,7 @@ "name": "TelepathyPubSub", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48516, + "referencedDeclaration": 48509, "src": "34:15:12", "typeDescriptions": {} }, @@ -1062,7 +1062,7 @@ "file": "src/pubsub/interfaces/SubscriptionReceiver.sol", "nameLocation": "-1:-1:-1", "scope": 2860, - "sourceUnit": 49287, + "sourceUnit": 49280, "symbolAliases": [ { "foreign": { @@ -1070,7 +1070,7 @@ "name": "SubscriptionReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49286, + "referencedDeclaration": 49279, "src": "98:20:12", "typeDescriptions": {} }, @@ -2025,7 +2025,7 @@ "1636:20:12" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49286, + "referencedDeclaration": 49279, "src": "1636:20:12" }, "nodeType": "ModifierInvocation", @@ -2540,10 +2540,10 @@ "name": "telepathyPubSub", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49210, + "referencedDeclaration": 49203, "src": "2162:15:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyPubSub_$48516", + "typeIdentifier": "t_contract$_TelepathyPubSub_$48509", "typeString": "contract TelepathyPubSub" } }, @@ -2555,7 +2555,7 @@ "memberLocation": "2178:9:12", "memberName": "subscribe", "nodeType": "MemberAccess", - "referencedDeclaration": 49013, + "referencedDeclaration": 49006, "src": "2162:25:12", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_address_$_t_address_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bytes32_$", @@ -3660,7 +3660,7 @@ ] }, "baseFunctions": [ - 49285 + 49278 ], "documentation": { "id": 2758, @@ -3880,7 +3880,7 @@ "547:20:12" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49286, + "referencedDeclaration": 49279, "src": "547:20:12" }, "id": 2627, @@ -3917,8 +3917,8 @@ 2853, 31597, 35292, - 49286, - 49195 + 49279, + 49188 ], "name": "TelepathyValidator", "nameLocation": "525:18:12", @@ -3928,7 +3928,7 @@ 2645, 2649, 2653, - 49207 + 49200 ] }, { diff --git a/src/amb/interfaces/TelepathyHandler.sol b/src/amb/interfaces/TelepathyHandler.sol index 30c94f3..920ef60 100644 --- a/src/amb/interfaces/TelepathyHandler.sol +++ b/src/amb/interfaces/TelepathyHandler.sol @@ -5,10 +5,10 @@ import {ITelepathyHandler} from "src/amb/interfaces/ITelepathy.sol"; abstract contract TelepathyHandler is ITelepathyHandler { error NotFromTelepathyRouter(address sender); - address private _telepathyRouter; + address public telepathyRouter; - constructor(address telepathyRouter) { - _telepathyRouter = telepathyRouter; + constructor(address _telepathyRouter) { + telepathyRouter = _telepathyRouter; } function handleTelepathy(uint32 _sourceChainId, address _sourceAddress, bytes memory _data) @@ -16,7 +16,7 @@ abstract contract TelepathyHandler is ITelepathyHandler { override returns (bytes4) { - if (msg.sender != _telepathyRouter) { + if (msg.sender != telepathyRouter) { revert NotFromTelepathyRouter(msg.sender); } handleTelepathyImpl(_sourceChainId, _sourceAddress, _data); diff --git a/src/amb/interfaces/TelepathyHandlerUpgradeable.sol b/src/amb/interfaces/TelepathyHandlerUpgradeable.sol index 6097d19..775de76 100644 --- a/src/amb/interfaces/TelepathyHandlerUpgradeable.sol +++ b/src/amb/interfaces/TelepathyHandlerUpgradeable.sol @@ -6,10 +6,10 @@ import {Initializable} from "openzeppelin-contracts-upgradeable/proxy/utils/Init abstract contract TelepathyHandlerUpgradeable is ITelepathyHandler, Initializable { error NotFromTelepathyRouter(address sender); - address private _telepathyRouter; + address public telepathyRouter; - function __TelepathyHandler_init(address telepathyRouter) public onlyInitializing { - _telepathyRouter = telepathyRouter; + function __TelepathyHandler_init(address _telepathyRouter) public onlyInitializing { + telepathyRouter = _telepathyRouter; } function handleTelepathy(uint32 _sourceChainId, address _sourceAddress, bytes memory _data) @@ -17,7 +17,7 @@ abstract contract TelepathyHandlerUpgradeable is ITelepathyHandler, Initializabl override returns (bytes4) { - if (msg.sender != _telepathyRouter) { + if (msg.sender != telepathyRouter) { revert NotFromTelepathyRouter(msg.sender); } handleTelepathyImpl(_sourceChainId, _sourceAddress, _data); diff --git a/src/oracle/TelepathyOracle.sol b/src/oracle/TelepathyOracle.sol index 1c1bbb3..6bfbba7 100644 --- a/src/oracle/TelepathyOracle.sol +++ b/src/oracle/TelepathyOracle.sol @@ -34,8 +34,6 @@ contract TelepathyOracle is TelepathyHandler { mapping(bytes32 => RequestStatus) public requests; /// @notice The next nonce to use when sending a cross-chain request uint256 public nextNonce = 1; - /// @notice The address of the Telepathy Router contract - address public telepathyRouter; /// @notice The address of the fulfiller contract on the other chain address public fulfiller; /// @notice The chain ID of the fulfiller contract @@ -45,7 +43,6 @@ contract TelepathyOracle is TelepathyHandler { TelepathyHandler(_telepathyRouter) { fulfillerChainId = _fulfillerChainId; - telepathyRouter = _telepathyRouter; fulfiller = _fulfiller; } From ddd4a386a20f037176f18ec6816c93238888827c Mon Sep 17 00:00:00 2001 From: Chris T Date: Wed, 5 Apr 2023 17:03:42 -0700 Subject: [PATCH 05/18] Turbo in CI/CD (#288) * Uma's turbo changes * fix * test * Single turbo action * lint and test in one * cleanup * run on merge to main * cleanup turbo.json * fix * in CI, typecheck before build * fix typecheck GitOrigin-RevId: 340a69319ec96ff32aed5b018fd321f7cfbbdb8a --- .github/workflows/contracts.yml | 75 --------------------------------- package.json | 4 +- 2 files changed, 1 insertion(+), 78 deletions(-) delete mode 100644 .github/workflows/contracts.yml diff --git a/.github/workflows/contracts.yml b/.github/workflows/contracts.yml deleted file mode 100644 index cabf1c0..0000000 --- a/.github/workflows/contracts.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: Contracts -on: - pull_request: - paths: - - '**' - - '.github/workflows/contracts.yml' - push: - branches: - - main - paths: - - '**' - - '.github/workflows/contracts.yml' - -jobs: - lint-and-test: - environment: testing - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install Foundry - uses: onbjerg/foundry-toolchain@v1 - with: - version: nightly - - - name: Check formatting - working-directory: . - run: forge fmt --check src/ test/ examples/ - - - name: Install dependencies - working-directory: . - run: forge install - - - name: Check contract sizes - working-directory: . - run: forge build --sizes --build-info - - # Uses https://github.com/tj-actions/verify-changed-files action - # to get any uncommitted changes from previous step - - name: Get changes after last step - id: abi-changes - uses: tj-actions/verify-changed-files@v14 - - - name: Make sure ABI hasn't changed - if: steps.abi-changes.outputs.files_changed == 'true' - run: exit 1 - - # TODO most likely stuck on unchecked external calls @ src/oracle/TelepathyOracle.sol:94 - # - name: Run Slither - # uses: crytic/slither-action@main - # id: slither - # with: - # target: '' - # slither-config: 'slither.config.json' - # fail-on: none - # ignore-compile: true - - - name: Run Solhint - working-directory: . - run: npx solhint 'src/**/*.sol' 'test/**/*.sol' 'examples/**/*.sol' 'script/**/*.sol' --config .solhint.json - - # - name: Check gas snapshots - # working-directory: . - # run: forge snapshot --check - - - name: Check test coverage - working-directory: . - run: MAINNET_RPC_URL=${{ secrets.MAINNET_RPC_URL }} forge coverage - - - name: Run tests - working-directory: . - run: MAINNET_RPC_URL=${{ secrets.MAINNET_RPC_URL }} forge test - env: - # Only fuzz intensely if we're running this action on a push to main or for a PR going into main: - FOUNDRY_PROFILE: ${{ (github.ref == 'refs/heads/main' || github.base_ref == 'main') && 'intense' }} diff --git a/package.json b/package.json index 2830332..67eadeb 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,6 @@ "scripts": { "lint": "forge fmt --check src test script examples", "test": "forge test", - "turbo:build": "FOUNDRY_IGNORED_ERROR_CODES='[5740,1878]' forge build", - "turbo:lint": "forge fmt --check src test script examples", - "turbo:test": "forge test" + "build": "FOUNDRY_IGNORED_ERROR_CODES='[5740,1878]' forge build" } } From 5aa4bb76ade0e4ab53f24c03d16f4b353ebd2dd0 Mon Sep 17 00:00:00 2001 From: Chris T Date: Wed, 5 Apr 2023 22:07:20 -0700 Subject: [PATCH 06/18] Support post-capella far-away slots in TargetAMB (#280) * Support post-capella far-away slots in TargetAMB * Fix and add tests * Add 50 tests * lint * Use errors in SourceAMB to reduce bytecode * PR feedback * PR feedback * Add fork epoch references * update abi * update abi GitOrigin-RevId: ac3fcd0eae3a21d20516da14d636aea8ec3ce575 --- .../DrillLightClient.json | 58 +- .../DrillTelepathyRouter.json | 82 +- out/LightClient.sol/LightClient.json | 4238 +++++++++-------- out/LightClientMock.sol/LightClientMock.json | 496 +- out/SourceAMB.sol/SourceAMB.json | 2157 ++++----- out/TargetAMB.sol/TargetAMB.json | 2996 ++++++------ out/TelepathyPubSub.sol/TelepathyPubSub.json | 278 +- .../TelepathyPublisher.json | 2386 +++++----- out/TelepathyRouter.sol/TelepathyRouter.json | 601 +-- .../TelepathySubscriber.json | 1036 ++-- out/TelepathyValidator.sol/IBasicHomeAMB.json | 64 +- .../TelepathyValidator.json | 72 +- out/Timelock.sol/Timelock.json | 158 +- src/amb/SourceAMB.sol | 15 +- src/amb/TargetAMB.sol | 5 +- src/libraries/BeaconChainForks.sol | 19 + src/libraries/SimpleSerialize.sol | 23 +- src/pubsub/TelepathyPublisher.sol | 5 +- test/amb/TargetAMBLog.t.sol | 73 + .../capella/receiptsRootProof_A1.json | 66 + .../capella/receiptsRootProof_A2.json | 66 + .../capella/receiptsRootProof_A3.json | 66 + .../capella/receiptsRootProof_A4.json | 66 + .../capella/receiptsRootProof_A5.json | 66 + .../capella/receiptsRootProof_B1.json | 66 + .../capella/receiptsRootProof_B2.json | 66 + .../capella/receiptsRootProof_B3.json | 66 + .../capella/receiptsRootProof_B4.json | 66 + .../capella/receiptsRootProof_B5.json | 66 + .../capella/receiptsRootProof_C1.json | 66 + .../capella/receiptsRootProof_C2.json | 66 + .../capella/receiptsRootProof_C3.json | 66 + .../capella/receiptsRootProof_C4.json | 66 + .../capella/receiptsRootProof_C5.json | 66 + .../capella/receiptsRootProof_D1.json | 66 + .../capella/receiptsRootProof_D2.json | 66 + .../capella/receiptsRootProof_D3.json | 66 + .../capella/receiptsRootProof_D4.json | 66 + .../capella/receiptsRootProof_D5.json | 66 + .../capella/receiptsRootProof_E1.json | 66 + .../capella/receiptsRootProof_E2.json | 66 + .../capella/receiptsRootProof_E3.json | 66 + .../capella/receiptsRootProof_E4.json | 66 + .../capella/receiptsRootProof_E5.json | 66 + .../capella/receiptsRootProof_F1.json | 66 + .../capella/receiptsRootProof_F2.json | 66 + .../capella/receiptsRootProof_F3.json | 66 + .../capella/receiptsRootProof_F4.json | 66 + .../capella/receiptsRootProof_F5.json | 66 + .../capella/receiptsRootProof_G1.json | 66 + .../capella/receiptsRootProof_G2.json | 66 + .../capella/receiptsRootProof_G3.json | 66 + .../capella/receiptsRootProof_G4.json | 66 + .../capella/receiptsRootProof_G5.json | 66 + .../capella/receiptsRootProof_H1.json | 66 + .../capella/receiptsRootProof_H2.json | 66 + .../capella/receiptsRootProof_H3.json | 66 + .../capella/receiptsRootProof_H4.json | 66 + .../capella/receiptsRootProof_H5.json | 66 + .../capella/receiptsRootProof_I1.json | 66 + .../capella/receiptsRootProof_I2.json | 66 + .../capella/receiptsRootProof_I3.json | 66 + .../capella/receiptsRootProof_I4.json | 66 + .../capella/receiptsRootProof_I5.json | 66 + .../capella/receiptsRootProof_J1.json | 66 + .../capella/receiptsRootProof_J2.json | 66 + .../capella/receiptsRootProof_J3.json | 66 + .../capella/receiptsRootProof_J4.json | 66 + .../capella/receiptsRootProof_J5.json | 66 + .../amb/fixtures/farSlotBellatrixCapella.json | 76 + test/amb/fixtures/farSlotCapellaCapella.json | 76 + test/libraries/SimpleSerialize.t.sol | 51 + 72 files changed, 11047 insertions(+), 7218 deletions(-) create mode 100644 src/libraries/BeaconChainForks.sol create mode 100644 test/amb/fixtures/capella/receiptsRootProof_A1.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_A2.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_A3.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_A4.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_A5.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_B1.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_B2.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_B3.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_B4.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_B5.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_C1.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_C2.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_C3.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_C4.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_C5.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_D1.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_D2.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_D3.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_D4.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_D5.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_E1.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_E2.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_E3.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_E4.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_E5.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_F1.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_F2.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_F3.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_F4.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_F5.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_G1.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_G2.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_G3.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_G4.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_G5.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_H1.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_H2.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_H3.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_H4.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_H5.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_I1.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_I2.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_I3.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_I4.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_I5.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_J1.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_J2.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_J3.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_J4.json create mode 100644 test/amb/fixtures/capella/receiptsRootProof_J5.json create mode 100644 test/amb/fixtures/farSlotBellatrixCapella.json create mode 100644 test/amb/fixtures/farSlotCapellaCapella.json diff --git a/out/DrillLightClient.sol/DrillLightClient.json b/out/DrillLightClient.sol/DrillLightClient.json index f760edc..5b3574d 100644 --- a/out/DrillLightClient.sol/DrillLightClient.json +++ b/out/DrillLightClient.sol/DrillLightClient.json @@ -550,22 +550,22 @@ } ], "bytecode": { - "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004eb538038062004eb5833981016040819052620000459162000264565b6000608081905260a081905260c081905260e0819052610100819052610120819052808080808080806200007a8180620000ae565b50505050505050506200009c620000966200012d60201b60201c565b62000131565b620000a78162000183565b5062000296565b60008281526005602052604090205415801590620000da57506000828152600560205260409020548114155b15620000ee5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200018d62000206565b6001600160a01b038116620001f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620002038162000131565b50565b6006546001600160a01b03163314620002625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001ef565b565b6000602082840312156200027757600080fd5b81516001600160a01b03811681146200028f57600080fd5b9392505050565b60805160a05160c05160e0516101005161012051614bb3620003026000396000818161031c01526109ba0152600061022201526000818161014101526109e50152600081816101980152610dd401526000818161037c0152610df8015260006102c20152614bb36000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea264697066735822122012bf92c5d713803962f9722e65328edf46e1f5b0dc5d4bc42e4580c6d47fca3964736f6c63430008100033", - "sourceMap": "289:466:5:-:0;;;1711:29:113;;;-1:-1:-1;;1711:29:113;1736:4;1711:29;;;;;1824:23;345:118:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;386:1;2873:47:113;;;;2930:26;;;;2966:33;;;;3009;;;;3052:31;;;;3093:38;;;;386:1:5;;;;;;;3141:68:113;386:1:5;;3141:24:113;:68::i;:::-;2573:643;;;;;;;;936:32:49;955:12;:10;;;:12;;:::i;:::-;936:18;:32::i;:::-;430:26:5::2;448:7:::0;430:17:::2;:26::i;:::-;345:118:::0;289:466;;9106:393:113;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:113;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:113;9341:18;;-1:-1:-1;;9341:18:113;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;640:96:68:-;719:10;;640:96::o;2433:187:49:-;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;511:2:145;2161:73:49::1;::::0;::::1;493:21:145::0;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:145;;;633:36;686:19;;2161:73:49::1;;;;;;;;;2244:28;2263:8:::0;2244:18:::1;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;918:2:145;1414:68:49;;;900:21:145;;;937:18;;;930:30;996:34;976:18;;;969:62;1048:18;;1414:68:49;716:356:145;1414:68:49;1359:130::o;14:290:145:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:145;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:145:o;716:356::-;289:466:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004eb538038062004eb5833981016040819052620000459162000264565b6000608081905260a081905260c081905260e0819052610100819052610120819052808080808080806200007a8180620000ae565b50505050505050506200009c620000966200012d60201b60201c565b62000131565b620000a78162000183565b5062000296565b60008281526005602052604090205415801590620000da57506000828152600560205260409020548114155b15620000ee5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200018d62000206565b6001600160a01b038116620001f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620002038162000131565b50565b6006546001600160a01b03163314620002625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001ef565b565b6000602082840312156200027757600080fd5b81516001600160a01b03811681146200028f57600080fd5b9392505050565b60805160a05160c05160e0516101005161012051614bb3620003026000396000818161031c01526109ba0152600061022201526000818161014101526109e50152600081816101980152610dd401526000818161037c0152610df8015260006102c20152614bb36000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea264697066735822122017945066ca6c713004947a77e2bb2320465ad725456bc0d1a314008a03241ebd64736f6c63430008100033", + "sourceMap": "289:466:5:-:0;;;1711:29:114;;;-1:-1:-1;;1711:29:114;1736:4;1711:29;;;;;1824:23;345:118:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;386:1;2873:47:114;;;;2930:26;;;;2966:33;;;;3009;;;;3052:31;;;;3093:38;;;;386:1:5;;;;;;;3141:68:114;386:1:5;;3141:24:114;:68::i;:::-;2573:643;;;;;;;;936:32:49;955:12;:10;;;:12;;:::i;:::-;936:18;:32::i;:::-;430:26:5::2;448:7:::0;430:17:::2;:26::i;:::-;345:118:::0;289:466;;9106:393:114;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;640:96:68:-;719:10;;640:96::o;2433:187:49:-;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;511:2:146;2161:73:49::1;::::0;::::1;493:21:146::0;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:146;;;633:36;686:19;;2161:73:49::1;;;;;;;;;2244:28;2263:8:::0;2244:18:::1;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;918:2:146;1414:68:49;;;900:21:146;;;937:18;;;930:30;996:34;976:18;;;969:62;1048:18;;1414:68:49;716:356:146;1414:68:49;1359:130::o;14:290:146:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:146;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:146:o;716:356::-;289:466:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea264697066735822122012bf92c5d713803962f9722e65328edf46e1f5b0dc5d4bc42e4580c6d47fca3964736f6c63430008100033", - "sourceMap": "289:466:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:41:113;;;;;;;;160:25:145;;;148:2;133:18;1170:41:113;;;;;;;;1711:29;;;;;;;;;;;;361:14:145;;354:22;336:41;;324:2;309:18;1711:29:113;196:187:145;1123:41:113;;;;;603:150:5;;;;;;:::i;:::-;;:::i;:::-;;4310:457:113;;;;;;:::i;:::-;;:::i;1918:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1831:101:49;;;:::i;26374:712:114:-;;;;;;:::i;:::-;;:::i;1217:39:113:-;;;;;;;;5817:10:145;5805:23;;;5787:42;;5775:2;5760:18;1217:39:113;5643:192:145;2218:54:113;;;;;;:::i;:::-;;;;;;;;;;;;;;2076:45;;;;;;:::i;:::-;;;;;;;;;;;;;;1201:85:49;1273:6;;1201:85;;-1:-1:-1;;;;;1273:6:49;;;5986:51:145;;5974:2;5959:18;1201:85:49;5840:203:145;1824:23:113;;;;;;1026:48;;;;;2365:57;;;;;;:::i;:::-;;;;;;;;;;;;;;3551:577;;;;;;:::i;:::-;;:::i;1262:42::-;;;;;;;;6472:6:145;6460:19;;;6442:38;;6430:2;6415:18;1262:42:113;6298:188:145;469:128:5;;;;;;:::i;:::-;;:::i;11270:699:115:-;;;;;;:::i;:::-;;:::i;1080:37:113:-;;;;;2081:198:49;;;;;;:::i;:::-;;:::i;603:150:5:-;1094:13:49;:11;:13::i;:::-;711:35:5::1;::::0;740:5;;731:7;;711:35:::1;::::0;;;::::1;603:150:::0;;:::o;4310:457:113:-;4414:11;;4378:33;4452:24;4414:11;4452;:24::i;:::-;4435:41;;4486:21;4510:48;4533:10;:24;;;4510:22;:48::i;:::-;4486:72;-1:-1:-1;4568:18:113;4589:17;4486:72;4605:1;4589:17;:::i;:::-;4568:38;;4617:27;4637:6;4617:19;:27::i;:::-;4659:9;4655:106;;;4684:66;4709:10;4721:6;:28;;;4684:24;:66::i;:::-;4368:399;;;;4310:457;:::o;1831:101:49:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;26374:712:114:-;26552:6;26570:24;;:::i;:::-;26614:33;;;;;;;;26636:4;;26614:33;;26636:4;26642;;;;26614:33;;;;26604:43;;;26667:61;;;;;;;26690:4;;:7;26667:61;;;;;;26699:4;;:7;;;26667:61;;;;;;;;;;;;;26710:4;;;;;:7;26667:61;;26719:4;:7;;;26667:61;;;;-1:-1:-1;;;26667:61:114;26657:7;;;:71;26748:33;;;;;;;26770:4;;26748:33;;26776:4;;;;26748:33;;;;26738:7;;;:43;26822:24;;26833:12;26822:24;;;;;;;;;-1:-1:-1;;26822:24:114;;;;;;;;;;;-1:-1:-1;26822:24:114;26791:55;;26861:9;26856:93;26880:12;26876:1;:16;26856:93;;;26930:5;26936:1;26930:8;;;;;;;:::i;:::-;;;;;26913:11;26925:1;26913:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;26894:3;;;;:::i;:::-;;;;26856:93;;;;26962:32;26975:11;26988:5;26962:12;:32::i;:::-;26998:1;26962:37;26958:122;;27022:4;27015:11;;;;;;26958:122;27064:5;27057:12;;;;26374:712;;;;;;;:::o;3551:577:113:-;3615:14;3632:19;3644:6;3632:11;:19::i;:::-;3685;;3615:36;;-1:-1:-1;3666:16:113;:14;:16::i;:::-;:38;3662:115;;;3720:46;;-1:-1:-1;;;3720:46:113;;8686:2:145;3720:46:113;;;8668:21:145;8725:2;8705:18;;;8698:30;8764:34;8744:18;;;8737:62;-1:-1:-1;;;8815:18:145;;;8808:34;8859:19;;3720:46:113;;;;;;;;3662:115;3814:4;;3791:6;:20;;;:27;3787:102;;;3834:44;;-1:-1:-1;;;3834:44:113;;9091:2:145;3834:44:113;;;9073:21:145;9130:2;9110:18;;;9103:30;9169:34;9149:18;;;9142:62;-1:-1:-1;;;9220:18:145;;;9213:32;9262:19;;3834:44:113;8889:398:145;3787:102:113;3903:9;3899:223;;;3928:119;3958:6;:20;;;3980:6;:26;;;4008:6;:25;;;3928:12;:119::i;:::-;3605:523;3551:577;:::o;3899:223::-;4078:33;;-1:-1:-1;;;4078:33:113;;9494:2:145;4078:33:113;;;9476:21:145;9533:2;9513:18;;;9506:30;9572:25;9552:18;;;9545:53;9615:18;;4078:33:113;9292:347:145;469:128:5;1094:13:49;:11;:13::i;:::-;566:24:5::1;::::0;584:5;;577;;566:24:::1;::::0;;;::::1;469:128:::0;;:::o;11270:699:115:-;11445:6;11463:22;;:::i;:::-;11505:31;;;;;;;;11525:4;;11505:31;;11525:4;11531;;;;11505:31;;;;11495:41;;;11556:59;;;;;;;11577:4;;:7;11556:59;;;;;;11586:4;;:7;;;11556:59;;;;;;;;;;;;;11597:4;;;;;:7;11556:59;;11606:4;:7;;;11556:59;;;;-1:-1:-1;;;11556:59:115;11546:7;;;:69;11635:31;;;;;;;11655:4;;11635:31;;11661:4;;;;11635:31;;;;11625:7;;;:41;11707:24;;11533:1;11707:24;;;;;;;;;-1:-1:-1;;11707:24:115;;;;;;11525:4;11707:24;;;;;-1:-1:-1;11707:24:115;11676:55;;11746:9;11741:93;11765:12;11761:1;:16;11741:93;;;11815:5;11821:1;11815:8;;;;;;;:::i;:::-;;;;;11798:11;11810:1;11798:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;11779:3;;;;:::i;:::-;;;;11741:93;;;;11847:30;11858:11;11871:5;11847:10;:30::i;2081:198:49:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;9846:2:145;2161:73:49::1;::::0;::::1;9828:21:145::0;9885:2;9865:18;;;9858:30;9924:34;9904:18;;;9897:62;-1:-1:-1;;;9975:18:145;;;9968:36;10021:19;;2161:73:49::1;9644:402:145::0;2161:73:49::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;10253:2:145;1414:68:49;;;10235:21:145;;;10272:18;;;10265:30;10331:34;10311:18;;;10304:62;10383:18;;1414:68:49;10051:356:145;4850:556:113;4925:4;4941:21;4965:43;4988:6;:19;;;4965:22;:43::i;:::-;5023:37;;;;:22;:37;;;;;;4941:67;;-1:-1:-1;5023:42:113;5019:286;;5081:63;;-1:-1:-1;;;5081:63:113;;10614:2:145;5081:63:113;;;10596:21:145;10653:2;10633:18;;;10626:30;10692:34;10672:18;;;10665:62;-1:-1:-1;;;10743:18:145;;;10736:51;10804:19;;5081:63:113;10412:417:145;5019:286:113;1371:2;5165:6;:20;;;:54;5161:144;;;5235:59;;-1:-1:-1;;;5235:59:113;;11036:2:145;5235:59:113;;;11018:21:145;11075:2;11055:18;;;11048:30;11114:34;11094:18;;;11087:62;-1:-1:-1;;;11165:18:145;;;11158:47;11222:19;;5235:59:113;10834:413:145;5161:144:113;5315:25;5333:6;5315:17;:25::i;:::-;-1:-1:-1;;5358:20:113;;;:41;5381:18;5358:41;-1:-1:-1;5358:41:113;4850:556::o;7603:125::-;7672:7;7698:23;7705:16;7698:4;:23;:::i;:::-;7691:30;7603:125;-1:-1:-1;;7603:125:113:o;6655:882::-;6769:12;;;;6791:25;;:::i;:::-;6869:23;;;;6827:31;6903:183;6927:2;6923:1;:6;6903:183;;;6971:32;6997:6;6971:23;:32;:::i;:::-;6950:6;6957:10;6966:1;6957:6;:10;:::i;:::-;6950:18;;;;;;;:::i;:::-;;;;:53;7043:32;7069:6;7043:23;:32;:::i;:::-;7017:58;-1:-1:-1;6931:3:113;;;;:::i;:::-;;;;6903:183;;;-1:-1:-1;7140:11:113;;:31;;;7095:34;7182:188;7206:2;7202:1;:6;7182:188;;;7246:35;7275:6;7246:26;:35;:::i;:::-;7229:6;7236;7241:1;7236:2;:6;:::i;:::-;7229:14;;;;;;;:::i;:::-;;;;:52;7324:35;7353:6;7324:26;:35;:::i;:::-;7295:64;-1:-1:-1;7210:3:113;;;;:::i;:::-;;;;7182:188;;;-1:-1:-1;7427:28:113;;;;7400:57;;:18;:57::i;:::-;7379:10;;;:79;7495:7;;7386:2;7504:7;;;7513;;;;7477:52;;7495:7;7504;7379:6;7477:17;:52::i;:::-;7469:61;;;;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:113;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:113;9341:18;;-1:-1:-1;;9341:18:113;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;2433:187:49:-;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;25166:1155:114:-;25285:7;25349:77;25285:7;25467:20;:18;:20::i;:::-;25436:51;;25525:2;:5;;;:12;25505:5;:12;25520:1;25505:16;;;;:::i;:::-;:32;25497:63;;;;-1:-1:-1;;;25497:63:114;;11961:2:145;25497:63:114;;;11943:21:145;12000:2;11980:18;;;11973:30;-1:-1:-1;;;12019:18:145;;;12012:48;12077:18;;25497:63:114;11759:342:145;25497:63:114;25653:27;;;;;;;;;25617:33;25653:27;;;;;;;;;25690:240;25714:5;:12;25710:1;:16;25690:240;;;25766:18;25755:5;25761:1;25755:8;;;;;;;;:::i;:::-;;;;;;;:29;25747:73;;;;-1:-1:-1;;;25747:73:114;;12308:2:145;25747:73:114;;;12290:21:145;12347:2;12327:18;;;12320:30;12386:33;12366:18;;;12359:61;12437:18;;25747:73:114;12106:355:145;25747:73:114;25841:78;25864:4;25870:48;25895:2;:5;;;25901:1;25905;25901:5;;;;:::i;:::-;25895:12;;;;;;;;:::i;:::-;;;;;;;25909:5;25915:1;25909:8;;;;;;;;:::i;:::-;;;;;;;25870:24;:48::i;:::-;25841:22;:78::i;:::-;25834:85;-1:-1:-1;25728:3:114;;;;:::i;:::-;;;;25690:240;;;;25946:38;25969:4;25975:2;:5;;;25981:1;25975:8;;;;;;;;:::i;:::-;;;;;;;25946:22;:38::i;:::-;25939:45;;26012:265;26056:29;26077:5;:7;;;26056:20;:29::i;:::-;26103:5;:7;;;26128:2;:8;;;26154:2;:8;;;26180:4;26202:2;:9;;;26229:5;:7;;;26254:2;:9;;;26012:26;:265::i;:::-;25994:302;;26295:1;26288:8;;;;;;;25994:302;-1:-1:-1;26313:1:114;;25166:1155;-1:-1:-1;;;;;25166:1155:114:o;7818:133:113:-;7867:7;7928:16;7894:30;7912:12;7894:15;:30;:::i;:::-;7893:51;;;;:::i;:::-;7886:58;;7818:133;:::o;8310:721::-;8463:1;8438:13;;;:7;:13;;;;;;:27;8434:170;;8485:13;;;;:7;:13;;;;;;:36;;8481:93;;8554:5;8541:18;;-1:-1:-1;;8541:18:113;;;8481:93;8310:721;;;:::o;8434:170::-;8654:1;8617:25;;;:19;:25;;;;;;:39;8613:193;;8676:25;;;;:19;:25;;;;;;:47;;8672:104;;8756:5;8743:18;;-1:-1:-1;;8743:18:113;;;8310:721;;;:::o;8613:193::-;8816:4;:11;;;8837:13;;;;:7;:13;;;;;;;;:35;;;8882:19;:25;;;;;:46;;;8938:10;:16;;;;;;8957:15;8938:34;;8987:37;8853:19;;8823:4;;8987:37;;8837:13;8987:37;8310:721;;;:::o;10084:1133:115:-;10199:7;10263:77;10199:7;10379:18;:16;:18::i;:::-;10350:47;;10435:2;:5;;;:12;10415:5;:12;10430:1;10415:16;;;;:::i;:::-;:32;10407:63;;;;-1:-1:-1;;;10407:63:115;;11961:2:145;10407:63:115;;;11943:21:145;12000:2;11980:18;;;11973:30;-1:-1:-1;;;12019:18:145;;;12012:48;12077:18;;10407:63:115;11759:342:145;10407:63:115;10561:25;;;;;;;;;10527:31;10561:25;;;;;;;;;10596:236;10620:5;:12;10616:1;:16;10596:236;;;10672:18;10661:5;10667:1;10661:8;;;;;;;;:::i;:::-;;;;;;;:29;10653:73;;;;-1:-1:-1;;;10653:73:115;;12308:2:145;10653:73:115;;;12290:21:145;12347:2;12327:18;;;12320:30;12386:33;12366:18;;;12359:61;12437:18;;10653:73:115;12106:355:145;10653:73:115;10747:74;10768:4;10774:46;10797:2;:5;;;10803:1;10807;10803:5;;;;:::i;10747:74::-;10740:81;-1:-1:-1;10634:3:115;;;;:::i;:::-;;;;10596:236;;;;10848:36;10869:4;10875:2;:5;;;10881:1;10875:8;;;;;;;;:::i;10848:36::-;10841:43;;10912:261;10954:27;10973:5;:7;;;10954:18;:27::i;:::-;10999:5;:7;;;11024:2;:8;;;11050:2;:8;;;11076:4;11098:2;:9;;;11125:5;:7;;;11150:2;:9;;;10912:24;:261::i;5509:1064:113:-;5591:22;5616:39;5635:6;:19;;;5616:18;:39::i;:::-;5591:64;;5665:23;5691:40;5710:6;:20;;;5691:18;:40::i;:::-;5665:66;;5741:23;5767:40;5786:6;:20;;;5767:18;:40::i;:::-;5741:66;;5817:21;5841:43;5864:6;:19;;;5841:22;:43::i;:::-;5894:29;5926:37;;;:22;:37;;;;;;;;;6004:45;;;;;12623:19:145;;;12658:12;;;12651:28;;;5926:37:113;;-1:-1:-1;5997:53:113;;12695:12:145;;6004:45:113;;;-1:-1:-1;;6004:45:113;;;;;;;;;;5997:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5993:57;;6064:51;6084:1;6087:6;:26;;;6071:43;;;;;;;;12623:19:145;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6071:43:113;;;;-1:-1:-1;;6071:43:113;;;;;;;;;;6064:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6060:55;;6129:40;6149:1;6152:15;6136:32;;;;;;;;12623:19:145;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6136:32:113;;;;-1:-1:-1;;6136:32:113;;;;;;;;;;6129:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6125:44;;6183:50;6203:1;6206:6;:25;;;6190:42;;;;;;;;12623:19:145;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6190:42:113;;;;-1:-1:-1;;6190:42:113;;;;;;;;;;6183:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:54;;6247:46;6267:1;6270:21;6254:38;;;;;;;;12623:19:145;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6254:38:113;;;;-1:-1:-1;;6254:38:113;;;;;;;;;;6247:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6243:50;-1:-1:-1;6303:9:113;6323:30;6243:50;6323:18;:30::i;:::-;6315:39;-1:-1:-1;6373:23:113;6395:1;-1:-1:-1;;;6373:23:113;:::i;:::-;6436:12;;;;6458:39;;;;;;;;;6368:29;;;;6458:39;;;6531:7;;6540;;;;6549;;;;6368:29;;6436:12;;6515:50;;6531:7;;6458:39;6515:15;:50::i;:::-;6507:59;;;;;;5581:992;;;;;;;;;5509:1064;:::o;315:892:109:-;373:7;567:1;492;496:66;492:70;491:77;;473:1;398;402:66;398:70;397:77;;396:173;392:177;;755:2;680:1;684:66;680:70;679:78;;660:2;585:1;589:66;585:70;584:78;;583:175;579:179;;944:2;869:1;873:66;869:70;868:78;;849:2;774:1;778:66;774:70;773:78;;772:175;768:179;;1133:2;1058:1;1062:66;1058:70;1057:78;;1038:2;963:1;-1:-1:-1;;963:70:109;962:78;;961:175;957:179;;1169:3;1164:1;:8;;1156:3;1151:1;:8;;1150:23;1146:27;;1198:1;1190:10;;1183:17;;315:892;;;:::o;7822:17338:114:-;7875:28;;:::i;:::-;7926:212;;;;;;;;7961:77;7926:212;;8052:76;7926:212;;;;;;;;7915:223;;;8160:465;;;;;;;;8213:76;8160:465;;;;;;8307:76;8160:465;;;;;;;;;;;;;;;;;;8429:77;8160:465;;8524:77;8160:465;;;;-1:-1:-1;;;8160:465:114;8149:8;;;:476;;;;8647:465;;;;;;;8700:77;8647:465;;;;;;8795:77;8647:465;;;;;;;;;;;;;8918:76;8647:465;;9012:76;8647:465;;;;-1:-1:-1;;;8647:465:114;8635:9;;;:477;9134:463;;;;;;;9187:76;9134:463;;;;;;9281:77;9134:463;;;;;;;;;;;;;9404:75;9134:463;;9497:76;9134:463;;;;-1:-1:-1;;;9134:463:114;9122:9;;;:475;9615:31;;9643:2;9615:31;;;;;;;;;;9643:2;9615:31;;;-1:-1:-1;;;;;;;;;;;;;;;;;9615:31:114;;;;;;;;;;;;-1:-1:-1;;9607:5:114;;;:39;;;9668:211;;;;;;;;;9703:76;9668:211;;9793:76;9668:211;;;;9657:5;;:8;;-1:-1:-1;;9657:8:114;;;;:::i;:::-;;;;;;:222;;;;9901:213;;;;;;;;9936:77;9901:213;;;;10027:77;9901:213;;;9890:2;:5;;;9896:1;9890:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10136:213;;;;;;;;10171:77;10136:213;;;;10262:77;10136:213;;;10125:2;:5;;;10131:1;10125:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10371:210;;;;;;;;10406:75;10371:210;;;;10495:76;10371:210;;;10360:2;:5;;;10366:1;10360:8;;;;;;;;:::i;:::-;;;;;;:221;;;;10603:212;;;;;;;;10638:77;10603:212;;;;10729:76;10603:212;;;10592:2;:5;;;10598:1;10592:8;;;;;;;;:::i;:::-;;;;;;:223;;;;10837:211;;;;;;;;10872:77;10837:211;;;;10963:75;10837:211;;;10826:2;:5;;;10832:1;10826:8;;;;;;;;:::i;:::-;;;;;;:222;;;;11070:213;;;;;;;;11105:77;11070:213;;;;11196:77;11070:213;;;11059:2;:5;;;11065:1;11059:8;;;;;;;;:::i;:::-;;;;;;:224;;;;11305:212;;;;;;;;11340:77;11305:212;;;;11431:76;11305:212;;;11294:2;:5;;;11300:1;11294:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11539:212;;;;;;;;11574:77;11539:212;;;;11665:76;11539:212;;;11528:2;:5;;;11534:1;11528:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11773:211;;;;;;;;11808:76;11773:211;;;;11898:76;11773:211;;;11762:2;:5;;;11768:1;11762:8;;;;;;;;:::i;:::-;;;;;;:222;;;;12007:212;;;;;;;;12042:77;12007:212;;;;12133:76;12007:212;;;11995:2;:5;;;12001:2;11995:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12242:213;;;;;;;;12277:77;12242:213;;;;12368:77;12242:213;;;12230:2;:5;;;12236:2;12230:9;;;;;;;;:::i;:::-;;;;;;:225;;;;12478:211;;;;;;;;12513:76;12478:211;;;;12603:76;12478:211;;;12466:2;:5;;;12472:2;12466:9;;;;;;;;:::i;:::-;;;;;;:223;;;;12712:212;;;;;;;;12747:76;12712:212;;;;12837:77;12712:212;;;12700:2;:5;;;12706:2;12700:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12947:211;;;;;;;;12982:76;12947:211;;;;13072:76;12947:211;;;12935:2;:5;;;12941:2;12935:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13181:213;;;;;;;;13216:77;13181:213;;;;13307:77;13181:213;;;13169:2;:5;;;13175:2;13169:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13417:213;;;;;;;;13452:77;13417:213;;;;13543:77;13417:213;;;13405:2;:5;;;13411:2;13405:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13653:211;;;;;;;;13688:76;13653:211;;;;13778:76;13653:211;;;13641:2;:5;;;13647:2;13641:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13887:212;;;;;;;;13922:76;13887:212;;;;14012:77;13887:212;;;13875:2;:5;;;13881:2;13875:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14122:212;;;;;;;;14157:77;14122:212;;;;14248:76;14122:212;;;14110:2;:5;;;14116:2;14110:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14357:211;;;;;;;;14392:77;14357:211;;;;14483:75;14357:211;;;14345:2;:5;;;14351:2;14345:9;;;;;;;;:::i;:::-;;;;;;:223;;;;14591:213;;;;;;;;14626:77;14591:213;;;;14717:77;14591:213;;;14579:2;:5;;;14585:2;14579:9;;;;;;;;:::i;:::-;;;;;;:225;;;;14827:213;;;;;;;;14862:77;14827:213;;;;14953:77;14827:213;;;14815:2;:5;;;14821:2;14815:9;;;;;;;;:::i;:::-;;;;;;:225;;;;15063:210;;;;;;;;15098:75;15063:210;;;;15187:76;15063:210;;;15051:2;:5;;;15057:2;15051:9;;;;;;;;:::i;:::-;;;;;;:222;;;;15296:212;;;;;;;;15331:77;15296:212;;;;15422:76;15296:212;;;15284:2;:5;;;15290:2;15284:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15531:212;;;;;;;;15566:76;15531:212;;;;15656:77;15531:212;;;15519:2;:5;;;15525:2;15519:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15766:212;;;;;;;;15801:77;15766:212;;;;15892:76;15766:212;;;15754:2;:5;;;15760:2;15754:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16001:213;;;;;;;;16036:77;16001:213;;;;16127:77;16001:213;;;15989:2;:5;;;15995:2;15989:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16237:213;;;;;;;;16272:77;16237:213;;;;16363:77;16237:213;;;16225:2;:5;;;16231:2;16225:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16473:213;;;;;;;;16508:77;16473:213;;;;16599:77;16473:213;;;16461:2;:5;;;16467:2;16461:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16709:212;;;;;;;;16744:76;16709:212;;;;16834:77;16709:212;;;16697:2;:5;;;16703:2;16697:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16944:213;;;;;;;;16979:77;16944:213;;;;17070:77;16944:213;;;16932:2;:5;;;16938:2;16932:9;;;;;;;;:::i;:::-;;;;;;:225;;;;17180:211;;;;;;;;17215:76;17180:211;;;;17305:76;17180:211;;;17168:2;:5;;;17174:2;17168:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17414:212;;;;;;;;17449:77;17414:212;;;;17540:76;17414:212;;;17402:2;:5;;;17408:2;17402:9;;;;;;;;:::i;:::-;;;;;;:224;;;;17649:211;;;;;;;;17684:76;17649:211;;;;17774:76;17649:211;;;17637:2;:5;;;17643:2;17637:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17883:212;;;;;;;;17918:77;17883:212;;;;18009:76;17883:212;;;17871:2;:5;;;17877:2;17871:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18118:212;;;;;;;;18153:76;18118:212;;;;18243:77;18118:212;;;18106:2;:5;;;18112:2;18106:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18353:213;;;;;;;;18388:77;18353:213;;;;18479:77;18353:213;;;18341:2;:5;;;18347:2;18341:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18589:213;;;;;;;;18624:77;18589:213;;;;18715:77;18589:213;;;18577:2;:5;;;18583:2;18577:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18825:213;;;;;;;;18860:77;18825:213;;;;18951:77;18825:213;;;18813:2;:5;;;18819:2;18813:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19061:211;;;;;;;;19096:77;19061:211;;;;19187:75;19061:211;;;19049:2;:5;;;19055:2;19049:9;;;;;;;;:::i;:::-;;;;;;:223;;;;19295:213;;;;;;;;19330:77;19295:213;;;;19421:77;19295:213;;;19283:2;:5;;;19289:2;19283:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19531:213;;;;;;;;19566:77;19531:213;;;;19657:77;19531:213;;;19519:2;:5;;;19525:2;19519:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19767:212;;;;;;;;19802:76;19767:212;;;;19892:77;19767:212;;;19755:2;:5;;;19761:2;19755:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20002:211;;;;;;;;20037:76;20002:211;;;;20127:76;20002:211;;;19990:2;:5;;;19996:2;19990:9;;;;;;;;:::i;:::-;;;;;;:223;;;;20236:212;;;;;;;;20271:77;20236:212;;;;20362:76;20236:212;;;20224:2;:5;;;20230:2;20224:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20471:212;;;;;;;;20506:77;20471:212;;;;20597:76;20471:212;;;20459:2;:5;;;20465:2;20459:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20706:213;;;;;;;;20741:77;20706:213;;;;20832:77;20706:213;;;20694:2;:5;;;20700:2;20694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;20942:212;;;;;;;;20977:77;20942:212;;;;21068:76;20942:212;;;20930:2;:5;;;20936:2;20930:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21177:212;;;;;;;;21212:76;21177:212;;;;21302:77;21177:212;;;21165:2;:5;;;21171:2;21165:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21412:213;;;;;;;;21447:77;21412:213;;;;21538:77;21412:213;;;21400:2;:5;;;21406:2;21400:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21648:213;;;;;;;;21683:77;21648:213;;;;21774:77;21648:213;;;21636:2;:5;;;21642:2;21636:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21884:211;;;;;;;;21919:76;21884:211;;;;22009:76;21884:211;;;21872:2;:5;;;21878:2;21872:9;;;;;;;;:::i;:::-;;;;;;:223;;;;22118:213;;;;;;;;22153:77;22118:213;;;;22244:77;22118:213;;;22106:2;:5;;;22112:2;22106:9;;;;;;;;:::i;:::-;;;;;;:225;;;;22354:212;;;;;;;;22389:76;22354:212;;;;22479:77;22354:212;;;22342:2;:5;;;22348:2;22342:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22589:212;;;;;;;;22624:76;22589:212;;;;22714:77;22589:212;;;22577:2;:5;;;22583:2;22577:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22824:212;;;;;;;;22859:76;22824:212;;;;22949:77;22824:212;;;22812:2;:5;;;22818:2;22812:9;;;;;;;;:::i;:::-;;;;;;:224;;;;23059:211;;;;;;;;23094:77;23059:211;;;;23185:75;23059:211;;;23047:2;:5;;;23053:2;23047:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23293:213;;;;;;;;23328:77;23293:213;;;;23419:77;23293:213;;;23281:2;:5;;;23287:2;23281:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23529:213;;;;;;;;23564:77;23529:213;;;;23655:77;23529:213;;;23517:2;:5;;;23523:2;23517:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23765:211;;;;;;;;23800:76;23765:211;;;;23890:76;23765:211;;;23753:2;:5;;;23759:2;23753:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23999:212;;;;;;;;24034:76;23999:212;;;;24124:77;23999:212;;;23987:2;:5;;;23993:2;23987:9;;;;;;;;:::i;:::-;;;;;;:224;;;;24234:213;;;;;;;;24269:77;24234:213;;;;24360:77;24234:213;;;24222:2;:5;;;24228:2;24222:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24470:213;;;;;;;;24505:77;24470:213;;;;24596:77;24470:213;;;24458:2;:5;;;24464:2;24458:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24706:213;;;;;;;;24741:77;24706:213;;;;24832:77;24706:213;;;24694:2;:5;;;24700:2;24694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24942:211;;;;;;;;24977:76;24942:211;;;;25067:76;24942:211;;;24930:2;:5;;;24936:2;24930:9;;;;;;;;:::i;:::-;;;;;;:223;;;;7822:17338;:::o;3929:557::-;-1:-1:-1;;;;;;;;;;;;;;;;;4029:23:114;;:::i;:::-;4073:3;;4062:14;;:8;4097:3;;;;4086:8;;;:14;4110:8;;;:12;;;-1:-1:-1;4300:4:114;4297:1;4291:4;4062:14;4281:1;4274:4;4267:5;4263:16;4252:53;4241:64;-1:-1:-1;4241:64:114;;4375:47;4402:20;4411:9;4375:47;;4449:7;4441:38;;;;-1:-1:-1;;;4441:38:114;;13526:2:145;4441:38:114;;;13508:21:145;13565:2;13545:18;;;13538:30;-1:-1:-1;;;13584:18:145;;;13577:48;13642:18;;4441:38:114;13324:342:145;4441:38:114;4019:467;;3929:557;;;;:::o;3151:622::-;-1:-1:-1;;;;;;;;;;;;;;;;;3286:23:114;;:::i;:::-;3330:4;;3319:15;;:8;3355:4;;;;3344:8;;;:15;3380:4;;3369:8;;;:15;3405:4;;;3394:8;;;;:15;;;;-1:-1:-1;;3584:1:114;3578:4;3319:15;3568:1;3561:4;3554:5;3550:16;3539:53;3528:64;-1:-1:-1;3528:64:114;;3662:47;3689:20;3698:9;3662:47;;3736:7;3728:38;;;;-1:-1:-1;;;3728:38:114;;13873:2:145;3728:38:114;;;13855:21:145;13912:2;13892:18;;;13885:30;-1:-1:-1;;;13931:18:145;;;13924:48;13989:18;;3728:38:114;13671:342:145;2742:357:114;-1:-1:-1;;;;;;;;;;;;;;;;;2982:3:114;;2891:77;;2982:8;:20;;;;-1:-1:-1;2994:3:114;;;;:8;2982:20;2978:71;;;-1:-1:-1;;3025:13:114;;;;;;;;;-1:-1:-1;3025:13:114;;;;;;;;2742:357;-1:-1:-1;2742:357:114:o;2978:71::-;3065:27;;;;;;;;3073:1;:3;;;3065:27;;;;3089:1;3083;:3;;;:7;;;;:::i;:::-;3078:13;;:1;:13;:::i;:::-;3065:27;;3058:34;2742:357;-1:-1:-1;;;2742:357:114:o;6832:568::-;7137:16;;;7151:1;7137:16;;;;;;;;;7099:4;;;;7137:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7137:16:114;;;;;;;;;;;;-1:-1:-1;;7185:16:114;;;7199:1;7185:16;;;;;;;;;7115:38;;-1:-1:-1;7163:19:114;;7185:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7163:38;;7219:2;7211;7214:1;7211:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7239:2;7231;7234:1;7231:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7259:2;7251;7254:1;7251:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7279:2;7271;7274:1;7271:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7299:2;7291;7294:1;7291:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7319:2;7311;7314:1;7311:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7339:2;7331;7334:1;7331:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7359:2;7351;7354:1;7351:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7378:15;7386:2;7390;7378:7;:15::i;:::-;7371:22;6832:568;-1:-1:-1;;;;;;;;;;;6832:568:114:o;7796:2282:115:-;7847:26;;:::i;:::-;7896:210;;;;;;;;7929:77;7896:210;;8020:76;7896:210;;;;;;;;7885:221;;;8128:463;;;;;;;;8179:76;8128:463;;;;;;8273:76;8128:463;;;;;;;;;;;;;;;;;;8395:77;8128:463;;8490:77;8128:463;;;;-1:-1:-1;;;8128:463:115;8117:8;;;:474;;;;8613:463;;;;;;;8664:77;8613:463;;;;;;8759:77;8613:463;;;;;;;;;;;;;8882:76;8613:463;;8976:76;8613:463;;;;-1:-1:-1;;;8613:463:115;8601:9;;;:475;9098:462;;;;;;;9149:76;9098:462;;;;;;9243:77;9098:462;;;;;;;;;;;;;9366:76;9098:462;;9460:76;9098:462;;;;-1:-1:-1;;;9098:462:115;9086:9;;;:474;9578:28;;9604:1;9578:28;;;;;;;;;9604:1;9578:28;;;-1:-1:-1;;;;;;;;;;;;;;;;;9578:28:115;;;;;;;;;;;;-1:-1:-1;;9570:5:115;;;:36;;;9628:210;;;;;;;;;9661:77;9628:210;;9752:76;9628:210;;;;9617:5;;:8;;-1:-1:-1;;9617:8:115;;;;:::i;:::-;;;;;;:221;;;;9860:211;;;;;;;;9893:77;9860:211;;;;9984:77;9860:211;;;9849:2;:5;;;9855:1;9849:8;;;;;;;;:::i;6830:568::-;7135:16;;;7149:1;7135:16;;;;;;;;;7097:4;;;;7135:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7135:16:115;;;;;;;;;;;;-1:-1:-1;;7183:16:115;;;7197:1;7183:16;;;;;;;;;7113:38;;-1:-1:-1;7161:19:115;;7183:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7161:38;;7217:2;7209;7212:1;7209:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7237:2;7229;7232:1;7229:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7257:2;7249;7252:1;7249:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7277:2;7269;7272:1;7269:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7297:2;7289;7292:1;7289:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7317:2;7309;7312:1;7309:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7337:2;7329;7332:1;7329:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7357:2;7349;7352:1;7349:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7376:15;7384:2;7388;7376:7;:15::i;4698:1073:114:-;4780:4;4817:2;:9;4804:2;:9;:22;4796:57;;;;-1:-1:-1;;;4796:57:114;;14220:2:145;4796:57:114;;;14202:21:145;14259:2;14239:18;;;14232:30;-1:-1:-1;;;14278:18:145;;;14271:52;14340:18;;4796:57:114;14018:346:145;4796:57:114;4882:9;;4863:16;4921:12;4882:9;4932:1;4921:12;:::i;:::-;4901:32;;4943:22;4979:9;4968:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4968:21:114;;4943:46;;5004:9;4999:302;5023:8;5019:1;:12;4999:302;;;5071:2;5074:1;5071:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5052:5;5058:1;5062;5058:5;;;;:::i;:::-;:9;;5066:1;5058:9;:::i;:::-;5052:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5111:2;5114:1;5111:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5092:5;5098:1;5102;5098:5;;;;:::i;:::-;:9;;5106:1;5098:9;:::i;:::-;5092:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5151:2;5154:1;5151:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5132:5;5138;:1;5142;5138:5;:::i;:::-;:9;;5146:1;5138:9;:::i;:::-;5132:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5194:2;5197:1;5194:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5175:5;5181;:1;5185;5181:5;:::i;:::-;:9;;5189:1;5181:9;:::i;:::-;5175:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5237:2;5240:1;5237:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5245:1;5237:10;;;;;;;:::i;:::-;;;;;5218:5;5224;:1;5228;5224:5;:::i;:::-;:9;;5232:1;5224:9;:::i;:::-;5218:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5280:2;5283:1;5280:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5288:1;5280:10;;;;;;;:::i;:::-;;;;;5261:5;5267;:1;5271;5267:5;:::i;:::-;:9;;5275:1;5267:9;:::i;:::-;5261:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5033:3;;;;:::i;:::-;;;;4999:302;;;;5310:21;;:::i;:::-;5341:12;5554:4;5549:3;5542:4;5531:9;5527:20;5520:4;5513:5;5509:16;5506:1;5499:4;5492:5;5488:16;5477:82;5450:109;-1:-1:-1;5450:109:114;;5629:47;5656:20;5665:9;5629:47;;5703:7;5695:41;;;;-1:-1:-1;;;5695:41:114;;14744:2:145;5695:41:114;;;14726:21:145;14783:2;14763:18;;;14756:30;-1:-1:-1;;;14802:18:145;;;14795:51;14863:18;;5695:41:114;14542:345:145;5695:41:114;-1:-1:-1;5753:6:114;:11;;;;-1:-1:-1;;;;;;4698:1073:114:o;4696::115:-;4778:4;4815:2;:9;4802:2;:9;:22;4794:57;;;;-1:-1:-1;;;4794:57:115;;14220:2:145;4794:57:115;;;14202:21:145;14259:2;14239:18;;;14232:30;-1:-1:-1;;;14278:18:145;;;14271:52;14340:18;;4794:57:115;14018:346:145;4794:57:115;4880:9;;4861:16;4919:12;4880:9;4930:1;4919:12;:::i;:::-;4899:32;;4941:22;4977:9;4966:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4966:21:115;;4941:46;;5002:9;4997:302;5021:8;5017:1;:12;4997:302;;;5069:2;5072:1;5069:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5050:5;5056:1;5060;5056:5;;;;:::i;:::-;:9;;5064:1;5056:9;:::i;:::-;5050:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5109:2;5112:1;5109:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5090:5;5096:1;5100;5096:5;;;;:::i;:::-;:9;;5104:1;5096:9;:::i;:::-;5090:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5149:2;5152:1;5149:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5130:5;5136;:1;5140;5136:5;:::i;:::-;:9;;5144:1;5136:9;:::i;:::-;5130:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5192:2;5195:1;5192:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5173:5;5179;:1;5183;5179:5;:::i;:::-;:9;;5187:1;5179:9;:::i;:::-;5173:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5235:2;5238:1;5235:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5243:1;5235:10;;;;;;;:::i;:::-;;;;;5216:5;5222;:1;5226;5222:5;:::i;:::-;:9;;5230:1;5222:9;:::i;:::-;5216:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5278:2;5281:1;5278:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5286:1;5278:10;;;;;;;:::i;:::-;;;;;5259:5;5265;:1;5269;5265:5;:::i;:::-;:9;;5273:1;5265:9;:::i;:::-;5259:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5031:3;;;;:::i;:::-;;;;4997:302;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;388:248:145:-;456:6;464;517:2;505:9;496:7;492:23;488:32;485:52;;;533:1;530;523:12;485:52;-1:-1:-1;;556:23:145;;;626:2;611:18;;;598:32;;-1:-1:-1;388:248:145:o;641:127::-;702:10;697:3;693:20;690:1;683:31;733:4;730:1;723:15;757:4;754:1;747:15;773:246;840:2;834:9;;;870:15;;915:18;900:34;;936:22;;;897:62;894:88;;;962:18;;:::i;:::-;998:2;991:22;773:246;:::o;1024:479::-;1074:5;1127:3;1120:4;1112:6;1108:17;1104:27;1094:55;;1145:1;1142;1135:12;1094:55;1169:17;;:::i;:::-;1208:3;1246:2;1238:6;1234:15;1272:3;1264:6;1261:15;1258:35;;;1289:1;1286;1279:12;1258:35;1313:6;1328:146;1344:6;1339:3;1336:15;1328:146;;;1412:17;;1400:30;;1459:4;1450:14;;;;1361;1328:146;;;-1:-1:-1;1492:5:145;;1024:479;-1:-1:-1;;;;;1024:479:145:o;1508:501::-;1564:5;1617:3;1610:4;1602:6;1598:17;1594:27;1584:55;;1635:1;1632;1625:12;1584:55;1659:17;;:::i;:::-;1698:3;1736;1728:6;1724:16;1763:3;1755:6;1752:15;1749:35;;;1780:1;1777;1770:12;1749:35;1804:6;1819:161;1835:6;1830:3;1827:15;1819:161;;;1901:34;1931:3;1926;1901:34;:::i;:::-;1889:47;;1965:4;1956:14;;;;1861:2;1852:12;1819:161;;2014:605;2073:5;2121:6;2109:9;2104:3;2100:19;2096:32;2093:52;;;2141:1;2138;2131:12;2093:52;2174:2;2168:9;2216:4;2208:6;2204:17;2287:6;2275:10;2272:22;2251:18;2239:10;2236:34;2233:62;2230:88;;;2298:18;;:::i;:::-;2334:2;2327:22;2367:6;-1:-1:-1;2367:6:145;2397:40;2433:3;2422:9;2397:40;:::i;:::-;2389:6;2382:56;2473:55;2524:3;2519:2;2508:9;2504:18;2473:55;:::i;:::-;2466:4;2458:6;2454:17;2447:82;2562:50;2608:3;2602;2591:9;2587:19;2562:50;:::i;:::-;2557:2;2549:6;2545:15;2538:75;;2014:605;;;;:::o;2624:773::-;2686:5;2734:6;2722:9;2717:3;2713:19;2709:32;2706:52;;;2754:1;2751;2744:12;2706:52;2787:2;2781:9;2829:4;2821:6;2817:17;2900:6;2888:10;2885:22;2864:18;2852:10;2849:34;2846:62;2843:88;;;2911:18;;:::i;:::-;2951:10;2947:2;2940:22;;2980:6;2971:15;;3023:9;3010:23;3002:6;2995:39;3095:2;3084:9;3080:18;3067:32;3062:2;3054:6;3050:15;3043:57;3161:2;3150:9;3146:18;3133:32;3128:2;3120:6;3116:15;3109:57;3227:2;3216:9;3212:18;3199:32;3194:2;3186:6;3182:15;3175:57;3294:3;3283:9;3279:19;3266:33;3260:3;3252:6;3248:16;3241:59;3334:56;3386:3;3380;3369:9;3365:19;3334:56;:::i;:::-;3328:3;3320:6;3316:16;3309:82;;2624:773;;;;:::o;3402:714::-;3497:6;3550:3;3538:9;3529:7;3525:23;3521:33;3518:53;;;3567:1;3564;3557:12;3518:53;3600:2;3594:9;3642:4;3634:6;3630:17;3713:6;3701:10;3698:22;3677:18;3665:10;3662:34;3659:62;3656:88;;;3724:18;;:::i;:::-;3760:2;3753:22;3799:53;3844:7;3833:9;3799:53;:::i;:::-;3791:6;3784:69;3916:3;3905:9;3901:19;3888:33;3881:4;3873:6;3869:17;3862:60;3983:3;3972:9;3968:19;3955:33;3950:2;3942:6;3938:15;3931:58;4024:60;4076:7;4070:3;4059:9;4055:19;4024:60;:::i;:::-;4017:4;4005:17;;3998:87;4009:6;3402:714;-1:-1:-1;;;3402:714:145:o;4121:180::-;4180:6;4233:2;4221:9;4212:7;4208:23;4204:32;4201:52;;;4249:1;4246;4239:12;4201:52;-1:-1:-1;4272:23:145;;4121:180;-1:-1:-1;4121:180:145:o;4488:1150::-;4690:6;4698;4706;4714;4745:4;4790:2;4778:9;4769:7;4765:23;4761:32;4758:52;;;4806:1;4803;4796:12;4758:52;4829:44;4865:7;4854:9;4829:44;:::i;:::-;4819:54;;4892:59;4943:7;4938:2;4927:9;4923:18;4892:59;:::i;:::-;4882:69;;4970:54;5016:7;5010:3;4999:9;4995:19;4970:54;:::i;:::-;4960:64;;5068:7;5062:3;5051:9;5047:19;5043:33;5033:61;;5090:1;5087;5080:12;5033:61;5123:2;5117:9;5165:4;5157:6;5153:17;5236:6;5224:10;5221:22;5200:18;5188:10;5185:34;5182:62;5179:88;;;5247:18;;:::i;:::-;5283:2;5276:22;5347:18;;;;5318:6;5377:19;;;5374:39;;;5409:1;5406;5399:12;5374:39;5448:3;5437:9;5433:19;5461:146;5477:6;5472:3;5469:15;5461:146;;;5545:17;;5533:30;;5592:4;5583:14;;;;5494;5461:146;;;5465:3;;5626:6;5616:16;;;;4488:1150;;;;;;;:::o;6048:245::-;6141:6;6194:3;6182:9;6173:7;6169:23;6165:33;6162:53;;;6211:1;6208;6201:12;6162:53;6234;6279:7;6268:9;6234:53;:::i;:::-;6224:63;6048:245;-1:-1:-1;;;6048:245:145:o;6491:1163::-;6692:6;6700;6708;6716;6747:3;6791:2;6779:9;6770:7;6766:23;6762:32;6759:52;;;6807:1;6804;6797:12;6759:52;6830:44;6866:7;6855:9;6830:44;:::i;:::-;6820:54;;6893:59;6944:7;6939:2;6928:9;6924:18;6893:59;:::i;:::-;6883:69;;6971:54;7017:7;7011:3;7000:9;6996:19;6971:54;:::i;:::-;6961:64;;7069:7;7063:3;7052:9;7048:19;7044:33;7034:61;;7091:1;7088;7081:12;7034:61;7124:2;7118:9;7146:2;7187;7179:6;7175:15;7256:6;7244:10;7241:22;7220:18;7208:10;7205:34;7202:62;7199:88;;;7267:18;;:::i;:::-;7303:2;7296:22;7367:18;;;;7338:6;7397:19;;;7394:39;;;7429:1;7426;7419:12;7394:39;7468:3;7457:9;7453:19;7481:142;7497:6;7492:3;7489:15;7481:142;;;7563:17;;7551:30;;7601:12;;;;7514;;7481:142;;;-1:-1:-1;6491:1163:145;;;;-1:-1:-1;6491:1163:145;;-1:-1:-1;7642:6:145;-1:-1:-1;;;;6491:1163:145:o;7659:286::-;7718:6;7771:2;7759:9;7750:7;7746:23;7742:32;7739:52;;;7787:1;7784;7777:12;7739:52;7813:23;;-1:-1:-1;;;;;7865:31:145;;7855:42;;7845:70;;7911:1;7908;7901:12;7950:127;8011:10;8006:3;8002:20;7999:1;7992:31;8042:4;8039:1;8032:15;8066:4;8063:1;8056:15;8082:125;8147:9;;;8168:10;;;8165:36;;;8181:18;;:::i;8212:127::-;8273:10;8268:3;8264:20;8261:1;8254:31;8304:4;8301:1;8294:15;8328:4;8325:1;8318:15;8344:135;8383:3;8404:17;;;8401:43;;8424:18;;:::i;:::-;-1:-1:-1;8471:1:145;8460:13;;8344:135::o;11252:127::-;11313:10;11308:3;11304:20;11301:1;11294:31;11344:4;11341:1;11334:15;11368:4;11365:1;11358:15;11384:120;11424:1;11450;11440:35;;11455:18;;:::i;:::-;-1:-1:-1;11489:9:145;;11384:120::o;11509:112::-;11541:1;11567;11557:35;;11572:18;;:::i;:::-;-1:-1:-1;11606:9:145;;11509:112::o;11626:128::-;11693:9;;;11714:11;;;11711:37;;;11728:18;;:::i;12718:412::-;12847:3;12885:6;12879:13;12910:1;12920:129;12934:6;12931:1;12928:13;12920:129;;;13032:4;13016:14;;;13012:25;;13006:32;12993:11;;;12986:53;12949:12;12920:129;;;-1:-1:-1;13104:1:145;13068:16;;13093:13;;;-1:-1:-1;13068:16:145;12718:412;-1:-1:-1;12718:412:145:o;13135:184::-;13205:6;13258:2;13246:9;13237:7;13233:23;13229:32;13226:52;;;13274:1;13271;13264:12;13226:52;-1:-1:-1;13297:16:145;;13135:184;-1:-1:-1;13135:184:145:o;14369:168::-;14409:7;14475:1;14471;14467:6;14463:14;14460:1;14457:21;14452:1;14445:9;14438:17;14434:45;14431:71;;;14482:18;;:::i;:::-;-1:-1:-1;14522:9:145;;14369:168::o", + "object": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea264697066735822122017945066ca6c713004947a77e2bb2320465ad725456bc0d1a314008a03241ebd64736f6c63430008100033", + "sourceMap": "289:466:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:41:114;;;;;;;;160:25:146;;;148:2;133:18;1170:41:114;;;;;;;;1711:29;;;;;;;;;;;;361:14:146;;354:22;336:41;;324:2;309:18;1711:29:114;196:187:146;1123:41:114;;;;;603:150:5;;;;;;:::i;:::-;;:::i;:::-;;4310:457:114;;;;;;:::i;:::-;;:::i;1918:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1831:101:49;;;:::i;26374:712:115:-;;;;;;:::i;:::-;;:::i;1217:39:114:-;;;;;;;;5817:10:146;5805:23;;;5787:42;;5775:2;5760:18;1217:39:114;5643:192:146;2218:54:114;;;;;;:::i;:::-;;;;;;;;;;;;;;2076:45;;;;;;:::i;:::-;;;;;;;;;;;;;;1201:85:49;1273:6;;1201:85;;-1:-1:-1;;;;;1273:6:49;;;5986:51:146;;5974:2;5959:18;1201:85:49;5840:203:146;1824:23:114;;;;;;1026:48;;;;;2365:57;;;;;;:::i;:::-;;;;;;;;;;;;;;3551:577;;;;;;:::i;:::-;;:::i;1262:42::-;;;;;;;;6472:6:146;6460:19;;;6442:38;;6430:2;6415:18;1262:42:114;6298:188:146;469:128:5;;;;;;:::i;:::-;;:::i;11270:699:116:-;;;;;;:::i;:::-;;:::i;1080:37:114:-;;;;;2081:198:49;;;;;;:::i;:::-;;:::i;603:150:5:-;1094:13:49;:11;:13::i;:::-;711:35:5::1;::::0;740:5;;731:7;;711:35:::1;::::0;;;::::1;603:150:::0;;:::o;4310:457:114:-;4414:11;;4378:33;4452:24;4414:11;4452;:24::i;:::-;4435:41;;4486:21;4510:48;4533:10;:24;;;4510:22;:48::i;:::-;4486:72;-1:-1:-1;4568:18:114;4589:17;4486:72;4605:1;4589:17;:::i;:::-;4568:38;;4617:27;4637:6;4617:19;:27::i;:::-;4659:9;4655:106;;;4684:66;4709:10;4721:6;:28;;;4684:24;:66::i;:::-;4368:399;;;;4310:457;:::o;1831:101:49:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;26374:712:115:-;26552:6;26570:24;;:::i;:::-;26614:33;;;;;;;;26636:4;;26614:33;;26636:4;26642;;;;26614:33;;;;26604:43;;;26667:61;;;;;;;26690:4;;:7;26667:61;;;;;;26699:4;;:7;;;26667:61;;;;;;;;;;;;;26710:4;;;;;:7;26667:61;;26719:4;:7;;;26667:61;;;;-1:-1:-1;;;26667:61:115;26657:7;;;:71;26748:33;;;;;;;26770:4;;26748:33;;26776:4;;;;26748:33;;;;26738:7;;;:43;26822:24;;26833:12;26822:24;;;;;;;;;-1:-1:-1;;26822:24:115;;;;;;;;;;;-1:-1:-1;26822:24:115;26791:55;;26861:9;26856:93;26880:12;26876:1;:16;26856:93;;;26930:5;26936:1;26930:8;;;;;;;:::i;:::-;;;;;26913:11;26925:1;26913:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;26894:3;;;;:::i;:::-;;;;26856:93;;;;26962:32;26975:11;26988:5;26962:12;:32::i;:::-;26998:1;26962:37;26958:122;;27022:4;27015:11;;;;;;26958:122;27064:5;27057:12;;;;26374:712;;;;;;;:::o;3551:577:114:-;3615:14;3632:19;3644:6;3632:11;:19::i;:::-;3685;;3615:36;;-1:-1:-1;3666:16:114;:14;:16::i;:::-;:38;3662:115;;;3720:46;;-1:-1:-1;;;3720:46:114;;8686:2:146;3720:46:114;;;8668:21:146;8725:2;8705:18;;;8698:30;8764:34;8744:18;;;8737:62;-1:-1:-1;;;8815:18:146;;;8808:34;8859:19;;3720:46:114;;;;;;;;3662:115;3814:4;;3791:6;:20;;;:27;3787:102;;;3834:44;;-1:-1:-1;;;3834:44:114;;9091:2:146;3834:44:114;;;9073:21:146;9130:2;9110:18;;;9103:30;9169:34;9149:18;;;9142:62;-1:-1:-1;;;9220:18:146;;;9213:32;9262:19;;3834:44:114;8889:398:146;3787:102:114;3903:9;3899:223;;;3928:119;3958:6;:20;;;3980:6;:26;;;4008:6;:25;;;3928:12;:119::i;:::-;3605:523;3551:577;:::o;3899:223::-;4078:33;;-1:-1:-1;;;4078:33:114;;9494:2:146;4078:33:114;;;9476:21:146;9533:2;9513:18;;;9506:30;9572:25;9552:18;;;9545:53;9615:18;;4078:33:114;9292:347:146;469:128:5;1094:13:49;:11;:13::i;:::-;566:24:5::1;::::0;584:5;;577;;566:24:::1;::::0;;;::::1;469:128:::0;;:::o;11270:699:116:-;11445:6;11463:22;;:::i;:::-;11505:31;;;;;;;;11525:4;;11505:31;;11525:4;11531;;;;11505:31;;;;11495:41;;;11556:59;;;;;;;11577:4;;:7;11556:59;;;;;;11586:4;;:7;;;11556:59;;;;;;;;;;;;;11597:4;;;;;:7;11556:59;;11606:4;:7;;;11556:59;;;;-1:-1:-1;;;11556:59:116;11546:7;;;:69;11635:31;;;;;;;11655:4;;11635:31;;11661:4;;;;11635:31;;;;11625:7;;;:41;11707:24;;11533:1;11707:24;;;;;;;;;-1:-1:-1;;11707:24:116;;;;;;11525:4;11707:24;;;;;-1:-1:-1;11707:24:116;11676:55;;11746:9;11741:93;11765:12;11761:1;:16;11741:93;;;11815:5;11821:1;11815:8;;;;;;;:::i;:::-;;;;;11798:11;11810:1;11798:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;11779:3;;;;:::i;:::-;;;;11741:93;;;;11847:30;11858:11;11871:5;11847:10;:30::i;2081:198:49:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;9846:2:146;2161:73:49::1;::::0;::::1;9828:21:146::0;9885:2;9865:18;;;9858:30;9924:34;9904:18;;;9897:62;-1:-1:-1;;;9975:18:146;;;9968:36;10021:19;;2161:73:49::1;9644:402:146::0;2161:73:49::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;10253:2:146;1414:68:49;;;10235:21:146;;;10272:18;;;10265:30;10331:34;10311:18;;;10304:62;10383:18;;1414:68:49;10051:356:146;4850:556:114;4925:4;4941:21;4965:43;4988:6;:19;;;4965:22;:43::i;:::-;5023:37;;;;:22;:37;;;;;;4941:67;;-1:-1:-1;5023:42:114;5019:286;;5081:63;;-1:-1:-1;;;5081:63:114;;10614:2:146;5081:63:114;;;10596:21:146;10653:2;10633:18;;;10626:30;10692:34;10672:18;;;10665:62;-1:-1:-1;;;10743:18:146;;;10736:51;10804:19;;5081:63:114;10412:417:146;5019:286:114;1371:2;5165:6;:20;;;:54;5161:144;;;5235:59;;-1:-1:-1;;;5235:59:114;;11036:2:146;5235:59:114;;;11018:21:146;11075:2;11055:18;;;11048:30;11114:34;11094:18;;;11087:62;-1:-1:-1;;;11165:18:146;;;11158:47;11222:19;;5235:59:114;10834:413:146;5161:144:114;5315:25;5333:6;5315:17;:25::i;:::-;-1:-1:-1;;5358:20:114;;;:41;5381:18;5358:41;-1:-1:-1;5358:41:114;4850:556::o;7603:125::-;7672:7;7698:23;7705:16;7698:4;:23;:::i;:::-;7691:30;7603:125;-1:-1:-1;;7603:125:114:o;6655:882::-;6769:12;;;;6791:25;;:::i;:::-;6869:23;;;;6827:31;6903:183;6927:2;6923:1;:6;6903:183;;;6971:32;6997:6;6971:23;:32;:::i;:::-;6950:6;6957:10;6966:1;6957:6;:10;:::i;:::-;6950:18;;;;;;;:::i;:::-;;;;:53;7043:32;7069:6;7043:23;:32;:::i;:::-;7017:58;-1:-1:-1;6931:3:114;;;;:::i;:::-;;;;6903:183;;;-1:-1:-1;7140:11:114;;:31;;;7095:34;7182:188;7206:2;7202:1;:6;7182:188;;;7246:35;7275:6;7246:26;:35;:::i;:::-;7229:6;7236;7241:1;7236:2;:6;:::i;:::-;7229:14;;;;;;;:::i;:::-;;;;:52;7324:35;7353:6;7324:26;:35;:::i;:::-;7295:64;-1:-1:-1;7210:3:114;;;;:::i;:::-;;;;7182:188;;;-1:-1:-1;7427:28:114;;;;7400:57;;:18;:57::i;:::-;7379:10;;;:79;7495:7;;7386:2;7504:7;;;7513;;;;7477:52;;7495:7;7504;7379:6;7477:17;:52::i;:::-;7469:61;;;;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;2433:187:49:-;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;25166:1155:115:-;25285:7;25349:77;25285:7;25467:20;:18;:20::i;:::-;25436:51;;25525:2;:5;;;:12;25505:5;:12;25520:1;25505:16;;;;:::i;:::-;:32;25497:63;;;;-1:-1:-1;;;25497:63:115;;11961:2:146;25497:63:115;;;11943:21:146;12000:2;11980:18;;;11973:30;-1:-1:-1;;;12019:18:146;;;12012:48;12077:18;;25497:63:115;11759:342:146;25497:63:115;25653:27;;;;;;;;;25617:33;25653:27;;;;;;;;;25690:240;25714:5;:12;25710:1;:16;25690:240;;;25766:18;25755:5;25761:1;25755:8;;;;;;;;:::i;:::-;;;;;;;:29;25747:73;;;;-1:-1:-1;;;25747:73:115;;12308:2:146;25747:73:115;;;12290:21:146;12347:2;12327:18;;;12320:30;12386:33;12366:18;;;12359:61;12437:18;;25747:73:115;12106:355:146;25747:73:115;25841:78;25864:4;25870:48;25895:2;:5;;;25901:1;25905;25901:5;;;;:::i;:::-;25895:12;;;;;;;;:::i;:::-;;;;;;;25909:5;25915:1;25909:8;;;;;;;;:::i;:::-;;;;;;;25870:24;:48::i;:::-;25841:22;:78::i;:::-;25834:85;-1:-1:-1;25728:3:115;;;;:::i;:::-;;;;25690:240;;;;25946:38;25969:4;25975:2;:5;;;25981:1;25975:8;;;;;;;;:::i;:::-;;;;;;;25946:22;:38::i;:::-;25939:45;;26012:265;26056:29;26077:5;:7;;;26056:20;:29::i;:::-;26103:5;:7;;;26128:2;:8;;;26154:2;:8;;;26180:4;26202:2;:9;;;26229:5;:7;;;26254:2;:9;;;26012:26;:265::i;:::-;25994:302;;26295:1;26288:8;;;;;;;25994:302;-1:-1:-1;26313:1:115;;25166:1155;-1:-1:-1;;;;;25166:1155:115:o;7818:133:114:-;7867:7;7928:16;7894:30;7912:12;7894:15;:30;:::i;:::-;7893:51;;;;:::i;:::-;7886:58;;7818:133;:::o;8310:721::-;8463:1;8438:13;;;:7;:13;;;;;;:27;8434:170;;8485:13;;;;:7;:13;;;;;;:36;;8481:93;;8554:5;8541:18;;-1:-1:-1;;8541:18:114;;;8481:93;8310:721;;;:::o;8434:170::-;8654:1;8617:25;;;:19;:25;;;;;;:39;8613:193;;8676:25;;;;:19;:25;;;;;;:47;;8672:104;;8756:5;8743:18;;-1:-1:-1;;8743:18:114;;;8310:721;;;:::o;8613:193::-;8816:4;:11;;;8837:13;;;;:7;:13;;;;;;;;:35;;;8882:19;:25;;;;;:46;;;8938:10;:16;;;;;;8957:15;8938:34;;8987:37;8853:19;;8823:4;;8987:37;;8837:13;8987:37;8310:721;;;:::o;10084:1133:116:-;10199:7;10263:77;10199:7;10379:18;:16;:18::i;:::-;10350:47;;10435:2;:5;;;:12;10415:5;:12;10430:1;10415:16;;;;:::i;:::-;:32;10407:63;;;;-1:-1:-1;;;10407:63:116;;11961:2:146;10407:63:116;;;11943:21:146;12000:2;11980:18;;;11973:30;-1:-1:-1;;;12019:18:146;;;12012:48;12077:18;;10407:63:116;11759:342:146;10407:63:116;10561:25;;;;;;;;;10527:31;10561:25;;;;;;;;;10596:236;10620:5;:12;10616:1;:16;10596:236;;;10672:18;10661:5;10667:1;10661:8;;;;;;;;:::i;:::-;;;;;;;:29;10653:73;;;;-1:-1:-1;;;10653:73:116;;12308:2:146;10653:73:116;;;12290:21:146;12347:2;12327:18;;;12320:30;12386:33;12366:18;;;12359:61;12437:18;;10653:73:116;12106:355:146;10653:73:116;10747:74;10768:4;10774:46;10797:2;:5;;;10803:1;10807;10803:5;;;;:::i;10747:74::-;10740:81;-1:-1:-1;10634:3:116;;;;:::i;:::-;;;;10596:236;;;;10848:36;10869:4;10875:2;:5;;;10881:1;10875:8;;;;;;;;:::i;10848:36::-;10841:43;;10912:261;10954:27;10973:5;:7;;;10954:18;:27::i;:::-;10999:5;:7;;;11024:2;:8;;;11050:2;:8;;;11076:4;11098:2;:9;;;11125:5;:7;;;11150:2;:9;;;10912:24;:261::i;5509:1064:114:-;5591:22;5616:39;5635:6;:19;;;5616:18;:39::i;:::-;5591:64;;5665:23;5691:40;5710:6;:20;;;5691:18;:40::i;:::-;5665:66;;5741:23;5767:40;5786:6;:20;;;5767:18;:40::i;:::-;5741:66;;5817:21;5841:43;5864:6;:19;;;5841:22;:43::i;:::-;5894:29;5926:37;;;:22;:37;;;;;;;;;6004:45;;;;;12623:19:146;;;12658:12;;;12651:28;;;5926:37:114;;-1:-1:-1;5997:53:114;;12695:12:146;;6004:45:114;;;-1:-1:-1;;6004:45:114;;;;;;;;;;5997:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5993:57;;6064:51;6084:1;6087:6;:26;;;6071:43;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6071:43:114;;;;-1:-1:-1;;6071:43:114;;;;;;;;;;6064:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6060:55;;6129:40;6149:1;6152:15;6136:32;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6136:32:114;;;;-1:-1:-1;;6136:32:114;;;;;;;;;;6129:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6125:44;;6183:50;6203:1;6206:6;:25;;;6190:42;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6190:42:114;;;;-1:-1:-1;;6190:42:114;;;;;;;;;;6183:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:54;;6247:46;6267:1;6270:21;6254:38;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6254:38:114;;;;-1:-1:-1;;6254:38:114;;;;;;;;;;6247:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6243:50;-1:-1:-1;6303:9:114;6323:30;6243:50;6323:18;:30::i;:::-;6315:39;-1:-1:-1;6373:23:114;6395:1;-1:-1:-1;;;6373:23:114;:::i;:::-;6436:12;;;;6458:39;;;;;;;;;6368:29;;;;6458:39;;;6531:7;;6540;;;;6549;;;;6368:29;;6436:12;;6515:50;;6531:7;;6458:39;6515:15;:50::i;:::-;6507:59;;;;;;5581:992;;;;;;;;;5509:1064;:::o;385:892:110:-;443:7;637:1;562;566:66;562:70;561:77;;543:1;468;472:66;468:70;467:77;;466:173;462:177;;825:2;750:1;754:66;750:70;749:78;;730:2;655:1;659:66;655:70;654:78;;653:175;649:179;;1014:2;939:1;943:66;939:70;938:78;;919:2;844:1;848:66;844:70;843:78;;842:175;838:179;;1203:2;1128:1;1132:66;1128:70;1127:78;;1108:2;1033:1;-1:-1:-1;;1033:70:110;1032:78;;1031:175;1027:179;;1239:3;1234:1;:8;;1226:3;1221:1;:8;;1220:23;1216:27;;1268:1;1260:10;;1253:17;;385:892;;;:::o;7822:17338:115:-;7875:28;;:::i;:::-;7926:212;;;;;;;;7961:77;7926:212;;8052:76;7926:212;;;;;;;;7915:223;;;8160:465;;;;;;;;8213:76;8160:465;;;;;;8307:76;8160:465;;;;;;;;;;;;;;;;;;8429:77;8160:465;;8524:77;8160:465;;;;-1:-1:-1;;;8160:465:115;8149:8;;;:476;;;;8647:465;;;;;;;8700:77;8647:465;;;;;;8795:77;8647:465;;;;;;;;;;;;;8918:76;8647:465;;9012:76;8647:465;;;;-1:-1:-1;;;8647:465:115;8635:9;;;:477;9134:463;;;;;;;9187:76;9134:463;;;;;;9281:77;9134:463;;;;;;;;;;;;;9404:75;9134:463;;9497:76;9134:463;;;;-1:-1:-1;;;9134:463:115;9122:9;;;:475;9615:31;;9643:2;9615:31;;;;;;;;;;9643:2;9615:31;;;-1:-1:-1;;;;;;;;;;;;;;;;;9615:31:115;;;;;;;;;;;;-1:-1:-1;;9607:5:115;;;:39;;;9668:211;;;;;;;;;9703:76;9668:211;;9793:76;9668:211;;;;9657:5;;:8;;-1:-1:-1;;9657:8:115;;;;:::i;:::-;;;;;;:222;;;;9901:213;;;;;;;;9936:77;9901:213;;;;10027:77;9901:213;;;9890:2;:5;;;9896:1;9890:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10136:213;;;;;;;;10171:77;10136:213;;;;10262:77;10136:213;;;10125:2;:5;;;10131:1;10125:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10371:210;;;;;;;;10406:75;10371:210;;;;10495:76;10371:210;;;10360:2;:5;;;10366:1;10360:8;;;;;;;;:::i;:::-;;;;;;:221;;;;10603:212;;;;;;;;10638:77;10603:212;;;;10729:76;10603:212;;;10592:2;:5;;;10598:1;10592:8;;;;;;;;:::i;:::-;;;;;;:223;;;;10837:211;;;;;;;;10872:77;10837:211;;;;10963:75;10837:211;;;10826:2;:5;;;10832:1;10826:8;;;;;;;;:::i;:::-;;;;;;:222;;;;11070:213;;;;;;;;11105:77;11070:213;;;;11196:77;11070:213;;;11059:2;:5;;;11065:1;11059:8;;;;;;;;:::i;:::-;;;;;;:224;;;;11305:212;;;;;;;;11340:77;11305:212;;;;11431:76;11305:212;;;11294:2;:5;;;11300:1;11294:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11539:212;;;;;;;;11574:77;11539:212;;;;11665:76;11539:212;;;11528:2;:5;;;11534:1;11528:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11773:211;;;;;;;;11808:76;11773:211;;;;11898:76;11773:211;;;11762:2;:5;;;11768:1;11762:8;;;;;;;;:::i;:::-;;;;;;:222;;;;12007:212;;;;;;;;12042:77;12007:212;;;;12133:76;12007:212;;;11995:2;:5;;;12001:2;11995:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12242:213;;;;;;;;12277:77;12242:213;;;;12368:77;12242:213;;;12230:2;:5;;;12236:2;12230:9;;;;;;;;:::i;:::-;;;;;;:225;;;;12478:211;;;;;;;;12513:76;12478:211;;;;12603:76;12478:211;;;12466:2;:5;;;12472:2;12466:9;;;;;;;;:::i;:::-;;;;;;:223;;;;12712:212;;;;;;;;12747:76;12712:212;;;;12837:77;12712:212;;;12700:2;:5;;;12706:2;12700:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12947:211;;;;;;;;12982:76;12947:211;;;;13072:76;12947:211;;;12935:2;:5;;;12941:2;12935:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13181:213;;;;;;;;13216:77;13181:213;;;;13307:77;13181:213;;;13169:2;:5;;;13175:2;13169:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13417:213;;;;;;;;13452:77;13417:213;;;;13543:77;13417:213;;;13405:2;:5;;;13411:2;13405:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13653:211;;;;;;;;13688:76;13653:211;;;;13778:76;13653:211;;;13641:2;:5;;;13647:2;13641:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13887:212;;;;;;;;13922:76;13887:212;;;;14012:77;13887:212;;;13875:2;:5;;;13881:2;13875:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14122:212;;;;;;;;14157:77;14122:212;;;;14248:76;14122:212;;;14110:2;:5;;;14116:2;14110:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14357:211;;;;;;;;14392:77;14357:211;;;;14483:75;14357:211;;;14345:2;:5;;;14351:2;14345:9;;;;;;;;:::i;:::-;;;;;;:223;;;;14591:213;;;;;;;;14626:77;14591:213;;;;14717:77;14591:213;;;14579:2;:5;;;14585:2;14579:9;;;;;;;;:::i;:::-;;;;;;:225;;;;14827:213;;;;;;;;14862:77;14827:213;;;;14953:77;14827:213;;;14815:2;:5;;;14821:2;14815:9;;;;;;;;:::i;:::-;;;;;;:225;;;;15063:210;;;;;;;;15098:75;15063:210;;;;15187:76;15063:210;;;15051:2;:5;;;15057:2;15051:9;;;;;;;;:::i;:::-;;;;;;:222;;;;15296:212;;;;;;;;15331:77;15296:212;;;;15422:76;15296:212;;;15284:2;:5;;;15290:2;15284:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15531:212;;;;;;;;15566:76;15531:212;;;;15656:77;15531:212;;;15519:2;:5;;;15525:2;15519:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15766:212;;;;;;;;15801:77;15766:212;;;;15892:76;15766:212;;;15754:2;:5;;;15760:2;15754:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16001:213;;;;;;;;16036:77;16001:213;;;;16127:77;16001:213;;;15989:2;:5;;;15995:2;15989:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16237:213;;;;;;;;16272:77;16237:213;;;;16363:77;16237:213;;;16225:2;:5;;;16231:2;16225:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16473:213;;;;;;;;16508:77;16473:213;;;;16599:77;16473:213;;;16461:2;:5;;;16467:2;16461:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16709:212;;;;;;;;16744:76;16709:212;;;;16834:77;16709:212;;;16697:2;:5;;;16703:2;16697:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16944:213;;;;;;;;16979:77;16944:213;;;;17070:77;16944:213;;;16932:2;:5;;;16938:2;16932:9;;;;;;;;:::i;:::-;;;;;;:225;;;;17180:211;;;;;;;;17215:76;17180:211;;;;17305:76;17180:211;;;17168:2;:5;;;17174:2;17168:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17414:212;;;;;;;;17449:77;17414:212;;;;17540:76;17414:212;;;17402:2;:5;;;17408:2;17402:9;;;;;;;;:::i;:::-;;;;;;:224;;;;17649:211;;;;;;;;17684:76;17649:211;;;;17774:76;17649:211;;;17637:2;:5;;;17643:2;17637:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17883:212;;;;;;;;17918:77;17883:212;;;;18009:76;17883:212;;;17871:2;:5;;;17877:2;17871:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18118:212;;;;;;;;18153:76;18118:212;;;;18243:77;18118:212;;;18106:2;:5;;;18112:2;18106:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18353:213;;;;;;;;18388:77;18353:213;;;;18479:77;18353:213;;;18341:2;:5;;;18347:2;18341:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18589:213;;;;;;;;18624:77;18589:213;;;;18715:77;18589:213;;;18577:2;:5;;;18583:2;18577:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18825:213;;;;;;;;18860:77;18825:213;;;;18951:77;18825:213;;;18813:2;:5;;;18819:2;18813:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19061:211;;;;;;;;19096:77;19061:211;;;;19187:75;19061:211;;;19049:2;:5;;;19055:2;19049:9;;;;;;;;:::i;:::-;;;;;;:223;;;;19295:213;;;;;;;;19330:77;19295:213;;;;19421:77;19295:213;;;19283:2;:5;;;19289:2;19283:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19531:213;;;;;;;;19566:77;19531:213;;;;19657:77;19531:213;;;19519:2;:5;;;19525:2;19519:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19767:212;;;;;;;;19802:76;19767:212;;;;19892:77;19767:212;;;19755:2;:5;;;19761:2;19755:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20002:211;;;;;;;;20037:76;20002:211;;;;20127:76;20002:211;;;19990:2;:5;;;19996:2;19990:9;;;;;;;;:::i;:::-;;;;;;:223;;;;20236:212;;;;;;;;20271:77;20236:212;;;;20362:76;20236:212;;;20224:2;:5;;;20230:2;20224:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20471:212;;;;;;;;20506:77;20471:212;;;;20597:76;20471:212;;;20459:2;:5;;;20465:2;20459:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20706:213;;;;;;;;20741:77;20706:213;;;;20832:77;20706:213;;;20694:2;:5;;;20700:2;20694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;20942:212;;;;;;;;20977:77;20942:212;;;;21068:76;20942:212;;;20930:2;:5;;;20936:2;20930:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21177:212;;;;;;;;21212:76;21177:212;;;;21302:77;21177:212;;;21165:2;:5;;;21171:2;21165:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21412:213;;;;;;;;21447:77;21412:213;;;;21538:77;21412:213;;;21400:2;:5;;;21406:2;21400:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21648:213;;;;;;;;21683:77;21648:213;;;;21774:77;21648:213;;;21636:2;:5;;;21642:2;21636:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21884:211;;;;;;;;21919:76;21884:211;;;;22009:76;21884:211;;;21872:2;:5;;;21878:2;21872:9;;;;;;;;:::i;:::-;;;;;;:223;;;;22118:213;;;;;;;;22153:77;22118:213;;;;22244:77;22118:213;;;22106:2;:5;;;22112:2;22106:9;;;;;;;;:::i;:::-;;;;;;:225;;;;22354:212;;;;;;;;22389:76;22354:212;;;;22479:77;22354:212;;;22342:2;:5;;;22348:2;22342:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22589:212;;;;;;;;22624:76;22589:212;;;;22714:77;22589:212;;;22577:2;:5;;;22583:2;22577:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22824:212;;;;;;;;22859:76;22824:212;;;;22949:77;22824:212;;;22812:2;:5;;;22818:2;22812:9;;;;;;;;:::i;:::-;;;;;;:224;;;;23059:211;;;;;;;;23094:77;23059:211;;;;23185:75;23059:211;;;23047:2;:5;;;23053:2;23047:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23293:213;;;;;;;;23328:77;23293:213;;;;23419:77;23293:213;;;23281:2;:5;;;23287:2;23281:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23529:213;;;;;;;;23564:77;23529:213;;;;23655:77;23529:213;;;23517:2;:5;;;23523:2;23517:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23765:211;;;;;;;;23800:76;23765:211;;;;23890:76;23765:211;;;23753:2;:5;;;23759:2;23753:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23999:212;;;;;;;;24034:76;23999:212;;;;24124:77;23999:212;;;23987:2;:5;;;23993:2;23987:9;;;;;;;;:::i;:::-;;;;;;:224;;;;24234:213;;;;;;;;24269:77;24234:213;;;;24360:77;24234:213;;;24222:2;:5;;;24228:2;24222:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24470:213;;;;;;;;24505:77;24470:213;;;;24596:77;24470:213;;;24458:2;:5;;;24464:2;24458:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24706:213;;;;;;;;24741:77;24706:213;;;;24832:77;24706:213;;;24694:2;:5;;;24700:2;24694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24942:211;;;;;;;;24977:76;24942:211;;;;25067:76;24942:211;;;24930:2;:5;;;24936:2;24930:9;;;;;;;;:::i;:::-;;;;;;:223;;;;7822:17338;:::o;3929:557::-;-1:-1:-1;;;;;;;;;;;;;;;;;4029:23:115;;:::i;:::-;4073:3;;4062:14;;:8;4097:3;;;;4086:8;;;:14;4110:8;;;:12;;;-1:-1:-1;4300:4:115;4297:1;4291:4;4062:14;4281:1;4274:4;4267:5;4263:16;4252:53;4241:64;-1:-1:-1;4241:64:115;;4375:47;4402:20;4411:9;4375:47;;4449:7;4441:38;;;;-1:-1:-1;;;4441:38:115;;13526:2:146;4441:38:115;;;13508:21:146;13565:2;13545:18;;;13538:30;-1:-1:-1;;;13584:18:146;;;13577:48;13642:18;;4441:38:115;13324:342:146;4441:38:115;4019:467;;3929:557;;;;:::o;3151:622::-;-1:-1:-1;;;;;;;;;;;;;;;;;3286:23:115;;:::i;:::-;3330:4;;3319:15;;:8;3355:4;;;;3344:8;;;:15;3380:4;;3369:8;;;:15;3405:4;;;3394:8;;;;:15;;;;-1:-1:-1;;3584:1:115;3578:4;3319:15;3568:1;3561:4;3554:5;3550:16;3539:53;3528:64;-1:-1:-1;3528:64:115;;3662:47;3689:20;3698:9;3662:47;;3736:7;3728:38;;;;-1:-1:-1;;;3728:38:115;;13873:2:146;3728:38:115;;;13855:21:146;13912:2;13892:18;;;13885:30;-1:-1:-1;;;13931:18:146;;;13924:48;13989:18;;3728:38:115;13671:342:146;2742:357:115;-1:-1:-1;;;;;;;;;;;;;;;;;2982:3:115;;2891:77;;2982:8;:20;;;;-1:-1:-1;2994:3:115;;;;:8;2982:20;2978:71;;;-1:-1:-1;;3025:13:115;;;;;;;;;-1:-1:-1;3025:13:115;;;;;;;;2742:357;-1:-1:-1;2742:357:115:o;2978:71::-;3065:27;;;;;;;;3073:1;:3;;;3065:27;;;;3089:1;3083;:3;;;:7;;;;:::i;:::-;3078:13;;:1;:13;:::i;:::-;3065:27;;3058:34;2742:357;-1:-1:-1;;;2742:357:115:o;6832:568::-;7137:16;;;7151:1;7137:16;;;;;;;;;7099:4;;;;7137:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7137:16:115;;;;;;;;;;;;-1:-1:-1;;7185:16:115;;;7199:1;7185:16;;;;;;;;;7115:38;;-1:-1:-1;7163:19:115;;7185:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7163:38;;7219:2;7211;7214:1;7211:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7239:2;7231;7234:1;7231:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7259:2;7251;7254:1;7251:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7279:2;7271;7274:1;7271:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7299:2;7291;7294:1;7291:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7319:2;7311;7314:1;7311:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7339:2;7331;7334:1;7331:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7359:2;7351;7354:1;7351:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7378:15;7386:2;7390;7378:7;:15::i;:::-;7371:22;6832:568;-1:-1:-1;;;;;;;;;;;6832:568:115:o;7796:2282:116:-;7847:26;;:::i;:::-;7896:210;;;;;;;;7929:77;7896:210;;8020:76;7896:210;;;;;;;;7885:221;;;8128:463;;;;;;;;8179:76;8128:463;;;;;;8273:76;8128:463;;;;;;;;;;;;;;;;;;8395:77;8128:463;;8490:77;8128:463;;;;-1:-1:-1;;;8128:463:116;8117:8;;;:474;;;;8613:463;;;;;;;8664:77;8613:463;;;;;;8759:77;8613:463;;;;;;;;;;;;;8882:76;8613:463;;8976:76;8613:463;;;;-1:-1:-1;;;8613:463:116;8601:9;;;:475;9098:462;;;;;;;9149:76;9098:462;;;;;;9243:77;9098:462;;;;;;;;;;;;;9366:76;9098:462;;9460:76;9098:462;;;;-1:-1:-1;;;9098:462:116;9086:9;;;:474;9578:28;;9604:1;9578:28;;;;;;;;;9604:1;9578:28;;;-1:-1:-1;;;;;;;;;;;;;;;;;9578:28:116;;;;;;;;;;;;-1:-1:-1;;9570:5:116;;;:36;;;9628:210;;;;;;;;;9661:77;9628:210;;9752:76;9628:210;;;;9617:5;;:8;;-1:-1:-1;;9617:8:116;;;;:::i;:::-;;;;;;:221;;;;9860:211;;;;;;;;9893:77;9860:211;;;;9984:77;9860:211;;;9849:2;:5;;;9855:1;9849:8;;;;;;;;:::i;6830:568::-;7135:16;;;7149:1;7135:16;;;;;;;;;7097:4;;;;7135:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7135:16:116;;;;;;;;;;;;-1:-1:-1;;7183:16:116;;;7197:1;7183:16;;;;;;;;;7113:38;;-1:-1:-1;7161:19:116;;7183:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7161:38;;7217:2;7209;7212:1;7209:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7237:2;7229;7232:1;7229:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7257:2;7249;7252:1;7249:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7277:2;7269;7272:1;7269:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7297:2;7289;7292:1;7289:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7317:2;7309;7312:1;7309:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7337:2;7329;7332:1;7329:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7357:2;7349;7352:1;7349:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7376:15;7384:2;7388;7376:7;:15::i;4698:1073:115:-;4780:4;4817:2;:9;4804:2;:9;:22;4796:57;;;;-1:-1:-1;;;4796:57:115;;14220:2:146;4796:57:115;;;14202:21:146;14259:2;14239:18;;;14232:30;-1:-1:-1;;;14278:18:146;;;14271:52;14340:18;;4796:57:115;14018:346:146;4796:57:115;4882:9;;4863:16;4921:12;4882:9;4932:1;4921:12;:::i;:::-;4901:32;;4943:22;4979:9;4968:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4968:21:115;;4943:46;;5004:9;4999:302;5023:8;5019:1;:12;4999:302;;;5071:2;5074:1;5071:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5052:5;5058:1;5062;5058:5;;;;:::i;:::-;:9;;5066:1;5058:9;:::i;:::-;5052:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5111:2;5114:1;5111:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5092:5;5098:1;5102;5098:5;;;;:::i;:::-;:9;;5106:1;5098:9;:::i;:::-;5092:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5151:2;5154:1;5151:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5132:5;5138;:1;5142;5138:5;:::i;:::-;:9;;5146:1;5138:9;:::i;:::-;5132:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5194:2;5197:1;5194:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5175:5;5181;:1;5185;5181:5;:::i;:::-;:9;;5189:1;5181:9;:::i;:::-;5175:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5237:2;5240:1;5237:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5245:1;5237:10;;;;;;;:::i;:::-;;;;;5218:5;5224;:1;5228;5224:5;:::i;:::-;:9;;5232:1;5224:9;:::i;:::-;5218:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5280:2;5283:1;5280:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5288:1;5280:10;;;;;;;:::i;:::-;;;;;5261:5;5267;:1;5271;5267:5;:::i;:::-;:9;;5275:1;5267:9;:::i;:::-;5261:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5033:3;;;;:::i;:::-;;;;4999:302;;;;5310:21;;:::i;:::-;5341:12;5554:4;5549:3;5542:4;5531:9;5527:20;5520:4;5513:5;5509:16;5506:1;5499:4;5492:5;5488:16;5477:82;5450:109;-1:-1:-1;5450:109:115;;5629:47;5656:20;5665:9;5629:47;;5703:7;5695:41;;;;-1:-1:-1;;;5695:41:115;;14744:2:146;5695:41:115;;;14726:21:146;14783:2;14763:18;;;14756:30;-1:-1:-1;;;14802:18:146;;;14795:51;14863:18;;5695:41:115;14542:345:146;5695:41:115;-1:-1:-1;5753:6:115;:11;;;;-1:-1:-1;;;;;;4698:1073:115:o;4696::116:-;4778:4;4815:2;:9;4802:2;:9;:22;4794:57;;;;-1:-1:-1;;;4794:57:116;;14220:2:146;4794:57:116;;;14202:21:146;14259:2;14239:18;;;14232:30;-1:-1:-1;;;14278:18:146;;;14271:52;14340:18;;4794:57:116;14018:346:146;4794:57:116;4880:9;;4861:16;4919:12;4880:9;4930:1;4919:12;:::i;:::-;4899:32;;4941:22;4977:9;4966:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4966:21:116;;4941:46;;5002:9;4997:302;5021:8;5017:1;:12;4997:302;;;5069:2;5072:1;5069:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5050:5;5056:1;5060;5056:5;;;;:::i;:::-;:9;;5064:1;5056:9;:::i;:::-;5050:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5109:2;5112:1;5109:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5090:5;5096:1;5100;5096:5;;;;:::i;:::-;:9;;5104:1;5096:9;:::i;:::-;5090:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5149:2;5152:1;5149:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5130:5;5136;:1;5140;5136:5;:::i;:::-;:9;;5144:1;5136:9;:::i;:::-;5130:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5192:2;5195:1;5192:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5173:5;5179;:1;5183;5179:5;:::i;:::-;:9;;5187:1;5179:9;:::i;:::-;5173:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5235:2;5238:1;5235:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5243:1;5235:10;;;;;;;:::i;:::-;;;;;5216:5;5222;:1;5226;5222:5;:::i;:::-;:9;;5230:1;5222:9;:::i;:::-;5216:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5278:2;5281:1;5278:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5286:1;5278:10;;;;;;;:::i;:::-;;;;;5259:5;5265;:1;5269;5265:5;:::i;:::-;:9;;5273:1;5265:9;:::i;:::-;5259:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5031:3;;;;:::i;:::-;;;;4997:302;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;388:248:146:-;456:6;464;517:2;505:9;496:7;492:23;488:32;485:52;;;533:1;530;523:12;485:52;-1:-1:-1;;556:23:146;;;626:2;611:18;;;598:32;;-1:-1:-1;388:248:146:o;641:127::-;702:10;697:3;693:20;690:1;683:31;733:4;730:1;723:15;757:4;754:1;747:15;773:246;840:2;834:9;;;870:15;;915:18;900:34;;936:22;;;897:62;894:88;;;962:18;;:::i;:::-;998:2;991:22;773:246;:::o;1024:479::-;1074:5;1127:3;1120:4;1112:6;1108:17;1104:27;1094:55;;1145:1;1142;1135:12;1094:55;1169:17;;:::i;:::-;1208:3;1246:2;1238:6;1234:15;1272:3;1264:6;1261:15;1258:35;;;1289:1;1286;1279:12;1258:35;1313:6;1328:146;1344:6;1339:3;1336:15;1328:146;;;1412:17;;1400:30;;1459:4;1450:14;;;;1361;1328:146;;;-1:-1:-1;1492:5:146;;1024:479;-1:-1:-1;;;;;1024:479:146:o;1508:501::-;1564:5;1617:3;1610:4;1602:6;1598:17;1594:27;1584:55;;1635:1;1632;1625:12;1584:55;1659:17;;:::i;:::-;1698:3;1736;1728:6;1724:16;1763:3;1755:6;1752:15;1749:35;;;1780:1;1777;1770:12;1749:35;1804:6;1819:161;1835:6;1830:3;1827:15;1819:161;;;1901:34;1931:3;1926;1901:34;:::i;:::-;1889:47;;1965:4;1956:14;;;;1861:2;1852:12;1819:161;;2014:605;2073:5;2121:6;2109:9;2104:3;2100:19;2096:32;2093:52;;;2141:1;2138;2131:12;2093:52;2174:2;2168:9;2216:4;2208:6;2204:17;2287:6;2275:10;2272:22;2251:18;2239:10;2236:34;2233:62;2230:88;;;2298:18;;:::i;:::-;2334:2;2327:22;2367:6;-1:-1:-1;2367:6:146;2397:40;2433:3;2422:9;2397:40;:::i;:::-;2389:6;2382:56;2473:55;2524:3;2519:2;2508:9;2504:18;2473:55;:::i;:::-;2466:4;2458:6;2454:17;2447:82;2562:50;2608:3;2602;2591:9;2587:19;2562:50;:::i;:::-;2557:2;2549:6;2545:15;2538:75;;2014:605;;;;:::o;2624:773::-;2686:5;2734:6;2722:9;2717:3;2713:19;2709:32;2706:52;;;2754:1;2751;2744:12;2706:52;2787:2;2781:9;2829:4;2821:6;2817:17;2900:6;2888:10;2885:22;2864:18;2852:10;2849:34;2846:62;2843:88;;;2911:18;;:::i;:::-;2951:10;2947:2;2940:22;;2980:6;2971:15;;3023:9;3010:23;3002:6;2995:39;3095:2;3084:9;3080:18;3067:32;3062:2;3054:6;3050:15;3043:57;3161:2;3150:9;3146:18;3133:32;3128:2;3120:6;3116:15;3109:57;3227:2;3216:9;3212:18;3199:32;3194:2;3186:6;3182:15;3175:57;3294:3;3283:9;3279:19;3266:33;3260:3;3252:6;3248:16;3241:59;3334:56;3386:3;3380;3369:9;3365:19;3334:56;:::i;:::-;3328:3;3320:6;3316:16;3309:82;;2624:773;;;;:::o;3402:714::-;3497:6;3550:3;3538:9;3529:7;3525:23;3521:33;3518:53;;;3567:1;3564;3557:12;3518:53;3600:2;3594:9;3642:4;3634:6;3630:17;3713:6;3701:10;3698:22;3677:18;3665:10;3662:34;3659:62;3656:88;;;3724:18;;:::i;:::-;3760:2;3753:22;3799:53;3844:7;3833:9;3799:53;:::i;:::-;3791:6;3784:69;3916:3;3905:9;3901:19;3888:33;3881:4;3873:6;3869:17;3862:60;3983:3;3972:9;3968:19;3955:33;3950:2;3942:6;3938:15;3931:58;4024:60;4076:7;4070:3;4059:9;4055:19;4024:60;:::i;:::-;4017:4;4005:17;;3998:87;4009:6;3402:714;-1:-1:-1;;;3402:714:146:o;4121:180::-;4180:6;4233:2;4221:9;4212:7;4208:23;4204:32;4201:52;;;4249:1;4246;4239:12;4201:52;-1:-1:-1;4272:23:146;;4121:180;-1:-1:-1;4121:180:146:o;4488:1150::-;4690:6;4698;4706;4714;4745:4;4790:2;4778:9;4769:7;4765:23;4761:32;4758:52;;;4806:1;4803;4796:12;4758:52;4829:44;4865:7;4854:9;4829:44;:::i;:::-;4819:54;;4892:59;4943:7;4938:2;4927:9;4923:18;4892:59;:::i;:::-;4882:69;;4970:54;5016:7;5010:3;4999:9;4995:19;4970:54;:::i;:::-;4960:64;;5068:7;5062:3;5051:9;5047:19;5043:33;5033:61;;5090:1;5087;5080:12;5033:61;5123:2;5117:9;5165:4;5157:6;5153:17;5236:6;5224:10;5221:22;5200:18;5188:10;5185:34;5182:62;5179:88;;;5247:18;;:::i;:::-;5283:2;5276:22;5347:18;;;;5318:6;5377:19;;;5374:39;;;5409:1;5406;5399:12;5374:39;5448:3;5437:9;5433:19;5461:146;5477:6;5472:3;5469:15;5461:146;;;5545:17;;5533:30;;5592:4;5583:14;;;;5494;5461:146;;;5465:3;;5626:6;5616:16;;;;4488:1150;;;;;;;:::o;6048:245::-;6141:6;6194:3;6182:9;6173:7;6169:23;6165:33;6162:53;;;6211:1;6208;6201:12;6162:53;6234;6279:7;6268:9;6234:53;:::i;:::-;6224:63;6048:245;-1:-1:-1;;;6048:245:146:o;6491:1163::-;6692:6;6700;6708;6716;6747:3;6791:2;6779:9;6770:7;6766:23;6762:32;6759:52;;;6807:1;6804;6797:12;6759:52;6830:44;6866:7;6855:9;6830:44;:::i;:::-;6820:54;;6893:59;6944:7;6939:2;6928:9;6924:18;6893:59;:::i;:::-;6883:69;;6971:54;7017:7;7011:3;7000:9;6996:19;6971:54;:::i;:::-;6961:64;;7069:7;7063:3;7052:9;7048:19;7044:33;7034:61;;7091:1;7088;7081:12;7034:61;7124:2;7118:9;7146:2;7187;7179:6;7175:15;7256:6;7244:10;7241:22;7220:18;7208:10;7205:34;7202:62;7199:88;;;7267:18;;:::i;:::-;7303:2;7296:22;7367:18;;;;7338:6;7397:19;;;7394:39;;;7429:1;7426;7419:12;7394:39;7468:3;7457:9;7453:19;7481:142;7497:6;7492:3;7489:15;7481:142;;;7563:17;;7551:30;;7601:12;;;;7514;;7481:142;;;-1:-1:-1;6491:1163:146;;;;-1:-1:-1;6491:1163:146;;-1:-1:-1;7642:6:146;-1:-1:-1;;;;6491:1163:146:o;7659:286::-;7718:6;7771:2;7759:9;7750:7;7746:23;7742:32;7739:52;;;7787:1;7784;7777:12;7739:52;7813:23;;-1:-1:-1;;;;;7865:31:146;;7855:42;;7845:70;;7911:1;7908;7901:12;7950:127;8011:10;8006:3;8002:20;7999:1;7992:31;8042:4;8039:1;8032:15;8066:4;8063:1;8056:15;8082:125;8147:9;;;8168:10;;;8165:36;;;8181:18;;:::i;8212:127::-;8273:10;8268:3;8264:20;8261:1;8254:31;8304:4;8301:1;8294:15;8328:4;8325:1;8318:15;8344:135;8383:3;8404:17;;;8401:43;;8424:18;;:::i;:::-;-1:-1:-1;8471:1:146;8460:13;;8344:135::o;11252:127::-;11313:10;11308:3;11304:20;11301:1;11294:31;11344:4;11341:1;11334:15;11368:4;11365:1;11358:15;11384:120;11424:1;11450;11440:35;;11455:18;;:::i;:::-;-1:-1:-1;11489:9:146;;11384:120::o;11509:112::-;11541:1;11567;11557:35;;11572:18;;:::i;:::-;-1:-1:-1;11606:9:146;;11509:112::o;11626:128::-;11693:9;;;11714:11;;;11711:37;;;11728:18;;:::i;12718:412::-;12847:3;12885:6;12879:13;12910:1;12920:129;12934:6;12931:1;12928:13;12920:129;;;13032:4;13016:14;;;13012:25;;13006:32;12993:11;;;12986:53;12949:12;12920:129;;;-1:-1:-1;13104:1:146;13068:16;;13093:13;;;-1:-1:-1;13068:16:146;12718:412;-1:-1:-1;12718:412:146:o;13135:184::-;13205:6;13258:2;13246:9;13237:7;13233:23;13229:32;13226:52;;;13274:1;13271;13264:12;13226:52;-1:-1:-1;13297:16:146;;13135:184;-1:-1:-1;13135:184:146:o;14369:168::-;14409:7;14475:1;14471;14467:6;14463:14;14460:1;14457:21;14452:1;14445:9;14438:17;14434:45;14431:71;;;14482:18;;:::i;:::-;-1:-1:-1;14522:9:146;;14369:168::o", "linkReferences": {}, "immutableReferences": { - "44324": [ + "44398": [ { "start": 706, "length": 32 } ], - "44326": [ + "44400": [ { "start": 892, "length": 32 @@ -575,7 +575,7 @@ "length": 32 } ], - "44328": [ + "44402": [ { "start": 408, "length": 32 @@ -585,7 +585,7 @@ "length": 32 } ], - "44330": [ + "44404": [ { "start": 321, "length": 32 @@ -595,13 +595,13 @@ "length": 32 } ], - "44332": [ + "44406": [ { "start": 546, "length": 32 } ], - "44334": [ + "44408": [ { "start": 796, "length": 32 @@ -636,7 +636,7 @@ "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": "7227d785", "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": "e5b708fe" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_slot\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeHeadUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeSyncCommitteeUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"DrillLightClient\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillLightClient.sol\":\"DrillLightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillLightClient.sol\":{\"keccak256\":\"0x858baa5e6eadc452f96414ffdab698a5901c22d9153e36cdbb849dd9acf68cd0\",\"urls\":[\"bzz-raw://e3a1bc6eff225e20dc011129ca8edb5f46802f0f3b7610e6180f8b6f053c8823\",\"dweb:/ipfs/QmYAVhKMcgk1MsWyC9qRJuf9JLjUytSQQBcVGZoqL1TqAw\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_slot\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeHeadUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeSyncCommitteeUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"DrillLightClient\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillLightClient.sol\":\"DrillLightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillLightClient.sol\":{\"keccak256\":\"0x858baa5e6eadc452f96414ffdab698a5901c22d9153e36cdbb849dd9acf68cd0\",\"urls\":[\"bzz-raw://e3a1bc6eff225e20dc011129ca8edb5f46802f0f3b7610e6180f8b6f053c8823\",\"dweb:/ipfs/QmYAVhKMcgk1MsWyC9qRJuf9JLjUytSQQBcVGZoqL1TqAw\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -1300,11 +1300,19 @@ ], "license": "MIT" }, + "src/libraries/BeaconChainForks.sol": { + "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "urls": [ + "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", + "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + ], + "license": null + }, "src/libraries/SimpleSerialize.sol": { - "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", "urls": [ - "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", - "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", + "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" ], "license": null }, @@ -1351,7 +1359,7 @@ 1009 ], "LightClient": [ - 45032 + 45106 ], "Ownable": [ 31597 @@ -1380,7 +1388,7 @@ "file": "src/lightclient/LightClient.sol", "nameLocation": "-1:-1:-1", "scope": 1010, - "sourceUnit": 45033, + "sourceUnit": 45107, "symbolAliases": [ { "foreign": { @@ -1388,7 +1396,7 @@ "name": "LightClient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 45032, + "referencedDeclaration": 45106, "src": "33:11:5", "typeDescriptions": {} }, @@ -1638,7 +1646,7 @@ "374:11:5" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 45032, + "referencedDeclaration": 45106, "src": "374:11:5" }, "nodeType": "ModifierInvocation", @@ -1764,7 +1772,7 @@ "name": "HeadUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44383, + "referencedDeclaration": 44457, "src": "566:10:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", @@ -1942,7 +1950,7 @@ "name": "SyncCommitteeUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44389, + "referencedDeclaration": 44463, "src": "711:19:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", @@ -2077,7 +2085,7 @@ "318:11:5" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 45032, + "referencedDeclaration": 45106, "src": "318:11:5" }, "id": 954, @@ -2114,10 +2122,10 @@ 1009, 31597, 35292, - 45032, - 46814, - 47828, - 47862 + 45106, + 46888, + 47902, + 47936 ], "name": "DrillLightClient", "nameLocation": "298:16:5", diff --git a/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json b/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json index 48d1651..b3e1d86 100644 --- a/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json +++ b/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json @@ -377,14 +377,32 @@ } ], "bytecode": { - "object": "0x60806040523480156200001157600080fd5b5060405162003ed538038062003ed5833981016040819052620000349162000083565b606580546001600160a01b039384166001600160a01b03199182161790915560668054929093169116179055620000bb565b80516001600160a01b03811681146200007e57600080fd5b919050565b600080604083850312156200009757600080fd5b620000a28362000066565b9150620000b26020840162000066565b90509250929050565b613e0a80620000cb6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b610125610113366004613510565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b61014636600461352b565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e61017936600461368b565b6102f7565b005b6101a361018e366004613788565b60076020526000908152604090205460ff1681565b60405161012f91906137b7565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f236600461352b565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d61023336600461352b565b6004602052600090815260409020546001600160a01b031681565b61017e61025c3660046137df565b6105c5565b61012561026f366004613788565b60096020526000908152604090205481565b61017e6108e8565b61029c610297366004613788565b610901565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613897565b61093b565b610125607881565b6102ff6109a2565b60008061030c8b8b6109fb565b9150915061031d8260400151610c65565b61032a8260400151610d97565b6000808e8e81019061033c919061391c565b9150915061034e828560400151610df3565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd919061394f565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b600061046d8b8e8e8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061102c565b9050806104bc5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105218787906104d29190613968565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026111d4565b905081811461056a5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105ac82828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061158792505050565b50506105b86001603355565b5050505050505050505050565b6105cd6109a2565b6000806105da88886109fb565b915091506105eb8260400151610c65565b6105f88260400151610d97565b610606898360400151610df3565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107bd5760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061394f565b9050600081900361076f5760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a361077c898b613968565b60408088015163ffffffff166000908152600560205220546001600160a01b03168361172e565b600083815260096020526040902081905592506107cf9050565b60008181526009602052604090205491505b6000846020015160016040516020016107fd9291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084582856108408a8c613968565b61182a565b905084811461088e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d382828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061158792505050565b50506108df6001603355565b50505050505050565b6065546001600160a01b031633146108ff57600080fd5b565b6003818154811061091157600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095257600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610993929190613a3b565b60405180910390a45050505050565b6002603354036109f45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118c692505050565b905060008585604051610a8c929190613a5f565b60405190819003902090506000808281526007602052604090205460ff166002811115610abb57610abb6137a1565b14610b085760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b505760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9a5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610be5575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c585760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610ccb5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d489190613a6f565b610d945760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d945760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e595760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee6919061394f565b600003610f355760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbf919061394f565b610fc99042613aa2565b905060788110156110275760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b600080826001600160401b0316846001600160401b03160361106a5750600b61105781610200613ab5565b61106390610183613ad4565b90506111bd565b6120006110778486613ae7565b6001600160401b0316116110d95750600b611093816020613ab5565b61109e906006613ad4565b90506110b56120006001600160401b038516613b24565b6110c161200083613ab5565b6110cb9190613ad4565b905061105781610200613ab5565b836001600160401b0316836001600160401b0316101561116b5750600b611101816020613ab5565b61110c906007613ad4565b9050611119816002613ab5565b611124906000613ad4565b905061113b6120006001600160401b038516613b38565b611149630100000083613ab5565b6111539190613ad4565b9050611160816002613ab5565b61109e906001613ad4565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b6064820152608401610420565b6111c98782888861198b565b979650505050505050565b6000806111e2878a8a6119a5565b90506000816000815181106111f9576111f9613b4c565b01602001516001600160f81b03191690506000600160f81b82148061122b5750600160f91b6001600160f81b03198316145b156112385750600161129d565b600360fe1b6001600160f81b03198316106112555750600061129d565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516112bf9190613aa2565b81526020016112ce8585613ad4565b9052905060006112dd82612245565b905080516004146113295760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b600061134e8260038151811061134157611341613b4c565b6020026020010151612245565b905080518c106113a05760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b60006113b7828e8151811061134157611341613b4c565b905080516003146114155760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b600061143a8260008151811061142d5761142d613b4c565b602002602001015161246a565b90508c6001600160a01b0316816001600160a01b0316146114ad5760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b60006114c58360018151811061134157611341613b4c565b90508c6114eb826000815181106114de576114de613b4c565b60200260200101516124de565b1461154e5760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b611570818d8151811061156357611563613b4c565b60200260200101516124e5565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c001516040516024016115b693929190613b62565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116089190613b92565b6000604051808303816000865af19150503d8060008114611645576040519150601f19603f3d011682016040523d82523d6000602084013e61164a565b606091505b508051919550935060009250602003905061168c576000828060200190518101906116759190613bae565b6001600160e01b031916631dee306b60e11b149150505b8280156116965750805b156116b9576000858152600760205260409020805460ff191660021790556116d3565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe8947878760405161171e929190613a3b565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117988260405160200161178291815260200190565b60405160208183030381529060405287866119a5565b905060008151116117e45760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b60006117f76117f2836125e8565b612245565b9050805160041461180757600080fd5b61181d816002815181106114de576114de613b4c565b93505050505b9392505050565b6000806118598560405160200161184391815260200190565b60405160208183030381529060405284866119a5565b905060008151116118ac5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b6118bd6118b8826125e8565b6124de565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a088018190528851909161197a918a9190611975908290613aa2565b61263b565b60c088015250949695505050505050565b600080611999868686612727565b90921495945050505050565b606060008451116119f05760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b60006119fb846128b6565b90506000611a08866129a4565b9050600084604051602001611a1f91815260200190565b60405160208183030381529060405290506000805b84518110156121ee576000858281518110611a5157611a51613b4c565b602002602001015190508451831115611ac35760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611b625780518051602091820120604051611b1192611aeb92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b5d5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611c58565b805151602011611be85780518051602091820120604051611b8c92611aeb92910190815260200190565b611b5d5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611c585760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611c6460106001613ad4565b81602001515103611e115784518303611da9576000611ca08260200151601081518110611c9357611c93613b4c565b6020026020010151612abe565b90506000815111611d195760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611d279190613aa2565b8314611d9b5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b965061182395505050505050565b6000858481518110611dbd57611dbd613b4c565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611de857611de8613b4c565b60200260200101519050611dfb81612be1565b9550611e08600186613ad4565b945050506121db565b600281602001515103612182576000611e2982612c06565b9050600081600081518110611e4057611e40613b4c565b016020015160f81c90506000611e57600283613bd8565b611e62906002613bfa565b90506000611e73848360ff16612c2a565b90506000611e818a89612c2a565b90506000611e8f8383612c60565b905080835114611f075760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611f1c575060ff85166003145b156120c25780825114611f975760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b6000611fb38860200151600181518110611c9357611c93613b4c565b9050600081511161202c5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d5161203a9190613aa2565b89146120ae5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c506118239b505050505050505050505050565b60ff851615806120d5575060ff85166001145b156121145761210187602001516001815181106120f4576120f4613b4c565b6020026020010151612be1565b995061210d818a613ad4565b9850612177565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b5050505050506121db565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b50806121e681613c13565b915050611a34565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b6060600080600061225585612cdf565b919450925090506001816001811115612270576122706137a1565b146122e35760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516122ef8385613ad4565b146123575760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123705790505090506000845b875181101561245e576000806123e36040518060400160405280858d600001516123c79190613aa2565b8152602001858d602001516123dc9190613ad4565b9052612cdf565b5091509150604051806040016040528083836123ff9190613ad4565b8152602001848c602001516124149190613ad4565b81525085858151811061242957612429613b4c565b602090810291909101015261243f600185613ad4565b935061244b8183613ad4565b6124559084613ad4565b9250505061239d565b50815295945050505050565b805160009060010361247e57506000919050565b81516015146124cf5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b6124d8826124de565b92915050565b60006124d8825b600060218260000151111561253c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600080600061254a85612cdf565b919450925090506000816001811115612565576125656137a1565b146125b25760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b60008386602001516125c49190613ad4565b805190915060208410156125de5760208490036101000a90045b9695505050505050565b6040805180820190915260008082526020820152600082511161261d5760405162461bcd60e51b815260040161042090613c2c565b50604080518082019091528151815260209182019181019190915290565b60608161264981601f613ad4565b10156126675760405162461bcd60e51b815260040161042090613c9c565b6126718284613ad4565b845110156126b55760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b6060821580156126d4576040519150600082526020820160405261271e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561270d5780518352602092830192016126f5565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127389190613ad4565b612743906002613da8565b1161274d57600080fd5b8360005b8460011461271e57612764600286613b24565b60010361280357600284828151811061277f5761277f613b4c565b6020026020010151836040516020016127a2929190918252602082015260400190565b60408051601f19818403018152908290526127bc91613b92565b602060405180830381855afa1580156127d9573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127fc919061394f565b9150612897565b60028285838151811061281857612818613b4c565b602002602001015160405160200161283a929190918252602082015260400190565b60408051601f198184030181529082905261285491613b92565b602060405180830381855afa158015612871573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612894919061394f565b91505b6128a2600286613b38565b9450806128ae81613c13565b915050612751565b80516060906000816001600160401b038111156128d5576128d56135d6565b60405190808252806020026020018201604052801561291a57816020015b60408051808201909152606080825260208201528152602001906001900390816128f35790505b50905060005b8281101561299c57604051806040016040528086838151811061294557612945613b4c565b6020026020010151815260200161297487848151811061296757612967613b4c565b60200260200101516133a2565b81525082828151811061298957612989613b4c565b6020908102919091010152600101612920565b509392505050565b805160609060006129b6826002613ab5565b6001600160401b038111156129cd576129cd6135d6565b6040519080825280601f01601f1916602001820160405280156129f7576020820181803683370190505b5090506000805b83811015612ab457858181518110612a1857612a18613b4c565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a40836002613ab5565b81518110612a5057612a50613b4c565b60200101906001600160f81b031916908160001a905350600f60f81b821683612a7a836002613ab5565b612a85906001613ad4565b81518110612a9557612a95613b4c565b60200101906001600160f81b031916908160001a9053506001016129fe565b5090949350505050565b60606000806000612ace85612cdf565b919450925090506000816001811115612ae957612ae96137a1565b14612b5c5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612b668284613ad4565b855114612bd25760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b6118bd856020015184846133b0565b60606020826000015110612bfd57612bf882612abe565b6124d8565b6124d882613450565b60606124d8612c258360200151600081518110611c9357611c93613b4c565b6129a4565b606082518210612c4957506040805160208101909152600081526124d8565b6118238383848651612c5b9190613aa2565b613466565b60008060008351855110612c75578351612c78565b84515b90505b8082108015612ccf5750838281518110612c9757612c97613b4c565b602001015160f81c60f81b6001600160f81b031916858381518110612cbe57612cbe613b4c565b01602001516001600160f81b031916145b1561299c57816001019150612c7b565b600080600080846000015111612d075760405162461bcd60e51b815260040161042090613c2c565b6020840151805160001a607f8111612d2c57600060016000945094509450505061339b565b60b78111612e89576000612d41608083613aa2565b905080876000015111612dc15760405162461bcd60e51b815260206004820152604e6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612dee5750600160ff1b6001600160f81b0319821610155b612e765760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b506001955093506000925061339b915050565b60bf81116130ca576000612e9e60b783613aa2565b905080876000015111612f215760405162461bcd60e51b81526020600482015260516024820152600080516020613db583398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b0319166000819003612fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c6037811161302b5760405162461bcd60e51b81526020600482015260486024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b6130358184613ad4565b8951116130ad5760405162461bcd60e51b815260206004820152604c6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b6130b8836001613ad4565b975095506000945061339b9350505050565b60f7811161316c5760006130df60c083613aa2565b90508087600001511161315b5760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b60019550935084925061339b915050565b600061317960f783613aa2565b9050808760000151116131f85760405162461bcd60e51b815260206004820152604d6024820152600080516020613db583398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b031916600081900361327d5760405162461bcd60e51b81526020600482015260486024820152600080516020613db583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116132fe5760405162461bcd60e51b81526020600482015260466024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133088184613ad4565b89511161337e5760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613389836001613ad4565b975095506001945061339b9350505050565b9193909250565b60606124d86117f2836125e8565b60606000826001600160401b038111156133cc576133cc6135d6565b6040519080825280601f01601f1916602001820160405280156133f6576020820181803683370190505b50905082600003613408579050611823565b60006134148587613ad4565b90506020820160005b8581101561343557828101518282015260200161341d565b85811115613444576000868301525b50919695505050505050565b60606124d88260200151600084600001516133b0565b60608182601f01101561348b5760405162461bcd60e51b815260040161042090613c9c565b8282840110156134ad5760405162461bcd60e51b815260040161042090613c9c565b818301845110156126b55760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b038116811461350b57600080fd5b919050565b60006020828403121561352257600080fd5b611823826134f4565b60006020828403121561353d57600080fd5b813563ffffffff8116811461182357600080fd5b60008083601f84011261356357600080fd5b5081356001600160401b0381111561357a57600080fd5b602083019150836020828501011115610c5e57600080fd5b60008083601f8401126135a457600080fd5b5081356001600160401b038111156135bb57600080fd5b6020830191508360208260051b8501011115610c5e57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613614576136146135d6565b604052919050565b600082601f83011261362d57600080fd5b81356001600160401b03811115613646576136466135d6565b613659601f8201601f19166020016135ec565b81815284602083860101111561366e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156136ac57600080fd5b6001600160401b03808d3511156136c257600080fd5b6136cf8e8e358f01613551565b909c509a5060208d01358110156136e557600080fd5b6136f58e60208f01358f01613551565b909a50985060408d013581101561370b57600080fd5b61371b8e60408f01358f01613592565b909850965060608d0135955060808d013581101561373857600080fd5b6137488e60808f01358f01613592565b909550935060a08d013581101561375e57600080fd5b5061376f8d60a08e01358e0161361c565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561379a57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106137d957634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156137fa57600080fd5b613803886134f4565b965060208801356001600160401b038082111561381f57600080fd5b61382b8b838c01613551565b909850965060408a013591508082111561384457600080fd5b6138508b838c01613592565b909650945060608a013591508082111561386957600080fd5b506138768a828b01613592565b989b979a50959850939692959293505050565b8015158114610d9457600080fd5b600080600080600060a086880312156138af57600080fd5b853561ffff811681146138c157600080fd5b94506138cf602087016134f4565b93506040860135925060608601356001600160401b038111156138f157600080fd5b6138fd8882890161361c565b925050608086013561390e81613889565b809150509295509295909350565b6000806040838503121561392f57600080fd5b613938836134f4565b9150613946602084016134f4565b90509250929050565b60006020828403121561396157600080fd5b5051919050565b60006001600160401b0380841115613982576139826135d6565b8360051b60206139938183016135ec565b8681529185019181810190368411156139ab57600080fd5b865b848110156139df578035868111156139c55760008081fd5b6139d136828b0161361c565b8452509183019183016139ad565b50979650505050505050565b60005b83811015613a065781810151838201526020016139ee565b50506000910152565b60008151808452613a278160208601602086016139eb565b601f01601f19169290920160200192915050565b604081526000613a4e6040830185613a0f565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613a8157600080fd5b815161182381613889565b634e487b7160e01b600052601160045260246000fd5b818103818111156124d8576124d8613a8c565b6000816000190483118215151615613acf57613acf613a8c565b500290565b808201808211156124d8576124d8613a8c565b6001600160401b03828116828216039080821115613b0757613b07613a8c565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082613b3357613b33613b0e565b500690565b600082613b4757613b47613b0e565b500490565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b03831660208201526060604082018190526000906118bd90830184613a0f565b60008251613ba48184602087016139eb565b9190910192915050565b600060208284031215613bc057600080fd5b81516001600160e01b03198116811461182357600080fd5b600060ff831680613beb57613beb613b0e565b8060ff84160691505092915050565b60ff82811682821603908111156124d8576124d8613a8c565b600060018201613c2557613c25613a8c565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613cff578160001904821115613ce557613ce5613a8c565b80851615613cf257918102915b93841c9390800290613cc9565b509250929050565b600082613d16575060016124d8565b81613d23575060006124d8565b8160018114613d395760028114613d4357613d5f565b60019150506124d8565b60ff841115613d5457613d54613a8c565b50506001821b6124d8565b5060208310610133831016604e8410600b8410161715613d82575081810a6124d8565b613d8c8383613cc4565b8060001904821115613da057613da0613a8c565b029392505050565b60006118238383613d0756fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220ffef3fe749371bc9cd6e39e07a20cc763031009832510c7d1e9d1a99c1483f0c64736f6c63430008100033", - "sourceMap": "399:626:6:-:0;;;510:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:8;:20;;-1:-1:-1;;;;;569:20:6;;;-1:-1:-1;;;;;;569:20:6;;;;;;;599:7;:18;;;;;;;;;;;399:626;;14:177:145;93:13;;-1:-1:-1;;;;;135:31:145;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;:::-;399:626:6;;;;;;", - "linkReferences": {} + "object": "0x60806040523480156200001157600080fd5b5060405162003fae38038062003fae833981016040819052620000349162000083565b606580546001600160a01b039384166001600160a01b03199182161790915560668054929093169116179055620000bb565b80516001600160a01b03811681146200007e57600080fd5b919050565b600080604083850312156200009757600080fd5b620000a28362000066565b9150620000b26020840162000066565b90509250929050565b613ee380620000cb6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b6101256101133660046135e9565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b610146366004613604565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e610179366004613764565b6102f7565b005b6101a361018e366004613861565b60076020526000908152604090205460ff1681565b60405161012f9190613890565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f2366004613604565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d610233366004613604565b6004602052600090815260409020546001600160a01b031681565b61017e61025c3660046138b8565b6105ca565b61012561026f366004613861565b60096020526000908152604090205481565b61017e6108ed565b61029c610297366004613861565b610906565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613970565b610940565b610125607881565b6102ff6109a7565b60008061030c8b8b610a00565b9150915061031d8260400151610c6a565b61032a8260400151610d9c565b6000808e8e81019061033c91906139f5565b9150915061034e828560400151610df8565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd9190613a28565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104728b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890611031565b9050806104c15760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105268787906104d79190613a41565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026112ad565b905081811461056f5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105b182828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166092505050565b50506105bd6001603355565b5050505050505050505050565b6105d26109a7565b6000806105df8888610a00565b915091506105f08260400151610c6a565b6105fd8260400151610d9c565b61060b898360400151610df8565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107c25760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107219190613a28565b905060008190036107745760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a8610781898b613a41565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611807565b600083815260096020526040902081905592506107d49050565b60008181526009602052604090205491505b6000846020015160016040516020016108029291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084a82856108458a8c613a41565b611903565b90508481146108935760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d882828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166092505050565b50506108e46001603355565b50505050505050565b6065546001600160a01b0316331461090457600080fd5b565b6003818154811061091657600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095757600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610998929190613b14565b60405180910390a45050505050565b6002603354036109f95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7d85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061199f92505050565b905060008585604051610a91929190613b38565b60405190819003902090506000808281526007602052604090205460ff166002811115610ac057610ac061387a565b14610b0d5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b555760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9f5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610bea575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c5d5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610cd05760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190613b48565b610d995760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d995760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e5e5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb9190613a28565b600003610f3a5760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190613a28565b610fce9042613b7b565b9050607881101561102c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af415801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110af9190613a28565b9050600081856001600160401b0316106110ca57601b6110cd565b60075b60ff169050600082866001600160401b031610611109576120006110fa846001600160401b038916613b7b565b6111049190613ba4565b61111e565b61111e6120006001600160401b038816613ba4565b90506000866001600160401b0316886001600160401b03160361115d5750600b61114a81610200613bb8565b61115690610183613bd7565b9050611292565b61200061116a888a613bea565b6001600160401b0316116111cc5750600b611186816020613bb8565b611191906006613bd7565b90506111a86120006001600160401b038916613c11565b6111b461200083613bb8565b6111be9190613bd7565b905061114a81610200613bb8565b876001600160401b0316876001600160401b0316101561124a5750600b826111f5826020613bb8565b6111ff9190613bd7565b905061120c816002613bb8565b611217906000613bd7565b905081611228630100000083613bb8565b6112329190613bd7565b905061123f816002613bb8565b611191906001613bd7565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f7400006044820152606401610420565b61129e8b828c8c611a64565b9b9a5050505050505050505050565b6000806112bb878a8a611a7e565b90506000816000815181106112d2576112d2613c25565b01602001516001600160f81b03191690506000600160f81b8214806113045750600160f91b6001600160f81b03198316145b1561131157506001611376565b600360fe1b6001600160f81b031983161061132e57506000611376565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516113989190613b7b565b81526020016113a78585613bd7565b9052905060006113b68261231e565b905080516004146114025760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b60006114278260038151811061141a5761141a613c25565b602002602001015161231e565b905080518c106114795760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b6000611490828e8151811061141a5761141a613c25565b905080516003146114ee5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b60006115138260008151811061150657611506613c25565b6020026020010151612543565b90508c6001600160a01b0316816001600160a01b0316146115865760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b600061159e8360018151811061141a5761141a613c25565b90508c6115c4826000815181106115b7576115b7613c25565b60200260200101516125b7565b146116275760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b611649818d8151811061163c5761163c613c25565b60200260200101516125be565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161168f93929190613c3b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116e19190613c6b565b6000604051808303816000865af19150503d806000811461171e576040519150601f19603f3d011682016040523d82523d6000602084013e611723565b606091505b50805191955093506000925060200390506117655760008280602001905181019061174e9190613c87565b6001600160e01b031916631dee306b60e11b149150505b82801561176f5750805b15611792576000858152600760205260409020805460ff191660021790556117ac565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe894787876040516117f7929190613b14565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006118718260405160200161185b91815260200190565b6040516020818303038152906040528786611a7e565b905060008151116118bd5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b60006118d06118cb836126c1565b61231e565b905080516004146118e057600080fd5b6118f6816002815181106115b7576115b7613c25565b93505050505b9392505050565b6000806119328560405160200161191c91815260200190565b6040516020818303038152906040528486611a7e565b905060008151116119855760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b611996611991826126c1565b6125b7565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091611a53918a9190611a4e908290613b7b565b612714565b60c088015250949695505050505050565b600080611a72868686612800565b90921495945050505050565b60606000845111611ac95760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b6000611ad48461298f565b90506000611ae186612a7d565b9050600084604051602001611af891815260200190565b60405160208183030381529060405290506000805b84518110156122c7576000858281518110611b2a57611b2a613c25565b602002602001015190508451831115611b9c5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611c3b5780518051602091820120604051611bea92611bc492910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611c365760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611d31565b805151602011611cc15780518051602091820120604051611c6592611bc492910190815260200190565b611c365760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611d315760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611d3d60106001613bd7565b81602001515103611eea5784518303611e82576000611d798260200151601081518110611d6c57611d6c613c25565b6020026020010151612b97565b90506000815111611df25760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611e009190613b7b565b8314611e745760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b96506118fc95505050505050565b6000858481518110611e9657611e96613c25565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611ec157611ec1613c25565b60200260200101519050611ed481612cba565b9550611ee1600186613bd7565b945050506122b4565b60028160200151510361225b576000611f0282612cdf565b9050600081600081518110611f1957611f19613c25565b016020015160f81c90506000611f30600283613cb1565b611f3b906002613cd3565b90506000611f4c848360ff16612d03565b90506000611f5a8a89612d03565b90506000611f688383612d39565b905080835114611fe05760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611ff5575060ff85166003145b1561219b57808251146120705760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b600061208c8860200151600181518110611d6c57611d6c613c25565b905060008151116121055760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d516121139190613b7b565b89146121875760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c506118fc9b505050505050505050505050565b60ff851615806121ae575060ff85166001145b156121ed576121da87602001516001815181106121cd576121cd613c25565b6020026020010151612cba565b99506121e6818a613bd7565b9850612250565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b5050505050506122b4565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b50806122bf81613cec565b915050611b0d565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b6060600080600061232e85612db8565b9194509250905060018160018111156123495761234961387a565b146123bc5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516123c88385613bd7565b146124305760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816124495790505090506000845b8751811015612537576000806124bc6040518060400160405280858d600001516124a09190613b7b565b8152602001858d602001516124b59190613bd7565b9052612db8565b5091509150604051806040016040528083836124d89190613bd7565b8152602001848c602001516124ed9190613bd7565b81525085858151811061250257612502613c25565b6020908102919091010152612518600185613bd7565b93506125248183613bd7565b61252e9084613bd7565b92505050612476565b50815295945050505050565b805160009060010361255757506000919050565b81516015146125a85760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b6125b1826125b7565b92915050565b60006125b1825b60006021826000015111156126155760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600080600061262385612db8565b91945092509050600081600181111561263e5761263e61387a565b1461268b5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600083866020015161269d9190613bd7565b805190915060208410156126b75760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126f65760405162461bcd60e51b815260040161042090613d05565b50604080518082019091528151815260209182019181019190915290565b60608161272281601f613bd7565b10156127405760405162461bcd60e51b815260040161042090613d75565b61274a8284613bd7565b8451101561278e5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b6060821580156127ad57604051915060008252602082016040526127f7565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127e65780518352602092830192016127ce565b5050858452601f01601f1916604052505b50949350505050565b600082825160016128119190613bd7565b61281c906002613e81565b1161282657600080fd5b8360005b846001146127f75761283d600286613c11565b6001036128dc57600284828151811061285857612858613c25565b60200260200101518360405160200161287b929190918252602082015260400190565b60408051601f198184030181529082905261289591613c6b565b602060405180830381855afa1580156128b2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128d59190613a28565b9150612970565b6002828583815181106128f1576128f1613c25565b6020026020010151604051602001612913929190918252602082015260400190565b60408051601f198184030181529082905261292d91613c6b565b602060405180830381855afa15801561294a573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061296d9190613a28565b91505b61297b600286613ba4565b94508061298781613cec565b91505061282a565b80516060906000816001600160401b038111156129ae576129ae6136af565b6040519080825280602002602001820160405280156129f357816020015b60408051808201909152606080825260208201528152602001906001900390816129cc5790505b50905060005b82811015612a75576040518060400160405280868381518110612a1e57612a1e613c25565b60200260200101518152602001612a4d878481518110612a4057612a40613c25565b602002602001015161347b565b815250828281518110612a6257612a62613c25565b60209081029190910101526001016129f9565b509392505050565b80516060906000612a8f826002613bb8565b6001600160401b03811115612aa657612aa66136af565b6040519080825280601f01601f191660200182016040528015612ad0576020820181803683370190505b5090506000805b83811015612b8d57858181518110612af157612af1613c25565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612b19836002613bb8565b81518110612b2957612b29613c25565b60200101906001600160f81b031916908160001a905350600f60f81b821683612b53836002613bb8565b612b5e906001613bd7565b81518110612b6e57612b6e613c25565b60200101906001600160f81b031916908160001a905350600101612ad7565b5090949350505050565b60606000806000612ba785612db8565b919450925090506000816001811115612bc257612bc261387a565b14612c355760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612c3f8284613bd7565b855114612cab5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b61199685602001518484613489565b60606020826000015110612cd657612cd182612b97565b6125b1565b6125b182613529565b60606125b1612cfe8360200151600081518110611d6c57611d6c613c25565b612a7d565b606082518210612d2257506040805160208101909152600081526125b1565b6118fc8383848651612d349190613b7b565b61353f565b60008060008351855110612d4e578351612d51565b84515b90505b8082108015612da85750838281518110612d7057612d70613c25565b602001015160f81c60f81b6001600160f81b031916858381518110612d9757612d97613c25565b01602001516001600160f81b031916145b15612a7557816001019150612d54565b600080600080846000015111612de05760405162461bcd60e51b815260040161042090613d05565b6020840151805160001a607f8111612e05576000600160009450945094505050613474565b60b78111612f62576000612e1a608083613b7b565b905080876000015111612e9a5760405162461bcd60e51b815260206004820152604e6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612ec75750600160ff1b6001600160f81b0319821610155b612f4f5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b5060019550935060009250613474915050565b60bf81116131a3576000612f7760b783613b7b565b905080876000015111612ffa5760405162461bcd60e51b81526020600482015260516024820152600080516020613e8e83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b03191660008190036130815760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c603781116131045760405162461bcd60e51b81526020600482015260486024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b61310e8184613bd7565b8951116131865760405162461bcd60e51b815260206004820152604c6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b613191836001613bd7565b97509550600094506134749350505050565b60f781116132455760006131b860c083613b7b565b9050808760000151116132345760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b600195509350849250613474915050565b600061325260f783613b7b565b9050808760000151116132d15760405162461bcd60e51b815260206004820152604d6024820152600080516020613e8e83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b03191660008190036133565760405162461bcd60e51b81526020600482015260486024820152600080516020613e8e83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116133d75760405162461bcd60e51b81526020600482015260466024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133e18184613bd7565b8951116134575760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613462836001613bd7565b97509550600194506134749350505050565b9193909250565b60606125b16118cb836126c1565b60606000826001600160401b038111156134a5576134a56136af565b6040519080825280601f01601f1916602001820160405280156134cf576020820181803683370190505b509050826000036134e15790506118fc565b60006134ed8587613bd7565b90506020820160005b8581101561350e5782810151828201526020016134f6565b8581111561351d576000868301525b50919695505050505050565b60606125b1826020015160008460000151613489565b60608182601f0110156135645760405162461bcd60e51b815260040161042090613d75565b8282840110156135865760405162461bcd60e51b815260040161042090613d75565b8183018451101561278e5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b03811681146135e457600080fd5b919050565b6000602082840312156135fb57600080fd5b6118fc826135cd565b60006020828403121561361657600080fd5b813563ffffffff811681146118fc57600080fd5b60008083601f84011261363c57600080fd5b5081356001600160401b0381111561365357600080fd5b602083019150836020828501011115610c6357600080fd5b60008083601f84011261367d57600080fd5b5081356001600160401b0381111561369457600080fd5b6020830191508360208260051b8501011115610c6357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156136ed576136ed6136af565b604052919050565b600082601f83011261370657600080fd5b81356001600160401b0381111561371f5761371f6136af565b613732601f8201601f19166020016136c5565b81815284602083860101111561374757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561378557600080fd5b6001600160401b03808d35111561379b57600080fd5b6137a88e8e358f0161362a565b909c509a5060208d01358110156137be57600080fd5b6137ce8e60208f01358f0161362a565b909a50985060408d01358110156137e457600080fd5b6137f48e60408f01358f0161366b565b909850965060608d0135955060808d013581101561381157600080fd5b6138218e60808f01358f0161366b565b909550935060a08d013581101561383757600080fd5b506138488d60a08e01358e016136f5565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561387357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106138b257634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156138d357600080fd5b6138dc886135cd565b965060208801356001600160401b03808211156138f857600080fd5b6139048b838c0161362a565b909850965060408a013591508082111561391d57600080fd5b6139298b838c0161366b565b909650945060608a013591508082111561394257600080fd5b5061394f8a828b0161366b565b989b979a50959850939692959293505050565b8015158114610d9957600080fd5b600080600080600060a0868803121561398857600080fd5b853561ffff8116811461399a57600080fd5b94506139a8602087016135cd565b93506040860135925060608601356001600160401b038111156139ca57600080fd5b6139d6888289016136f5565b92505060808601356139e781613962565b809150509295509295909350565b60008060408385031215613a0857600080fd5b613a11836135cd565b9150613a1f602084016135cd565b90509250929050565b600060208284031215613a3a57600080fd5b5051919050565b60006001600160401b0380841115613a5b57613a5b6136af565b8360051b6020613a6c8183016136c5565b868152918501918181019036841115613a8457600080fd5b865b84811015613ab857803586811115613a9e5760008081fd5b613aaa36828b016136f5565b845250918301918301613a86565b50979650505050505050565b60005b83811015613adf578181015183820152602001613ac7565b50506000910152565b60008151808452613b00816020860160208601613ac4565b601f01601f19169290920160200192915050565b604081526000613b276040830185613ae8565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613b5a57600080fd5b81516118fc81613962565b634e487b7160e01b600052601160045260246000fd5b818103818111156125b1576125b1613b65565b634e487b7160e01b600052601260045260246000fd5b600082613bb357613bb3613b8e565b500490565b6000816000190483118215151615613bd257613bd2613b65565b500290565b808201808211156125b1576125b1613b65565b6001600160401b03828116828216039080821115613c0a57613c0a613b65565b5092915050565b600082613c2057613c20613b8e565b500690565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061199690830184613ae8565b60008251613c7d818460208701613ac4565b9190910192915050565b600060208284031215613c9957600080fd5b81516001600160e01b0319811681146118fc57600080fd5b600060ff831680613cc457613cc4613b8e565b8060ff84160691505092915050565b60ff82811682821603908111156125b1576125b1613b65565b600060018201613cfe57613cfe613b65565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613dd8578160001904821115613dbe57613dbe613b65565b80851615613dcb57918102915b93841c9390800290613da2565b509250929050565b600082613def575060016125b1565b81613dfc575060006125b1565b8160018114613e125760028114613e1c57613e38565b60019150506125b1565b60ff841115613e2d57613e2d613b65565b50506001821b6125b1565b5060208310610133831016604e8410600b8410161715613e5b575081810a6125b1565b613e658383613d9d565b8060001904821115613e7957613e79613b65565b029392505050565b60006118fc8383613de056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212204d4990e12509e4c48efc701e947e64e5e407fb367cf36719c09908aab28dc2d964736f6c63430008100033", + "sourceMap": "399:626:6:-:0;;;510:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:8;:20;;-1:-1:-1;;;;;569:20:6;;;-1:-1:-1;;;;;;569:20:6;;;;;;;599:7;:18;;;;;;;;;;;399:626;;14:177:146;93:13;;-1:-1:-1;;;;;135:31:146;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;:::-;399:626:6;;;;;;", + "linkReferences": { + "src/libraries/BeaconChainForks.sol": { + "BeaconChainForks": [ + { + "start": 4380, + "length": 20 + } + ] + } + } }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b610125610113366004613510565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b61014636600461352b565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e61017936600461368b565b6102f7565b005b6101a361018e366004613788565b60076020526000908152604090205460ff1681565b60405161012f91906137b7565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f236600461352b565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d61023336600461352b565b6004602052600090815260409020546001600160a01b031681565b61017e61025c3660046137df565b6105c5565b61012561026f366004613788565b60096020526000908152604090205481565b61017e6108e8565b61029c610297366004613788565b610901565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613897565b61093b565b610125607881565b6102ff6109a2565b60008061030c8b8b6109fb565b9150915061031d8260400151610c65565b61032a8260400151610d97565b6000808e8e81019061033c919061391c565b9150915061034e828560400151610df3565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd919061394f565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b600061046d8b8e8e8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061102c565b9050806104bc5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105218787906104d29190613968565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026111d4565b905081811461056a5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105ac82828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061158792505050565b50506105b86001603355565b5050505050505050505050565b6105cd6109a2565b6000806105da88886109fb565b915091506105eb8260400151610c65565b6105f88260400151610d97565b610606898360400151610df3565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107bd5760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061394f565b9050600081900361076f5760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a361077c898b613968565b60408088015163ffffffff166000908152600560205220546001600160a01b03168361172e565b600083815260096020526040902081905592506107cf9050565b60008181526009602052604090205491505b6000846020015160016040516020016107fd9291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084582856108408a8c613968565b61182a565b905084811461088e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d382828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061158792505050565b50506108df6001603355565b50505050505050565b6065546001600160a01b031633146108ff57600080fd5b565b6003818154811061091157600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095257600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610993929190613a3b565b60405180910390a45050505050565b6002603354036109f45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118c692505050565b905060008585604051610a8c929190613a5f565b60405190819003902090506000808281526007602052604090205460ff166002811115610abb57610abb6137a1565b14610b085760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b505760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9a5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610be5575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c585760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610ccb5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d489190613a6f565b610d945760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d945760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e595760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee6919061394f565b600003610f355760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbf919061394f565b610fc99042613aa2565b905060788110156110275760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b600080826001600160401b0316846001600160401b03160361106a5750600b61105781610200613ab5565b61106390610183613ad4565b90506111bd565b6120006110778486613ae7565b6001600160401b0316116110d95750600b611093816020613ab5565b61109e906006613ad4565b90506110b56120006001600160401b038516613b24565b6110c161200083613ab5565b6110cb9190613ad4565b905061105781610200613ab5565b836001600160401b0316836001600160401b0316101561116b5750600b611101816020613ab5565b61110c906007613ad4565b9050611119816002613ab5565b611124906000613ad4565b905061113b6120006001600160401b038516613b38565b611149630100000083613ab5565b6111539190613ad4565b9050611160816002613ab5565b61109e906001613ad4565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b6064820152608401610420565b6111c98782888861198b565b979650505050505050565b6000806111e2878a8a6119a5565b90506000816000815181106111f9576111f9613b4c565b01602001516001600160f81b03191690506000600160f81b82148061122b5750600160f91b6001600160f81b03198316145b156112385750600161129d565b600360fe1b6001600160f81b03198316106112555750600061129d565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516112bf9190613aa2565b81526020016112ce8585613ad4565b9052905060006112dd82612245565b905080516004146113295760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b600061134e8260038151811061134157611341613b4c565b6020026020010151612245565b905080518c106113a05760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b60006113b7828e8151811061134157611341613b4c565b905080516003146114155760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b600061143a8260008151811061142d5761142d613b4c565b602002602001015161246a565b90508c6001600160a01b0316816001600160a01b0316146114ad5760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b60006114c58360018151811061134157611341613b4c565b90508c6114eb826000815181106114de576114de613b4c565b60200260200101516124de565b1461154e5760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b611570818d8151811061156357611563613b4c565b60200260200101516124e5565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c001516040516024016115b693929190613b62565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116089190613b92565b6000604051808303816000865af19150503d8060008114611645576040519150601f19603f3d011682016040523d82523d6000602084013e61164a565b606091505b508051919550935060009250602003905061168c576000828060200190518101906116759190613bae565b6001600160e01b031916631dee306b60e11b149150505b8280156116965750805b156116b9576000858152600760205260409020805460ff191660021790556116d3565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe8947878760405161171e929190613a3b565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117988260405160200161178291815260200190565b60405160208183030381529060405287866119a5565b905060008151116117e45760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b60006117f76117f2836125e8565b612245565b9050805160041461180757600080fd5b61181d816002815181106114de576114de613b4c565b93505050505b9392505050565b6000806118598560405160200161184391815260200190565b60405160208183030381529060405284866119a5565b905060008151116118ac5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b6118bd6118b8826125e8565b6124de565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a088018190528851909161197a918a9190611975908290613aa2565b61263b565b60c088015250949695505050505050565b600080611999868686612727565b90921495945050505050565b606060008451116119f05760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b60006119fb846128b6565b90506000611a08866129a4565b9050600084604051602001611a1f91815260200190565b60405160208183030381529060405290506000805b84518110156121ee576000858281518110611a5157611a51613b4c565b602002602001015190508451831115611ac35760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611b625780518051602091820120604051611b1192611aeb92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b5d5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611c58565b805151602011611be85780518051602091820120604051611b8c92611aeb92910190815260200190565b611b5d5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611c585760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611c6460106001613ad4565b81602001515103611e115784518303611da9576000611ca08260200151601081518110611c9357611c93613b4c565b6020026020010151612abe565b90506000815111611d195760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611d279190613aa2565b8314611d9b5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b965061182395505050505050565b6000858481518110611dbd57611dbd613b4c565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611de857611de8613b4c565b60200260200101519050611dfb81612be1565b9550611e08600186613ad4565b945050506121db565b600281602001515103612182576000611e2982612c06565b9050600081600081518110611e4057611e40613b4c565b016020015160f81c90506000611e57600283613bd8565b611e62906002613bfa565b90506000611e73848360ff16612c2a565b90506000611e818a89612c2a565b90506000611e8f8383612c60565b905080835114611f075760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611f1c575060ff85166003145b156120c25780825114611f975760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b6000611fb38860200151600181518110611c9357611c93613b4c565b9050600081511161202c5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d5161203a9190613aa2565b89146120ae5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c506118239b505050505050505050505050565b60ff851615806120d5575060ff85166001145b156121145761210187602001516001815181106120f4576120f4613b4c565b6020026020010151612be1565b995061210d818a613ad4565b9850612177565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b5050505050506121db565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b50806121e681613c13565b915050611a34565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b6060600080600061225585612cdf565b919450925090506001816001811115612270576122706137a1565b146122e35760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516122ef8385613ad4565b146123575760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123705790505090506000845b875181101561245e576000806123e36040518060400160405280858d600001516123c79190613aa2565b8152602001858d602001516123dc9190613ad4565b9052612cdf565b5091509150604051806040016040528083836123ff9190613ad4565b8152602001848c602001516124149190613ad4565b81525085858151811061242957612429613b4c565b602090810291909101015261243f600185613ad4565b935061244b8183613ad4565b6124559084613ad4565b9250505061239d565b50815295945050505050565b805160009060010361247e57506000919050565b81516015146124cf5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b6124d8826124de565b92915050565b60006124d8825b600060218260000151111561253c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600080600061254a85612cdf565b919450925090506000816001811115612565576125656137a1565b146125b25760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b60008386602001516125c49190613ad4565b805190915060208410156125de5760208490036101000a90045b9695505050505050565b6040805180820190915260008082526020820152600082511161261d5760405162461bcd60e51b815260040161042090613c2c565b50604080518082019091528151815260209182019181019190915290565b60608161264981601f613ad4565b10156126675760405162461bcd60e51b815260040161042090613c9c565b6126718284613ad4565b845110156126b55760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b6060821580156126d4576040519150600082526020820160405261271e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561270d5780518352602092830192016126f5565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127389190613ad4565b612743906002613da8565b1161274d57600080fd5b8360005b8460011461271e57612764600286613b24565b60010361280357600284828151811061277f5761277f613b4c565b6020026020010151836040516020016127a2929190918252602082015260400190565b60408051601f19818403018152908290526127bc91613b92565b602060405180830381855afa1580156127d9573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127fc919061394f565b9150612897565b60028285838151811061281857612818613b4c565b602002602001015160405160200161283a929190918252602082015260400190565b60408051601f198184030181529082905261285491613b92565b602060405180830381855afa158015612871573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612894919061394f565b91505b6128a2600286613b38565b9450806128ae81613c13565b915050612751565b80516060906000816001600160401b038111156128d5576128d56135d6565b60405190808252806020026020018201604052801561291a57816020015b60408051808201909152606080825260208201528152602001906001900390816128f35790505b50905060005b8281101561299c57604051806040016040528086838151811061294557612945613b4c565b6020026020010151815260200161297487848151811061296757612967613b4c565b60200260200101516133a2565b81525082828151811061298957612989613b4c565b6020908102919091010152600101612920565b509392505050565b805160609060006129b6826002613ab5565b6001600160401b038111156129cd576129cd6135d6565b6040519080825280601f01601f1916602001820160405280156129f7576020820181803683370190505b5090506000805b83811015612ab457858181518110612a1857612a18613b4c565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a40836002613ab5565b81518110612a5057612a50613b4c565b60200101906001600160f81b031916908160001a905350600f60f81b821683612a7a836002613ab5565b612a85906001613ad4565b81518110612a9557612a95613b4c565b60200101906001600160f81b031916908160001a9053506001016129fe565b5090949350505050565b60606000806000612ace85612cdf565b919450925090506000816001811115612ae957612ae96137a1565b14612b5c5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612b668284613ad4565b855114612bd25760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b6118bd856020015184846133b0565b60606020826000015110612bfd57612bf882612abe565b6124d8565b6124d882613450565b60606124d8612c258360200151600081518110611c9357611c93613b4c565b6129a4565b606082518210612c4957506040805160208101909152600081526124d8565b6118238383848651612c5b9190613aa2565b613466565b60008060008351855110612c75578351612c78565b84515b90505b8082108015612ccf5750838281518110612c9757612c97613b4c565b602001015160f81c60f81b6001600160f81b031916858381518110612cbe57612cbe613b4c565b01602001516001600160f81b031916145b1561299c57816001019150612c7b565b600080600080846000015111612d075760405162461bcd60e51b815260040161042090613c2c565b6020840151805160001a607f8111612d2c57600060016000945094509450505061339b565b60b78111612e89576000612d41608083613aa2565b905080876000015111612dc15760405162461bcd60e51b815260206004820152604e6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612dee5750600160ff1b6001600160f81b0319821610155b612e765760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b506001955093506000925061339b915050565b60bf81116130ca576000612e9e60b783613aa2565b905080876000015111612f215760405162461bcd60e51b81526020600482015260516024820152600080516020613db583398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b0319166000819003612fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c6037811161302b5760405162461bcd60e51b81526020600482015260486024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b6130358184613ad4565b8951116130ad5760405162461bcd60e51b815260206004820152604c6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b6130b8836001613ad4565b975095506000945061339b9350505050565b60f7811161316c5760006130df60c083613aa2565b90508087600001511161315b5760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b60019550935084925061339b915050565b600061317960f783613aa2565b9050808760000151116131f85760405162461bcd60e51b815260206004820152604d6024820152600080516020613db583398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b031916600081900361327d5760405162461bcd60e51b81526020600482015260486024820152600080516020613db583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116132fe5760405162461bcd60e51b81526020600482015260466024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133088184613ad4565b89511161337e5760405162461bcd60e51b815260206004820152604a6024820152600080516020613db583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613389836001613ad4565b975095506001945061339b9350505050565b9193909250565b60606124d86117f2836125e8565b60606000826001600160401b038111156133cc576133cc6135d6565b6040519080825280601f01601f1916602001820160405280156133f6576020820181803683370190505b50905082600003613408579050611823565b60006134148587613ad4565b90506020820160005b8581101561343557828101518282015260200161341d565b85811115613444576000868301525b50919695505050505050565b60606124d88260200151600084600001516133b0565b60608182601f01101561348b5760405162461bcd60e51b815260040161042090613c9c565b8282840110156134ad5760405162461bcd60e51b815260040161042090613c9c565b818301845110156126b55760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b038116811461350b57600080fd5b919050565b60006020828403121561352257600080fd5b611823826134f4565b60006020828403121561353d57600080fd5b813563ffffffff8116811461182357600080fd5b60008083601f84011261356357600080fd5b5081356001600160401b0381111561357a57600080fd5b602083019150836020828501011115610c5e57600080fd5b60008083601f8401126135a457600080fd5b5081356001600160401b038111156135bb57600080fd5b6020830191508360208260051b8501011115610c5e57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613614576136146135d6565b604052919050565b600082601f83011261362d57600080fd5b81356001600160401b03811115613646576136466135d6565b613659601f8201601f19166020016135ec565b81815284602083860101111561366e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156136ac57600080fd5b6001600160401b03808d3511156136c257600080fd5b6136cf8e8e358f01613551565b909c509a5060208d01358110156136e557600080fd5b6136f58e60208f01358f01613551565b909a50985060408d013581101561370b57600080fd5b61371b8e60408f01358f01613592565b909850965060608d0135955060808d013581101561373857600080fd5b6137488e60808f01358f01613592565b909550935060a08d013581101561375e57600080fd5b5061376f8d60a08e01358e0161361c565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561379a57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106137d957634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156137fa57600080fd5b613803886134f4565b965060208801356001600160401b038082111561381f57600080fd5b61382b8b838c01613551565b909850965060408a013591508082111561384457600080fd5b6138508b838c01613592565b909650945060608a013591508082111561386957600080fd5b506138768a828b01613592565b989b979a50959850939692959293505050565b8015158114610d9457600080fd5b600080600080600060a086880312156138af57600080fd5b853561ffff811681146138c157600080fd5b94506138cf602087016134f4565b93506040860135925060608601356001600160401b038111156138f157600080fd5b6138fd8882890161361c565b925050608086013561390e81613889565b809150509295509295909350565b6000806040838503121561392f57600080fd5b613938836134f4565b9150613946602084016134f4565b90509250929050565b60006020828403121561396157600080fd5b5051919050565b60006001600160401b0380841115613982576139826135d6565b8360051b60206139938183016135ec565b8681529185019181810190368411156139ab57600080fd5b865b848110156139df578035868111156139c55760008081fd5b6139d136828b0161361c565b8452509183019183016139ad565b50979650505050505050565b60005b83811015613a065781810151838201526020016139ee565b50506000910152565b60008151808452613a278160208601602086016139eb565b601f01601f19169290920160200192915050565b604081526000613a4e6040830185613a0f565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613a8157600080fd5b815161182381613889565b634e487b7160e01b600052601160045260246000fd5b818103818111156124d8576124d8613a8c565b6000816000190483118215151615613acf57613acf613a8c565b500290565b808201808211156124d8576124d8613a8c565b6001600160401b03828116828216039080821115613b0757613b07613a8c565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082613b3357613b33613b0e565b500690565b600082613b4757613b47613b0e565b500490565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b03831660208201526060604082018190526000906118bd90830184613a0f565b60008251613ba48184602087016139eb565b9190910192915050565b600060208284031215613bc057600080fd5b81516001600160e01b03198116811461182357600080fd5b600060ff831680613beb57613beb613b0e565b8060ff84160691505092915050565b60ff82811682821603908111156124d8576124d8613a8c565b600060018201613c2557613c25613a8c565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613cff578160001904821115613ce557613ce5613a8c565b80851615613cf257918102915b93841c9390800290613cc9565b509250929050565b600082613d16575060016124d8565b81613d23575060006124d8565b8160018114613d395760028114613d4357613d5f565b60019150506124d8565b60ff841115613d5457613d54613a8c565b50506001821b6124d8565b5060208310610133831016604e8410600b8410161715613d82575081810a6124d8565b613d8c8383613cc4565b8060001904821115613da057613da0613a8c565b029392505050565b60006118238383613d0756fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220ffef3fe749371bc9cd6e39e07a20cc763031009832510c7d1e9d1a99c1483f0c64736f6c63430008100033", - "sourceMap": "399:626:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:145;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:145;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:145;4866:1891:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:145;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:145;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:145;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:145;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;630:83:6;;;:::i;879:30:103:-;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:145;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:145;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:145;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:145;719:304:6;;;;;;:::i;:::-;;:::i;924:58:100:-;;973:9;924:58;;4866:1891;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:145;;5661:52:100;;::::1;7526:50:145::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:145;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;9330:2:145;5727:58:100::1;::::0;::::1;9312:21:145::0;9369:2;9349:18;;;9342:30;-1:-1:-1;;;9388:18:145;;;9381:51;9449:18;;5727:58:100::1;;;;;;;;;5799:12;5830:84;5853:12;5867:17;;5830:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5886:10:100;;-1:-1:-1;5898:7:100;;-1:-1:-1;5907:6:100;;-1:-1:-1;5830:22:100::1;:84::i;:::-;5799:115;;5936:7;5928:47;;;::::0;-1:-1:-1;;;5928:47:100;;9680:2:145;5928:47:100::1;::::0;::::1;9662:21:145::0;9719:2;9699:18;;;9692:30;9758:29;9738:18;;;9731:57;9805:18;;5928:47:100::1;9478:351:145::0;5928:47:100::1;5462:524;;;;6209:26;6263:320;6309:12;;6263:320;;;;;:::i;:::-;6459:21;::::0;;::::1;::::0;6446:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6343:12;;6377:17;;6416:8;;-1:-1:-1;;;;;6446:35:100::1;1151:46;1484:1;6263:24;:320::i;:::-;6209:388;;6641:11;6619:18;:33;6611:67;;;::::0;-1:-1:-1;;;6611:67:100;;10975:2:145;6611:67:100::1;::::0;::::1;10957:21:145::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:145;;;11026:51;11094:18;;6611:67:100::1;10773:345:145::0;6611:67:100::1;5996:693;6699:51;6715:7;6724:11;6737:12;;6699:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6699:15:100::1;::::0;-1:-1:-1;;;6699:51:100:i:1;:::-;5185:1572;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1891:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;11342:3:145;11320:16;;;;-1:-1:-1;;;;;;11316:43:145;2955:82:100;;::::1;11304:56:145::0;11415:3;11393:16;;;-1:-1:-1;;;;;;11389:51:145;11376:11;;;11369:72;11479:2;11475:15;-1:-1:-1;;11475:15:145;11457:12;;;11450:75;2955:82:100;;;;;;;;;11541:12:145;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:145;;3301:61:100;;::::1;7526:50:145::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:145;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;11766:2:145;3380:67:100::1;::::0;::::1;11748:21:145::0;11805:2;11785:18;;;11778:30;11844:33;11824:18;;;11817:61;11895:18;;3380:67:100::1;11564:355:145::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;12114:31:145;;;;12096:50;;12177:2;12162:18;;12155:34;12084:2;12069:18;;11924:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:145::0;3826:80:100;;;;;;;;;498:18:145;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10975:2:145;4090:31:100::1;::::0;::::1;10957:21:145::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:145;;;11026:51;11094:18;;4090:31:100::1;10773:345:145::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;630:83:6:-;697:8;;-1:-1:-1;;;;;697:8:6;683:10;:22;675:31;;;;;;630:83::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;719:304:6:-;931:7;;-1:-1:-1;;;;;931:7:6;917:10;:21;909:30;;;;;;988:8;980:6;-1:-1:-1;;;;;954:62:6;970:8;954:62;;;998:8;1008:7;954:62;;;;;;;:::i;:::-;;;;;;;;719:304;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;13235:2:145;2704:63:39;;;13217:21:145;13274:2;13254:18;;;13247:30;13313:33;13293:18;;;13286:61;13364:18;;2704:63:39;13033:355:145;2704:63:39;1830:1;2842:7;:18;2580:287::o;7985:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8106:7:100;8129:22;8154:36;8177:12;;8154:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8154:22:100;;-1:-1:-1;;;8154:36:100:i;:::-;8129:61;;8200:19;8232:12;;8222:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8290:26:100;8260;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8256:562;;8332:35;;-1:-1:-1;;;8332:35:100;;13871:2:145;8332:35:100;;;13853:21:145;13910:2;13890:18;;;13883:30;13949:27;13929:18;;;13922:55;13994:18;;8332:35:100;13669:349:145;8256:562:100;8418:13;8388:7;:26;;;:43;;;8384:434;;8447:22;;-1:-1:-1;;;8447:22:100;;14225:2:145;8447:22:100;;;14207:21:145;14264:2;14244:18;;;14237:30;-1:-1:-1;;;14283:18:145;;;14276:42;14335:18;;8447:22:100;14023:336:145;8384:434:100;8509:7;;8490:15;;8509:7;8490:26;;;8509:7;;8490:26;8486:332;;8532:24;;-1:-1:-1;;;8532:24:100;;14566:2:145;8532:24:100;;;14548:21:145;14605:2;14585:18;;;14578:30;-1:-1:-1;;;14624:18:145;;;14617:44;14678:18;;8532:24:100;14364:338:145;8486:332:100;8611:21;;;;;8598:35;;8646:1;8598:35;;;:12;:35;;;;-1:-1:-1;;;;;8598:35:100;8590:58;;:127;;-1:-1:-1;8681:21:100;;;;;8668:35;;8715:1;8668:35;;;:12;:35;;;;-1:-1:-1;;;;;8668:35:100;:49;8590:127;8573:245;;;8742:65;;-1:-1:-1;;;8742:65:100;;14909:2:145;8742:65:100;;;14891:21:145;14948:2;14928:18;;;14921:30;14987:34;14967:18;;;14960:62;15058:25;15038:18;;;15031:53;15101:19;;8742:65:100;14707:419:145;8573:245:100;8835:7;;-1:-1:-1;8844:11:100;-1:-1:-1;7985:878:100;;;;;;:::o;6843:253::-;6938:21;;;6972:1;6938:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6938:21:100;6922:81;;;;-1:-1:-1;;;6922:81:100;;15333:2:145;6922:81:100;;;15315:21:145;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:145;;;15384:54;15455:18;;6922:81:100;15131:348:145;6922:81:100;7021:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7021:34:100;;;;-1:-1:-1;;;;;7021:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7013:76;;;;-1:-1:-1;;;7013:76:100;;15936:2:145;7013:76:100;;;15918:21:145;15975:2;15955:18;;;15948:30;16014:31;15994:18;;;15987:59;16063:18;;7013:76:100;15734:353:145;7013:76:100;6843:253;:::o;7157:121::-;7232:15;;;;;;;:6;:15;;;;;;;;7231:16;7223:48;;;;-1:-1:-1;;;7223:48:100;;16294:2:145;7223:48:100;;;16276:21:145;16333:2;16313:18;;;16306:30;-1:-1:-1;;;16352:18:145;;;16345:49;16411:18;;7223:48:100;16092:343:145;7348:452:100;7450:21;;;7484:1;7450:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7450:21:100;7434:81;;;;-1:-1:-1;;;7434:81:100;;15333:2:145;7434:81:100;;;15315:21:145;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:145;;;15384:54;15455:18;;7434:81:100;15131:348:145;7434:81:100;7533:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7533:38:100;;-1:-1:-1;;;;;7544:31:145;;7533:38:100;;;7526:50:145;;;;-1:-1:-1;;;;;7533:21:100;;;;:32;;7499:18:145;;7533:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7575:1;7533:43;7525:86;;;;-1:-1:-1;;;7525:86:100;;16831:2:145;7525:86:100;;;16813:21:145;16870:2;16850:18;;;16843:30;16909:32;16889:18;;;16882:60;16959:18;;7525:86:100;16629:354:145;7525:86:100;7661:21;;;7621:19;7661:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7661:38:100;;-1:-1:-1;;;;;7544:31:145;;7661:38:100;;;7526:50:145;;;;-1:-1:-1;;;;;7661:21:100;;:32;;7499:18:145;;7661:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7643:56;;:15;:56;:::i;:::-;7621:78;;973:9;7717:11;:37;;7709:84;;;;-1:-1:-1;;;7709:84:100;;17455:2:145;7709:84:100;;;17437:21:145;17494:2;17474:18;;;17467:30;17533:34;17513:18;;;17506:62;-1:-1:-1;;;17584:18:145;;;17577:32;17626:19;;7709:84:100;17253:398:145;7709:84:100;7424:376;7348:452;;:::o;3024:1184:109:-;3230:4;3246:13;3284:6;-1:-1:-1;;;;;3273:17:109;:7;-1:-1:-1;;;;;3273:17:109;;3269:845;;-1:-1:-1;3314:5:109;3341:14;3314:5;3349:6;3341:14;:::i;:::-;:20;;3358:3;3341:20;:::i;:::-;3333:28;;3269:845;;;304:4;3382:16;3392:6;3382:7;:16;:::i;:::-;-1:-1:-1;;;;;3382:45:109;;3378:736;;-1:-1:-1;3451:5:109;3478:14;3451:5;3486:6;3478:14;:::i;:::-;:18;;3495:1;3478:18;:::i;:::-;3470:26;-1:-1:-1;3554:34:109;304:4;-1:-1:-1;;;;;3554:34:109;;;:::i;:::-;3518:33;304:4;3518:5;:33;:::i;:::-;:70;;;;:::i;:::-;3510:78;-1:-1:-1;3610:14:109;3510:78;3618:6;3610:14;:::i;3378:736::-;3660:7;-1:-1:-1;;;;;3651:16:109;:6;-1:-1:-1;;;;;3651:16:109;;3647:467;;;-1:-1:-1;3691:5:109;3718:14;3691:5;3726:6;3718:14;:::i;:::-;:18;;3735:1;3718:18;:::i;:::-;3710:26;-1:-1:-1;3758:9:109;3710:26;3766:1;3758:9;:::i;:::-;:13;;3770:1;3758:13;:::i;:::-;3750:21;-1:-1:-1;3826:34:109;304:4;-1:-1:-1;;;;;3826:34:109;;;:::i;:::-;3793:30;236:8;3793:5;:30;:::i;:::-;:67;;;;:::i;:::-;3785:75;-1:-1:-1;3882:9:109;3785:75;3890:1;3882:9;:::i;:::-;:13;;3894:1;3882:13;:::i;3647:467::-;4060:43;;-1:-1:-1;;;4060:43:109;;18723:2:145;4060:43:109;;;18705:21:145;18762:2;18742:18;;;18735:30;18801:34;18781:18;;;18774:62;-1:-1:-1;;;18852:18:145;;;18845:31;18893:19;;4060:43:109;18521:397:145;3647:467:109;4130:71;4150:12;4164:5;4171:17;4190:10;4130:19;:71::i;:::-;4123:78;3024:1184;-1:-1:-1;;;;;;;3024:1184:109:o;1420:2836:110:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:110;;-1:-1:-1;2441:14:110;-1:-1:-1;;;2469:25:110;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:110;;;2469:54;2465:236;;;-1:-1:-1;2548:1:110;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:110;;;2566:135;;-1:-1:-1;2620:1:110;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:110;;19257:2:145;2652:38:110;;;19239:21:145;19296:2;19276:18;;;19269:30;19335;19315:18;;;19308:58;19383:18;;2652:38:110;19055:352:145;2566:135:110;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:110;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:110;;19614:2:145;3233:58:110;;;19596:21:145;19653:2;19633:18;;;19626:30;-1:-1:-1;;;19672:18:145;;;19665:52;19734:18;;3233:58:110;19412:346:145;3233:58:110;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:110;;19965:2:145;3450:58:110;;;19947:21:145;20004:2;19984:18;;;19977:30;20043:25;20023:18;;;20016:53;20086:18;;3450:58:110;19763:347:145;3450:58:110;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:110;;20317:2:145;3594:70:110;;;20299:21:145;20356:2;20336:18;;;20329:30;20395:34;20375:18;;;20368:62;-1:-1:-1;;;20446:18:145;;;20439:32;20488:19;;3594:70:110;20115:398:145;3594:70:110;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:110;:15;-1:-1:-1;;;;;3811:33:110;;3803:85;;;;-1:-1:-1;;;3803:85:110;;20720:2:145;3803:85:110;;;20702:21:145;20759:2;20739:18;;;20732:30;20798:34;20778:18;;;20771:62;-1:-1:-1;;;20849:18:145;;;20842:37;20896:19;;3803:85:110;20518:403:145;3803:85:110;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:110;;21128:2:145;4057:142:110;;;21110:21:145;21167:2;21147:18;;;21140:30;21206:34;21186:18;;;21179:62;-1:-1:-1;;;21257:18:145;;;21250:43;21310:19;;4057:142:110;20926:409:145;4057:142:110;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9345:1529:100:-;9473:11;9494:17;9535:24;9602:42;;;9662:7;:21;;;9701:7;:21;;;9740:7;:12;;;9562:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9562:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9562:204:100;-1:-1:-1;;;;;;9562:204:100;;;;;;;;;;9822:26;;;;9562:204;;-1:-1:-1;9880:11:100;-1:-1:-1;;;;;9880:16:100;9897:11;9880:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10350:11:100;;9863:46;;-1:-1:-1;9863:46:100;-1:-1:-1;10306:22:100;;-1:-1:-1;10365:2:100;10350:17;;-1:-1:-1;10346:176:100;;10384:12;10411:4;10400:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10460:51:100;-1:-1:-1;;;10460:51:100;;-1:-1:-1;;10346:176:100;10536:6;:27;;;;;10546:17;10536:27;10532:210;;;10579:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10579:62:100;10608:33;10579:62;;;10532:210;;;10672:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10672:59:100;10701:30;10672:59;;;10532:210;10824:11;10809:7;:13;;;-1:-1:-1;;;;;10757:110:100;10786:7;:21;;;10757:110;;;10837:12;10851:6;10757:110;;;;;;;:::i;:::-;;;;;;;;9463:1411;;;9345:1529;;;:::o;735:581:110:-;927:33;;-1:-1:-1;;22481:2:145;22477:15;;;22473:53;927:33:110;;;22461:66:145;872:7:110;;;;22543:12:145;;927:33:110;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;22695:19:145;;22739:2;22730:12;;22566:182;1014:29:110;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:110;;22955:2:145;1072:58:110;;;22937:21:145;22994:2;22974:18;;;22967:30;-1:-1:-1;;;23013:18:145;;;23006:52;23075:18;;1072:58:110;22753:346:145;1072:58:110;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:110;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;22695:19:145;;22739:2;22730:12;;22566:182;538:26:110;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:110;;23306:2:145;601:65:110;;;23288:21:145;23345:2;23325:18;;;23318:30;23384;23364:18;;;23357:58;23432:18;;601:65:110;23104:352:145;601:65:110;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:110:o;4295:1028:107:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:107;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:107;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:107;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:107;;4295:1028;-1:-1:-1;;;;;;4295:1028:107:o;1770:281:109:-;1914:4;1934:26;1963:38;1981:4;1987:5;1994:6;1963:17;:38::i;:::-;2018:26;;;;1770:281;-1:-1:-1;;;;;1770:281:109:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;23663:2:145;3101:49:77;;;23645:21:145;23702:2;23682:18;;;23675:30;-1:-1:-1;;;23721:18:145;;;23714:51;23782:18;;3101:49:77;23461:345:145;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;22695:19:145;;22739:2;22730:12;;22566:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;24013:2:145;3636:134:77;;;23995:21:145;24052:2;24032:18;;;24025:30;24091:34;24071:18;;;24064:62;-1:-1:-1;;;24142:18:145;;;24135:44;24196:19;;3636:134:77;23811:410:145;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;22695:19:145;;;22739:2;22730:12;;22566:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;24428:2:145;3893:176:77;;;24410:21:145;24467:2;24447:18;;;24440:30;24506:31;24486:18;;;24479:59;24555:18;;3893:176:77;24226:353:145;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;22695:19:145;;;22739:2;22730:12;;22566:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;24786:2:145;4222:186:77;;;24768:21:145;24825:2;24805:18;;;24798:30;24864:34;24844:18;;;24837:62;-1:-1:-1;;;24915:18:145;;;24908:37;24962:19;;4222:186:77;24584:403:145;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;25194:2:145;4509:156:77;;;25176:21:145;25233:2;25213:18;;;25206:30;25272:34;25252:18;;;25245:62;-1:-1:-1;;;25323:18:145;;;25316:36;25369:19;;4509:156:77;24992:402:145;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;25601:2:145;5384:158:77;;;25583:21:145;25640:2;25620:18;;;25613:30;25679:34;25659:18;;;25652:62;25750:29;25730:18;;;25723:57;25797:19;;5384:158:77;25399:423:145;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;26029:2:145;5626:162:77;;;26011:21:145;26068:2;26048:18;;;26041:30;26107:34;26087:18;;;26080:62;26178:28;26158:18;;;26151:56;26224:19;;5626:162:77;25827:422:145;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;26774:2:145;7009:171:77;;;26756:21:145;26813:2;26793:18;;;26786:30;26852:34;26832:18;;;26825:62;26923:28;26903:18;;;26896:56;26969:19;;7009:171:77;26572:422:145;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;27201:2:145;7843:185:77;;;27183:21:145;27240:2;27220:18;;;27213:30;27279:34;27259:18;;;27252:62;27350:31;27330:18;;;27323:59;27399:19;;7843:185:77;26999:425:145;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;27631:2:145;8463:156:77;;;27613:21:145;27670:2;27650:18;;;27643:30;27709:34;27689:18;;;27682:62;27780:27;27760:18;;;27753:55;27825:19;;8463:156:77;27429:421:145;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;28057:2:145;8703:160:77;;;28039:21:145;28096:2;28076:18;;;28069:30;28135:34;28115:18;;;28108:62;28206:26;28186:18;;;28179:54;28250:19;;8703:160:77;27855:420:145;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;28482:2:145;9439:60:77;;;28464:21:145;28521:2;28501:18;;;28494:30;28560:34;28540:18;;;28533:62;-1:-1:-1;;;28611:18:145;;;28604:48;28669:19;;9439:60:77;28280:414:145;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;28901:2:145;9556:50:77;;;28883:21:145;28940:2;28920:18;;;28913:30;28979:34;28959:18;;;28952:62;-1:-1:-1;;;29030:18:145;;;29023:38;29078:19;;9556:50:77;28699:404:145;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;29450:2:145;9641:47:77;;;29432:21:145;29489:2;29469:18;;;29462:30;29528:34;29508:18;;;29501:62;-1:-1:-1;;;29579:18:145;;;29572:35;29624:19;;9641:47:77;29248:401:145;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;29856:2:145;2161:136:75;;;29838:21:145;29895:2;29875:18;;;29868:30;29934:34;29914:18;;;29907:62;30005:26;29985:18;;;29978:54;30049:19;;2161:136:75;29654:420:145;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;30281:2:145;2308:134:75;;;30263:21:145;30320:2;30300:18;;;30293:30;30359:34;30339:18;;;30332:62;-1:-1:-1;;;30410:18:145;;;30403:48;30468:19;;2308:134:75;30079:414:145;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;30700:2:145;12579:55:75;;;30682:21:145;30739:2;30719:18;;;30712:30;30778:28;30758:18;;;30751:56;30824:18;;12579:55:75;30498:350:145;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;31055:2:145;11438:55:75;;;31037:21:145;31094:2;31074:18;;;31067:30;31133:28;31113:18;;;31106:56;31179:18;;11438:55:75;30853:350:145;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;31055:2:145;11598:72:75;;;31037:21:145;31094:2;31074:18;;;31067:30;31133:28;31113:18;;;31106:56;31179:18;;11598:72:75;30853:350:145;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:107:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:107;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:107;;32236:2:145;409:63:107;;;32218:21:145;32275:2;32255:18;;;32248:30;-1:-1:-1;;;32294:18:145;;;32287:47;32351:18;;409:63:107;32034:341:145;409:63:107;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:107;;;2803:2;2786:11;-1:-1:-1;;2782:25:107;2776:4;2769:39;-1:-1:-1;617:2736:107;-1:-1:-1;3380:9:107;205:3191;-1:-1:-1;;;;205:3191:107:o;1213:551:109:-;1341:7;1399:5;1378:6;:13;1394:1;1378:17;;;;:::i;:::-;1372:24;;:1;:24;:::i;:::-;:32;1364:41;;;;;;1431:4;1415:13;1468:268;1475:5;1484:1;1475:10;1468:268;;1505:9;1513:1;1505:5;:9;:::i;:::-;1518:1;1505:14;1501:184;;1547:38;1567:6;1574:1;1567:9;;;;;;;;:::i;:::-;;;;;;;1578:5;1554:30;;;;;;;;33911:19:145;;;33955:2;33946:12;;33939:28;33992:2;33983:12;;33754:247;1554:30:109;;;;-1:-1:-1;;1554:30:109;;;;;;;;;;1547:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1539:46;;1501:184;;;1632:38;1652:5;1659:6;1666:1;1659:9;;;;;;;;:::i;:::-;;;;;;;1639:30;;;;;;;;33911:19:145;;;33955:2;33946:12;;33939:28;33992:2;33983:12;;33754:247;1639:30:109;;;;-1:-1:-1;;1639:30:109;;;;;;;;;;1632:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1624:46;;1501:184;1698:10;1707:1;1698:10;;:::i;:::-;;-1:-1:-1;1722:3:109;;;;:::i;:::-;;;;1468:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;34208:2:145;4505:137:75;;;34190:21:145;34247:2;34227:18;;;34220:30;34286:34;34266:18;;;34259:62;34357:27;34337:18;;;34330:55;34402:19;;4505:137:75;34006:421:145;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;34634:2:145;4653:136:75;;;34616:21:145;34673:2;34653:18;;;34646:30;34712:34;34692:18;;;34685:62;-1:-1:-1;;;34763:18:145;;;34756:50;34823:19;;4653:136:75;34432:416:145;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;35055:2:145;6699:156:75;;;35037:21:145;35094:2;35074:18;;;35067:30;-1:-1:-1;;;;;;;;;;;35113:18:145;;;35106:62;35204:34;35184:18;;;35177:62;-1:-1:-1;;;35255:19:145;;;35248:45;35310:19;;6699:156:75;34853:482:145;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;35542:2:145;7025:177:75;;;35524:21:145;35581:2;35561:18;;;35554:30;35620:34;35600:18;;;35593:62;35691:34;35671:18;;;35664:62;-1:-1:-1;;;35742:19:145;;;35735:44;35796:19;;7025:177:75;35340:481:145;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;36028:2:145;7387:164:75;;;36010:21:145;36067:2;36047:18;;;36040:30;-1:-1:-1;;;;;;;;;;;36086:18:145;;;36079:62;36177:34;36157:18;;;36150:62;-1:-1:-1;;;36228:19:145;;;36221:48;36286:19;;7387:164:75;35826:485:145;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;36518:2:145;7721:159:75;;;36500:21:145;36557:2;36537:18;;;36530:30;-1:-1:-1;;;;;;;;;;;36576:18:145;;;36569:62;36667:34;36647:18;;;36640:62;-1:-1:-1;;;36718:19:145;;;36711:41;36769:19;;7721:159:75;36316:478:145;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;37001:2:145;8042:142:75;;;36983:21:145;37040:2;37020:18;;;37013:30;-1:-1:-1;;;;;;;;;;;37059:18:145;;;37052:62;37150:34;37130:18;;;37123:62;-1:-1:-1;;;37201:19:145;;;37194:39;37250:19;;8042:142:75;36799:476:145;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;37482:2:145;8199:168:75;;;37464:21:145;37521:2;37501:18;;;37494:30;-1:-1:-1;;;;;;;;;;;37540:18:145;;;37533:62;37631:34;37611:18;;;37604:62;-1:-1:-1;;;37682:19:145;;;37675:43;37735:19;;8199:168:75;37280:480:145;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;37967:2:145;8617:153:75;;;37949:21:145;38006:2;37986:18;;;37979:30;-1:-1:-1;;;;;;;;;;;38025:18:145;;;38018:62;38116:34;38096:18;;;38089:62;-1:-1:-1;;;38167:19:145;;;38160:41;38218:19;;8617:153:75;37765:478:145;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;38450:2:145;8935:161:75;;;38432:21:145;38489:2;38469:18;;;38462:30;-1:-1:-1;;;;;;;;;;;38508:18:145;;;38501:62;38599:34;38579:18;;;38572:62;-1:-1:-1;;;38650:19:145;;;38643:44;38704:19;;8935:161:75;38248:481:145;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;38936:2:145;9266:157:75;;;38918:21:145;38975:2;38955:18;;;38948:30;-1:-1:-1;;;;;;;;;;;38994:18:145;;;38987:62;39085:34;39065:18;;;39058:62;-1:-1:-1;;;39136:19:145;;;39129:39;39185:19;;9266:157:75;38734:476:145;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;39417:2:145;9588:141:75;;;39399:21:145;39456:2;39436:18;;;39429:30;-1:-1:-1;;;;;;;;;;;39475:18:145;;;39468:62;39566:34;39546:18;;;39539:62;-1:-1:-1;;;39617:19:145;;;39610:37;39664:19;;9588:141:75;39215:474:145;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;39896:2:145;9744:168:75;;;39878:21:145;39935:2;39915:18;;;39908:30;-1:-1:-1;;;;;;;;;;;39954:18:145;;;39947:62;40045:34;40025:18;;;40018:62;-1:-1:-1;;;40096:19:145;;;40089:41;40147:19;;9744:168:75;39694:478:145;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;32236:2:145;989:63:74;;;32218:21:145;32275:2;32255:18;;;32248:30;-1:-1:-1;;;32294:18:145;;;32287:47;32351:18;;989:63:74;32034:341:145;14:171;81:20;;-1:-1:-1;;;;;130:30:145;;120:41;;110:69;;175:1;172;165:12;110:69;14:171;;;:::o;190:184::-;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:145;;-1:-1:-1;;;;;1222:30:145;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:145;;-1:-1:-1;;;;;1586:30:145;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:145;1991:40;;-1:-1:-1;;;;;2046:34:145;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:145:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:145;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:145;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:145:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:145;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:145;-1:-1:-1;3373:2:145;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:145;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:145;-1:-1:-1;3615:2:145;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:145;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:145;-1:-1:-1;3873:2:145;3858:18;;3845:32;;-1:-1:-1;3920:3:145;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:145;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:145;-1:-1:-1;4176:3:145;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:145;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:145;;4362:180;-1:-1:-1;4362:180:145:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:145;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:145;-1:-1:-1;6516:2:145;6501:18;;6488:32;;-1:-1:-1;6532:16:145;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:145;-1:-1:-1;6779:2:145;6764:18;;6751:32;;-1:-1:-1;6795:16:145;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:145;;-1:-1:-1;5840:1155:145;;;;6837:98;;-1:-1:-1;;;5840:1155:145:o;7587:118::-;7673:5;7666:13;7659:21;7652:5;7649:32;7639:60;;7695:1;7692;7685:12;7710:757;7809:6;7817;7825;7833;7841;7894:3;7882:9;7873:7;7869:23;7865:33;7862:53;;;7911:1;7908;7901:12;7862:53;7950:9;7937:23;8000:6;7993:5;7989:18;7982:5;7979:29;7969:57;;8022:1;8019;8012:12;7969:57;8045:5;-1:-1:-1;8069:37:145;8102:2;8087:18;;8069:37;:::i;:::-;8059:47;;8153:2;8142:9;8138:18;8125:32;8115:42;;8208:2;8197:9;8193:18;8180:32;-1:-1:-1;;;;;8227:6:145;8224:30;8221:50;;;8267:1;8264;8257:12;8221:50;8290:49;8331:7;8322:6;8311:9;8307:22;8290:49;:::i;:::-;8280:59;;;8391:3;8380:9;8376:19;8363:33;8405:30;8427:7;8405:30;:::i;:::-;8454:7;8444:17;;;7710:757;;;;;;;;:::o;8472:256::-;8538:6;8546;8599:2;8587:9;8578:7;8574:23;8570:32;8567:52;;;8615:1;8612;8605:12;8567:52;8638:28;8656:9;8638:28;:::i;:::-;8628:38;;8685:37;8718:2;8707:9;8703:18;8685:37;:::i;:::-;8675:47;;8472:256;;;;;:::o;8939:184::-;9009:6;9062:2;9050:9;9041:7;9037:23;9033:32;9030:52;;;9078:1;9075;9068:12;9030:52;-1:-1:-1;9101:16:145;;8939:184;-1:-1:-1;8939:184:145:o;9834:934::-;9970:9;-1:-1:-1;;;;;10045:2:145;10037:6;10034:14;10031:40;;;10051:18;;:::i;:::-;10097:6;10094:1;10090:14;10123:4;10147:28;10171:2;10167;10163:11;10147:28;:::i;:::-;10209:19;;;10279:14;;;;10244:12;;;;10316:14;10305:26;;10302:46;;;10344:1;10341;10334:12;10302:46;10368:5;10382:353;10398:6;10393:3;10390:15;10382:353;;;10484:3;10471:17;10520:2;10507:11;10504:19;10501:109;;;10564:1;10593:2;10589;10582:14;10501:109;10635:57;10677:14;10663:11;10656:5;10652:23;10635:57;:::i;:::-;10623:70;;-1:-1:-1;10713:12:145;;;;10415;;10382:353;;;-1:-1:-1;10757:5:145;9834:934;-1:-1:-1;;;;;;;9834:934:145:o;12200:250::-;12285:1;12295:113;12309:6;12306:1;12303:13;12295:113;;;12385:11;;;12379:18;12366:11;;;12359:39;12331:2;12324:10;12295:113;;;-1:-1:-1;;12442:1:145;12424:16;;12417:27;12200:250::o;12455:270::-;12496:3;12534:5;12528:12;12561:6;12556:3;12549:19;12577:76;12646:6;12639:4;12634:3;12630:14;12623:4;12616:5;12612:16;12577:76;:::i;:::-;12707:2;12686:15;-1:-1:-1;;12682:29:145;12673:39;;;;12714:4;12669:50;;12455:270;-1:-1:-1;;12455:270:145:o;12730:298::-;12899:2;12888:9;12881:21;12862:4;12919:44;12959:2;12948:9;12944:18;12936:6;12919:44;:::i;:::-;12911:52;;13013:6;13006:14;12999:22;12994:2;12983:9;12979:18;12972:50;12730:298;;;;;:::o;13393:271::-;13576:6;13568;13563:3;13550:33;13532:3;13602:16;;13627:13;;;13602:16;13393:271;-1:-1:-1;13393:271:145:o;15484:245::-;15551:6;15604:2;15592:9;15583:7;15579:23;15575:32;15572:52;;;15620:1;15617;15610:12;15572:52;15652:9;15646:16;15671:28;15693:5;15671:28;:::i;16988:127::-;17049:10;17044:3;17040:20;17037:1;17030:31;17080:4;17077:1;17070:15;17104:4;17101:1;17094:15;17120:128;17187:9;;;17208:11;;;17205:37;;;17222:18;;:::i;17656:168::-;17696:7;17762:1;17758;17754:6;17750:14;17747:1;17744:21;17739:1;17732:9;17725:17;17721:45;17718:71;;;17769:18;;:::i;:::-;-1:-1:-1;17809:9:145;;17656:168::o;17829:125::-;17894:9;;;17915:10;;;17912:36;;;17928:18;;:::i;17959:183::-;-1:-1:-1;;;;;18078:10:145;;;18066;;;18062:27;;18101:12;;;18098:38;;;18116:18;;:::i;:::-;18098:38;17959:183;;;;:::o;18147:127::-;18208:10;18203:3;18199:20;18196:1;18189:31;18239:4;18236:1;18229:15;18263:4;18260:1;18253:15;18279:112;18311:1;18337;18327:35;;18342:18;;:::i;:::-;-1:-1:-1;18376:9:145;;18279:112::o;18396:120::-;18436:1;18462;18452:35;;18467:18;;:::i;:::-;-1:-1:-1;18501:9:145;;18396:120::o;18923:127::-;18984:10;18979:3;18975:20;18972:1;18965:31;19015:4;19012:1;19005:15;19039:4;19036:1;19029:15;21340:400;21553:10;21541:23;;21523:42;;-1:-1:-1;;;;;21601:32:145;;21596:2;21581:18;;21574:60;21670:2;21665;21650:18;;21643:30;;;-1:-1:-1;;21690:44:145;;21715:18;;21707:6;21690:44;:::i;21745:287::-;21874:3;21912:6;21906:13;21928:66;21987:6;21982:3;21975:4;21967:6;21963:17;21928:66;:::i;:::-;22010:16;;;;;21745:287;-1:-1:-1;;21745:287:145:o;22037:290::-;22106:6;22159:2;22147:9;22138:7;22134:23;22130:32;22127:52;;;22175:1;22172;22165:12;22127:52;22201:16;;-1:-1:-1;;;;;;22246:32:145;;22236:43;;22226:71;;22293:1;22290;22283:12;26254:157;26284:1;26318:4;26315:1;26311:12;26342:3;26332:37;;26349:18;;:::i;:::-;26401:3;26394:4;26391:1;26387:12;26383:22;26378:27;;;26254:157;;;;:::o;26416:151::-;26506:4;26499:12;;;26485;;;26481:31;;26524:14;;26521:40;;;26541:18;;:::i;29108:135::-;29147:3;29168:17;;;29165:43;;29188:18;;:::i;:::-;-1:-1:-1;29235:1:145;29224:13;;29108:135::o;31208:478::-;31410:2;31392:21;;;31449:2;31429:18;;;31422:30;31488:34;31483:2;31468:18;;31461:62;31559:34;31554:2;31539:18;;31532:62;-1:-1:-1;;;31625:3:145;31610:19;;31603:41;31676:3;31661:19;;31208:478::o;31691:338::-;31893:2;31875:21;;;31932:2;31912:18;;;31905:30;-1:-1:-1;;;31966:2:145;31951:18;;31944:44;32020:2;32005:18;;31691:338::o;32380:422::-;32469:1;32512:5;32469:1;32526:270;32547:7;32537:8;32534:21;32526:270;;;32606:4;32602:1;32598:6;32594:17;32588:4;32585:27;32582:53;;;32615:18;;:::i;:::-;32665:7;32655:8;32651:22;32648:55;;;32685:16;;;;32648:55;32764:22;;;;32724:15;;;;32526:270;;;32530:3;32380:422;;;;;:::o;32807:806::-;32856:5;32886:8;32876:80;;-1:-1:-1;32927:1:145;32941:5;;32876:80;32975:4;32965:76;;-1:-1:-1;33012:1:145;33026:5;;32965:76;33057:4;33075:1;33070:59;;;;33143:1;33138:130;;;;33050:218;;33070:59;33100:1;33091:10;;33114:5;;;33138:130;33175:3;33165:8;33162:17;33159:43;;;33182:18;;:::i;:::-;-1:-1:-1;;33238:1:145;33224:16;;33253:5;;33050:218;;33352:2;33342:8;33339:16;33333:3;33327:4;33324:13;33320:36;33314:2;33304:8;33301:16;33296:2;33290:4;33287:12;33283:35;33280:77;33277:159;;;-1:-1:-1;33389:19:145;;;33421:5;;33277:159;33468:34;33493:8;33487:4;33468:34;:::i;:::-;33538:6;33534:1;33530:6;33526:19;33517:7;33514:32;33511:58;;;33549:18;;:::i;:::-;33587:20;;32807:806;-1:-1:-1;;;32807:806:145:o;33618:131::-;33678:5;33707:36;33734:8;33728:4;33707:36;:::i", - "linkReferences": {} + "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b6101256101133660046135e9565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b610146366004613604565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e610179366004613764565b6102f7565b005b6101a361018e366004613861565b60076020526000908152604090205460ff1681565b60405161012f9190613890565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f2366004613604565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d610233366004613604565b6004602052600090815260409020546001600160a01b031681565b61017e61025c3660046138b8565b6105ca565b61012561026f366004613861565b60096020526000908152604090205481565b61017e6108ed565b61029c610297366004613861565b610906565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613970565b610940565b610125607881565b6102ff6109a7565b60008061030c8b8b610a00565b9150915061031d8260400151610c6a565b61032a8260400151610d9c565b6000808e8e81019061033c91906139f5565b9150915061034e828560400151610df8565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd9190613a28565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104728b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890611031565b9050806104c15760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105268787906104d79190613a41565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026112ad565b905081811461056f5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105b182828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166092505050565b50506105bd6001603355565b5050505050505050505050565b6105d26109a7565b6000806105df8888610a00565b915091506105f08260400151610c6a565b6105fd8260400151610d9c565b61060b898360400151610df8565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107c25760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107219190613a28565b905060008190036107745760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a8610781898b613a41565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611807565b600083815260096020526040902081905592506107d49050565b60008181526009602052604090205491505b6000846020015160016040516020016108029291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084a82856108458a8c613a41565b611903565b90508481146108935760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d882828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166092505050565b50506108e46001603355565b50505050505050565b6065546001600160a01b0316331461090457600080fd5b565b6003818154811061091657600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095757600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610998929190613b14565b60405180910390a45050505050565b6002603354036109f95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7d85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061199f92505050565b905060008585604051610a91929190613b38565b60405190819003902090506000808281526007602052604090205460ff166002811115610ac057610ac061387a565b14610b0d5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b555760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9f5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610bea575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c5d5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610cd05760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190613b48565b610d995760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d995760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e5e5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb9190613a28565b600003610f3a5760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190613a28565b610fce9042613b7b565b9050607881101561102c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af415801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110af9190613a28565b9050600081856001600160401b0316106110ca57601b6110cd565b60075b60ff169050600082866001600160401b031610611109576120006110fa846001600160401b038916613b7b565b6111049190613ba4565b61111e565b61111e6120006001600160401b038816613ba4565b90506000866001600160401b0316886001600160401b03160361115d5750600b61114a81610200613bb8565b61115690610183613bd7565b9050611292565b61200061116a888a613bea565b6001600160401b0316116111cc5750600b611186816020613bb8565b611191906006613bd7565b90506111a86120006001600160401b038916613c11565b6111b461200083613bb8565b6111be9190613bd7565b905061114a81610200613bb8565b876001600160401b0316876001600160401b0316101561124a5750600b826111f5826020613bb8565b6111ff9190613bd7565b905061120c816002613bb8565b611217906000613bd7565b905081611228630100000083613bb8565b6112329190613bd7565b905061123f816002613bb8565b611191906001613bd7565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f7400006044820152606401610420565b61129e8b828c8c611a64565b9b9a5050505050505050505050565b6000806112bb878a8a611a7e565b90506000816000815181106112d2576112d2613c25565b01602001516001600160f81b03191690506000600160f81b8214806113045750600160f91b6001600160f81b03198316145b1561131157506001611376565b600360fe1b6001600160f81b031983161061132e57506000611376565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516113989190613b7b565b81526020016113a78585613bd7565b9052905060006113b68261231e565b905080516004146114025760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b60006114278260038151811061141a5761141a613c25565b602002602001015161231e565b905080518c106114795760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b6000611490828e8151811061141a5761141a613c25565b905080516003146114ee5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b60006115138260008151811061150657611506613c25565b6020026020010151612543565b90508c6001600160a01b0316816001600160a01b0316146115865760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b600061159e8360018151811061141a5761141a613c25565b90508c6115c4826000815181106115b7576115b7613c25565b60200260200101516125b7565b146116275760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b611649818d8151811061163c5761163c613c25565b60200260200101516125be565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161168f93929190613c3b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116e19190613c6b565b6000604051808303816000865af19150503d806000811461171e576040519150601f19603f3d011682016040523d82523d6000602084013e611723565b606091505b50805191955093506000925060200390506117655760008280602001905181019061174e9190613c87565b6001600160e01b031916631dee306b60e11b149150505b82801561176f5750805b15611792576000858152600760205260409020805460ff191660021790556117ac565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe894787876040516117f7929190613b14565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006118718260405160200161185b91815260200190565b6040516020818303038152906040528786611a7e565b905060008151116118bd5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b60006118d06118cb836126c1565b61231e565b905080516004146118e057600080fd5b6118f6816002815181106115b7576115b7613c25565b93505050505b9392505050565b6000806119328560405160200161191c91815260200190565b6040516020818303038152906040528486611a7e565b905060008151116119855760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b611996611991826126c1565b6125b7565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091611a53918a9190611a4e908290613b7b565b612714565b60c088015250949695505050505050565b600080611a72868686612800565b90921495945050505050565b60606000845111611ac95760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b6000611ad48461298f565b90506000611ae186612a7d565b9050600084604051602001611af891815260200190565b60405160208183030381529060405290506000805b84518110156122c7576000858281518110611b2a57611b2a613c25565b602002602001015190508451831115611b9c5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611c3b5780518051602091820120604051611bea92611bc492910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611c365760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611d31565b805151602011611cc15780518051602091820120604051611c6592611bc492910190815260200190565b611c365760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611d315760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611d3d60106001613bd7565b81602001515103611eea5784518303611e82576000611d798260200151601081518110611d6c57611d6c613c25565b6020026020010151612b97565b90506000815111611df25760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611e009190613b7b565b8314611e745760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b96506118fc95505050505050565b6000858481518110611e9657611e96613c25565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611ec157611ec1613c25565b60200260200101519050611ed481612cba565b9550611ee1600186613bd7565b945050506122b4565b60028160200151510361225b576000611f0282612cdf565b9050600081600081518110611f1957611f19613c25565b016020015160f81c90506000611f30600283613cb1565b611f3b906002613cd3565b90506000611f4c848360ff16612d03565b90506000611f5a8a89612d03565b90506000611f688383612d39565b905080835114611fe05760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611ff5575060ff85166003145b1561219b57808251146120705760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b600061208c8860200151600181518110611d6c57611d6c613c25565b905060008151116121055760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d516121139190613b7b565b89146121875760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c506118fc9b505050505050505050505050565b60ff851615806121ae575060ff85166001145b156121ed576121da87602001516001815181106121cd576121cd613c25565b6020026020010151612cba565b99506121e6818a613bd7565b9850612250565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b5050505050506122b4565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b50806122bf81613cec565b915050611b0d565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b6060600080600061232e85612db8565b9194509250905060018160018111156123495761234961387a565b146123bc5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516123c88385613bd7565b146124305760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816124495790505090506000845b8751811015612537576000806124bc6040518060400160405280858d600001516124a09190613b7b565b8152602001858d602001516124b59190613bd7565b9052612db8565b5091509150604051806040016040528083836124d89190613bd7565b8152602001848c602001516124ed9190613bd7565b81525085858151811061250257612502613c25565b6020908102919091010152612518600185613bd7565b93506125248183613bd7565b61252e9084613bd7565b92505050612476565b50815295945050505050565b805160009060010361255757506000919050565b81516015146125a85760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b6125b1826125b7565b92915050565b60006125b1825b60006021826000015111156126155760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600080600061262385612db8565b91945092509050600081600181111561263e5761263e61387a565b1461268b5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600083866020015161269d9190613bd7565b805190915060208410156126b75760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126f65760405162461bcd60e51b815260040161042090613d05565b50604080518082019091528151815260209182019181019190915290565b60608161272281601f613bd7565b10156127405760405162461bcd60e51b815260040161042090613d75565b61274a8284613bd7565b8451101561278e5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b6060821580156127ad57604051915060008252602082016040526127f7565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127e65780518352602092830192016127ce565b5050858452601f01601f1916604052505b50949350505050565b600082825160016128119190613bd7565b61281c906002613e81565b1161282657600080fd5b8360005b846001146127f75761283d600286613c11565b6001036128dc57600284828151811061285857612858613c25565b60200260200101518360405160200161287b929190918252602082015260400190565b60408051601f198184030181529082905261289591613c6b565b602060405180830381855afa1580156128b2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128d59190613a28565b9150612970565b6002828583815181106128f1576128f1613c25565b6020026020010151604051602001612913929190918252602082015260400190565b60408051601f198184030181529082905261292d91613c6b565b602060405180830381855afa15801561294a573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061296d9190613a28565b91505b61297b600286613ba4565b94508061298781613cec565b91505061282a565b80516060906000816001600160401b038111156129ae576129ae6136af565b6040519080825280602002602001820160405280156129f357816020015b60408051808201909152606080825260208201528152602001906001900390816129cc5790505b50905060005b82811015612a75576040518060400160405280868381518110612a1e57612a1e613c25565b60200260200101518152602001612a4d878481518110612a4057612a40613c25565b602002602001015161347b565b815250828281518110612a6257612a62613c25565b60209081029190910101526001016129f9565b509392505050565b80516060906000612a8f826002613bb8565b6001600160401b03811115612aa657612aa66136af565b6040519080825280601f01601f191660200182016040528015612ad0576020820181803683370190505b5090506000805b83811015612b8d57858181518110612af157612af1613c25565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612b19836002613bb8565b81518110612b2957612b29613c25565b60200101906001600160f81b031916908160001a905350600f60f81b821683612b53836002613bb8565b612b5e906001613bd7565b81518110612b6e57612b6e613c25565b60200101906001600160f81b031916908160001a905350600101612ad7565b5090949350505050565b60606000806000612ba785612db8565b919450925090506000816001811115612bc257612bc261387a565b14612c355760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612c3f8284613bd7565b855114612cab5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b61199685602001518484613489565b60606020826000015110612cd657612cd182612b97565b6125b1565b6125b182613529565b60606125b1612cfe8360200151600081518110611d6c57611d6c613c25565b612a7d565b606082518210612d2257506040805160208101909152600081526125b1565b6118fc8383848651612d349190613b7b565b61353f565b60008060008351855110612d4e578351612d51565b84515b90505b8082108015612da85750838281518110612d7057612d70613c25565b602001015160f81c60f81b6001600160f81b031916858381518110612d9757612d97613c25565b01602001516001600160f81b031916145b15612a7557816001019150612d54565b600080600080846000015111612de05760405162461bcd60e51b815260040161042090613d05565b6020840151805160001a607f8111612e05576000600160009450945094505050613474565b60b78111612f62576000612e1a608083613b7b565b905080876000015111612e9a5760405162461bcd60e51b815260206004820152604e6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612ec75750600160ff1b6001600160f81b0319821610155b612f4f5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b5060019550935060009250613474915050565b60bf81116131a3576000612f7760b783613b7b565b905080876000015111612ffa5760405162461bcd60e51b81526020600482015260516024820152600080516020613e8e83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b03191660008190036130815760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c603781116131045760405162461bcd60e51b81526020600482015260486024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b61310e8184613bd7565b8951116131865760405162461bcd60e51b815260206004820152604c6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b613191836001613bd7565b97509550600094506134749350505050565b60f781116132455760006131b860c083613b7b565b9050808760000151116132345760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b600195509350849250613474915050565b600061325260f783613b7b565b9050808760000151116132d15760405162461bcd60e51b815260206004820152604d6024820152600080516020613e8e83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b03191660008190036133565760405162461bcd60e51b81526020600482015260486024820152600080516020613e8e83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116133d75760405162461bcd60e51b81526020600482015260466024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133e18184613bd7565b8951116134575760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613462836001613bd7565b97509550600194506134749350505050565b9193909250565b60606125b16118cb836126c1565b60606000826001600160401b038111156134a5576134a56136af565b6040519080825280601f01601f1916602001820160405280156134cf576020820181803683370190505b509050826000036134e15790506118fc565b60006134ed8587613bd7565b90506020820160005b8581101561350e5782810151828201526020016134f6565b8581111561351d576000868301525b50919695505050505050565b60606125b1826020015160008460000151613489565b60608182601f0110156135645760405162461bcd60e51b815260040161042090613d75565b8282840110156135865760405162461bcd60e51b815260040161042090613d75565b8183018451101561278e5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b03811681146135e457600080fd5b919050565b6000602082840312156135fb57600080fd5b6118fc826135cd565b60006020828403121561361657600080fd5b813563ffffffff811681146118fc57600080fd5b60008083601f84011261363c57600080fd5b5081356001600160401b0381111561365357600080fd5b602083019150836020828501011115610c6357600080fd5b60008083601f84011261367d57600080fd5b5081356001600160401b0381111561369457600080fd5b6020830191508360208260051b8501011115610c6357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156136ed576136ed6136af565b604052919050565b600082601f83011261370657600080fd5b81356001600160401b0381111561371f5761371f6136af565b613732601f8201601f19166020016136c5565b81815284602083860101111561374757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561378557600080fd5b6001600160401b03808d35111561379b57600080fd5b6137a88e8e358f0161362a565b909c509a5060208d01358110156137be57600080fd5b6137ce8e60208f01358f0161362a565b909a50985060408d01358110156137e457600080fd5b6137f48e60408f01358f0161366b565b909850965060608d0135955060808d013581101561381157600080fd5b6138218e60808f01358f0161366b565b909550935060a08d013581101561383757600080fd5b506138488d60a08e01358e016136f5565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561387357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106138b257634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156138d357600080fd5b6138dc886135cd565b965060208801356001600160401b03808211156138f857600080fd5b6139048b838c0161362a565b909850965060408a013591508082111561391d57600080fd5b6139298b838c0161366b565b909650945060608a013591508082111561394257600080fd5b5061394f8a828b0161366b565b989b979a50959850939692959293505050565b8015158114610d9957600080fd5b600080600080600060a0868803121561398857600080fd5b853561ffff8116811461399a57600080fd5b94506139a8602087016135cd565b93506040860135925060608601356001600160401b038111156139ca57600080fd5b6139d6888289016136f5565b92505060808601356139e781613962565b809150509295509295909350565b60008060408385031215613a0857600080fd5b613a11836135cd565b9150613a1f602084016135cd565b90509250929050565b600060208284031215613a3a57600080fd5b5051919050565b60006001600160401b0380841115613a5b57613a5b6136af565b8360051b6020613a6c8183016136c5565b868152918501918181019036841115613a8457600080fd5b865b84811015613ab857803586811115613a9e5760008081fd5b613aaa36828b016136f5565b845250918301918301613a86565b50979650505050505050565b60005b83811015613adf578181015183820152602001613ac7565b50506000910152565b60008151808452613b00816020860160208601613ac4565b601f01601f19169290920160200192915050565b604081526000613b276040830185613ae8565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613b5a57600080fd5b81516118fc81613962565b634e487b7160e01b600052601160045260246000fd5b818103818111156125b1576125b1613b65565b634e487b7160e01b600052601260045260246000fd5b600082613bb357613bb3613b8e565b500490565b6000816000190483118215151615613bd257613bd2613b65565b500290565b808201808211156125b1576125b1613b65565b6001600160401b03828116828216039080821115613c0a57613c0a613b65565b5092915050565b600082613c2057613c20613b8e565b500690565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061199690830184613ae8565b60008251613c7d818460208701613ac4565b9190910192915050565b600060208284031215613c9957600080fd5b81516001600160e01b0319811681146118fc57600080fd5b600060ff831680613cc457613cc4613b8e565b8060ff84160691505092915050565b60ff82811682821603908111156125b1576125b1613b65565b600060018201613cfe57613cfe613b65565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613dd8578160001904821115613dbe57613dbe613b65565b80851615613dcb57918102915b93841c9390800290613da2565b509250929050565b600082613def575060016125b1565b81613dfc575060006125b1565b8160018114613e125760028114613e1c57613e38565b60019150506125b1565b60ff841115613e2d57613e2d613b65565b50506001821b6125b1565b5060208310610133831016604e8410600b8410161715613e5b575081810a6125b1565b613e658383613d9d565b8060001904821115613e7957613e79613b65565b029392505050565b60006118fc8383613de056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212204d4990e12509e4c48efc701e947e64e5e407fb367cf36719c09908aab28dc2d964736f6c63430008100033", + "sourceMap": "399:626:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:146;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:146;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:146;4866:1928:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:146;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:146;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:146;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:146;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;630:83:6;;;:::i;879:30:103:-;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:146;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:146;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:146;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:146;719:304:6;;;;;;:::i;:::-;;:::i;924:58:100:-;;973:9;924:58;;4866:1928;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:146;;5661:52:100;;::::1;7526:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;9330:2:146;5727:58:100::1;::::0;::::1;9312:21:146::0;9369:2;9349:18;;;9342:30;-1:-1:-1;;;9388:18:146;;;9381:51;9449:18;;5727:58:100::1;;;;;;;;;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;9680:2:146;5965:47:100::1;::::0;::::1;9662:21:146::0;9719:2;9699:18;;;9692:30;9758:29;9738:18;;;9731:57;9805:18;;5965:47:100::1;9478:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;10975:2:146;6648:67:100::1;::::0;::::1;10957:21:146::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:146;;;11026:51;11094:18;;6648:67:100::1;10773:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;11342:3:146;11320:16;;;;-1:-1:-1;;;;;;11316:43:146;2955:82:100;;::::1;11304:56:146::0;11415:3;11393:16;;;-1:-1:-1;;;;;;11389:51:146;11376:11;;;11369:72;11479:2;11475:15;-1:-1:-1;;11475:15:146;11457:12;;;11450:75;2955:82:100;;;;;;;;;11541:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:146;;3301:61:100;;::::1;7526:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;11766:2:146;3380:67:100::1;::::0;::::1;11748:21:146::0;11805:2;11785:18;;;11778:30;11844:33;11824:18;;;11817:61;11895:18;;3380:67:100::1;11564:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;12114:31:146;;;;12096:50;;12177:2;12162:18;;12155:34;12084:2;12069:18;;11924:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:146::0;3826:80:100;;;;;;;;;498:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10975:2:146;4090:31:100::1;::::0;::::1;10957:21:146::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:146;;;11026:51;11094:18;;4090:31:100::1;10773:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;630:83:6:-;697:8;;-1:-1:-1;;;;;697:8:6;683:10;:22;675:31;;;;;;630:83::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;719:304:6:-;931:7;;-1:-1:-1;;;;;931:7:6;917:10;:21;909:30;;;;;;988:8;980:6;-1:-1:-1;;;;;954:62:6;970:8;954:62;;;998:8;1008:7;954:62;;;;;;;:::i;:::-;;;;;;;;719:304;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;13235:2:146;2704:63:39;;;13217:21:146;13274:2;13254:18;;;13247:30;13313:33;13293:18;;;13286:61;13364:18;;2704:63:39;13033:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;13871:2:146;8369:35:100;;;13853:21:146;13910:2;13890:18;;;13883:30;13949:27;13929:18;;;13922:55;13994:18;;8369:35:100;13669:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;14225:2:146;8484:22:100;;;14207:21:146;14264:2;14244:18;;;14237:30;-1:-1:-1;;;14283:18:146;;;14276:42;14335:18;;8484:22:100;14023:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;14566:2:146;8569:24:100;;;14548:21:146;14605:2;14585:18;;;14578:30;-1:-1:-1;;;14624:18:146;;;14617:44;14678:18;;8569:24:100;14364:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;14909:2:146;8779:65:100;;;14891:21:146;14948:2;14928:18;;;14921:30;14987:34;14967:18;;;14960:62;15058:25;15038:18;;;15031:53;15101:19;;8779:65:100;14707:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;15333:2:146;6959:81:100;;;15315:21:146;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:146;;;15384:54;15455:18;;6959:81:100;15131:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;15936:2:146;7050:76:100;;;15918:21:146;15975:2;15955:18;;;15948:30;16014:31;15994:18;;;15987:59;16063:18;;7050:76:100;15734:353:146;7050:76:100;6880:253;:::o;7194:121::-;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;16294:2:146;7260:48:100;;;16276:21:146;16333:2;16313:18;;;16306:30;-1:-1:-1;;;16352:18:146;;;16345:49;16411:18;;7260:48:100;16092:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;15333:2:146;7471:81:100;;;15315:21:146;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:146;;;15384:54;15455:18;;7471:81:100;15131:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;7544:31:146;;7570:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;7499:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;16831:2:146;7562:86:100;;;16813:21:146;16870:2;16850:18;;;16843:30;16909:32;16889:18;;;16882:60;16959:18;;7562:86:100;16629:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;7544:31:146;;7698:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;7499:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;17455:2:146;7746:84:100;;;17437:21:146;17494:2;17474:18;;;17467:30;17533:34;17513:18;;;17506:62;-1:-1:-1;;;17584:18:146;;;17577:32;17626:19;;7746:84:100;17253:398:146;7746:84:100;7461:376;7385:452;;:::o;3094:1947:110:-;3372:46;;-1:-1:-1;;;3372:46:110;;;7347:23:146;;3372:46:110;;;7329:42:146;3330:4:110;;;;3372:16;;:31;;7302:18:146;;3372:46:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;18928:2:146;4896:40:110;;;18910:21:146;18967:2;18947:18;;;18940:30;19006:32;18986:18;;;18979:60;19056:18;;4896:40:110;18726:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;19419:2:146;2652:38:111;;;19401:21:146;19458:2;19438:18;;;19431:30;19497;19477:18;;;19470:58;19545:18;;2652:38:111;19217:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;19776:2:146;3233:58:111;;;19758:21:146;19815:2;19795:18;;;19788:30;-1:-1:-1;;;19834:18:146;;;19827:52;19896:18;;3233:58:111;19574:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;20127:2:146;3450:58:111;;;20109:21:146;20166:2;20146:18;;;20139:30;20205:25;20185:18;;;20178:53;20248:18;;3450:58:111;19925:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;20479:2:146;3594:70:111;;;20461:21:146;20518:2;20498:18;;;20491:30;20557:34;20537:18;;;20530:62;-1:-1:-1;;;20608:18:146;;;20601:32;20650:19;;3594:70:111;20277:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;20882:2:146;3803:85:111;;;20864:21:146;20921:2;20901:18;;;20894:30;20960:34;20940:18;;;20933:62;-1:-1:-1;;;21011:18:146;;;21004:37;21058:19;;3803:85:111;20680:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;21290:2:146;4057:142:111;;;21272:21:146;21329:2;21309:18;;;21302:30;21368:34;21348:18;;;21341:62;-1:-1:-1;;;21419:18:146;;;21412:43;21472:19;;4057:142:111;21088:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;735:581:111:-;927:33;;-1:-1:-1;;22643:2:146;22639:15;;;22635:53;927:33:111;;;22623:66:146;872:7:111;;;;22705:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;22857:19:146;;22901:2;22892:12;;22728:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;23117:2:146;1072:58:111;;;23099:21:146;23156:2;23136:18;;;23129:30;-1:-1:-1;;;23175:18:146;;;23168:52;23237:18;;1072:58:111;22915:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;22857:19:146;;22901:2;22892:12;;22728:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;23468:2:146;601:65:111;;;23450:21:146;23507:2;23487:18;;;23480:30;23546;23526:18;;;23519:58;23594:18;;601:65:111;23266:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;23825:2:146;3101:49:77;;;23807:21:146;23864:2;23844:18;;;23837:30;-1:-1:-1;;;23883:18:146;;;23876:51;23944:18;;3101:49:77;23623:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;22857:19:146;;22901:2;22892:12;;22728:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;24175:2:146;3636:134:77;;;24157:21:146;24214:2;24194:18;;;24187:30;24253:34;24233:18;;;24226:62;-1:-1:-1;;;24304:18:146;;;24297:44;24358:19;;3636:134:77;23973:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;22857:19:146;;;22901:2;22892:12;;22728:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;24590:2:146;3893:176:77;;;24572:21:146;24629:2;24609:18;;;24602:30;24668:31;24648:18;;;24641:59;24717:18;;3893:176:77;24388:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;22857:19:146;;;22901:2;22892:12;;22728:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;24948:2:146;4222:186:77;;;24930:21:146;24987:2;24967:18;;;24960:30;25026:34;25006:18;;;24999:62;-1:-1:-1;;;25077:18:146;;;25070:37;25124:19;;4222:186:77;24746:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;25356:2:146;4509:156:77;;;25338:21:146;25395:2;25375:18;;;25368:30;25434:34;25414:18;;;25407:62;-1:-1:-1;;;25485:18:146;;;25478:36;25531:19;;4509:156:77;25154:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;25763:2:146;5384:158:77;;;25745:21:146;25802:2;25782:18;;;25775:30;25841:34;25821:18;;;25814:62;25912:29;25892:18;;;25885:57;25959:19;;5384:158:77;25561:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;26191:2:146;5626:162:77;;;26173:21:146;26230:2;26210:18;;;26203:30;26269:34;26249:18;;;26242:62;26340:28;26320:18;;;26313:56;26386:19;;5626:162:77;25989:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;26936:2:146;7009:171:77;;;26918:21:146;26975:2;26955:18;;;26948:30;27014:34;26994:18;;;26987:62;27085:28;27065:18;;;27058:56;27131:19;;7009:171:77;26734:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;27363:2:146;7843:185:77;;;27345:21:146;27402:2;27382:18;;;27375:30;27441:34;27421:18;;;27414:62;27512:31;27492:18;;;27485:59;27561:19;;7843:185:77;27161:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;27793:2:146;8463:156:77;;;27775:21:146;27832:2;27812:18;;;27805:30;27871:34;27851:18;;;27844:62;27942:27;27922:18;;;27915:55;27987:19;;8463:156:77;27591:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;28219:2:146;8703:160:77;;;28201:21:146;28258:2;28238:18;;;28231:30;28297:34;28277:18;;;28270:62;28368:26;28348:18;;;28341:54;28412:19;;8703:160:77;28017:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;28644:2:146;9439:60:77;;;28626:21:146;28683:2;28663:18;;;28656:30;28722:34;28702:18;;;28695:62;-1:-1:-1;;;28773:18:146;;;28766:48;28831:19;;9439:60:77;28442:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;29063:2:146;9556:50:77;;;29045:21:146;29102:2;29082:18;;;29075:30;29141:34;29121:18;;;29114:62;-1:-1:-1;;;29192:18:146;;;29185:38;29240:19;;9556:50:77;28861:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;29612:2:146;9641:47:77;;;29594:21:146;29651:2;29631:18;;;29624:30;29690:34;29670:18;;;29663:62;-1:-1:-1;;;29741:18:146;;;29734:35;29786:19;;9641:47:77;29410:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;30018:2:146;2161:136:75;;;30000:21:146;30057:2;30037:18;;;30030:30;30096:34;30076:18;;;30069:62;30167:26;30147:18;;;30140:54;30211:19;;2161:136:75;29816:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;30443:2:146;2308:134:75;;;30425:21:146;30482:2;30462:18;;;30455:30;30521:34;30501:18;;;30494:62;-1:-1:-1;;;30572:18:146;;;30565:48;30630:19;;2308:134:75;30241:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;30862:2:146;12579:55:75;;;30844:21:146;30901:2;30881:18;;;30874:30;30940:28;30920:18;;;30913:56;30986:18;;12579:55:75;30660:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;31217:2:146;11438:55:75;;;31199:21:146;31256:2;31236:18;;;31229:30;31295:28;31275:18;;;31268:56;31341:18;;11438:55:75;31015:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;31217:2:146;11598:72:75;;;31199:21:146;31256:2;31236:18;;;31229:30;31295:28;31275:18;;;31268:56;31341:18;;11598:72:75;31015:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;32398:2:146;409:63:108;;;32380:21:146;32437:2;32417:18;;;32410:30;-1:-1:-1;;;32456:18:146;;;32449:47;32513:18;;409:63:108;32196:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;34073:19:146;;;34117:2;34108:12;;34101:28;34154:2;34145:12;;33916:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;34073:19:146;;;34117:2;34108:12;;34101:28;34154:2;34145:12;;33916:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;34370:2:146;4505:137:75;;;34352:21:146;34409:2;34389:18;;;34382:30;34448:34;34428:18;;;34421:62;34519:27;34499:18;;;34492:55;34564:19;;4505:137:75;34168:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;34796:2:146;4653:136:75;;;34778:21:146;34835:2;34815:18;;;34808:30;34874:34;34854:18;;;34847:62;-1:-1:-1;;;34925:18:146;;;34918:50;34985:19;;4653:136:75;34594:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;35217:2:146;6699:156:75;;;35199:21:146;35256:2;35236:18;;;35229:30;-1:-1:-1;;;;;;;;;;;35275:18:146;;;35268:62;35366:34;35346:18;;;35339:62;-1:-1:-1;;;35417:19:146;;;35410:45;35472:19;;6699:156:75;35015:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;35704:2:146;7025:177:75;;;35686:21:146;35743:2;35723:18;;;35716:30;35782:34;35762:18;;;35755:62;35853:34;35833:18;;;35826:62;-1:-1:-1;;;35904:19:146;;;35897:44;35958:19;;7025:177:75;35502:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;36190:2:146;7387:164:75;;;36172:21:146;36229:2;36209:18;;;36202:30;-1:-1:-1;;;;;;;;;;;36248:18:146;;;36241:62;36339:34;36319:18;;;36312:62;-1:-1:-1;;;36390:19:146;;;36383:48;36448:19;;7387:164:75;35988:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;36680:2:146;7721:159:75;;;36662:21:146;36719:2;36699:18;;;36692:30;-1:-1:-1;;;;;;;;;;;36738:18:146;;;36731:62;36829:34;36809:18;;;36802:62;-1:-1:-1;;;36880:19:146;;;36873:41;36931:19;;7721:159:75;36478:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;37163:2:146;8042:142:75;;;37145:21:146;37202:2;37182:18;;;37175:30;-1:-1:-1;;;;;;;;;;;37221:18:146;;;37214:62;37312:34;37292:18;;;37285:62;-1:-1:-1;;;37363:19:146;;;37356:39;37412:19;;8042:142:75;36961:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;37644:2:146;8199:168:75;;;37626:21:146;37683:2;37663:18;;;37656:30;-1:-1:-1;;;;;;;;;;;37702:18:146;;;37695:62;37793:34;37773:18;;;37766:62;-1:-1:-1;;;37844:19:146;;;37837:43;37897:19;;8199:168:75;37442:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;38129:2:146;8617:153:75;;;38111:21:146;38168:2;38148:18;;;38141:30;-1:-1:-1;;;;;;;;;;;38187:18:146;;;38180:62;38278:34;38258:18;;;38251:62;-1:-1:-1;;;38329:19:146;;;38322:41;38380:19;;8617:153:75;37927:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;38612:2:146;8935:161:75;;;38594:21:146;38651:2;38631:18;;;38624:30;-1:-1:-1;;;;;;;;;;;38670:18:146;;;38663:62;38761:34;38741:18;;;38734:62;-1:-1:-1;;;38812:19:146;;;38805:44;38866:19;;8935:161:75;38410:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;39098:2:146;9266:157:75;;;39080:21:146;39137:2;39117:18;;;39110:30;-1:-1:-1;;;;;;;;;;;39156:18:146;;;39149:62;39247:34;39227:18;;;39220:62;-1:-1:-1;;;39298:19:146;;;39291:39;39347:19;;9266:157:75;38896:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;39579:2:146;9588:141:75;;;39561:21:146;39618:2;39598:18;;;39591:30;-1:-1:-1;;;;;;;;;;;39637:18:146;;;39630:62;39728:34;39708:18;;;39701:62;-1:-1:-1;;;39779:19:146;;;39772:37;39826:19;;9588:141:75;39377:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;40058:2:146;9744:168:75;;;40040:21:146;40097:2;40077:18;;;40070:30;-1:-1:-1;;;;;;;;;;;40116:18:146;;;40109:62;40207:34;40187:18;;;40180:62;-1:-1:-1;;;40258:19:146;;;40251:41;40309:19;;9744:168:75;39856:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;32398:2:146;989:63:74;;;32380:21:146;32437:2;32417:18;;;32410:30;-1:-1:-1;;;32456:18:146;;;32449:47;32513:18;;989:63:74;32196:341:146;14:171;81:20;;-1:-1:-1;;;;;130:30:146;;120:41;;110:69;;175:1;172;165:12;110:69;14:171;;;:::o;190:184::-;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:146;;-1:-1:-1;;;;;1222:30:146;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:146;;-1:-1:-1;;;;;1586:30:146;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:146;1991:40;;-1:-1:-1;;;;;2046:34:146;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:146:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:146;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:146;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:146:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:146;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:146;-1:-1:-1;3373:2:146;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:146;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:146;-1:-1:-1;3615:2:146;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:146;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:146;-1:-1:-1;3873:2:146;3858:18;;3845:32;;-1:-1:-1;3920:3:146;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:146;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:146;-1:-1:-1;4176:3:146;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:146;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:146;;4362:180;-1:-1:-1;4362:180:146:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:146;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:146;-1:-1:-1;6516:2:146;6501:18;;6488:32;;-1:-1:-1;6532:16:146;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:146;-1:-1:-1;6779:2:146;6764:18;;6751:32;;-1:-1:-1;6795:16:146;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:146;;-1:-1:-1;5840:1155:146;;;;6837:98;;-1:-1:-1;;;5840:1155:146:o;7587:118::-;7673:5;7666:13;7659:21;7652:5;7649:32;7639:60;;7695:1;7692;7685:12;7710:757;7809:6;7817;7825;7833;7841;7894:3;7882:9;7873:7;7869:23;7865:33;7862:53;;;7911:1;7908;7901:12;7862:53;7950:9;7937:23;8000:6;7993:5;7989:18;7982:5;7979:29;7969:57;;8022:1;8019;8012:12;7969:57;8045:5;-1:-1:-1;8069:37:146;8102:2;8087:18;;8069:37;:::i;:::-;8059:47;;8153:2;8142:9;8138:18;8125:32;8115:42;;8208:2;8197:9;8193:18;8180:32;-1:-1:-1;;;;;8227:6:146;8224:30;8221:50;;;8267:1;8264;8257:12;8221:50;8290:49;8331:7;8322:6;8311:9;8307:22;8290:49;:::i;:::-;8280:59;;;8391:3;8380:9;8376:19;8363:33;8405:30;8427:7;8405:30;:::i;:::-;8454:7;8444:17;;;7710:757;;;;;;;;:::o;8472:256::-;8538:6;8546;8599:2;8587:9;8578:7;8574:23;8570:32;8567:52;;;8615:1;8612;8605:12;8567:52;8638:28;8656:9;8638:28;:::i;:::-;8628:38;;8685:37;8718:2;8707:9;8703:18;8685:37;:::i;:::-;8675:47;;8472:256;;;;;:::o;8939:184::-;9009:6;9062:2;9050:9;9041:7;9037:23;9033:32;9030:52;;;9078:1;9075;9068:12;9030:52;-1:-1:-1;9101:16:146;;8939:184;-1:-1:-1;8939:184:146:o;9834:934::-;9970:9;-1:-1:-1;;;;;10045:2:146;10037:6;10034:14;10031:40;;;10051:18;;:::i;:::-;10097:6;10094:1;10090:14;10123:4;10147:28;10171:2;10167;10163:11;10147:28;:::i;:::-;10209:19;;;10279:14;;;;10244:12;;;;10316:14;10305:26;;10302:46;;;10344:1;10341;10334:12;10302:46;10368:5;10382:353;10398:6;10393:3;10390:15;10382:353;;;10484:3;10471:17;10520:2;10507:11;10504:19;10501:109;;;10564:1;10593:2;10589;10582:14;10501:109;10635:57;10677:14;10663:11;10656:5;10652:23;10635:57;:::i;:::-;10623:70;;-1:-1:-1;10713:12:146;;;;10415;;10382:353;;;-1:-1:-1;10757:5:146;9834:934;-1:-1:-1;;;;;;;9834:934:146:o;12200:250::-;12285:1;12295:113;12309:6;12306:1;12303:13;12295:113;;;12385:11;;;12379:18;12366:11;;;12359:39;12331:2;12324:10;12295:113;;;-1:-1:-1;;12442:1:146;12424:16;;12417:27;12200:250::o;12455:270::-;12496:3;12534:5;12528:12;12561:6;12556:3;12549:19;12577:76;12646:6;12639:4;12634:3;12630:14;12623:4;12616:5;12612:16;12577:76;:::i;:::-;12707:2;12686:15;-1:-1:-1;;12682:29:146;12673:39;;;;12714:4;12669:50;;12455:270;-1:-1:-1;;12455:270:146:o;12730:298::-;12899:2;12888:9;12881:21;12862:4;12919:44;12959:2;12948:9;12944:18;12936:6;12919:44;:::i;:::-;12911:52;;13013:6;13006:14;12999:22;12994:2;12983:9;12979:18;12972:50;12730:298;;;;;:::o;13393:271::-;13576:6;13568;13563:3;13550:33;13532:3;13602:16;;13627:13;;;13602:16;13393:271;-1:-1:-1;13393:271:146:o;15484:245::-;15551:6;15604:2;15592:9;15583:7;15579:23;15575:32;15572:52;;;15620:1;15617;15610:12;15572:52;15652:9;15646:16;15671:28;15693:5;15671:28;:::i;16988:127::-;17049:10;17044:3;17040:20;17037:1;17030:31;17080:4;17077:1;17070:15;17104:4;17101:1;17094:15;17120:128;17187:9;;;17208:11;;;17205:37;;;17222:18;;:::i;17861:127::-;17922:10;17917:3;17913:20;17910:1;17903:31;17953:4;17950:1;17943:15;17977:4;17974:1;17967:15;17993:120;18033:1;18059;18049:35;;18064:18;;:::i;:::-;-1:-1:-1;18098:9:146;;17993:120::o;18118:168::-;18158:7;18224:1;18220;18216:6;18212:14;18209:1;18206:21;18201:1;18194:9;18187:17;18183:45;18180:71;;;18231:18;;:::i;:::-;-1:-1:-1;18271:9:146;;18118:168::o;18291:125::-;18356:9;;;18377:10;;;18374:36;;;18390:18;;:::i;18421:183::-;-1:-1:-1;;;;;18540:10:146;;;18528;;;18524:27;;18563:12;;;18560:38;;;18578:18;;:::i;:::-;18560:38;18421:183;;;;:::o;18609:112::-;18641:1;18667;18657:35;;18672:18;;:::i;:::-;-1:-1:-1;18706:9:146;;18609:112::o;19085:127::-;19146:10;19141:3;19137:20;19134:1;19127:31;19177:4;19174:1;19167:15;19201:4;19198:1;19191:15;21502:400;21715:10;21703:23;;21685:42;;-1:-1:-1;;;;;21763:32:146;;21758:2;21743:18;;21736:60;21832:2;21827;21812:18;;21805:30;;;-1:-1:-1;;21852:44:146;;21877:18;;21869:6;21852:44;:::i;21907:287::-;22036:3;22074:6;22068:13;22090:66;22149:6;22144:3;22137:4;22129:6;22125:17;22090:66;:::i;:::-;22172:16;;;;;21907:287;-1:-1:-1;;21907:287:146:o;22199:290::-;22268:6;22321:2;22309:9;22300:7;22296:23;22292:32;22289:52;;;22337:1;22334;22327:12;22289:52;22363:16;;-1:-1:-1;;;;;;22408:32:146;;22398:43;;22388:71;;22455:1;22452;22445:12;26416:157;26446:1;26480:4;26477:1;26473:12;26504:3;26494:37;;26511:18;;:::i;:::-;26563:3;26556:4;26553:1;26549:12;26545:22;26540:27;;;26416:157;;;;:::o;26578:151::-;26668:4;26661:12;;;26647;;;26643:31;;26686:14;;26683:40;;;26703:18;;:::i;29270:135::-;29309:3;29330:17;;;29327:43;;29350:18;;:::i;:::-;-1:-1:-1;29397:1:146;29386:13;;29270:135::o;31370:478::-;31572:2;31554:21;;;31611:2;31591:18;;;31584:30;31650:34;31645:2;31630:18;;31623:62;31721:34;31716:2;31701:18;;31694:62;-1:-1:-1;;;31787:3:146;31772:19;;31765:41;31838:3;31823:19;;31370:478::o;31853:338::-;32055:2;32037:21;;;32094:2;32074:18;;;32067:30;-1:-1:-1;;;32128:2:146;32113:18;;32106:44;32182:2;32167:18;;31853:338::o;32542:422::-;32631:1;32674:5;32631:1;32688:270;32709:7;32699:8;32696:21;32688:270;;;32768:4;32764:1;32760:6;32756:17;32750:4;32747:27;32744:53;;;32777:18;;:::i;:::-;32827:7;32817:8;32813:22;32810:55;;;32847:16;;;;32810:55;32926:22;;;;32886:15;;;;32688:270;;;32692:3;32542:422;;;;;:::o;32969:806::-;33018:5;33048:8;33038:80;;-1:-1:-1;33089:1:146;33103:5;;33038:80;33137:4;33127:76;;-1:-1:-1;33174:1:146;33188:5;;33127:76;33219:4;33237:1;33232:59;;;;33305:1;33300:130;;;;33212:218;;33232:59;33262:1;33253:10;;33276:5;;;33300:130;33337:3;33327:8;33324:17;33321:43;;;33344:18;;:::i;:::-;-1:-1:-1;;33400:1:146;33386:16;;33415:5;;33212:218;;33514:2;33504:8;33501:16;33495:3;33489:4;33486:13;33482:36;33476:2;33466:8;33463:16;33458:2;33452:4;33449:12;33445:35;33442:77;33439:159;;;-1:-1:-1;33551:19:146;;;33583:5;;33439:159;33630:34;33655:8;33649:4;33630:34;:::i;:::-;33700:6;33696:1;33692:6;33688:19;33679:7;33676:32;33673:58;;;33711:18;;:::i;:::-;33749:20;;32969:806;-1:-1:-1;;;32969:806:146:o;33780:131::-;33840:5;33869:36;33896:8;33890:4;33869:36;:::i", + "linkReferences": { + "src/libraries/BeaconChainForks.sol": { + "BeaconChainForks": [ + { + "start": 4177, + "length": 20 + } + ] + } + } }, "methodIdentifiers": { "MIN_LIGHT_CLIENT_DELAY()": "e4407b15", @@ -404,7 +422,7 @@ "storageRootCache(bytes32)": "8d080d1d", "version()": "54fd4d50" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_chainId\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"emitFakeExecutedMessageEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"title\":\"DrillTelepathy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillTelepathyRouter.sol\":\"DrillTelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillTelepathyRouter.sol\":{\"keccak256\":\"0x8fd77f1ceb7b9b93a7ab6cdd7968dcec008dbe3e4c95a16beda0229dfcd877b1\",\"urls\":[\"bzz-raw://037194f122d0feb30b2b15795d6f15fd44fbff86a063784c2b6eb974f2055a66\",\"dweb:/ipfs/QmfDEUKppow33XTcGSyHGxj62yE31HCSwQJYky5RdCnWWp\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_chainId\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"emitFakeExecutedMessageEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"title\":\"DrillTelepathy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillTelepathyRouter.sol\":\"DrillTelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillTelepathyRouter.sol\":{\"keccak256\":\"0x8fd77f1ceb7b9b93a7ab6cdd7968dcec008dbe3e4c95a16beda0229dfcd877b1\",\"urls\":[\"bzz-raw://037194f122d0feb30b2b15795d6f15fd44fbff86a063784c2b6eb974f2055a66\",\"dweb:/ipfs/QmfDEUKppow33XTcGSyHGxj62yE31HCSwQJYky5RdCnWWp\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -1026,10 +1044,10 @@ "license": "MIT" }, "src/amb/TargetAMB.sol": { - "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", "urls": [ - "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", - "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", + "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" ], "license": null }, @@ -1057,6 +1075,14 @@ ], "license": null }, + "src/libraries/BeaconChainForks.sol": { + "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "urls": [ + "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", + "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + ], + "license": null + }, "src/libraries/MessageEncoding.sol": { "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", "urls": [ @@ -1066,10 +1092,10 @@ "license": null }, "src/libraries/SimpleSerialize.sol": { - "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", "urls": [ - "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", - "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", + "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" ], "license": null }, @@ -1111,13 +1137,13 @@ 31597 ], "TargetAMB": [ - 42115 + 42123 ], "TelepathyAccess": [ - 42407 + 42415 ], "TelepathyStorage": [ - 42625 + 42633 ] }, "nodeType": "SourceUnit", @@ -1143,7 +1169,7 @@ "file": "src/amb/TargetAMB.sol", "nameLocation": "-1:-1:-1", "scope": 1086, - "sourceUnit": 42116, + "sourceUnit": 42124, "symbolAliases": [ { "foreign": { @@ -1151,7 +1177,7 @@ "name": "TargetAMB", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42115, + "referencedDeclaration": 42123, "src": "33:9:6", "typeDescriptions": {} }, @@ -1169,7 +1195,7 @@ "file": "src/amb/TelepathyStorage.sol", "nameLocation": "-1:-1:-1", "scope": 1086, - "sourceUnit": 42626, + "sourceUnit": 42634, "symbolAliases": [ { "foreign": { @@ -1177,7 +1203,7 @@ "name": "TelepathyStorage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42625, + "referencedDeclaration": 42633, "src": "82:16:6", "typeDescriptions": {} }, @@ -1195,7 +1221,7 @@ "file": "src/amb/TelepathyAccess.sol", "nameLocation": "-1:-1:-1", "scope": 1086, - "sourceUnit": 42408, + "sourceUnit": 42416, "symbolAliases": [ { "foreign": { @@ -1203,7 +1229,7 @@ "name": "TelepathyAccess", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42407, + "referencedDeclaration": 42415, "src": "145:15:6", "typeDescriptions": {} }, @@ -1821,7 +1847,7 @@ "name": "ExecutedMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42711, + "referencedDeclaration": 42719, "src": "954:15:6", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", @@ -2020,7 +2046,7 @@ "432:16:6" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42625, + "referencedDeclaration": 42633, "src": "432:16:6" }, "id": 1022, @@ -2035,7 +2061,7 @@ "450:9:6" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42115, + "referencedDeclaration": 42123, "src": "450:9:6" }, "id": 1024, @@ -2055,11 +2081,11 @@ "fullyImplemented": true, "linearizedBaseContracts": [ 1085, - 42115, - 42744, + 42123, + 42752, 29613, 29404, - 42625 + 42633 ], "name": "DrillTelepathyRouter", "nameLocation": "408:20:6", diff --git a/out/LightClient.sol/LightClient.json b/out/LightClient.sol/LightClient.json index aab5f39..95f6e24 100644 --- a/out/LightClient.sol/LightClient.json +++ b/out/LightClient.sol/LightClient.json @@ -497,22 +497,22 @@ } ], "bytecode": { - "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004b2338038062004b23833981016040819052620000459162000106565b608088905260a087905260c086905260e085905263ffffffff82166101005261ffff81166101205262000079848462000087565b50505050505050506200018d565b60008281526005602052604090205415801590620000b357506000828152600560205260409020548114155b15620000c75750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600080600080600080600080610100898b0312156200012457600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015163ffffffff811681146200016357600080fd5b60e08a015190925061ffff811681146200017c57600080fd5b809150509295985092959890939650565b60805160a05160c05160e051610100516101205161492a620001f9600039600081816102af01526107ce015260006101d001526000818161010a01526107f90152600081816101610152610b960152600081816102fc0152610bba01526000610255015261492a6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea26469706673582212201e59f8679821e529da3d4fec8c2cbc8ef41b0db11363ac187531a3289e61ce2c64736f6c63430008100033", - "sourceMap": "953:8548:113:-:0;;;1711:29;;;-1:-1:-1;;1711:29:113;1736:4;1711:29;;;;;1824:23;2573:643;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2873:47;;;;2930:26;;;;2966:33;;;;3009;;;;3052:31;;;;;3093:38;;;;;3141:68;3166:19;3187:21;3141:24;:68::i;:::-;2573:643;;;;;;;;953:8548;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:113;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:113;9341:18;;-1:-1:-1;;9341:18:113;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;14:812:145:-;145:6;153;161;169;177;185;193;201;254:3;242:9;233:7;229:23;225:33;222:53;;;271:1;268;261:12;222:53;300:9;294:16;284:26;;350:2;339:9;335:18;329:25;319:35;;394:2;383:9;379:18;373:25;363:35;;438:2;427:9;423:18;417:25;407:35;;482:3;471:9;467:19;461:26;451:36;;527:3;516:9;512:19;506:26;496:36;;575:3;564:9;560:19;554:26;620:10;613:5;609:22;602:5;599:33;589:61;;646:1;643;636:12;589:61;719:3;704:19;;698:26;669:5;;-1:-1:-1;768:6:145;755:20;;743:33;;733:61;;790:1;787;780:12;733:61;813:7;803:17;;;14:812;;;;;;;;;;;:::o;:::-;953:8548:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004b2338038062004b23833981016040819052620000459162000106565b608088905260a087905260c086905260e085905263ffffffff82166101005261ffff81166101205262000079848462000087565b50505050505050506200018d565b60008281526005602052604090205415801590620000b357506000828152600560205260409020548114155b15620000c75750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600080600080600080600080610100898b0312156200012457600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015163ffffffff811681146200016357600080fd5b60e08a015190925061ffff811681146200017c57600080fd5b809150509295985092959890939650565b60805160a05160c05160e051610100516101205161492a620001f9600039600081816102af01526107ce015260006101d001526000818161010a01526107f90152600081816101610152610b960152600081816102fc0152610bba01526000610255015261492a6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea2646970667358221220d0fb90cfc7c42934a14de0dc0c218013c6dddea64c086a943d6a07b8973dbc7b64736f6c63430008100033", + "sourceMap": "953:8548:114:-:0;;;1711:29;;;-1:-1:-1;;1711:29:114;1736:4;1711:29;;;;;1824:23;2573:643;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2873:47;;;;2930:26;;;;2966:33;;;;3009;;;;3052:31;;;;;3093:38;;;;;3141:68;3166:19;3187:21;3141:24;:68::i;:::-;2573:643;;;;;;;;953:8548;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;14:812:146:-;145:6;153;161;169;177;185;193;201;254:3;242:9;233:7;229:23;225:33;222:53;;;271:1;268;261:12;222:53;300:9;294:16;284:26;;350:2;339:9;335:18;329:25;319:35;;394:2;383:9;379:18;373:25;363:35;;438:2;427:9;423:18;417:25;407:35;;482:3;471:9;467:19;461:26;451:36;;527:3;516:9;512:19;506:26;496:36;;575:3;564:9;560:19;554:26;620:10;613:5;609:22;602:5;599:33;589:61;;646:1;643;636:12;589:61;719:3;704:19;;698:26;669:5;;-1:-1:-1;768:6:146;755:20;;743:33;;733:61;;790:1;787;780:12;733:61;813:7;803:17;;;14:812;;;;;;;;;;;:::o;:::-;953:8548:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea26469706673582212201e59f8679821e529da3d4fec8c2cbc8ef41b0db11363ac187531a3289e61ce2c64736f6c63430008100033", - "sourceMap": "953:8548:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:41;;;;;;;;160:25:145;;;148:2;133:18;1170:41:113;;;;;;;;1711:29;;;;;;;;;;;;361:14:145;;354:22;336:41;;324:2;309:18;1711:29:113;196:187:145;1123:41:113;;;;;4310:457;;;;;;:::i;:::-;;:::i;:::-;;1918:42;;;;;;:::i;:::-;;;;;;;;;;;;;;26374:712:114;;;;;;:::i;:::-;;:::i;1217:39:113:-;;;;;;;;5564:10:145;5552:23;;;5534:42;;5522:2;5507:18;1217:39:113;5390:192:145;2218:54:113;;;;;;:::i;:::-;;;;;;;;;;;;;;2076:45;;;;;;:::i;:::-;;;;;;;;;;;;;;1824:23;;;;;;1026:48;;;;;2365:57;;;;;;:::i;:::-;;;;;;;;;;;;;;3551:577;;;;;;:::i;:::-;;:::i;1262:42::-;;;;;;;;6011:6:145;5999:19;;;5981:38;;5969:2;5954:18;1262:42:113;5837:188:145;11270:699:115;;;;;;:::i;:::-;;:::i;1080:37:113:-;;;;;4310:457;4414:11;;4378:33;4452:24;4414:11;4452;:24::i;:::-;4435:41;;4486:21;4510:48;4533:10;:24;;;4510:22;:48::i;:::-;4486:72;-1:-1:-1;4568:18:113;4589:17;4486:72;4605:1;4589:17;:::i;:::-;4568:38;;4617:27;4637:6;4617:19;:27::i;:::-;4659:9;4655:106;;;4684:66;4709:10;4721:6;:28;;;4684:24;:66::i;:::-;4368:399;;;;4310:457;:::o;26374:712:114:-;26552:6;26570:24;;:::i;:::-;26614:33;;;;;;;;26636:4;;26614:33;;26636:4;26642;;;;26614:33;;;;26604:43;;;26667:61;;;;;;;26690:4;;:7;26667:61;;;;;;26699:4;;:7;;;26667:61;;;;;;;;;;;;;26710:4;;;;;:7;26667:61;;26719:4;:7;;;26667:61;;;;-1:-1:-1;;;26667:61:114;26657:7;;;:71;26748:33;;;;;;;26770:4;;26748:33;;26776:4;;;;26748:33;;;;26738:7;;;:43;26822:24;;26833:12;26822:24;;;;;;;;;-1:-1:-1;;26822:24:114;;;;;;;;;;;-1:-1:-1;26822:24:114;26791:55;;26861:9;26856:93;26880:12;26876:1;:16;26856:93;;;26930:5;26936:1;26930:8;;;;;;;:::i;:::-;;;;;26913:11;26925:1;26913:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;26894:3;;;;:::i;:::-;;;;26856:93;;;;26962:32;26975:11;26988:5;26962:12;:32::i;:::-;26998:1;26962:37;26958:122;;27022:4;27015:11;;;;;;26958:122;27064:5;27057:12;;;;26374:712;;;;;;;:::o;3551:577:113:-;3615:14;3632:19;3644:6;3632:11;:19::i;:::-;3685;;3615:36;;-1:-1:-1;3666:16:113;:14;:16::i;:::-;:38;3662:115;;;3720:46;;-1:-1:-1;;;3720:46:113;;7934:2:145;3720:46:113;;;7916:21:145;7973:2;7953:18;;;7946:30;8012:34;7992:18;;;7985:62;-1:-1:-1;;;8063:18:145;;;8056:34;8107:19;;3720:46:113;;;;;;;;3662:115;3814:4;;3791:6;:20;;;:27;3787:102;;;3834:44;;-1:-1:-1;;;3834:44:113;;8339:2:145;3834:44:113;;;8321:21:145;8378:2;8358:18;;;8351:30;8417:34;8397:18;;;8390:62;-1:-1:-1;;;8468:18:145;;;8461:32;8510:19;;3834:44:113;8137:398:145;3787:102:113;3903:9;3899:223;;;3928:119;3958:6;:20;;;3980:6;:26;;;4008:6;:25;;;3928:12;:119::i;:::-;3605:523;3551:577;:::o;3899:223::-;4078:33;;-1:-1:-1;;;4078:33:113;;8742:2:145;4078:33:113;;;8724:21:145;8781:2;8761:18;;;8754:30;8820:25;8800:18;;;8793:53;8863:18;;4078:33:113;8540:347:145;11270:699:115;11445:6;11463:22;;:::i;:::-;11505:31;;;;;;;;11525:4;;11505:31;;11525:4;11531;;;;11505:31;;;;11495:41;;;11556:59;;;;;;;11577:4;;:7;11556:59;;;;;;11586:4;;:7;;;11556:59;;;;;;;;;;;;;11597:4;;;;;:7;11556:59;;11606:4;:7;;;11556:59;;;;-1:-1:-1;;;11556:59:115;11546:7;;;:69;11635:31;;;;;;;11655:4;;11635:31;;11661:4;;;;11635:31;;;;11625:7;;;:41;11707:24;;11533:1;11707:24;;;;;;;;;-1:-1:-1;;11707:24:115;;;;;;11525:4;11707:24;;;;;-1:-1:-1;11707:24:115;11676:55;;11746:9;11741:93;11765:12;11761:1;:16;11741:93;;;11815:5;11821:1;11815:8;;;;;;;:::i;:::-;;;;;11798:11;11810:1;11798:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;11779:3;;;;:::i;:::-;;;;11741:93;;;;11847:30;11858:11;11871:5;11847:10;:30::i;4850:556:113:-;4925:4;4941:21;4965:43;4988:6;:19;;;4965:22;:43::i;:::-;5023:37;;;;:22;:37;;;;;;4941:67;;-1:-1:-1;5023:42:113;5019:286;;5081:63;;-1:-1:-1;;;5081:63:113;;9094:2:145;5081:63:113;;;9076:21:145;9133:2;9113:18;;;9106:30;9172:34;9152:18;;;9145:62;-1:-1:-1;;;9223:18:145;;;9216:51;9284:19;;5081:63:113;8892:417:145;5019:286:113;1371:2;5165:6;:20;;;:54;5161:144;;;5235:59;;-1:-1:-1;;;5235:59:113;;9516:2:145;5235:59:113;;;9498:21:145;9555:2;9535:18;;;9528:30;9594:34;9574:18;;;9567:62;-1:-1:-1;;;9645:18:145;;;9638:47;9702:19;;5235:59:113;9314:413:145;5161:144:113;5315:25;5333:6;5315:17;:25::i;:::-;-1:-1:-1;;5358:20:113;;;:41;5381:18;5358:41;-1:-1:-1;5358:41:113;4850:556::o;7603:125::-;7672:7;7698:23;7705:16;7698:4;:23;:::i;:::-;7691:30;7603:125;-1:-1:-1;;7603:125:113:o;6655:882::-;6769:12;;;;6791:25;;:::i;:::-;6869:23;;;;6827:31;6903:183;6927:2;6923:1;:6;6903:183;;;6971:32;6997:6;6971:23;:32;:::i;:::-;6950:6;6957:10;6966:1;6957:6;:10;:::i;:::-;6950:18;;;;;;;:::i;:::-;;;;:53;7043:32;7069:6;7043:23;:32;:::i;:::-;7017:58;-1:-1:-1;6931:3:113;;;;:::i;:::-;;;;6903:183;;;-1:-1:-1;7140:11:113;;:31;;;7095:34;7182:188;7206:2;7202:1;:6;7182:188;;;7246:35;7275:6;7246:26;:35;:::i;:::-;7229:6;7236;7241:1;7236:2;:6;:::i;:::-;7229:14;;;;;;;:::i;:::-;;;;:52;7324:35;7353:6;7324:26;:35;:::i;:::-;7295:64;-1:-1:-1;7210:3:113;;;;:::i;:::-;;;;7182:188;;;-1:-1:-1;7427:28:113;;;;7400:57;;:18;:57::i;:::-;7379:10;;;:79;7495:7;;7386:2;7504:7;;;7513;;;;7477:52;;7495:7;7504;7379:6;7477:17;:52::i;:::-;7469:61;;;;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:113;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:113;9341:18;;-1:-1:-1;;9341:18:113;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;25166:1155:114:-;25285:7;25349:77;25285:7;25467:20;:18;:20::i;:::-;25436:51;;25525:2;:5;;;:12;25505:5;:12;25520:1;25505:16;;;;:::i;:::-;:32;25497:63;;;;-1:-1:-1;;;25497:63:114;;10441:2:145;25497:63:114;;;10423:21:145;10480:2;10460:18;;;10453:30;-1:-1:-1;;;10499:18:145;;;10492:48;10557:18;;25497:63:114;10239:342:145;25497:63:114;25653:27;;;;;;;;;25617:33;25653:27;;;;;;;;;25690:240;25714:5;:12;25710:1;:16;25690:240;;;25766:18;25755:5;25761:1;25755:8;;;;;;;;:::i;:::-;;;;;;;:29;25747:73;;;;-1:-1:-1;;;25747:73:114;;10788:2:145;25747:73:114;;;10770:21:145;10827:2;10807:18;;;10800:30;10866:33;10846:18;;;10839:61;10917:18;;25747:73:114;10586:355:145;25747:73:114;25841:78;25864:4;25870:48;25895:2;:5;;;25901:1;25905;25901:5;;;;:::i;:::-;25895:12;;;;;;;;:::i;:::-;;;;;;;25909:5;25915:1;25909:8;;;;;;;;:::i;:::-;;;;;;;25870:24;:48::i;:::-;25841:22;:78::i;:::-;25834:85;-1:-1:-1;25728:3:114;;;;:::i;:::-;;;;25690:240;;;;25946:38;25969:4;25975:2;:5;;;25981:1;25975:8;;;;;;;;:::i;:::-;;;;;;;25946:22;:38::i;:::-;25939:45;;26012:265;26056:29;26077:5;:7;;;26056:20;:29::i;:::-;26103:5;:7;;;26128:2;:8;;;26154:2;:8;;;26180:4;26202:2;:9;;;26229:5;:7;;;26254:2;:9;;;26012:26;:265::i;:::-;25994:302;;26295:1;26288:8;;;;;;;25994:302;-1:-1:-1;26313:1:114;;25166:1155;-1:-1:-1;;;;;25166:1155:114:o;7818:133:113:-;7867:7;7928:16;7894:30;7912:12;7894:15;:30;:::i;:::-;7893:51;;;;:::i;:::-;7886:58;;7818:133;:::o;8310:721::-;8463:1;8438:13;;;:7;:13;;;;;;:27;8434:170;;8485:13;;;;:7;:13;;;;;;:36;;8481:93;;8554:5;8541:18;;-1:-1:-1;;8541:18:113;;;8481:93;8310:721;;;:::o;8434:170::-;8654:1;8617:25;;;:19;:25;;;;;;:39;8613:193;;8676:25;;;;:19;:25;;;;;;:47;;8672:104;;8756:5;8743:18;;-1:-1:-1;;8743:18:113;;;8310:721;;;:::o;8613:193::-;8816:4;:11;;;8837:13;;;;:7;:13;;;;;;;;:35;;;8882:19;:25;;;;;:46;;;8938:10;:16;;;;;;8957:15;8938:34;;8987:37;8853:19;;8823:4;;8987:37;;8837:13;8987:37;8310:721;;;:::o;10084:1133:115:-;10199:7;10263:77;10199:7;10379:18;:16;:18::i;:::-;10350:47;;10435:2;:5;;;:12;10415:5;:12;10430:1;10415:16;;;;:::i;:::-;:32;10407:63;;;;-1:-1:-1;;;10407:63:115;;10441:2:145;10407:63:115;;;10423:21:145;10480:2;10460:18;;;10453:30;-1:-1:-1;;;10499:18:145;;;10492:48;10557:18;;10407:63:115;10239:342:145;10407:63:115;10561:25;;;;;;;;;10527:31;10561:25;;;;;;;;;10596:236;10620:5;:12;10616:1;:16;10596:236;;;10672:18;10661:5;10667:1;10661:8;;;;;;;;:::i;:::-;;;;;;;:29;10653:73;;;;-1:-1:-1;;;10653:73:115;;10788:2:145;10653:73:115;;;10770:21:145;10827:2;10807:18;;;10800:30;10866:33;10846:18;;;10839:61;10917:18;;10653:73:115;10586:355:145;10653:73:115;10747:74;10768:4;10774:46;10797:2;:5;;;10803:1;10807;10803:5;;;;:::i;10747:74::-;10740:81;-1:-1:-1;10634:3:115;;;;:::i;:::-;;;;10596:236;;;;10848:36;10869:4;10875:2;:5;;;10881:1;10875:8;;;;;;;;:::i;10848:36::-;10841:43;;10912:261;10954:27;10973:5;:7;;;10954:18;:27::i;:::-;10999:5;:7;;;11024:2;:8;;;11050:2;:8;;;11076:4;11098:2;:9;;;11125:5;:7;;;11150:2;:9;;;10912:24;:261::i;5509:1064:113:-;5591:22;5616:39;5635:6;:19;;;5616:18;:39::i;:::-;5591:64;;5665:23;5691:40;5710:6;:20;;;5691:18;:40::i;:::-;5665:66;;5741:23;5767:40;5786:6;:20;;;5767:18;:40::i;:::-;5741:66;;5817:21;5841:43;5864:6;:19;;;5841:22;:43::i;:::-;5894:29;5926:37;;;:22;:37;;;;;;;;;6004:45;;;;;11103:19:145;;;11138:12;;;11131:28;;;5926:37:113;;-1:-1:-1;5997:53:113;;11175:12:145;;6004:45:113;;;-1:-1:-1;;6004:45:113;;;;;;;;;;5997:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5993:57;;6064:51;6084:1;6087:6;:26;;;6071:43;;;;;;;;11103:19:145;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6071:43:113;;;;-1:-1:-1;;6071:43:113;;;;;;;;;;6064:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6060:55;;6129:40;6149:1;6152:15;6136:32;;;;;;;;11103:19:145;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6136:32:113;;;;-1:-1:-1;;6136:32:113;;;;;;;;;;6129:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6125:44;;6183:50;6203:1;6206:6;:25;;;6190:42;;;;;;;;11103:19:145;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6190:42:113;;;;-1:-1:-1;;6190:42:113;;;;;;;;;;6183:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:54;;6247:46;6267:1;6270:21;6254:38;;;;;;;;11103:19:145;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6254:38:113;;;;-1:-1:-1;;6254:38:113;;;;;;;;;;6247:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6243:50;-1:-1:-1;6303:9:113;6323:30;6243:50;6323:18;:30::i;:::-;6315:39;-1:-1:-1;6373:23:113;6395:1;-1:-1:-1;;;6373:23:113;:::i;:::-;6436:12;;;;6458:39;;;;;;;;;6368:29;;;;6458:39;;;6531:7;;6540;;;;6549;;;;6368:29;;6436:12;;6515:50;;6531:7;;6458:39;6515:15;:50::i;:::-;6507:59;;;;;;5581:992;;;;;;;;;5509:1064;:::o;315:892:109:-;373:7;567:1;492;496:66;492:70;491:77;;473:1;398;402:66;398:70;397:77;;396:173;392:177;;755:2;680:1;684:66;680:70;679:78;;660:2;585:1;589:66;585:70;584:78;;583:175;579:179;;944:2;869:1;873:66;869:70;868:78;;849:2;774:1;778:66;774:70;773:78;;772:175;768:179;;1133:2;1058:1;1062:66;1058:70;1057:78;;1038:2;963:1;-1:-1:-1;;963:70:109;962:78;;961:175;957:179;;1169:3;1164:1;:8;;1156:3;1151:1;:8;;1150:23;1146:27;;1198:1;1190:10;;1183:17;;315:892;;;:::o;7822:17338:114:-;7875:28;;:::i;:::-;7926:212;;;;;;;;7961:77;7926:212;;8052:76;7926:212;;;;;;;;7915:223;;;8160:465;;;;;;;;8213:76;8160:465;;;;;;8307:76;8160:465;;;;;;;;;;;;;;;;;;8429:77;8160:465;;8524:77;8160:465;;;;-1:-1:-1;;;8160:465:114;8149:8;;;:476;;;;8647:465;;;;;;;8700:77;8647:465;;;;;;8795:77;8647:465;;;;;;;;;;;;;8918:76;8647:465;;9012:76;8647:465;;;;-1:-1:-1;;;8647:465:114;8635:9;;;:477;9134:463;;;;;;;9187:76;9134:463;;;;;;9281:77;9134:463;;;;;;;;;;;;;9404:75;9134:463;;9497:76;9134:463;;;;-1:-1:-1;;;9134:463:114;9122:9;;;:475;9615:31;;9643:2;9615:31;;;;;;;;;;9643:2;9615:31;;;-1:-1:-1;;;;;;;;;;;;;;;;;9615:31:114;;;;;;;;;;;;-1:-1:-1;;9607:5:114;;;:39;;;9668:211;;;;;;;;;9703:76;9668:211;;9793:76;9668:211;;;;9657:5;;:8;;-1:-1:-1;;9657:8:114;;;;:::i;:::-;;;;;;:222;;;;9901:213;;;;;;;;9936:77;9901:213;;;;10027:77;9901:213;;;9890:2;:5;;;9896:1;9890:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10136:213;;;;;;;;10171:77;10136:213;;;;10262:77;10136:213;;;10125:2;:5;;;10131:1;10125:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10371:210;;;;;;;;10406:75;10371:210;;;;10495:76;10371:210;;;10360:2;:5;;;10366:1;10360:8;;;;;;;;:::i;:::-;;;;;;:221;;;;10603:212;;;;;;;;10638:77;10603:212;;;;10729:76;10603:212;;;10592:2;:5;;;10598:1;10592:8;;;;;;;;:::i;:::-;;;;;;:223;;;;10837:211;;;;;;;;10872:77;10837:211;;;;10963:75;10837:211;;;10826:2;:5;;;10832:1;10826:8;;;;;;;;:::i;:::-;;;;;;:222;;;;11070:213;;;;;;;;11105:77;11070:213;;;;11196:77;11070:213;;;11059:2;:5;;;11065:1;11059:8;;;;;;;;:::i;:::-;;;;;;:224;;;;11305:212;;;;;;;;11340:77;11305:212;;;;11431:76;11305:212;;;11294:2;:5;;;11300:1;11294:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11539:212;;;;;;;;11574:77;11539:212;;;;11665:76;11539:212;;;11528:2;:5;;;11534:1;11528:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11773:211;;;;;;;;11808:76;11773:211;;;;11898:76;11773:211;;;11762:2;:5;;;11768:1;11762:8;;;;;;;;:::i;:::-;;;;;;:222;;;;12007:212;;;;;;;;12042:77;12007:212;;;;12133:76;12007:212;;;11995:2;:5;;;12001:2;11995:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12242:213;;;;;;;;12277:77;12242:213;;;;12368:77;12242:213;;;12230:2;:5;;;12236:2;12230:9;;;;;;;;:::i;:::-;;;;;;:225;;;;12478:211;;;;;;;;12513:76;12478:211;;;;12603:76;12478:211;;;12466:2;:5;;;12472:2;12466:9;;;;;;;;:::i;:::-;;;;;;:223;;;;12712:212;;;;;;;;12747:76;12712:212;;;;12837:77;12712:212;;;12700:2;:5;;;12706:2;12700:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12947:211;;;;;;;;12982:76;12947:211;;;;13072:76;12947:211;;;12935:2;:5;;;12941:2;12935:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13181:213;;;;;;;;13216:77;13181:213;;;;13307:77;13181:213;;;13169:2;:5;;;13175:2;13169:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13417:213;;;;;;;;13452:77;13417:213;;;;13543:77;13417:213;;;13405:2;:5;;;13411:2;13405:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13653:211;;;;;;;;13688:76;13653:211;;;;13778:76;13653:211;;;13641:2;:5;;;13647:2;13641:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13887:212;;;;;;;;13922:76;13887:212;;;;14012:77;13887:212;;;13875:2;:5;;;13881:2;13875:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14122:212;;;;;;;;14157:77;14122:212;;;;14248:76;14122:212;;;14110:2;:5;;;14116:2;14110:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14357:211;;;;;;;;14392:77;14357:211;;;;14483:75;14357:211;;;14345:2;:5;;;14351:2;14345:9;;;;;;;;:::i;:::-;;;;;;:223;;;;14591:213;;;;;;;;14626:77;14591:213;;;;14717:77;14591:213;;;14579:2;:5;;;14585:2;14579:9;;;;;;;;:::i;:::-;;;;;;:225;;;;14827:213;;;;;;;;14862:77;14827:213;;;;14953:77;14827:213;;;14815:2;:5;;;14821:2;14815:9;;;;;;;;:::i;:::-;;;;;;:225;;;;15063:210;;;;;;;;15098:75;15063:210;;;;15187:76;15063:210;;;15051:2;:5;;;15057:2;15051:9;;;;;;;;:::i;:::-;;;;;;:222;;;;15296:212;;;;;;;;15331:77;15296:212;;;;15422:76;15296:212;;;15284:2;:5;;;15290:2;15284:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15531:212;;;;;;;;15566:76;15531:212;;;;15656:77;15531:212;;;15519:2;:5;;;15525:2;15519:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15766:212;;;;;;;;15801:77;15766:212;;;;15892:76;15766:212;;;15754:2;:5;;;15760:2;15754:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16001:213;;;;;;;;16036:77;16001:213;;;;16127:77;16001:213;;;15989:2;:5;;;15995:2;15989:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16237:213;;;;;;;;16272:77;16237:213;;;;16363:77;16237:213;;;16225:2;:5;;;16231:2;16225:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16473:213;;;;;;;;16508:77;16473:213;;;;16599:77;16473:213;;;16461:2;:5;;;16467:2;16461:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16709:212;;;;;;;;16744:76;16709:212;;;;16834:77;16709:212;;;16697:2;:5;;;16703:2;16697:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16944:213;;;;;;;;16979:77;16944:213;;;;17070:77;16944:213;;;16932:2;:5;;;16938:2;16932:9;;;;;;;;:::i;:::-;;;;;;:225;;;;17180:211;;;;;;;;17215:76;17180:211;;;;17305:76;17180:211;;;17168:2;:5;;;17174:2;17168:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17414:212;;;;;;;;17449:77;17414:212;;;;17540:76;17414:212;;;17402:2;:5;;;17408:2;17402:9;;;;;;;;:::i;:::-;;;;;;:224;;;;17649:211;;;;;;;;17684:76;17649:211;;;;17774:76;17649:211;;;17637:2;:5;;;17643:2;17637:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17883:212;;;;;;;;17918:77;17883:212;;;;18009:76;17883:212;;;17871:2;:5;;;17877:2;17871:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18118:212;;;;;;;;18153:76;18118:212;;;;18243:77;18118:212;;;18106:2;:5;;;18112:2;18106:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18353:213;;;;;;;;18388:77;18353:213;;;;18479:77;18353:213;;;18341:2;:5;;;18347:2;18341:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18589:213;;;;;;;;18624:77;18589:213;;;;18715:77;18589:213;;;18577:2;:5;;;18583:2;18577:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18825:213;;;;;;;;18860:77;18825:213;;;;18951:77;18825:213;;;18813:2;:5;;;18819:2;18813:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19061:211;;;;;;;;19096:77;19061:211;;;;19187:75;19061:211;;;19049:2;:5;;;19055:2;19049:9;;;;;;;;:::i;:::-;;;;;;:223;;;;19295:213;;;;;;;;19330:77;19295:213;;;;19421:77;19295:213;;;19283:2;:5;;;19289:2;19283:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19531:213;;;;;;;;19566:77;19531:213;;;;19657:77;19531:213;;;19519:2;:5;;;19525:2;19519:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19767:212;;;;;;;;19802:76;19767:212;;;;19892:77;19767:212;;;19755:2;:5;;;19761:2;19755:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20002:211;;;;;;;;20037:76;20002:211;;;;20127:76;20002:211;;;19990:2;:5;;;19996:2;19990:9;;;;;;;;:::i;:::-;;;;;;:223;;;;20236:212;;;;;;;;20271:77;20236:212;;;;20362:76;20236:212;;;20224:2;:5;;;20230:2;20224:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20471:212;;;;;;;;20506:77;20471:212;;;;20597:76;20471:212;;;20459:2;:5;;;20465:2;20459:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20706:213;;;;;;;;20741:77;20706:213;;;;20832:77;20706:213;;;20694:2;:5;;;20700:2;20694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;20942:212;;;;;;;;20977:77;20942:212;;;;21068:76;20942:212;;;20930:2;:5;;;20936:2;20930:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21177:212;;;;;;;;21212:76;21177:212;;;;21302:77;21177:212;;;21165:2;:5;;;21171:2;21165:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21412:213;;;;;;;;21447:77;21412:213;;;;21538:77;21412:213;;;21400:2;:5;;;21406:2;21400:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21648:213;;;;;;;;21683:77;21648:213;;;;21774:77;21648:213;;;21636:2;:5;;;21642:2;21636:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21884:211;;;;;;;;21919:76;21884:211;;;;22009:76;21884:211;;;21872:2;:5;;;21878:2;21872:9;;;;;;;;:::i;:::-;;;;;;:223;;;;22118:213;;;;;;;;22153:77;22118:213;;;;22244:77;22118:213;;;22106:2;:5;;;22112:2;22106:9;;;;;;;;:::i;:::-;;;;;;:225;;;;22354:212;;;;;;;;22389:76;22354:212;;;;22479:77;22354:212;;;22342:2;:5;;;22348:2;22342:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22589:212;;;;;;;;22624:76;22589:212;;;;22714:77;22589:212;;;22577:2;:5;;;22583:2;22577:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22824:212;;;;;;;;22859:76;22824:212;;;;22949:77;22824:212;;;22812:2;:5;;;22818:2;22812:9;;;;;;;;:::i;:::-;;;;;;:224;;;;23059:211;;;;;;;;23094:77;23059:211;;;;23185:75;23059:211;;;23047:2;:5;;;23053:2;23047:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23293:213;;;;;;;;23328:77;23293:213;;;;23419:77;23293:213;;;23281:2;:5;;;23287:2;23281:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23529:213;;;;;;;;23564:77;23529:213;;;;23655:77;23529:213;;;23517:2;:5;;;23523:2;23517:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23765:211;;;;;;;;23800:76;23765:211;;;;23890:76;23765:211;;;23753:2;:5;;;23759:2;23753:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23999:212;;;;;;;;24034:76;23999:212;;;;24124:77;23999:212;;;23987:2;:5;;;23993:2;23987:9;;;;;;;;:::i;:::-;;;;;;:224;;;;24234:213;;;;;;;;24269:77;24234:213;;;;24360:77;24234:213;;;24222:2;:5;;;24228:2;24222:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24470:213;;;;;;;;24505:77;24470:213;;;;24596:77;24470:213;;;24458:2;:5;;;24464:2;24458:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24706:213;;;;;;;;24741:77;24706:213;;;;24832:77;24706:213;;;24694:2;:5;;;24700:2;24694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24942:211;;;;;;;;24977:76;24942:211;;;;25067:76;24942:211;;;24930:2;:5;;;24936:2;24930:9;;;;;;;;:::i;:::-;;;;;;:223;;;;7822:17338;:::o;3929:557::-;-1:-1:-1;;;;;;;;;;;;;;;;;4029:23:114;;:::i;:::-;4073:3;;4062:14;;:8;4097:3;;;;4086:8;;;:14;4110:8;;;:12;;;-1:-1:-1;4300:4:114;4297:1;4291:4;4062:14;4281:1;4274:4;4267:5;4263:16;4252:53;4241:64;-1:-1:-1;4241:64:114;;4375:47;4402:20;4411:9;4375:47;;4449:7;4441:38;;;;-1:-1:-1;;;4441:38:114;;12006:2:145;4441:38:114;;;11988:21:145;12045:2;12025:18;;;12018:30;-1:-1:-1;;;12064:18:145;;;12057:48;12122:18;;4441:38:114;11804:342:145;4441:38:114;4019:467;;3929:557;;;;:::o;3151:622::-;-1:-1:-1;;;;;;;;;;;;;;;;;3286:23:114;;:::i;:::-;3330:4;;3319:15;;:8;3355:4;;;;3344:8;;;:15;3380:4;;3369:8;;;:15;3405:4;;;3394:8;;;;:15;;;;-1:-1:-1;;3584:1:114;3578:4;3319:15;3568:1;3561:4;3554:5;3550:16;3539:53;3528:64;-1:-1:-1;3528:64:114;;3662:47;3689:20;3698:9;3662:47;;3736:7;3728:38;;;;-1:-1:-1;;;3728:38:114;;12353:2:145;3728:38:114;;;12335:21:145;12392:2;12372:18;;;12365:30;-1:-1:-1;;;12411:18:145;;;12404:48;12469:18;;3728:38:114;12151:342:145;2742:357:114;-1:-1:-1;;;;;;;;;;;;;;;;;2982:3:114;;2891:77;;2982:8;:20;;;;-1:-1:-1;2994:3:114;;;;:8;2982:20;2978:71;;;-1:-1:-1;;3025:13:114;;;;;;;;;-1:-1:-1;3025:13:114;;;;;;;;2742:357;-1:-1:-1;2742:357:114:o;2978:71::-;3065:27;;;;;;;;3073:1;:3;;;3065:27;;;;3089:1;3083;:3;;;:7;;;;:::i;:::-;3078:13;;:1;:13;:::i;:::-;3065:27;;3058:34;2742:357;-1:-1:-1;;;2742:357:114:o;6832:568::-;7137:16;;;7151:1;7137:16;;;;;;;;;7099:4;;;;7137:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7137:16:114;;;;;;;;;;;;-1:-1:-1;;7185:16:114;;;7199:1;7185:16;;;;;;;;;7115:38;;-1:-1:-1;7163:19:114;;7185:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7163:38;;7219:2;7211;7214:1;7211:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7239:2;7231;7234:1;7231:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7259:2;7251;7254:1;7251:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7279:2;7271;7274:1;7271:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7299:2;7291;7294:1;7291:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7319:2;7311;7314:1;7311:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7339:2;7331;7334:1;7331:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7359:2;7351;7354:1;7351:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7378:15;7386:2;7390;7378:7;:15::i;:::-;7371:22;6832:568;-1:-1:-1;;;;;;;;;;;6832:568:114:o;7796:2282:115:-;7847:26;;:::i;:::-;7896:210;;;;;;;;7929:77;7896:210;;8020:76;7896:210;;;;;;;;7885:221;;;8128:463;;;;;;;;8179:76;8128:463;;;;;;8273:76;8128:463;;;;;;;;;;;;;;;;;;8395:77;8128:463;;8490:77;8128:463;;;;-1:-1:-1;;;8128:463:115;8117:8;;;:474;;;;8613:463;;;;;;;8664:77;8613:463;;;;;;8759:77;8613:463;;;;;;;;;;;;;8882:76;8613:463;;8976:76;8613:463;;;;-1:-1:-1;;;8613:463:115;8601:9;;;:475;9098:462;;;;;;;9149:76;9098:462;;;;;;9243:77;9098:462;;;;;;;;;;;;;9366:76;9098:462;;9460:76;9098:462;;;;-1:-1:-1;;;9098:462:115;9086:9;;;:474;9578:28;;9604:1;9578:28;;;;;;;;;9604:1;9578:28;;;-1:-1:-1;;;;;;;;;;;;;;;;;9578:28:115;;;;;;;;;;;;-1:-1:-1;;9570:5:115;;;:36;;;9628:210;;;;;;;;;9661:77;9628:210;;9752:76;9628:210;;;;9617:5;;:8;;-1:-1:-1;;9617:8:115;;;;:::i;:::-;;;;;;:221;;;;9860:211;;;;;;;;9893:77;9860:211;;;;9984:77;9860:211;;;9849:2;:5;;;9855:1;9849:8;;;;;;;;:::i;6830:568::-;7135:16;;;7149:1;7135:16;;;;;;;;;7097:4;;;;7135:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7135:16:115;;;;;;;;;;;;-1:-1:-1;;7183:16:115;;;7197:1;7183:16;;;;;;;;;7113:38;;-1:-1:-1;7161:19:115;;7183:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7161:38;;7217:2;7209;7212:1;7209:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7237:2;7229;7232:1;7229:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7257:2;7249;7252:1;7249:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7277:2;7269;7272:1;7269:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7297:2;7289;7292:1;7289:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7317:2;7309;7312:1;7309:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7337:2;7329;7332:1;7329:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7357:2;7349;7352:1;7349:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7376:15;7384:2;7388;7376:7;:15::i;4698:1073:114:-;4780:4;4817:2;:9;4804:2;:9;:22;4796:57;;;;-1:-1:-1;;;4796:57:114;;12700:2:145;4796:57:114;;;12682:21:145;12739:2;12719:18;;;12712:30;-1:-1:-1;;;12758:18:145;;;12751:52;12820:18;;4796:57:114;12498:346:145;4796:57:114;4882:9;;4863:16;4921:12;4882:9;4932:1;4921:12;:::i;:::-;4901:32;;4943:22;4979:9;4968:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4968:21:114;;4943:46;;5004:9;4999:302;5023:8;5019:1;:12;4999:302;;;5071:2;5074:1;5071:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5052:5;5058:1;5062;5058:5;;;;:::i;:::-;:9;;5066:1;5058:9;:::i;:::-;5052:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5111:2;5114:1;5111:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5092:5;5098:1;5102;5098:5;;;;:::i;:::-;:9;;5106:1;5098:9;:::i;:::-;5092:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5151:2;5154:1;5151:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5132:5;5138;:1;5142;5138:5;:::i;:::-;:9;;5146:1;5138:9;:::i;:::-;5132:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5194:2;5197:1;5194:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5175:5;5181;:1;5185;5181:5;:::i;:::-;:9;;5189:1;5181:9;:::i;:::-;5175:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5237:2;5240:1;5237:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5245:1;5237:10;;;;;;;:::i;:::-;;;;;5218:5;5224;:1;5228;5224:5;:::i;:::-;:9;;5232:1;5224:9;:::i;:::-;5218:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5280:2;5283:1;5280:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5288:1;5280:10;;;;;;;:::i;:::-;;;;;5261:5;5267;:1;5271;5267:5;:::i;:::-;:9;;5275:1;5267:9;:::i;:::-;5261:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5033:3;;;;:::i;:::-;;;;4999:302;;;;5310:21;;:::i;:::-;5341:12;5554:4;5549:3;5542:4;5531:9;5527:20;5520:4;5513:5;5509:16;5506:1;5499:4;5492:5;5488:16;5477:82;5450:109;-1:-1:-1;5450:109:114;;5629:47;5656:20;5665:9;5629:47;;5703:7;5695:41;;;;-1:-1:-1;;;5695:41:114;;13224:2:145;5695:41:114;;;13206:21:145;13263:2;13243:18;;;13236:30;-1:-1:-1;;;13282:18:145;;;13275:51;13343:18;;5695:41:114;13022:345:145;5695:41:114;-1:-1:-1;5753:6:114;:11;;;;-1:-1:-1;;;;;;4698:1073:114:o;4696::115:-;4778:4;4815:2;:9;4802:2;:9;:22;4794:57;;;;-1:-1:-1;;;4794:57:115;;12700:2:145;4794:57:115;;;12682:21:145;12739:2;12719:18;;;12712:30;-1:-1:-1;;;12758:18:145;;;12751:52;12820:18;;4794:57:115;12498:346:145;4794:57:115;4880:9;;4861:16;4919:12;4880:9;4930:1;4919:12;:::i;:::-;4899:32;;4941:22;4977:9;4966:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4966:21:115;;4941:46;;5002:9;4997:302;5021:8;5017:1;:12;4997:302;;;5069:2;5072:1;5069:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5050:5;5056:1;5060;5056:5;;;;:::i;:::-;:9;;5064:1;5056:9;:::i;:::-;5050:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5109:2;5112:1;5109:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5090:5;5096:1;5100;5096:5;;;;:::i;:::-;:9;;5104:1;5096:9;:::i;:::-;5090:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5149:2;5152:1;5149:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5130:5;5136;:1;5140;5136:5;:::i;:::-;:9;;5144:1;5136:9;:::i;:::-;5130:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5192:2;5195:1;5192:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5173:5;5179;:1;5183;5179:5;:::i;:::-;:9;;5187:1;5179:9;:::i;:::-;5173:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5235:2;5238:1;5235:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5243:1;5235:10;;;;;;;:::i;:::-;;;;;5216:5;5222;:1;5226;5222:5;:::i;:::-;:9;;5230:1;5222:9;:::i;:::-;5216:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5278:2;5281:1;5278:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5286:1;5278:10;;;;;;;:::i;:::-;;;;;5259:5;5265;:1;5269;5265:5;:::i;:::-;:9;;5273:1;5265:9;:::i;:::-;5259:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5031:3;;;;:::i;:::-;;;;4997:302;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;388:127:145:-;449:10;444:3;440:20;437:1;430:31;480:4;477:1;470:15;504:4;501:1;494:15;520:246;587:2;581:9;;;617:15;;662:18;647:34;;683:22;;;644:62;641:88;;;709:18;;:::i;:::-;745:2;738:22;520:246;:::o;771:479::-;821:5;874:3;867:4;859:6;855:17;851:27;841:55;;892:1;889;882:12;841:55;916:17;;:::i;:::-;955:3;993:2;985:6;981:15;1019:3;1011:6;1008:15;1005:35;;;1036:1;1033;1026:12;1005:35;1060:6;1075:146;1091:6;1086:3;1083:15;1075:146;;;1159:17;;1147:30;;1206:4;1197:14;;;;1108;1075:146;;;-1:-1:-1;1239:5:145;;771:479;-1:-1:-1;;;;;771:479:145:o;1255:501::-;1311:5;1364:3;1357:4;1349:6;1345:17;1341:27;1331:55;;1382:1;1379;1372:12;1331:55;1406:17;;:::i;:::-;1445:3;1483;1475:6;1471:16;1510:3;1502:6;1499:15;1496:35;;;1527:1;1524;1517:12;1496:35;1551:6;1566:161;1582:6;1577:3;1574:15;1566:161;;;1648:34;1678:3;1673;1648:34;:::i;:::-;1636:47;;1712:4;1703:14;;;;1608:2;1599:12;1566:161;;1761:605;1820:5;1868:6;1856:9;1851:3;1847:19;1843:32;1840:52;;;1888:1;1885;1878:12;1840:52;1921:2;1915:9;1963:4;1955:6;1951:17;2034:6;2022:10;2019:22;1998:18;1986:10;1983:34;1980:62;1977:88;;;2045:18;;:::i;:::-;2081:2;2074:22;2114:6;-1:-1:-1;2114:6:145;2144:40;2180:3;2169:9;2144:40;:::i;:::-;2136:6;2129:56;2220:55;2271:3;2266:2;2255:9;2251:18;2220:55;:::i;:::-;2213:4;2205:6;2201:17;2194:82;2309:50;2355:3;2349;2338:9;2334:19;2309:50;:::i;:::-;2304:2;2296:6;2292:15;2285:75;;1761:605;;;;:::o;2371:773::-;2433:5;2481:6;2469:9;2464:3;2460:19;2456:32;2453:52;;;2501:1;2498;2491:12;2453:52;2534:2;2528:9;2576:4;2568:6;2564:17;2647:6;2635:10;2632:22;2611:18;2599:10;2596:34;2593:62;2590:88;;;2658:18;;:::i;:::-;2698:10;2694:2;2687:22;;2727:6;2718:15;;2770:9;2757:23;2749:6;2742:39;2842:2;2831:9;2827:18;2814:32;2809:2;2801:6;2797:15;2790:57;2908:2;2897:9;2893:18;2880:32;2875:2;2867:6;2863:15;2856:57;2974:2;2963:9;2959:18;2946:32;2941:2;2933:6;2929:15;2922:57;3041:3;3030:9;3026:19;3013:33;3007:3;2999:6;2995:16;2988:59;3081:56;3133:3;3127;3116:9;3112:19;3081:56;:::i;:::-;3075:3;3067:6;3063:16;3056:82;;2371:773;;;;:::o;3149:714::-;3244:6;3297:3;3285:9;3276:7;3272:23;3268:33;3265:53;;;3314:1;3311;3304:12;3265:53;3347:2;3341:9;3389:4;3381:6;3377:17;3460:6;3448:10;3445:22;3424:18;3412:10;3409:34;3406:62;3403:88;;;3471:18;;:::i;:::-;3507:2;3500:22;3546:53;3591:7;3580:9;3546:53;:::i;:::-;3538:6;3531:69;3663:3;3652:9;3648:19;3635:33;3628:4;3620:6;3616:17;3609:60;3730:3;3719:9;3715:19;3702:33;3697:2;3689:6;3685:15;3678:58;3771:60;3823:7;3817:3;3806:9;3802:19;3771:60;:::i;:::-;3764:4;3752:17;;3745:87;3756:6;3149:714;-1:-1:-1;;;3149:714:145:o;3868:180::-;3927:6;3980:2;3968:9;3959:7;3955:23;3951:32;3948:52;;;3996:1;3993;3986:12;3948:52;-1:-1:-1;4019:23:145;;3868:180;-1:-1:-1;3868:180:145:o;4235:1150::-;4437:6;4445;4453;4461;4492:4;4537:2;4525:9;4516:7;4512:23;4508:32;4505:52;;;4553:1;4550;4543:12;4505:52;4576:44;4612:7;4601:9;4576:44;:::i;:::-;4566:54;;4639:59;4690:7;4685:2;4674:9;4670:18;4639:59;:::i;:::-;4629:69;;4717:54;4763:7;4757:3;4746:9;4742:19;4717:54;:::i;:::-;4707:64;;4815:7;4809:3;4798:9;4794:19;4790:33;4780:61;;4837:1;4834;4827:12;4780:61;4870:2;4864:9;4912:4;4904:6;4900:17;4983:6;4971:10;4968:22;4947:18;4935:10;4932:34;4929:62;4926:88;;;4994:18;;:::i;:::-;5030:2;5023:22;5094:18;;;;5065:6;5124:19;;;5121:39;;;5156:1;5153;5146:12;5121:39;5195:3;5184:9;5180:19;5208:146;5224:6;5219:3;5216:15;5208:146;;;5292:17;;5280:30;;5339:4;5330:14;;;;5241;5208:146;;;5212:3;;5373:6;5363:16;;;;4235:1150;;;;;;;:::o;5587:245::-;5680:6;5733:3;5721:9;5712:7;5708:23;5704:33;5701:53;;;5750:1;5747;5740:12;5701:53;5773;5818:7;5807:9;5773:53;:::i;:::-;5763:63;5587:245;-1:-1:-1;;;5587:245:145:o;6030:1163::-;6231:6;6239;6247;6255;6286:3;6330:2;6318:9;6309:7;6305:23;6301:32;6298:52;;;6346:1;6343;6336:12;6298:52;6369:44;6405:7;6394:9;6369:44;:::i;:::-;6359:54;;6432:59;6483:7;6478:2;6467:9;6463:18;6432:59;:::i;:::-;6422:69;;6510:54;6556:7;6550:3;6539:9;6535:19;6510:54;:::i;:::-;6500:64;;6608:7;6602:3;6591:9;6587:19;6583:33;6573:61;;6630:1;6627;6620:12;6573:61;6663:2;6657:9;6685:2;6726;6718:6;6714:15;6795:6;6783:10;6780:22;6759:18;6747:10;6744:34;6741:62;6738:88;;;6806:18;;:::i;:::-;6842:2;6835:22;6906:18;;;;6877:6;6936:19;;;6933:39;;;6968:1;6965;6958:12;6933:39;7007:3;6996:9;6992:19;7020:142;7036:6;7031:3;7028:15;7020:142;;;7102:17;;7090:30;;7140:12;;;;7053;;7020:142;;;-1:-1:-1;6030:1163:145;;;;-1:-1:-1;6030:1163:145;;-1:-1:-1;7181:6:145;-1:-1:-1;;;;6030:1163:145:o;7198:127::-;7259:10;7254:3;7250:20;7247:1;7240:31;7290:4;7287:1;7280:15;7314:4;7311:1;7304:15;7330:125;7395:9;;;7416:10;;;7413:36;;;7429:18;;:::i;7460:127::-;7521:10;7516:3;7512:20;7509:1;7502:31;7552:4;7549:1;7542:15;7576:4;7573:1;7566:15;7592:135;7631:3;7652:17;;;7649:43;;7672:18;;:::i;:::-;-1:-1:-1;7719:1:145;7708:13;;7592:135::o;9732:127::-;9793:10;9788:3;9784:20;9781:1;9774:31;9824:4;9821:1;9814:15;9848:4;9845:1;9838:15;9864:120;9904:1;9930;9920:35;;9935:18;;:::i;:::-;-1:-1:-1;9969:9:145;;9864:120::o;9989:112::-;10021:1;10047;10037:35;;10052:18;;:::i;:::-;-1:-1:-1;10086:9:145;;9989:112::o;10106:128::-;10173:9;;;10194:11;;;10191:37;;;10208:18;;:::i;11198:412::-;11327:3;11365:6;11359:13;11390:1;11400:129;11414:6;11411:1;11408:13;11400:129;;;11512:4;11496:14;;;11492:25;;11486:32;11473:11;;;11466:53;11429:12;11400:129;;;-1:-1:-1;11584:1:145;11548:16;;11573:13;;;-1:-1:-1;11548:16:145;11198:412;-1:-1:-1;11198:412:145:o;11615:184::-;11685:6;11738:2;11726:9;11717:7;11713:23;11709:32;11706:52;;;11754:1;11751;11744:12;11706:52;-1:-1:-1;11777:16:145;;11615:184;-1:-1:-1;11615:184:145:o;12849:168::-;12889:7;12955:1;12951;12947:6;12943:14;12940:1;12937:21;12932:1;12925:9;12918:17;12914:45;12911:71;;;12962:18;;:::i;:::-;-1:-1:-1;13002:9:145;;12849:168::o", + "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea2646970667358221220d0fb90cfc7c42934a14de0dc0c218013c6dddea64c086a943d6a07b8973dbc7b64736f6c63430008100033", + "sourceMap": "953:8548:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:41;;;;;;;;160:25:146;;;148:2;133:18;1170:41:114;;;;;;;;1711:29;;;;;;;;;;;;361:14:146;;354:22;336:41;;324:2;309:18;1711:29:114;196:187:146;1123:41:114;;;;;4310:457;;;;;;:::i;:::-;;:::i;:::-;;1918:42;;;;;;:::i;:::-;;;;;;;;;;;;;;26374:712:115;;;;;;:::i;:::-;;:::i;1217:39:114:-;;;;;;;;5564:10:146;5552:23;;;5534:42;;5522:2;5507:18;1217:39:114;5390:192:146;2218:54:114;;;;;;:::i;:::-;;;;;;;;;;;;;;2076:45;;;;;;:::i;:::-;;;;;;;;;;;;;;1824:23;;;;;;1026:48;;;;;2365:57;;;;;;:::i;:::-;;;;;;;;;;;;;;3551:577;;;;;;:::i;:::-;;:::i;1262:42::-;;;;;;;;6011:6:146;5999:19;;;5981:38;;5969:2;5954:18;1262:42:114;5837:188:146;11270:699:116;;;;;;:::i;:::-;;:::i;1080:37:114:-;;;;;4310:457;4414:11;;4378:33;4452:24;4414:11;4452;:24::i;:::-;4435:41;;4486:21;4510:48;4533:10;:24;;;4510:22;:48::i;:::-;4486:72;-1:-1:-1;4568:18:114;4589:17;4486:72;4605:1;4589:17;:::i;:::-;4568:38;;4617:27;4637:6;4617:19;:27::i;:::-;4659:9;4655:106;;;4684:66;4709:10;4721:6;:28;;;4684:24;:66::i;:::-;4368:399;;;;4310:457;:::o;26374:712:115:-;26552:6;26570:24;;:::i;:::-;26614:33;;;;;;;;26636:4;;26614:33;;26636:4;26642;;;;26614:33;;;;26604:43;;;26667:61;;;;;;;26690:4;;:7;26667:61;;;;;;26699:4;;:7;;;26667:61;;;;;;;;;;;;;26710:4;;;;;:7;26667:61;;26719:4;:7;;;26667:61;;;;-1:-1:-1;;;26667:61:115;26657:7;;;:71;26748:33;;;;;;;26770:4;;26748:33;;26776:4;;;;26748:33;;;;26738:7;;;:43;26822:24;;26833:12;26822:24;;;;;;;;;-1:-1:-1;;26822:24:115;;;;;;;;;;;-1:-1:-1;26822:24:115;26791:55;;26861:9;26856:93;26880:12;26876:1;:16;26856:93;;;26930:5;26936:1;26930:8;;;;;;;:::i;:::-;;;;;26913:11;26925:1;26913:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;26894:3;;;;:::i;:::-;;;;26856:93;;;;26962:32;26975:11;26988:5;26962:12;:32::i;:::-;26998:1;26962:37;26958:122;;27022:4;27015:11;;;;;;26958:122;27064:5;27057:12;;;;26374:712;;;;;;;:::o;3551:577:114:-;3615:14;3632:19;3644:6;3632:11;:19::i;:::-;3685;;3615:36;;-1:-1:-1;3666:16:114;:14;:16::i;:::-;:38;3662:115;;;3720:46;;-1:-1:-1;;;3720:46:114;;7934:2:146;3720:46:114;;;7916:21:146;7973:2;7953:18;;;7946:30;8012:34;7992:18;;;7985:62;-1:-1:-1;;;8063:18:146;;;8056:34;8107:19;;3720:46:114;;;;;;;;3662:115;3814:4;;3791:6;:20;;;:27;3787:102;;;3834:44;;-1:-1:-1;;;3834:44:114;;8339:2:146;3834:44:114;;;8321:21:146;8378:2;8358:18;;;8351:30;8417:34;8397:18;;;8390:62;-1:-1:-1;;;8468:18:146;;;8461:32;8510:19;;3834:44:114;8137:398:146;3787:102:114;3903:9;3899:223;;;3928:119;3958:6;:20;;;3980:6;:26;;;4008:6;:25;;;3928:12;:119::i;:::-;3605:523;3551:577;:::o;3899:223::-;4078:33;;-1:-1:-1;;;4078:33:114;;8742:2:146;4078:33:114;;;8724:21:146;8781:2;8761:18;;;8754:30;8820:25;8800:18;;;8793:53;8863:18;;4078:33:114;8540:347:146;11270:699:116;11445:6;11463:22;;:::i;:::-;11505:31;;;;;;;;11525:4;;11505:31;;11525:4;11531;;;;11505:31;;;;11495:41;;;11556:59;;;;;;;11577:4;;:7;11556:59;;;;;;11586:4;;:7;;;11556:59;;;;;;;;;;;;;11597:4;;;;;:7;11556:59;;11606:4;:7;;;11556:59;;;;-1:-1:-1;;;11556:59:116;11546:7;;;:69;11635:31;;;;;;;11655:4;;11635:31;;11661:4;;;;11635:31;;;;11625:7;;;:41;11707:24;;11533:1;11707:24;;;;;;;;;-1:-1:-1;;11707:24:116;;;;;;11525:4;11707:24;;;;;-1:-1:-1;11707:24:116;11676:55;;11746:9;11741:93;11765:12;11761:1;:16;11741:93;;;11815:5;11821:1;11815:8;;;;;;;:::i;:::-;;;;;11798:11;11810:1;11798:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;11779:3;;;;:::i;:::-;;;;11741:93;;;;11847:30;11858:11;11871:5;11847:10;:30::i;4850:556:114:-;4925:4;4941:21;4965:43;4988:6;:19;;;4965:22;:43::i;:::-;5023:37;;;;:22;:37;;;;;;4941:67;;-1:-1:-1;5023:42:114;5019:286;;5081:63;;-1:-1:-1;;;5081:63:114;;9094:2:146;5081:63:114;;;9076:21:146;9133:2;9113:18;;;9106:30;9172:34;9152:18;;;9145:62;-1:-1:-1;;;9223:18:146;;;9216:51;9284:19;;5081:63:114;8892:417:146;5019:286:114;1371:2;5165:6;:20;;;:54;5161:144;;;5235:59;;-1:-1:-1;;;5235:59:114;;9516:2:146;5235:59:114;;;9498:21:146;9555:2;9535:18;;;9528:30;9594:34;9574:18;;;9567:62;-1:-1:-1;;;9645:18:146;;;9638:47;9702:19;;5235:59:114;9314:413:146;5161:144:114;5315:25;5333:6;5315:17;:25::i;:::-;-1:-1:-1;;5358:20:114;;;:41;5381:18;5358:41;-1:-1:-1;5358:41:114;4850:556::o;7603:125::-;7672:7;7698:23;7705:16;7698:4;:23;:::i;:::-;7691:30;7603:125;-1:-1:-1;;7603:125:114:o;6655:882::-;6769:12;;;;6791:25;;:::i;:::-;6869:23;;;;6827:31;6903:183;6927:2;6923:1;:6;6903:183;;;6971:32;6997:6;6971:23;:32;:::i;:::-;6950:6;6957:10;6966:1;6957:6;:10;:::i;:::-;6950:18;;;;;;;:::i;:::-;;;;:53;7043:32;7069:6;7043:23;:32;:::i;:::-;7017:58;-1:-1:-1;6931:3:114;;;;:::i;:::-;;;;6903:183;;;-1:-1:-1;7140:11:114;;:31;;;7095:34;7182:188;7206:2;7202:1;:6;7182:188;;;7246:35;7275:6;7246:26;:35;:::i;:::-;7229:6;7236;7241:1;7236:2;:6;:::i;:::-;7229:14;;;;;;;:::i;:::-;;;;:52;7324:35;7353:6;7324:26;:35;:::i;:::-;7295:64;-1:-1:-1;7210:3:114;;;;:::i;:::-;;;;7182:188;;;-1:-1:-1;7427:28:114;;;;7400:57;;:18;:57::i;:::-;7379:10;;;:79;7495:7;;7386:2;7504:7;;;7513;;;;7477:52;;7495:7;7504;7379:6;7477:17;:52::i;:::-;7469:61;;;;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;25166:1155:115:-;25285:7;25349:77;25285:7;25467:20;:18;:20::i;:::-;25436:51;;25525:2;:5;;;:12;25505:5;:12;25520:1;25505:16;;;;:::i;:::-;:32;25497:63;;;;-1:-1:-1;;;25497:63:115;;10441:2:146;25497:63:115;;;10423:21:146;10480:2;10460:18;;;10453:30;-1:-1:-1;;;10499:18:146;;;10492:48;10557:18;;25497:63:115;10239:342:146;25497:63:115;25653:27;;;;;;;;;25617:33;25653:27;;;;;;;;;25690:240;25714:5;:12;25710:1;:16;25690:240;;;25766:18;25755:5;25761:1;25755:8;;;;;;;;:::i;:::-;;;;;;;:29;25747:73;;;;-1:-1:-1;;;25747:73:115;;10788:2:146;25747:73:115;;;10770:21:146;10827:2;10807:18;;;10800:30;10866:33;10846:18;;;10839:61;10917:18;;25747:73:115;10586:355:146;25747:73:115;25841:78;25864:4;25870:48;25895:2;:5;;;25901:1;25905;25901:5;;;;:::i;:::-;25895:12;;;;;;;;:::i;:::-;;;;;;;25909:5;25915:1;25909:8;;;;;;;;:::i;:::-;;;;;;;25870:24;:48::i;:::-;25841:22;:78::i;:::-;25834:85;-1:-1:-1;25728:3:115;;;;:::i;:::-;;;;25690:240;;;;25946:38;25969:4;25975:2;:5;;;25981:1;25975:8;;;;;;;;:::i;:::-;;;;;;;25946:22;:38::i;:::-;25939:45;;26012:265;26056:29;26077:5;:7;;;26056:20;:29::i;:::-;26103:5;:7;;;26128:2;:8;;;26154:2;:8;;;26180:4;26202:2;:9;;;26229:5;:7;;;26254:2;:9;;;26012:26;:265::i;:::-;25994:302;;26295:1;26288:8;;;;;;;25994:302;-1:-1:-1;26313:1:115;;25166:1155;-1:-1:-1;;;;;25166:1155:115:o;7818:133:114:-;7867:7;7928:16;7894:30;7912:12;7894:15;:30;:::i;:::-;7893:51;;;;:::i;:::-;7886:58;;7818:133;:::o;8310:721::-;8463:1;8438:13;;;:7;:13;;;;;;:27;8434:170;;8485:13;;;;:7;:13;;;;;;:36;;8481:93;;8554:5;8541:18;;-1:-1:-1;;8541:18:114;;;8481:93;8310:721;;;:::o;8434:170::-;8654:1;8617:25;;;:19;:25;;;;;;:39;8613:193;;8676:25;;;;:19;:25;;;;;;:47;;8672:104;;8756:5;8743:18;;-1:-1:-1;;8743:18:114;;;8310:721;;;:::o;8613:193::-;8816:4;:11;;;8837:13;;;;:7;:13;;;;;;;;:35;;;8882:19;:25;;;;;:46;;;8938:10;:16;;;;;;8957:15;8938:34;;8987:37;8853:19;;8823:4;;8987:37;;8837:13;8987:37;8310:721;;;:::o;10084:1133:116:-;10199:7;10263:77;10199:7;10379:18;:16;:18::i;:::-;10350:47;;10435:2;:5;;;:12;10415:5;:12;10430:1;10415:16;;;;:::i;:::-;:32;10407:63;;;;-1:-1:-1;;;10407:63:116;;10441:2:146;10407:63:116;;;10423:21:146;10480:2;10460:18;;;10453:30;-1:-1:-1;;;10499:18:146;;;10492:48;10557:18;;10407:63:116;10239:342:146;10407:63:116;10561:25;;;;;;;;;10527:31;10561:25;;;;;;;;;10596:236;10620:5;:12;10616:1;:16;10596:236;;;10672:18;10661:5;10667:1;10661:8;;;;;;;;:::i;:::-;;;;;;;:29;10653:73;;;;-1:-1:-1;;;10653:73:116;;10788:2:146;10653:73:116;;;10770:21:146;10827:2;10807:18;;;10800:30;10866:33;10846:18;;;10839:61;10917:18;;10653:73:116;10586:355:146;10653:73:116;10747:74;10768:4;10774:46;10797:2;:5;;;10803:1;10807;10803:5;;;;:::i;10747:74::-;10740:81;-1:-1:-1;10634:3:116;;;;:::i;:::-;;;;10596:236;;;;10848:36;10869:4;10875:2;:5;;;10881:1;10875:8;;;;;;;;:::i;10848:36::-;10841:43;;10912:261;10954:27;10973:5;:7;;;10954:18;:27::i;:::-;10999:5;:7;;;11024:2;:8;;;11050:2;:8;;;11076:4;11098:2;:9;;;11125:5;:7;;;11150:2;:9;;;10912:24;:261::i;5509:1064:114:-;5591:22;5616:39;5635:6;:19;;;5616:18;:39::i;:::-;5591:64;;5665:23;5691:40;5710:6;:20;;;5691:18;:40::i;:::-;5665:66;;5741:23;5767:40;5786:6;:20;;;5767:18;:40::i;:::-;5741:66;;5817:21;5841:43;5864:6;:19;;;5841:22;:43::i;:::-;5894:29;5926:37;;;:22;:37;;;;;;;;;6004:45;;;;;11103:19:146;;;11138:12;;;11131:28;;;5926:37:114;;-1:-1:-1;5997:53:114;;11175:12:146;;6004:45:114;;;-1:-1:-1;;6004:45:114;;;;;;;;;;5997:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5993:57;;6064:51;6084:1;6087:6;:26;;;6071:43;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6071:43:114;;;;-1:-1:-1;;6071:43:114;;;;;;;;;;6064:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6060:55;;6129:40;6149:1;6152:15;6136:32;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6136:32:114;;;;-1:-1:-1;;6136:32:114;;;;;;;;;;6129:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6125:44;;6183:50;6203:1;6206:6;:25;;;6190:42;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6190:42:114;;;;-1:-1:-1;;6190:42:114;;;;;;;;;;6183:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:54;;6247:46;6267:1;6270:21;6254:38;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6254:38:114;;;;-1:-1:-1;;6254:38:114;;;;;;;;;;6247:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6243:50;-1:-1:-1;6303:9:114;6323:30;6243:50;6323:18;:30::i;:::-;6315:39;-1:-1:-1;6373:23:114;6395:1;-1:-1:-1;;;6373:23:114;:::i;:::-;6436:12;;;;6458:39;;;;;;;;;6368:29;;;;6458:39;;;6531:7;;6540;;;;6549;;;;6368:29;;6436:12;;6515:50;;6531:7;;6458:39;6515:15;:50::i;:::-;6507:59;;;;;;5581:992;;;;;;;;;5509:1064;:::o;385:892:110:-;443:7;637:1;562;566:66;562:70;561:77;;543:1;468;472:66;468:70;467:77;;466:173;462:177;;825:2;750:1;754:66;750:70;749:78;;730:2;655:1;659:66;655:70;654:78;;653:175;649:179;;1014:2;939:1;943:66;939:70;938:78;;919:2;844:1;848:66;844:70;843:78;;842:175;838:179;;1203:2;1128:1;1132:66;1128:70;1127:78;;1108:2;1033:1;-1:-1:-1;;1033:70:110;1032:78;;1031:175;1027:179;;1239:3;1234:1;:8;;1226:3;1221:1;:8;;1220:23;1216:27;;1268:1;1260:10;;1253:17;;385:892;;;:::o;7822:17338:115:-;7875:28;;:::i;:::-;7926:212;;;;;;;;7961:77;7926:212;;8052:76;7926:212;;;;;;;;7915:223;;;8160:465;;;;;;;;8213:76;8160:465;;;;;;8307:76;8160:465;;;;;;;;;;;;;;;;;;8429:77;8160:465;;8524:77;8160:465;;;;-1:-1:-1;;;8160:465:115;8149:8;;;:476;;;;8647:465;;;;;;;8700:77;8647:465;;;;;;8795:77;8647:465;;;;;;;;;;;;;8918:76;8647:465;;9012:76;8647:465;;;;-1:-1:-1;;;8647:465:115;8635:9;;;:477;9134:463;;;;;;;9187:76;9134:463;;;;;;9281:77;9134:463;;;;;;;;;;;;;9404:75;9134:463;;9497:76;9134:463;;;;-1:-1:-1;;;9134:463:115;9122:9;;;:475;9615:31;;9643:2;9615:31;;;;;;;;;;9643:2;9615:31;;;-1:-1:-1;;;;;;;;;;;;;;;;;9615:31:115;;;;;;;;;;;;-1:-1:-1;;9607:5:115;;;:39;;;9668:211;;;;;;;;;9703:76;9668:211;;9793:76;9668:211;;;;9657:5;;:8;;-1:-1:-1;;9657:8:115;;;;:::i;:::-;;;;;;:222;;;;9901:213;;;;;;;;9936:77;9901:213;;;;10027:77;9901:213;;;9890:2;:5;;;9896:1;9890:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10136:213;;;;;;;;10171:77;10136:213;;;;10262:77;10136:213;;;10125:2;:5;;;10131:1;10125:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10371:210;;;;;;;;10406:75;10371:210;;;;10495:76;10371:210;;;10360:2;:5;;;10366:1;10360:8;;;;;;;;:::i;:::-;;;;;;:221;;;;10603:212;;;;;;;;10638:77;10603:212;;;;10729:76;10603:212;;;10592:2;:5;;;10598:1;10592:8;;;;;;;;:::i;:::-;;;;;;:223;;;;10837:211;;;;;;;;10872:77;10837:211;;;;10963:75;10837:211;;;10826:2;:5;;;10832:1;10826:8;;;;;;;;:::i;:::-;;;;;;:222;;;;11070:213;;;;;;;;11105:77;11070:213;;;;11196:77;11070:213;;;11059:2;:5;;;11065:1;11059:8;;;;;;;;:::i;:::-;;;;;;:224;;;;11305:212;;;;;;;;11340:77;11305:212;;;;11431:76;11305:212;;;11294:2;:5;;;11300:1;11294:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11539:212;;;;;;;;11574:77;11539:212;;;;11665:76;11539:212;;;11528:2;:5;;;11534:1;11528:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11773:211;;;;;;;;11808:76;11773:211;;;;11898:76;11773:211;;;11762:2;:5;;;11768:1;11762:8;;;;;;;;:::i;:::-;;;;;;:222;;;;12007:212;;;;;;;;12042:77;12007:212;;;;12133:76;12007:212;;;11995:2;:5;;;12001:2;11995:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12242:213;;;;;;;;12277:77;12242:213;;;;12368:77;12242:213;;;12230:2;:5;;;12236:2;12230:9;;;;;;;;:::i;:::-;;;;;;:225;;;;12478:211;;;;;;;;12513:76;12478:211;;;;12603:76;12478:211;;;12466:2;:5;;;12472:2;12466:9;;;;;;;;:::i;:::-;;;;;;:223;;;;12712:212;;;;;;;;12747:76;12712:212;;;;12837:77;12712:212;;;12700:2;:5;;;12706:2;12700:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12947:211;;;;;;;;12982:76;12947:211;;;;13072:76;12947:211;;;12935:2;:5;;;12941:2;12935:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13181:213;;;;;;;;13216:77;13181:213;;;;13307:77;13181:213;;;13169:2;:5;;;13175:2;13169:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13417:213;;;;;;;;13452:77;13417:213;;;;13543:77;13417:213;;;13405:2;:5;;;13411:2;13405:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13653:211;;;;;;;;13688:76;13653:211;;;;13778:76;13653:211;;;13641:2;:5;;;13647:2;13641:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13887:212;;;;;;;;13922:76;13887:212;;;;14012:77;13887:212;;;13875:2;:5;;;13881:2;13875:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14122:212;;;;;;;;14157:77;14122:212;;;;14248:76;14122:212;;;14110:2;:5;;;14116:2;14110:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14357:211;;;;;;;;14392:77;14357:211;;;;14483:75;14357:211;;;14345:2;:5;;;14351:2;14345:9;;;;;;;;:::i;:::-;;;;;;:223;;;;14591:213;;;;;;;;14626:77;14591:213;;;;14717:77;14591:213;;;14579:2;:5;;;14585:2;14579:9;;;;;;;;:::i;:::-;;;;;;:225;;;;14827:213;;;;;;;;14862:77;14827:213;;;;14953:77;14827:213;;;14815:2;:5;;;14821:2;14815:9;;;;;;;;:::i;:::-;;;;;;:225;;;;15063:210;;;;;;;;15098:75;15063:210;;;;15187:76;15063:210;;;15051:2;:5;;;15057:2;15051:9;;;;;;;;:::i;:::-;;;;;;:222;;;;15296:212;;;;;;;;15331:77;15296:212;;;;15422:76;15296:212;;;15284:2;:5;;;15290:2;15284:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15531:212;;;;;;;;15566:76;15531:212;;;;15656:77;15531:212;;;15519:2;:5;;;15525:2;15519:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15766:212;;;;;;;;15801:77;15766:212;;;;15892:76;15766:212;;;15754:2;:5;;;15760:2;15754:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16001:213;;;;;;;;16036:77;16001:213;;;;16127:77;16001:213;;;15989:2;:5;;;15995:2;15989:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16237:213;;;;;;;;16272:77;16237:213;;;;16363:77;16237:213;;;16225:2;:5;;;16231:2;16225:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16473:213;;;;;;;;16508:77;16473:213;;;;16599:77;16473:213;;;16461:2;:5;;;16467:2;16461:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16709:212;;;;;;;;16744:76;16709:212;;;;16834:77;16709:212;;;16697:2;:5;;;16703:2;16697:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16944:213;;;;;;;;16979:77;16944:213;;;;17070:77;16944:213;;;16932:2;:5;;;16938:2;16932:9;;;;;;;;:::i;:::-;;;;;;:225;;;;17180:211;;;;;;;;17215:76;17180:211;;;;17305:76;17180:211;;;17168:2;:5;;;17174:2;17168:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17414:212;;;;;;;;17449:77;17414:212;;;;17540:76;17414:212;;;17402:2;:5;;;17408:2;17402:9;;;;;;;;:::i;:::-;;;;;;:224;;;;17649:211;;;;;;;;17684:76;17649:211;;;;17774:76;17649:211;;;17637:2;:5;;;17643:2;17637:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17883:212;;;;;;;;17918:77;17883:212;;;;18009:76;17883:212;;;17871:2;:5;;;17877:2;17871:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18118:212;;;;;;;;18153:76;18118:212;;;;18243:77;18118:212;;;18106:2;:5;;;18112:2;18106:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18353:213;;;;;;;;18388:77;18353:213;;;;18479:77;18353:213;;;18341:2;:5;;;18347:2;18341:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18589:213;;;;;;;;18624:77;18589:213;;;;18715:77;18589:213;;;18577:2;:5;;;18583:2;18577:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18825:213;;;;;;;;18860:77;18825:213;;;;18951:77;18825:213;;;18813:2;:5;;;18819:2;18813:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19061:211;;;;;;;;19096:77;19061:211;;;;19187:75;19061:211;;;19049:2;:5;;;19055:2;19049:9;;;;;;;;:::i;:::-;;;;;;:223;;;;19295:213;;;;;;;;19330:77;19295:213;;;;19421:77;19295:213;;;19283:2;:5;;;19289:2;19283:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19531:213;;;;;;;;19566:77;19531:213;;;;19657:77;19531:213;;;19519:2;:5;;;19525:2;19519:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19767:212;;;;;;;;19802:76;19767:212;;;;19892:77;19767:212;;;19755:2;:5;;;19761:2;19755:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20002:211;;;;;;;;20037:76;20002:211;;;;20127:76;20002:211;;;19990:2;:5;;;19996:2;19990:9;;;;;;;;:::i;:::-;;;;;;:223;;;;20236:212;;;;;;;;20271:77;20236:212;;;;20362:76;20236:212;;;20224:2;:5;;;20230:2;20224:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20471:212;;;;;;;;20506:77;20471:212;;;;20597:76;20471:212;;;20459:2;:5;;;20465:2;20459:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20706:213;;;;;;;;20741:77;20706:213;;;;20832:77;20706:213;;;20694:2;:5;;;20700:2;20694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;20942:212;;;;;;;;20977:77;20942:212;;;;21068:76;20942:212;;;20930:2;:5;;;20936:2;20930:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21177:212;;;;;;;;21212:76;21177:212;;;;21302:77;21177:212;;;21165:2;:5;;;21171:2;21165:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21412:213;;;;;;;;21447:77;21412:213;;;;21538:77;21412:213;;;21400:2;:5;;;21406:2;21400:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21648:213;;;;;;;;21683:77;21648:213;;;;21774:77;21648:213;;;21636:2;:5;;;21642:2;21636:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21884:211;;;;;;;;21919:76;21884:211;;;;22009:76;21884:211;;;21872:2;:5;;;21878:2;21872:9;;;;;;;;:::i;:::-;;;;;;:223;;;;22118:213;;;;;;;;22153:77;22118:213;;;;22244:77;22118:213;;;22106:2;:5;;;22112:2;22106:9;;;;;;;;:::i;:::-;;;;;;:225;;;;22354:212;;;;;;;;22389:76;22354:212;;;;22479:77;22354:212;;;22342:2;:5;;;22348:2;22342:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22589:212;;;;;;;;22624:76;22589:212;;;;22714:77;22589:212;;;22577:2;:5;;;22583:2;22577:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22824:212;;;;;;;;22859:76;22824:212;;;;22949:77;22824:212;;;22812:2;:5;;;22818:2;22812:9;;;;;;;;:::i;:::-;;;;;;:224;;;;23059:211;;;;;;;;23094:77;23059:211;;;;23185:75;23059:211;;;23047:2;:5;;;23053:2;23047:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23293:213;;;;;;;;23328:77;23293:213;;;;23419:77;23293:213;;;23281:2;:5;;;23287:2;23281:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23529:213;;;;;;;;23564:77;23529:213;;;;23655:77;23529:213;;;23517:2;:5;;;23523:2;23517:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23765:211;;;;;;;;23800:76;23765:211;;;;23890:76;23765:211;;;23753:2;:5;;;23759:2;23753:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23999:212;;;;;;;;24034:76;23999:212;;;;24124:77;23999:212;;;23987:2;:5;;;23993:2;23987:9;;;;;;;;:::i;:::-;;;;;;:224;;;;24234:213;;;;;;;;24269:77;24234:213;;;;24360:77;24234:213;;;24222:2;:5;;;24228:2;24222:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24470:213;;;;;;;;24505:77;24470:213;;;;24596:77;24470:213;;;24458:2;:5;;;24464:2;24458:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24706:213;;;;;;;;24741:77;24706:213;;;;24832:77;24706:213;;;24694:2;:5;;;24700:2;24694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24942:211;;;;;;;;24977:76;24942:211;;;;25067:76;24942:211;;;24930:2;:5;;;24936:2;24930:9;;;;;;;;:::i;:::-;;;;;;:223;;;;7822:17338;:::o;3929:557::-;-1:-1:-1;;;;;;;;;;;;;;;;;4029:23:115;;:::i;:::-;4073:3;;4062:14;;:8;4097:3;;;;4086:8;;;:14;4110:8;;;:12;;;-1:-1:-1;4300:4:115;4297:1;4291:4;4062:14;4281:1;4274:4;4267:5;4263:16;4252:53;4241:64;-1:-1:-1;4241:64:115;;4375:47;4402:20;4411:9;4375:47;;4449:7;4441:38;;;;-1:-1:-1;;;4441:38:115;;12006:2:146;4441:38:115;;;11988:21:146;12045:2;12025:18;;;12018:30;-1:-1:-1;;;12064:18:146;;;12057:48;12122:18;;4441:38:115;11804:342:146;4441:38:115;4019:467;;3929:557;;;;:::o;3151:622::-;-1:-1:-1;;;;;;;;;;;;;;;;;3286:23:115;;:::i;:::-;3330:4;;3319:15;;:8;3355:4;;;;3344:8;;;:15;3380:4;;3369:8;;;:15;3405:4;;;3394:8;;;;:15;;;;-1:-1:-1;;3584:1:115;3578:4;3319:15;3568:1;3561:4;3554:5;3550:16;3539:53;3528:64;-1:-1:-1;3528:64:115;;3662:47;3689:20;3698:9;3662:47;;3736:7;3728:38;;;;-1:-1:-1;;;3728:38:115;;12353:2:146;3728:38:115;;;12335:21:146;12392:2;12372:18;;;12365:30;-1:-1:-1;;;12411:18:146;;;12404:48;12469:18;;3728:38:115;12151:342:146;2742:357:115;-1:-1:-1;;;;;;;;;;;;;;;;;2982:3:115;;2891:77;;2982:8;:20;;;;-1:-1:-1;2994:3:115;;;;:8;2982:20;2978:71;;;-1:-1:-1;;3025:13:115;;;;;;;;;-1:-1:-1;3025:13:115;;;;;;;;2742:357;-1:-1:-1;2742:357:115:o;2978:71::-;3065:27;;;;;;;;3073:1;:3;;;3065:27;;;;3089:1;3083;:3;;;:7;;;;:::i;:::-;3078:13;;:1;:13;:::i;:::-;3065:27;;3058:34;2742:357;-1:-1:-1;;;2742:357:115:o;6832:568::-;7137:16;;;7151:1;7137:16;;;;;;;;;7099:4;;;;7137:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7137:16:115;;;;;;;;;;;;-1:-1:-1;;7185:16:115;;;7199:1;7185:16;;;;;;;;;7115:38;;-1:-1:-1;7163:19:115;;7185:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7163:38;;7219:2;7211;7214:1;7211:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7239:2;7231;7234:1;7231:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7259:2;7251;7254:1;7251:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7279:2;7271;7274:1;7271:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7299:2;7291;7294:1;7291:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7319:2;7311;7314:1;7311:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7339:2;7331;7334:1;7331:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7359:2;7351;7354:1;7351:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7378:15;7386:2;7390;7378:7;:15::i;:::-;7371:22;6832:568;-1:-1:-1;;;;;;;;;;;6832:568:115:o;7796:2282:116:-;7847:26;;:::i;:::-;7896:210;;;;;;;;7929:77;7896:210;;8020:76;7896:210;;;;;;;;7885:221;;;8128:463;;;;;;;;8179:76;8128:463;;;;;;8273:76;8128:463;;;;;;;;;;;;;;;;;;8395:77;8128:463;;8490:77;8128:463;;;;-1:-1:-1;;;8128:463:116;8117:8;;;:474;;;;8613:463;;;;;;;8664:77;8613:463;;;;;;8759:77;8613:463;;;;;;;;;;;;;8882:76;8613:463;;8976:76;8613:463;;;;-1:-1:-1;;;8613:463:116;8601:9;;;:475;9098:462;;;;;;;9149:76;9098:462;;;;;;9243:77;9098:462;;;;;;;;;;;;;9366:76;9098:462;;9460:76;9098:462;;;;-1:-1:-1;;;9098:462:116;9086:9;;;:474;9578:28;;9604:1;9578:28;;;;;;;;;9604:1;9578:28;;;-1:-1:-1;;;;;;;;;;;;;;;;;9578:28:116;;;;;;;;;;;;-1:-1:-1;;9570:5:116;;;:36;;;9628:210;;;;;;;;;9661:77;9628:210;;9752:76;9628:210;;;;9617:5;;:8;;-1:-1:-1;;9617:8:116;;;;:::i;:::-;;;;;;:221;;;;9860:211;;;;;;;;9893:77;9860:211;;;;9984:77;9860:211;;;9849:2;:5;;;9855:1;9849:8;;;;;;;;:::i;6830:568::-;7135:16;;;7149:1;7135:16;;;;;;;;;7097:4;;;;7135:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7135:16:116;;;;;;;;;;;;-1:-1:-1;;7183:16:116;;;7197:1;7183:16;;;;;;;;;7113:38;;-1:-1:-1;7161:19:116;;7183:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7161:38;;7217:2;7209;7212:1;7209:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7237:2;7229;7232:1;7229:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7257:2;7249;7252:1;7249:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7277:2;7269;7272:1;7269:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7297:2;7289;7292:1;7289:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7317:2;7309;7312:1;7309:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7337:2;7329;7332:1;7329:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7357:2;7349;7352:1;7349:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7376:15;7384:2;7388;7376:7;:15::i;4698:1073:115:-;4780:4;4817:2;:9;4804:2;:9;:22;4796:57;;;;-1:-1:-1;;;4796:57:115;;12700:2:146;4796:57:115;;;12682:21:146;12739:2;12719:18;;;12712:30;-1:-1:-1;;;12758:18:146;;;12751:52;12820:18;;4796:57:115;12498:346:146;4796:57:115;4882:9;;4863:16;4921:12;4882:9;4932:1;4921:12;:::i;:::-;4901:32;;4943:22;4979:9;4968:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4968:21:115;;4943:46;;5004:9;4999:302;5023:8;5019:1;:12;4999:302;;;5071:2;5074:1;5071:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5052:5;5058:1;5062;5058:5;;;;:::i;:::-;:9;;5066:1;5058:9;:::i;:::-;5052:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5111:2;5114:1;5111:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5092:5;5098:1;5102;5098:5;;;;:::i;:::-;:9;;5106:1;5098:9;:::i;:::-;5092:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5151:2;5154:1;5151:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5132:5;5138;:1;5142;5138:5;:::i;:::-;:9;;5146:1;5138:9;:::i;:::-;5132:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5194:2;5197:1;5194:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5175:5;5181;:1;5185;5181:5;:::i;:::-;:9;;5189:1;5181:9;:::i;:::-;5175:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5237:2;5240:1;5237:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5245:1;5237:10;;;;;;;:::i;:::-;;;;;5218:5;5224;:1;5228;5224:5;:::i;:::-;:9;;5232:1;5224:9;:::i;:::-;5218:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5280:2;5283:1;5280:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5288:1;5280:10;;;;;;;:::i;:::-;;;;;5261:5;5267;:1;5271;5267:5;:::i;:::-;:9;;5275:1;5267:9;:::i;:::-;5261:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5033:3;;;;:::i;:::-;;;;4999:302;;;;5310:21;;:::i;:::-;5341:12;5554:4;5549:3;5542:4;5531:9;5527:20;5520:4;5513:5;5509:16;5506:1;5499:4;5492:5;5488:16;5477:82;5450:109;-1:-1:-1;5450:109:115;;5629:47;5656:20;5665:9;5629:47;;5703:7;5695:41;;;;-1:-1:-1;;;5695:41:115;;13224:2:146;5695:41:115;;;13206:21:146;13263:2;13243:18;;;13236:30;-1:-1:-1;;;13282:18:146;;;13275:51;13343:18;;5695:41:115;13022:345:146;5695:41:115;-1:-1:-1;5753:6:115;:11;;;;-1:-1:-1;;;;;;4698:1073:115:o;4696::116:-;4778:4;4815:2;:9;4802:2;:9;:22;4794:57;;;;-1:-1:-1;;;4794:57:116;;12700:2:146;4794:57:116;;;12682:21:146;12739:2;12719:18;;;12712:30;-1:-1:-1;;;12758:18:146;;;12751:52;12820:18;;4794:57:116;12498:346:146;4794:57:116;4880:9;;4861:16;4919:12;4880:9;4930:1;4919:12;:::i;:::-;4899:32;;4941:22;4977:9;4966:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4966:21:116;;4941:46;;5002:9;4997:302;5021:8;5017:1;:12;4997:302;;;5069:2;5072:1;5069:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5050:5;5056:1;5060;5056:5;;;;:::i;:::-;:9;;5064:1;5056:9;:::i;:::-;5050:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5109:2;5112:1;5109:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5090:5;5096:1;5100;5096:5;;;;:::i;:::-;:9;;5104:1;5096:9;:::i;:::-;5090:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5149:2;5152:1;5149:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5130:5;5136;:1;5140;5136:5;:::i;:::-;:9;;5144:1;5136:9;:::i;:::-;5130:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5192:2;5195:1;5192:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5173:5;5179;:1;5183;5179:5;:::i;:::-;:9;;5187:1;5179:9;:::i;:::-;5173:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5235:2;5238:1;5235:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5243:1;5235:10;;;;;;;:::i;:::-;;;;;5216:5;5222;:1;5226;5222:5;:::i;:::-;:9;;5230:1;5222:9;:::i;:::-;5216:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5278:2;5281:1;5278:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5286:1;5278:10;;;;;;;:::i;:::-;;;;;5259:5;5265;:1;5269;5265:5;:::i;:::-;:9;;5273:1;5265:9;:::i;:::-;5259:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5031:3;;;;:::i;:::-;;;;4997:302;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;388:127:146:-;449:10;444:3;440:20;437:1;430:31;480:4;477:1;470:15;504:4;501:1;494:15;520:246;587:2;581:9;;;617:15;;662:18;647:34;;683:22;;;644:62;641:88;;;709:18;;:::i;:::-;745:2;738:22;520:246;:::o;771:479::-;821:5;874:3;867:4;859:6;855:17;851:27;841:55;;892:1;889;882:12;841:55;916:17;;:::i;:::-;955:3;993:2;985:6;981:15;1019:3;1011:6;1008:15;1005:35;;;1036:1;1033;1026:12;1005:35;1060:6;1075:146;1091:6;1086:3;1083:15;1075:146;;;1159:17;;1147:30;;1206:4;1197:14;;;;1108;1075:146;;;-1:-1:-1;1239:5:146;;771:479;-1:-1:-1;;;;;771:479:146:o;1255:501::-;1311:5;1364:3;1357:4;1349:6;1345:17;1341:27;1331:55;;1382:1;1379;1372:12;1331:55;1406:17;;:::i;:::-;1445:3;1483;1475:6;1471:16;1510:3;1502:6;1499:15;1496:35;;;1527:1;1524;1517:12;1496:35;1551:6;1566:161;1582:6;1577:3;1574:15;1566:161;;;1648:34;1678:3;1673;1648:34;:::i;:::-;1636:47;;1712:4;1703:14;;;;1608:2;1599:12;1566:161;;1761:605;1820:5;1868:6;1856:9;1851:3;1847:19;1843:32;1840:52;;;1888:1;1885;1878:12;1840:52;1921:2;1915:9;1963:4;1955:6;1951:17;2034:6;2022:10;2019:22;1998:18;1986:10;1983:34;1980:62;1977:88;;;2045:18;;:::i;:::-;2081:2;2074:22;2114:6;-1:-1:-1;2114:6:146;2144:40;2180:3;2169:9;2144:40;:::i;:::-;2136:6;2129:56;2220:55;2271:3;2266:2;2255:9;2251:18;2220:55;:::i;:::-;2213:4;2205:6;2201:17;2194:82;2309:50;2355:3;2349;2338:9;2334:19;2309:50;:::i;:::-;2304:2;2296:6;2292:15;2285:75;;1761:605;;;;:::o;2371:773::-;2433:5;2481:6;2469:9;2464:3;2460:19;2456:32;2453:52;;;2501:1;2498;2491:12;2453:52;2534:2;2528:9;2576:4;2568:6;2564:17;2647:6;2635:10;2632:22;2611:18;2599:10;2596:34;2593:62;2590:88;;;2658:18;;:::i;:::-;2698:10;2694:2;2687:22;;2727:6;2718:15;;2770:9;2757:23;2749:6;2742:39;2842:2;2831:9;2827:18;2814:32;2809:2;2801:6;2797:15;2790:57;2908:2;2897:9;2893:18;2880:32;2875:2;2867:6;2863:15;2856:57;2974:2;2963:9;2959:18;2946:32;2941:2;2933:6;2929:15;2922:57;3041:3;3030:9;3026:19;3013:33;3007:3;2999:6;2995:16;2988:59;3081:56;3133:3;3127;3116:9;3112:19;3081:56;:::i;:::-;3075:3;3067:6;3063:16;3056:82;;2371:773;;;;:::o;3149:714::-;3244:6;3297:3;3285:9;3276:7;3272:23;3268:33;3265:53;;;3314:1;3311;3304:12;3265:53;3347:2;3341:9;3389:4;3381:6;3377:17;3460:6;3448:10;3445:22;3424:18;3412:10;3409:34;3406:62;3403:88;;;3471:18;;:::i;:::-;3507:2;3500:22;3546:53;3591:7;3580:9;3546:53;:::i;:::-;3538:6;3531:69;3663:3;3652:9;3648:19;3635:33;3628:4;3620:6;3616:17;3609:60;3730:3;3719:9;3715:19;3702:33;3697:2;3689:6;3685:15;3678:58;3771:60;3823:7;3817:3;3806:9;3802:19;3771:60;:::i;:::-;3764:4;3752:17;;3745:87;3756:6;3149:714;-1:-1:-1;;;3149:714:146:o;3868:180::-;3927:6;3980:2;3968:9;3959:7;3955:23;3951:32;3948:52;;;3996:1;3993;3986:12;3948:52;-1:-1:-1;4019:23:146;;3868:180;-1:-1:-1;3868:180:146:o;4235:1150::-;4437:6;4445;4453;4461;4492:4;4537:2;4525:9;4516:7;4512:23;4508:32;4505:52;;;4553:1;4550;4543:12;4505:52;4576:44;4612:7;4601:9;4576:44;:::i;:::-;4566:54;;4639:59;4690:7;4685:2;4674:9;4670:18;4639:59;:::i;:::-;4629:69;;4717:54;4763:7;4757:3;4746:9;4742:19;4717:54;:::i;:::-;4707:64;;4815:7;4809:3;4798:9;4794:19;4790:33;4780:61;;4837:1;4834;4827:12;4780:61;4870:2;4864:9;4912:4;4904:6;4900:17;4983:6;4971:10;4968:22;4947:18;4935:10;4932:34;4929:62;4926:88;;;4994:18;;:::i;:::-;5030:2;5023:22;5094:18;;;;5065:6;5124:19;;;5121:39;;;5156:1;5153;5146:12;5121:39;5195:3;5184:9;5180:19;5208:146;5224:6;5219:3;5216:15;5208:146;;;5292:17;;5280:30;;5339:4;5330:14;;;;5241;5208:146;;;5212:3;;5373:6;5363:16;;;;4235:1150;;;;;;;:::o;5587:245::-;5680:6;5733:3;5721:9;5712:7;5708:23;5704:33;5701:53;;;5750:1;5747;5740:12;5701:53;5773;5818:7;5807:9;5773:53;:::i;:::-;5763:63;5587:245;-1:-1:-1;;;5587:245:146:o;6030:1163::-;6231:6;6239;6247;6255;6286:3;6330:2;6318:9;6309:7;6305:23;6301:32;6298:52;;;6346:1;6343;6336:12;6298:52;6369:44;6405:7;6394:9;6369:44;:::i;:::-;6359:54;;6432:59;6483:7;6478:2;6467:9;6463:18;6432:59;:::i;:::-;6422:69;;6510:54;6556:7;6550:3;6539:9;6535:19;6510:54;:::i;:::-;6500:64;;6608:7;6602:3;6591:9;6587:19;6583:33;6573:61;;6630:1;6627;6620:12;6573:61;6663:2;6657:9;6685:2;6726;6718:6;6714:15;6795:6;6783:10;6780:22;6759:18;6747:10;6744:34;6741:62;6738:88;;;6806:18;;:::i;:::-;6842:2;6835:22;6906:18;;;;6877:6;6936:19;;;6933:39;;;6968:1;6965;6958:12;6933:39;7007:3;6996:9;6992:19;7020:142;7036:6;7031:3;7028:15;7020:142;;;7102:17;;7090:30;;7140:12;;;;7053;;7020:142;;;-1:-1:-1;6030:1163:146;;;;-1:-1:-1;6030:1163:146;;-1:-1:-1;7181:6:146;-1:-1:-1;;;;6030:1163:146:o;7198:127::-;7259:10;7254:3;7250:20;7247:1;7240:31;7290:4;7287:1;7280:15;7314:4;7311:1;7304:15;7330:125;7395:9;;;7416:10;;;7413:36;;;7429:18;;:::i;7460:127::-;7521:10;7516:3;7512:20;7509:1;7502:31;7552:4;7549:1;7542:15;7576:4;7573:1;7566:15;7592:135;7631:3;7652:17;;;7649:43;;7672:18;;:::i;:::-;-1:-1:-1;7719:1:146;7708:13;;7592:135::o;9732:127::-;9793:10;9788:3;9784:20;9781:1;9774:31;9824:4;9821:1;9814:15;9848:4;9845:1;9838:15;9864:120;9904:1;9930;9920:35;;9935:18;;:::i;:::-;-1:-1:-1;9969:9:146;;9864:120::o;9989:112::-;10021:1;10047;10037:35;;10052:18;;:::i;:::-;-1:-1:-1;10086:9:146;;9989:112::o;10106:128::-;10173:9;;;10194:11;;;10191:37;;;10208:18;;:::i;11198:412::-;11327:3;11365:6;11359:13;11390:1;11400:129;11414:6;11411:1;11408:13;11400:129;;;11512:4;11496:14;;;11492:25;;11486:32;11473:11;;;11466:53;11429:12;11400:129;;;-1:-1:-1;11584:1:146;11548:16;;11573:13;;;-1:-1:-1;11548:16:146;11198:412;-1:-1:-1;11198:412:146:o;11615:184::-;11685:6;11738:2;11726:9;11717:7;11713:23;11709:32;11706:52;;;11754:1;11751;11744:12;11706:52;-1:-1:-1;11777:16:146;;11615:184;-1:-1:-1;11615:184:146:o;12849:168::-;12889:7;12955:1;12951;12947:6;12943:14;12940:1;12937:21;12932:1;12925:9;12918:17;12914:45;12911:71;;;12962:18;;:::i;:::-;-1:-1:-1;13002:9:146;;12849:168::o", "linkReferences": {}, "immutableReferences": { - "44324": [ + "44398": [ { "start": 597, "length": 32 } ], - "44326": [ + "44400": [ { "start": 764, "length": 32 @@ -522,7 +522,7 @@ "length": 32 } ], - "44328": [ + "44402": [ { "start": 353, "length": 32 @@ -532,7 +532,7 @@ "length": 32 } ], - "44330": [ + "44404": [ { "start": 266, "length": 32 @@ -542,13 +542,13 @@ "length": 32 } ], - "44332": [ + "44406": [ { "start": 464, "length": 32 } ], - "44334": [ + "44408": [ { "start": 687, "length": 32 @@ -578,7 +578,7 @@ "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": "7227d785", "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": "e5b708fe" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"genesisValidatorsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"genesisTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondsPerSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slotsPerPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"syncCommitteePeriod\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"finalityThreshold\",\"type\":\"uint16\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"Light Client\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"notice\":\"Uses Ethereum 2's Sync Committee Protocol to keep up-to-date with block headers from a Beacon Chain. This is done in a gas-efficient manner using zero-knowledge proofs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/lightclient/LightClient.sol\":\"LightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"genesisValidatorsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"genesisTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondsPerSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slotsPerPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"syncCommitteePeriod\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"finalityThreshold\",\"type\":\"uint16\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"Light Client\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"notice\":\"Uses Ethereum 2's Sync Committee Protocol to keep up-to-date with block headers from a Beacon Chain. This is done in a gas-efficient manner using zero-knowledge proofs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/lightclient/LightClient.sol\":\"LightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -1160,11 +1160,19 @@ "libraries": {} }, "sources": { + "src/libraries/BeaconChainForks.sol": { + "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "urls": [ + "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", + "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + ], + "license": null + }, "src/libraries/SimpleSerialize.sol": { - "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", "urls": [ - "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", - "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", + "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" ], "license": null }, @@ -1205,40 +1213,40 @@ }, "ast": { "absolutePath": "src/lightclient/LightClient.sol", - "id": 45033, + "id": 45107, "exportedSymbols": { "Groth16Proof": [ - 44290 + 44364 ], "ILightClient": [ - 47862 + 47936 ], "LightClient": [ - 45032 + 45106 ], "LightClientRotate": [ - 44315 + 44389 ], "LightClientStep": [ - 44304 + 44378 ], "RotateVerifier": [ - 46814 + 46888 ], "SSZ": [ - 43867 + 43941 ], "StepVerifier": [ - 47828 + 47902 ] }, "nodeType": "SourceUnit", - "src": "0:9502:113", + "src": "0:9502:114", "nodes": [ { - "id": 44267, + "id": 44341, "nodeType": "PragmaDirective", - "src": "0:23:113", + "src": "0:23:114", "nodes": [], "literals": [ "solidity", @@ -1247,24 +1255,24 @@ ] }, { - "id": 44269, + "id": 44343, "nodeType": "ImportDirective", - "src": "25:54:113", + "src": "25:54:114", "nodes": [], "absolutePath": "src/libraries/SimpleSerialize.sol", "file": "src/libraries/SimpleSerialize.sol", "nameLocation": "-1:-1:-1", - "scope": 45033, - "sourceUnit": 43868, + "scope": 45107, + "sourceUnit": 43942, "symbolAliases": [ { "foreign": { - "id": 44268, + "id": 44342, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43867, - "src": "33:3:113", + "referencedDeclaration": 43941, + "src": "33:3:114", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1273,24 +1281,24 @@ "unitAlias": "" }, { - "id": 44271, + "id": 44345, "nodeType": "ImportDirective", - "src": "81:73:113", + "src": "81:73:114", "nodes": [], "absolutePath": "src/lightclient/interfaces/ILightClient.sol", "file": "src/lightclient/interfaces/ILightClient.sol", "nameLocation": "-1:-1:-1", - "scope": 45033, - "sourceUnit": 47863, + "scope": 45107, + "sourceUnit": 47937, "symbolAliases": [ { "foreign": { - "id": 44270, + "id": 44344, "name": "ILightClient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47862, - "src": "89:12:113", + "referencedDeclaration": 47936, + "src": "89:12:114", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1299,24 +1307,24 @@ "unitAlias": "" }, { - "id": 44273, + "id": 44347, "nodeType": "ImportDirective", - "src": "155:62:113", + "src": "155:62:114", "nodes": [], "absolutePath": "src/lightclient/StepVerifier.sol", "file": "src/lightclient/StepVerifier.sol", "nameLocation": "-1:-1:-1", - "scope": 45033, - "sourceUnit": 47829, + "scope": 45107, + "sourceUnit": 47903, "symbolAliases": [ { "foreign": { - "id": 44272, + "id": 44346, "name": "StepVerifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47828, - "src": "163:12:113", + "referencedDeclaration": 47902, + "src": "163:12:114", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1325,24 +1333,24 @@ "unitAlias": "" }, { - "id": 44275, + "id": 44349, "nodeType": "ImportDirective", - "src": "218:66:113", + "src": "218:66:114", "nodes": [], "absolutePath": "src/lightclient/RotateVerifier.sol", "file": "src/lightclient/RotateVerifier.sol", "nameLocation": "-1:-1:-1", - "scope": 45033, - "sourceUnit": 46815, + "scope": 45107, + "sourceUnit": 46889, "symbolAliases": [ { "foreign": { - "id": 44274, + "id": 44348, "name": "RotateVerifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46814, - "src": "226:14:113", + "referencedDeclaration": 46888, + "src": "226:14:114", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1351,21 +1359,21 @@ "unitAlias": "" }, { - "id": 44290, + "id": 44364, "nodeType": "StructDefinition", - "src": "286:80:113", + "src": "286:80:114", "nodes": [], "canonicalName": "Groth16Proof", "members": [ { "constant": false, - "id": 44279, + "id": 44353, "mutability": "mutable", "name": "a", - "nameLocation": "323:1:113", + "nameLocation": "323:1:114", "nodeType": "VariableDeclaration", - "scope": 44290, - "src": "312:12:113", + "scope": 44364, + "src": "312:12:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1374,26 +1382,26 @@ }, "typeName": { "baseType": { - "id": 44276, + "id": 44350, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "312:7:113", + "src": "312:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44278, + "id": 44352, "length": { "hexValue": "32", - "id": 44277, + "id": 44351, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "320:1:113", + "src": "320:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -1401,7 +1409,7 @@ "value": "2" }, "nodeType": "ArrayTypeName", - "src": "312:10:113", + "src": "312:10:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", "typeString": "uint256[2]" @@ -1411,13 +1419,13 @@ }, { "constant": false, - "id": 44285, + "id": 44359, "mutability": "mutable", "name": "b", - "nameLocation": "344:1:113", + "nameLocation": "344:1:114", "nodeType": "VariableDeclaration", - "scope": 44290, - "src": "330:15:113", + "scope": 44364, + "src": "330:15:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1427,26 +1435,26 @@ "typeName": { "baseType": { "baseType": { - "id": 44280, + "id": 44354, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "330:7:113", + "src": "330:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44282, + "id": 44356, "length": { "hexValue": "32", - "id": 44281, + "id": 44355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "338:1:113", + "src": "338:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -1454,23 +1462,23 @@ "value": "2" }, "nodeType": "ArrayTypeName", - "src": "330:10:113", + "src": "330:10:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", "typeString": "uint256[2]" } }, - "id": 44284, + "id": 44358, "length": { "hexValue": "32", - "id": 44283, + "id": 44357, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "341:1:113", + "src": "341:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -1478,7 +1486,7 @@ "value": "2" }, "nodeType": "ArrayTypeName", - "src": "330:13:113", + "src": "330:13:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_array$_t_uint256_$2_storage_$2_storage_ptr", "typeString": "uint256[2][2]" @@ -1488,13 +1496,13 @@ }, { "constant": false, - "id": 44289, + "id": 44363, "mutability": "mutable", "name": "c", - "nameLocation": "362:1:113", + "nameLocation": "362:1:114", "nodeType": "VariableDeclaration", - "scope": 44290, - "src": "351:12:113", + "scope": 44364, + "src": "351:12:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1503,26 +1511,26 @@ }, "typeName": { "baseType": { - "id": 44286, + "id": 44360, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "351:7:113", + "src": "351:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44288, + "id": 44362, "length": { "hexValue": "32", - "id": 44287, + "id": 44361, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "359:1:113", + "src": "359:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -1530,7 +1538,7 @@ "value": "2" }, "nodeType": "ArrayTypeName", - "src": "351:10:113", + "src": "351:10:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", "typeString": "uint256[2]" @@ -1540,26 +1548,26 @@ } ], "name": "Groth16Proof", - "nameLocation": "293:12:113", - "scope": 45033, + "nameLocation": "293:12:114", + "scope": 45107, "visibility": "public" }, { - "id": 44304, + "id": 44378, "nodeType": "StructDefinition", - "src": "368:195:113", + "src": "368:195:114", "nodes": [], "canonicalName": "LightClientStep", "members": [ { "constant": false, - "id": 44292, + "id": 44366, "mutability": "mutable", "name": "attestedSlot", - "nameLocation": "405:12:113", + "nameLocation": "405:12:114", "nodeType": "VariableDeclaration", - "scope": 44304, - "src": "397:20:113", + "scope": 44378, + "src": "397:20:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1567,10 +1575,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44291, + "id": 44365, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "397:7:113", + "src": "397:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1580,13 +1588,13 @@ }, { "constant": false, - "id": 44294, + "id": 44368, "mutability": "mutable", "name": "finalizedSlot", - "nameLocation": "431:13:113", + "nameLocation": "431:13:114", "nodeType": "VariableDeclaration", - "scope": 44304, - "src": "423:21:113", + "scope": 44378, + "src": "423:21:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1594,10 +1602,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44293, + "id": 44367, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "423:7:113", + "src": "423:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1607,13 +1615,13 @@ }, { "constant": false, - "id": 44296, + "id": 44370, "mutability": "mutable", "name": "participation", - "nameLocation": "458:13:113", + "nameLocation": "458:13:114", "nodeType": "VariableDeclaration", - "scope": 44304, - "src": "450:21:113", + "scope": 44378, + "src": "450:21:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1621,10 +1629,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44295, + "id": 44369, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "450:7:113", + "src": "450:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1634,13 +1642,13 @@ }, { "constant": false, - "id": 44298, + "id": 44372, "mutability": "mutable", "name": "finalizedHeaderRoot", - "nameLocation": "485:19:113", + "nameLocation": "485:19:114", "nodeType": "VariableDeclaration", - "scope": 44304, - "src": "477:27:113", + "scope": 44378, + "src": "477:27:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1648,10 +1656,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44297, + "id": 44371, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "477:7:113", + "src": "477:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1661,13 +1669,13 @@ }, { "constant": false, - "id": 44300, + "id": 44374, "mutability": "mutable", "name": "executionStateRoot", - "nameLocation": "518:18:113", + "nameLocation": "518:18:114", "nodeType": "VariableDeclaration", - "scope": 44304, - "src": "510:26:113", + "scope": 44378, + "src": "510:26:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1675,10 +1683,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44299, + "id": 44373, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "510:7:113", + "src": "510:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1688,36 +1696,36 @@ }, { "constant": false, - "id": 44303, + "id": 44377, "mutability": "mutable", "name": "proof", - "nameLocation": "555:5:113", + "nameLocation": "555:5:114", "nodeType": "VariableDeclaration", - "scope": 44304, - "src": "542:18:113", + "scope": 44378, + "src": "542:18:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", "typeString": "struct Groth16Proof" }, "typeName": { - "id": 44302, + "id": 44376, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 44301, + "id": 44375, "name": "Groth16Proof", "nameLocations": [ - "542:12:113" + "542:12:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 44290, - "src": "542:12:113" + "referencedDeclaration": 44364, + "src": "542:12:114" }, - "referencedDeclaration": 44290, - "src": "542:12:113", + "referencedDeclaration": 44364, + "src": "542:12:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", "typeString": "struct Groth16Proof" } }, @@ -1725,49 +1733,49 @@ } ], "name": "LightClientStep", - "nameLocation": "375:15:113", - "scope": 45033, + "nameLocation": "375:15:114", + "scope": 45107, "visibility": "public" }, { - "id": 44315, + "id": 44389, "nodeType": "StructDefinition", - "src": "565:143:113", + "src": "565:143:114", "nodes": [], "canonicalName": "LightClientRotate", "members": [ { "constant": false, - "id": 44307, + "id": 44381, "mutability": "mutable", "name": "step", - "nameLocation": "612:4:113", + "nameLocation": "612:4:114", "nodeType": "VariableDeclaration", - "scope": 44315, - "src": "596:20:113", + "scope": 44389, + "src": "596:20:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", "typeString": "struct LightClientStep" }, "typeName": { - "id": 44306, + "id": 44380, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 44305, + "id": 44379, "name": "LightClientStep", "nameLocations": [ - "596:15:113" + "596:15:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 44304, - "src": "596:15:113" + "referencedDeclaration": 44378, + "src": "596:15:114" }, - "referencedDeclaration": 44304, - "src": "596:15:113", + "referencedDeclaration": 44378, + "src": "596:15:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", "typeString": "struct LightClientStep" } }, @@ -1775,13 +1783,13 @@ }, { "constant": false, - "id": 44309, + "id": 44383, "mutability": "mutable", "name": "syncCommitteeSSZ", - "nameLocation": "630:16:113", + "nameLocation": "630:16:114", "nodeType": "VariableDeclaration", - "scope": 44315, - "src": "622:24:113", + "scope": 44389, + "src": "622:24:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1789,10 +1797,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44308, + "id": 44382, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "622:7:113", + "src": "622:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1802,13 +1810,13 @@ }, { "constant": false, - "id": 44311, + "id": 44385, "mutability": "mutable", "name": "syncCommitteePoseidon", - "nameLocation": "660:21:113", + "nameLocation": "660:21:114", "nodeType": "VariableDeclaration", - "scope": 44315, - "src": "652:29:113", + "scope": 44389, + "src": "652:29:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1816,10 +1824,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44310, + "id": 44384, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "652:7:113", + "src": "652:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1829,36 +1837,36 @@ }, { "constant": false, - "id": 44314, + "id": 44388, "mutability": "mutable", "name": "proof", - "nameLocation": "700:5:113", + "nameLocation": "700:5:114", "nodeType": "VariableDeclaration", - "scope": 44315, - "src": "687:18:113", + "scope": 44389, + "src": "687:18:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", "typeString": "struct Groth16Proof" }, "typeName": { - "id": 44313, + "id": 44387, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 44312, + "id": 44386, "name": "Groth16Proof", "nameLocations": [ - "687:12:113" + "687:12:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 44290, - "src": "687:12:113" + "referencedDeclaration": 44364, + "src": "687:12:114" }, - "referencedDeclaration": 44290, - "src": "687:12:113", + "referencedDeclaration": 44364, + "src": "687:12:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", "typeString": "struct Groth16Proof" } }, @@ -1866,26 +1874,26 @@ } ], "name": "LightClientRotate", - "nameLocation": "572:17:113", - "scope": 45033, + "nameLocation": "572:17:114", + "scope": 45107, "visibility": "public" }, { - "id": 45032, + "id": 45106, "nodeType": "ContractDefinition", - "src": "953:8548:113", + "src": "953:8548:114", "nodes": [ { - "id": 44324, + "id": 44398, "nodeType": "VariableDeclaration", - "src": "1026:48:113", + "src": "1026:48:114", "nodes": [], "constant": false, "functionSelector": "a8769acb", "mutability": "immutable", "name": "GENESIS_VALIDATORS_ROOT", - "nameLocation": "1051:23:113", - "scope": 45032, + "nameLocation": "1051:23:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1893,10 +1901,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44323, + "id": 44397, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1026:7:113", + "src": "1026:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1905,16 +1913,16 @@ "visibility": "public" }, { - "id": 44326, + "id": 44400, "nodeType": "VariableDeclaration", - "src": "1080:37:113", + "src": "1080:37:114", "nodes": [], "constant": false, "functionSelector": "f2882461", "mutability": "immutable", "name": "GENESIS_TIME", - "nameLocation": "1105:12:113", - "scope": 45032, + "nameLocation": "1105:12:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1922,10 +1930,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44325, + "id": 44399, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1080:7:113", + "src": "1080:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1934,16 +1942,16 @@ "visibility": "public" }, { - "id": 44328, + "id": 44402, "nodeType": "VariableDeclaration", - "src": "1123:41:113", + "src": "1123:41:114", "nodes": [], "constant": false, "functionSelector": "304b9071", "mutability": "immutable", "name": "SECONDS_PER_SLOT", - "nameLocation": "1148:16:113", - "scope": 45032, + "nameLocation": "1148:16:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1951,10 +1959,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44327, + "id": 44401, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1123:7:113", + "src": "1123:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1963,16 +1971,16 @@ "visibility": "public" }, { - "id": 44330, + "id": 44404, "nodeType": "VariableDeclaration", - "src": "1170:41:113", + "src": "1170:41:114", "nodes": [], "constant": false, "functionSelector": "2073ee70", "mutability": "immutable", "name": "SLOTS_PER_PERIOD", - "nameLocation": "1195:16:113", - "scope": 45032, + "nameLocation": "1195:16:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1980,10 +1988,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44329, + "id": 44403, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1170:7:113", + "src": "1170:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1992,16 +2000,16 @@ "visibility": "public" }, { - "id": 44332, + "id": 44406, "nodeType": "VariableDeclaration", - "src": "1217:39:113", + "src": "1217:39:114", "nodes": [], "constant": false, "functionSelector": "74be2150", "mutability": "immutable", "name": "SOURCE_CHAIN_ID", - "nameLocation": "1241:15:113", - "scope": 45032, + "nameLocation": "1241:15:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2009,10 +2017,10 @@ "typeString": "uint32" }, "typeName": { - "id": 44331, + "id": 44405, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1217:6:113", + "src": "1217:6:114", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -2021,16 +2029,16 @@ "visibility": "public" }, { - "id": 44334, + "id": 44408, "nodeType": "VariableDeclaration", - "src": "1262:42:113", + "src": "1262:42:114", "nodes": [], "constant": false, "functionSelector": "da4b05e7", "mutability": "immutable", "name": "FINALITY_THRESHOLD", - "nameLocation": "1286:18:113", - "scope": 45032, + "nameLocation": "1286:18:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2038,10 +2046,10 @@ "typeString": "uint16" }, "typeName": { - "id": 44333, + "id": 44407, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1262:6:113", + "src": "1262:6:114", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2050,15 +2058,15 @@ "visibility": "public" }, { - "id": 44337, + "id": 44411, "nodeType": "VariableDeclaration", - "src": "1311:62:113", + "src": "1311:62:114", "nodes": [], "constant": true, "mutability": "constant", "name": "MIN_SYNC_COMMITTEE_PARTICIPANTS", - "nameLocation": "1337:31:113", - "scope": 45032, + "nameLocation": "1337:31:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2066,10 +2074,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44335, + "id": 44409, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1311:7:113", + "src": "1311:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2077,14 +2085,14 @@ }, "value": { "hexValue": "3130", - "id": 44336, + "id": 44410, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1371:2:113", + "src": "1371:2:114", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" @@ -2094,15 +2102,15 @@ "visibility": "internal" }, { - "id": 44340, + "id": 44414, "nodeType": "VariableDeclaration", - "src": "1379:51:113", + "src": "1379:51:114", "nodes": [], "constant": true, "mutability": "constant", "name": "SYNC_COMMITTEE_SIZE", - "nameLocation": "1405:19:113", - "scope": 45032, + "nameLocation": "1405:19:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2110,10 +2118,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44338, + "id": 44412, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1379:7:113", + "src": "1379:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2121,14 +2129,14 @@ }, "value": { "hexValue": "353132", - "id": 44339, + "id": 44413, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1427:3:113", + "src": "1427:3:114", "typeDescriptions": { "typeIdentifier": "t_rational_512_by_1", "typeString": "int_const 512" @@ -2138,15 +2146,15 @@ "visibility": "internal" }, { - "id": 44343, + "id": 44417, "nodeType": "VariableDeclaration", - "src": "1436:52:113", + "src": "1436:52:114", "nodes": [], "constant": true, "mutability": "constant", "name": "FINALIZED_ROOT_INDEX", - "nameLocation": "1462:20:113", - "scope": 45032, + "nameLocation": "1462:20:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2154,10 +2162,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44341, + "id": 44415, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1436:7:113", + "src": "1436:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2165,14 +2173,14 @@ }, "value": { "hexValue": "313035", - "id": 44342, + "id": 44416, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1485:3:113", + "src": "1485:3:114", "typeDescriptions": { "typeIdentifier": "t_rational_105_by_1", "typeString": "int_const 105" @@ -2182,15 +2190,15 @@ "visibility": "internal" }, { - "id": 44346, + "id": 44420, "nodeType": "VariableDeclaration", - "src": "1494:56:113", + "src": "1494:56:114", "nodes": [], "constant": true, "mutability": "constant", "name": "NEXT_SYNC_COMMITTEE_INDEX", - "nameLocation": "1520:25:113", - "scope": 45032, + "nameLocation": "1520:25:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2198,10 +2206,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44344, + "id": 44418, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1494:7:113", + "src": "1494:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2209,14 +2217,14 @@ }, "value": { "hexValue": "3535", - "id": 44345, + "id": 44419, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1548:2:113", + "src": "1548:2:114", "typeDescriptions": { "typeIdentifier": "t_rational_55_by_1", "typeString": "int_const 55" @@ -2226,15 +2234,15 @@ "visibility": "internal" }, { - "id": 44349, + "id": 44423, "nodeType": "VariableDeclaration", - "src": "1556:58:113", + "src": "1556:58:114", "nodes": [], "constant": true, "mutability": "constant", "name": "EXECUTION_STATE_ROOT_INDEX", - "nameLocation": "1582:26:113", - "scope": 45032, + "nameLocation": "1582:26:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2242,10 +2250,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44347, + "id": 44421, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1556:7:113", + "src": "1556:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2253,14 +2261,14 @@ }, "value": { "hexValue": "343032", - "id": 44348, + "id": 44422, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1611:3:113", + "src": "1611:3:114", "typeDescriptions": { "typeIdentifier": "t_rational_402_by_1", "typeString": "int_const 402" @@ -2270,25 +2278,25 @@ "visibility": "internal" }, { - "id": 44353, + "id": 44427, "nodeType": "VariableDeclaration", - "src": "1711:29:113", + "src": "1711:29:114", "nodes": [], "baseFunctions": [ - 47835 + 47909 ], "constant": false, "documentation": { - "id": 44350, + "id": 44424, "nodeType": "StructuredDocumentation", - "src": "1621:85:113", + "src": "1621:85:114", "text": "@notice Whether the light client has had conflicting variables for the same slot." }, "functionSelector": "2bcccca5", "mutability": "mutable", "name": "consistent", - "nameLocation": "1723:10:113", - "scope": 45032, + "nameLocation": "1723:10:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2296,10 +2304,10 @@ "typeString": "bool" }, "typeName": { - "id": 44351, + "id": 44425, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1711:4:113", + "src": "1711:4:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2307,14 +2315,14 @@ }, "value": { "hexValue": "74727565", - "id": 44352, + "id": 44426, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1736:4:113", + "src": "1736:4:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2324,25 +2332,25 @@ "visibility": "public" }, { - "id": 44357, + "id": 44431, "nodeType": "VariableDeclaration", - "src": "1824:23:113", + "src": "1824:23:114", "nodes": [], "baseFunctions": [ - 47840 + 47914 ], "constant": false, "documentation": { - "id": 44354, + "id": 44428, "nodeType": "StructuredDocumentation", - "src": "1747:72:113", + "src": "1747:72:114", "text": "@notice The latest slot the light client has a finalized header for." }, "functionSelector": "8f7dcfa3", "mutability": "mutable", "name": "head", - "nameLocation": "1839:4:113", - "scope": 45032, + "nameLocation": "1839:4:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2350,10 +2358,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44355, + "id": 44429, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1824:7:113", + "src": "1824:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2361,14 +2369,14 @@ }, "value": { "hexValue": "30", - "id": 44356, + "id": 44430, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1846:1:113", + "src": "1846:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -2378,25 +2386,25 @@ "visibility": "public" }, { - "id": 44362, + "id": 44436, "nodeType": "VariableDeclaration", - "src": "1918:42:113", + "src": "1918:42:114", "nodes": [], "baseFunctions": [ - 47847 + 47921 ], "constant": false, "documentation": { - "id": 44358, + "id": 44432, "nodeType": "StructuredDocumentation", - "src": "1854:59:113", + "src": "1854:59:114", "text": "@notice Maps from a slot to a beacon block header root." }, "functionSelector": "56f90d79", "mutability": "mutable", "name": "headers", - "nameLocation": "1953:7:113", - "scope": 45032, + "nameLocation": "1953:7:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2404,28 +2412,28 @@ "typeString": "mapping(uint256 => bytes32)" }, "typeName": { - "id": 44361, + "id": 44435, "keyType": { - "id": 44359, + "id": 44433, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1926:7:113", + "src": "1926:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", - "src": "1918:27:113", + "src": "1918:27:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" }, "valueType": { - "id": 44360, + "id": 44434, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1937:7:113", + "src": "1937:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2435,25 +2443,25 @@ "visibility": "public" }, { - "id": 44367, + "id": 44441, "nodeType": "VariableDeclaration", - "src": "2076:45:113", + "src": "2076:45:114", "nodes": [], "baseFunctions": [ - 47861 + 47935 ], "constant": false, "documentation": { - "id": 44363, + "id": 44437, "nodeType": "StructuredDocumentation", - "src": "1967:104:113", + "src": "1967:104:114", "text": "@notice Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key" }, "functionSelector": "8bc33af3", "mutability": "mutable", "name": "timestamps", - "nameLocation": "2111:10:113", - "scope": 45032, + "nameLocation": "2111:10:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2461,28 +2469,28 @@ "typeString": "mapping(uint256 => uint256)" }, "typeName": { - "id": 44366, + "id": 44440, "keyType": { - "id": 44364, + "id": 44438, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2084:7:113", + "src": "2084:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", - "src": "2076:27:113", + "src": "2076:27:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", "typeString": "mapping(uint256 => uint256)" }, "valueType": { - "id": 44365, + "id": 44439, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2095:7:113", + "src": "2095:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2492,25 +2500,25 @@ "visibility": "public" }, { - "id": 44372, + "id": 44446, "nodeType": "VariableDeclaration", - "src": "2218:54:113", + "src": "2218:54:114", "nodes": [], "baseFunctions": [ - 47854 + 47928 ], "constant": false, "documentation": { - "id": 44368, + "id": 44442, "nodeType": "StructuredDocumentation", - "src": "2128:85:113", + "src": "2128:85:114", "text": "@notice Maps from a slot to the current finalized ethereum1 execution state root." }, "functionSelector": "7623ee29", "mutability": "mutable", "name": "executionStateRoots", - "nameLocation": "2253:19:113", - "scope": 45032, + "nameLocation": "2253:19:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2518,28 +2526,28 @@ "typeString": "mapping(uint256 => bytes32)" }, "typeName": { - "id": 44371, + "id": 44445, "keyType": { - "id": 44369, + "id": 44443, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2226:7:113", + "src": "2226:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", - "src": "2218:27:113", + "src": "2218:27:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" }, "valueType": { - "id": 44370, + "id": 44444, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2237:7:113", + "src": "2237:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2549,22 +2557,22 @@ "visibility": "public" }, { - "id": 44377, + "id": 44451, "nodeType": "VariableDeclaration", - "src": "2365:57:113", + "src": "2365:57:114", "nodes": [], "constant": false, "documentation": { - "id": 44373, + "id": 44447, "nodeType": "StructuredDocumentation", - "src": "2279:81:113", + "src": "2279:81:114", "text": "@notice Maps from a period to the poseidon commitment for the sync committee." }, "functionSelector": "b34711ab", "mutability": "mutable", "name": "syncCommitteePoseidons", - "nameLocation": "2400:22:113", - "scope": 45032, + "nameLocation": "2400:22:114", + "scope": 45106, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2572,28 +2580,28 @@ "typeString": "mapping(uint256 => bytes32)" }, "typeName": { - "id": 44376, + "id": 44450, "keyType": { - "id": 44374, + "id": 44448, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2373:7:113", + "src": "2373:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", - "src": "2365:27:113", + "src": "2365:27:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" }, "valueType": { - "id": 44375, + "id": 44449, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2384:7:113", + "src": "2384:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2603,28 +2611,28 @@ "visibility": "public" }, { - "id": 44383, + "id": 44457, "nodeType": "EventDefinition", - "src": "2429:61:113", + "src": "2429:61:114", "nodes": [], "anonymous": false, "eventSelector": "fefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a02", "name": "HeadUpdate", - "nameLocation": "2435:10:113", + "nameLocation": "2435:10:114", "parameters": { - "id": 44382, + "id": 44456, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44379, + "id": 44453, "indexed": true, "mutability": "mutable", "name": "slot", - "nameLocation": "2462:4:113", + "nameLocation": "2462:4:114", "nodeType": "VariableDeclaration", - "scope": 44383, - "src": "2446:20:113", + "scope": 44457, + "src": "2446:20:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2632,10 +2640,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44378, + "id": 44452, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2446:7:113", + "src": "2446:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2645,14 +2653,14 @@ }, { "constant": false, - "id": 44381, + "id": 44455, "indexed": true, "mutability": "mutable", "name": "root", - "nameLocation": "2484:4:113", + "nameLocation": "2484:4:114", "nodeType": "VariableDeclaration", - "scope": 44383, - "src": "2468:20:113", + "scope": 44457, + "src": "2468:20:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2660,10 +2668,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44380, + "id": 44454, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2468:7:113", + "src": "2468:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2672,32 +2680,32 @@ "visibility": "internal" } ], - "src": "2445:44:113" + "src": "2445:44:114" } }, { - "id": 44389, + "id": 44463, "nodeType": "EventDefinition", - "src": "2495:72:113", + "src": "2495:72:114", "nodes": [], "anonymous": false, "eventSelector": "783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f", "name": "SyncCommitteeUpdate", - "nameLocation": "2501:19:113", + "nameLocation": "2501:19:114", "parameters": { - "id": 44388, + "id": 44462, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44385, + "id": 44459, "indexed": true, "mutability": "mutable", "name": "period", - "nameLocation": "2537:6:113", + "nameLocation": "2537:6:114", "nodeType": "VariableDeclaration", - "scope": 44389, - "src": "2521:22:113", + "scope": 44463, + "src": "2521:22:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2705,10 +2713,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44384, + "id": 44458, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2521:7:113", + "src": "2521:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2718,14 +2726,14 @@ }, { "constant": false, - "id": 44387, + "id": 44461, "indexed": true, "mutability": "mutable", "name": "root", - "nameLocation": "2561:4:113", + "nameLocation": "2561:4:114", "nodeType": "VariableDeclaration", - "scope": 44389, - "src": "2545:20:113", + "scope": 44463, + "src": "2545:20:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2733,10 +2741,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44386, + "id": 44460, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2545:7:113", + "src": "2545:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2745,34 +2753,34 @@ "visibility": "internal" } ], - "src": "2520:46:113" + "src": "2520:46:114" } }, { - "id": 44438, + "id": 44512, "nodeType": "FunctionDefinition", - "src": "2573:643:113", + "src": "2573:643:114", "nodes": [], "body": { - "id": 44437, + "id": 44511, "nodeType": "Block", - "src": "2863:353:113", + "src": "2863:353:114", "nodes": [], "statements": [ { "expression": { - "id": 44410, + "id": 44484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44408, + "id": 44482, "name": "GENESIS_VALIDATORS_ROOT", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44324, - "src": "2873:23:113", + "referencedDeclaration": 44398, + "src": "2873:23:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2781,41 +2789,41 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 44409, + "id": 44483, "name": "genesisValidatorsRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44391, - "src": "2899:21:113", + "referencedDeclaration": 44465, + "src": "2899:21:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "2873:47:113", + "src": "2873:47:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 44411, + "id": 44485, "nodeType": "ExpressionStatement", - "src": "2873:47:113" + "src": "2873:47:114" }, { "expression": { - "id": 44414, + "id": 44488, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44412, + "id": 44486, "name": "GENESIS_TIME", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44326, - "src": "2930:12:113", + "referencedDeclaration": 44400, + "src": "2930:12:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2824,41 +2832,41 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 44413, + "id": 44487, "name": "genesisTime", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44393, - "src": "2945:11:113", + "referencedDeclaration": 44467, + "src": "2945:11:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2930:26:113", + "src": "2930:26:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44415, + "id": 44489, "nodeType": "ExpressionStatement", - "src": "2930:26:113" + "src": "2930:26:114" }, { "expression": { - "id": 44418, + "id": 44492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44416, + "id": 44490, "name": "SECONDS_PER_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44328, - "src": "2966:16:113", + "referencedDeclaration": 44402, + "src": "2966:16:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2867,41 +2875,41 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 44417, + "id": 44491, "name": "secondsPerSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44395, - "src": "2985:14:113", + "referencedDeclaration": 44469, + "src": "2985:14:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2966:33:113", + "src": "2966:33:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44419, + "id": 44493, "nodeType": "ExpressionStatement", - "src": "2966:33:113" + "src": "2966:33:114" }, { "expression": { - "id": 44422, + "id": 44496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44420, + "id": 44494, "name": "SLOTS_PER_PERIOD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44330, - "src": "3009:16:113", + "referencedDeclaration": 44404, + "src": "3009:16:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2910,41 +2918,41 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 44421, + "id": 44495, "name": "slotsPerPeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44397, - "src": "3028:14:113", + "referencedDeclaration": 44471, + "src": "3028:14:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3009:33:113", + "src": "3009:33:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44423, + "id": 44497, "nodeType": "ExpressionStatement", - "src": "3009:33:113" + "src": "3009:33:114" }, { "expression": { - "id": 44426, + "id": 44500, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44424, + "id": 44498, "name": "SOURCE_CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44332, - "src": "3052:15:113", + "referencedDeclaration": 44406, + "src": "3052:15:114", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -2953,41 +2961,41 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 44425, + "id": 44499, "name": "sourceChainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44403, - "src": "3070:13:113", + "referencedDeclaration": 44477, + "src": "3070:13:114", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, - "src": "3052:31:113", + "src": "3052:31:114", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, - "id": 44427, + "id": 44501, "nodeType": "ExpressionStatement", - "src": "3052:31:113" + "src": "3052:31:114" }, { "expression": { - "id": 44430, + "id": 44504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44428, + "id": 44502, "name": "FINALITY_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44334, - "src": "3093:18:113", + "referencedDeclaration": 44408, + "src": "3093:18:114", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2996,49 +3004,49 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 44429, + "id": 44503, "name": "finalityThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44405, - "src": "3114:17:113", + "referencedDeclaration": 44479, + "src": "3114:17:114", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "src": "3093:38:113", + "src": "3093:38:114", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 44431, + "id": 44505, "nodeType": "ExpressionStatement", - "src": "3093:38:113" + "src": "3093:38:114" }, { "expression": { "arguments": [ { - "id": 44433, + "id": 44507, "name": "syncCommitteePeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44399, - "src": "3166:19:113", + "referencedDeclaration": 44473, + "src": "3166:19:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 44434, + "id": 44508, "name": "syncCommitteePoseidon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44401, - "src": "3187:21:113", + "referencedDeclaration": 44475, + "src": "3187:21:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3056,18 +3064,18 @@ "typeString": "bytes32" } ], - "id": 44432, + "id": 44506, "name": "setSyncCommitteePoseidon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 45031, - "src": "3141:24:113", + "referencedDeclaration": 45105, + "src": "3141:24:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (uint256,bytes32)" } }, - "id": 44435, + "id": 44509, "isConstant": false, "isLValue": false, "isPure": false, @@ -3076,16 +3084,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3141:68:113", + "src": "3141:68:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44436, + "id": 44510, "nodeType": "ExpressionStatement", - "src": "3141:68:113" + "src": "3141:68:114" } ] }, @@ -3095,18 +3103,18 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 44406, + "id": 44480, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44391, + "id": 44465, "mutability": "mutable", "name": "genesisValidatorsRoot", - "nameLocation": "2602:21:113", + "nameLocation": "2602:21:114", "nodeType": "VariableDeclaration", - "scope": 44438, - "src": "2594:29:113", + "scope": 44512, + "src": "2594:29:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3114,10 +3122,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44390, + "id": 44464, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2594:7:113", + "src": "2594:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3127,13 +3135,13 @@ }, { "constant": false, - "id": 44393, + "id": 44467, "mutability": "mutable", "name": "genesisTime", - "nameLocation": "2641:11:113", + "nameLocation": "2641:11:114", "nodeType": "VariableDeclaration", - "scope": 44438, - "src": "2633:19:113", + "scope": 44512, + "src": "2633:19:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3141,10 +3149,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44392, + "id": 44466, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2633:7:113", + "src": "2633:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3154,13 +3162,13 @@ }, { "constant": false, - "id": 44395, + "id": 44469, "mutability": "mutable", "name": "secondsPerSlot", - "nameLocation": "2670:14:113", + "nameLocation": "2670:14:114", "nodeType": "VariableDeclaration", - "scope": 44438, - "src": "2662:22:113", + "scope": 44512, + "src": "2662:22:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3168,10 +3176,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44394, + "id": 44468, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2662:7:113", + "src": "2662:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3181,13 +3189,13 @@ }, { "constant": false, - "id": 44397, + "id": 44471, "mutability": "mutable", "name": "slotsPerPeriod", - "nameLocation": "2702:14:113", + "nameLocation": "2702:14:114", "nodeType": "VariableDeclaration", - "scope": 44438, - "src": "2694:22:113", + "scope": 44512, + "src": "2694:22:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3195,10 +3203,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44396, + "id": 44470, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2694:7:113", + "src": "2694:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3208,13 +3216,13 @@ }, { "constant": false, - "id": 44399, + "id": 44473, "mutability": "mutable", "name": "syncCommitteePeriod", - "nameLocation": "2734:19:113", + "nameLocation": "2734:19:114", "nodeType": "VariableDeclaration", - "scope": 44438, - "src": "2726:27:113", + "scope": 44512, + "src": "2726:27:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3222,10 +3230,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44398, + "id": 44472, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2726:7:113", + "src": "2726:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3235,13 +3243,13 @@ }, { "constant": false, - "id": 44401, + "id": 44475, "mutability": "mutable", "name": "syncCommitteePoseidon", - "nameLocation": "2771:21:113", + "nameLocation": "2771:21:114", "nodeType": "VariableDeclaration", - "scope": 44438, - "src": "2763:29:113", + "scope": 44512, + "src": "2763:29:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3249,10 +3257,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44400, + "id": 44474, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2763:7:113", + "src": "2763:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3262,13 +3270,13 @@ }, { "constant": false, - "id": 44403, + "id": 44477, "mutability": "mutable", "name": "sourceChainId", - "nameLocation": "2809:13:113", + "nameLocation": "2809:13:114", "nodeType": "VariableDeclaration", - "scope": 44438, - "src": "2802:20:113", + "scope": 44512, + "src": "2802:20:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3276,10 +3284,10 @@ "typeString": "uint32" }, "typeName": { - "id": 44402, + "id": 44476, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "2802:6:113", + "src": "2802:6:114", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -3289,13 +3297,13 @@ }, { "constant": false, - "id": 44405, + "id": 44479, "mutability": "mutable", "name": "finalityThreshold", - "nameLocation": "2839:17:113", + "nameLocation": "2839:17:114", "nodeType": "VariableDeclaration", - "scope": 44438, - "src": "2832:24:113", + "scope": 44512, + "src": "2832:24:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3303,10 +3311,10 @@ "typeString": "uint16" }, "typeName": { - "id": 44404, + "id": 44478, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "2832:6:113", + "src": "2832:6:114", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -3315,44 +3323,44 @@ "visibility": "internal" } ], - "src": "2584:278:113" + "src": "2584:278:114" }, "returnParameters": { - "id": 44407, + "id": 44481, "nodeType": "ParameterList", "parameters": [], - "src": "2863:0:113" + "src": "2863:0:114" }, - "scope": 45032, + "scope": 45106, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 44490, + "id": 44564, "nodeType": "FunctionDefinition", - "src": "3551:577:113", + "src": "3551:577:114", "nodes": [], "body": { - "id": 44489, + "id": 44563, "nodeType": "Block", - "src": "3605:523:113", + "src": "3605:523:114", "nodes": [], "statements": [ { "assignments": [ - 44446 + 44520 ], "declarations": [ { "constant": false, - "id": 44446, + "id": 44520, "mutability": "mutable", "name": "finalized", - "nameLocation": "3620:9:113", + "nameLocation": "3620:9:114", "nodeType": "VariableDeclaration", - "scope": 44489, - "src": "3615:14:113", + "scope": 44563, + "src": "3615:14:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3360,10 +3368,10 @@ "typeString": "bool" }, "typeName": { - "id": 44445, + "id": 44519, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3615:4:113", + "src": "3615:4:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3372,18 +3380,18 @@ "visibility": "internal" } ], - "id": 44450, + "id": 44524, "initialValue": { "arguments": [ { - "id": 44448, + "id": 44522, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44442, - "src": "3644:6:113", + "referencedDeclaration": 44516, + "src": "3644:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } } @@ -3391,22 +3399,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } ], - "id": 44447, + "id": 44521, "name": "processStep", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44584, - "src": "3632:11:113", + "referencedDeclaration": 44658, + "src": "3632:11:114", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44304_memory_ptr_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44378_memory_ptr_$returns$_t_bool_$", "typeString": "function (struct LightClientStep memory) view returns (bool)" } }, - "id": 44449, + "id": 44523, "isConstant": false, "isLValue": false, "isPure": false, @@ -3415,7 +3423,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3632:19:113", + "src": "3632:19:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3423,7 +3431,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3615:36:113" + "src": "3615:36:114" }, { "condition": { @@ -3431,7 +3439,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44455, + "id": 44529, "isConstant": false, "isLValue": false, "isPure": false, @@ -3440,18 +3448,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 44451, + "id": 44525, "name": "getCurrentSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44907, - "src": "3666:14:113", + "referencedDeclaration": 44981, + "src": "3666:14:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 44452, + "id": 44526, "isConstant": false, "isLValue": false, "isPure": false, @@ -3460,7 +3468,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3666:16:113", + "src": "3666:16:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3471,59 +3479,59 @@ "operator": "<", "rightExpression": { "expression": { - "id": 44453, + "id": 44527, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44442, - "src": "3685:6:113", + "referencedDeclaration": 44516, + "src": "3685:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44454, + "id": 44528, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3692:12:113", + "memberLocation": "3692:12:114", "memberName": "attestedSlot", "nodeType": "MemberAccess", - "referencedDeclaration": 44292, - "src": "3685:19:113", + "referencedDeclaration": 44366, + "src": "3685:19:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3666:38:113", + "src": "3666:38:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44461, + "id": 44535, "nodeType": "IfStatement", - "src": "3662:115:113", + "src": "3662:115:114", "trueBody": { - "id": 44460, + "id": 44534, "nodeType": "Block", - "src": "3706:71:113", + "src": "3706:71:114", "statements": [ { "expression": { "arguments": [ { "hexValue": "55706461746520736c6f7420697320746f6f2066617220696e2074686520667574757265", - "id": 44457, + "id": 44531, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3727:38:113", + "src": "3727:38:114", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9d5b6907988bae42b7e613bf07235f2e4f54b11455dcdb40bb4ef279eae7a76f", "typeString": "literal_string \"Update slot is too far in the future\"" @@ -3538,7 +3546,7 @@ "typeString": "literal_string \"Update slot is too far in the future\"" } ], - "id": 44456, + "id": 44530, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3546,13 +3554,13 @@ -19 ], "referencedDeclaration": -19, - "src": "3720:6:113", + "src": "3720:6:114", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 44458, + "id": 44532, "isConstant": false, "isLValue": false, "isPure": false, @@ -3561,16 +3569,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3720:46:113", + "src": "3720:46:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44459, + "id": 44533, "nodeType": "ExpressionStatement", - "src": "3720:46:113" + "src": "3720:46:114" } ] } @@ -3581,34 +3589,34 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44465, + "id": 44539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 44462, + "id": 44536, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44442, - "src": "3791:6:113", + "referencedDeclaration": 44516, + "src": "3791:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44463, + "id": 44537, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3798:13:113", + "memberLocation": "3798:13:114", "memberName": "finalizedSlot", "nodeType": "MemberAccess", - "referencedDeclaration": 44294, - "src": "3791:20:113", + "referencedDeclaration": 44368, + "src": "3791:20:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3617,44 +3625,44 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 44464, + "id": 44538, "name": "head", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44357, - "src": "3814:4:113", + "referencedDeclaration": 44431, + "src": "3814:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3791:27:113", + "src": "3791:27:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44471, + "id": 44545, "nodeType": "IfStatement", - "src": "3787:102:113", + "src": "3787:102:114", "trueBody": { - "id": 44470, + "id": 44544, "nodeType": "Block", - "src": "3820:69:113", + "src": "3820:69:114", "statements": [ { "expression": { "arguments": [ { "hexValue": "55706461746520736c6f74206c657373207468616e2063757272656e742068656164", - "id": 44467, + "id": 44541, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3841:36:113", + "src": "3841:36:114", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6c291bcab9e481c31fc21f7d3aa8b374c3aabd0b9471c965073c10d2045016c4", "typeString": "literal_string \"Update slot less than current head\"" @@ -3669,7 +3677,7 @@ "typeString": "literal_string \"Update slot less than current head\"" } ], - "id": 44466, + "id": 44540, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3677,13 +3685,13 @@ -19 ], "referencedDeclaration": -19, - "src": "3834:6:113", + "src": "3834:6:114", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 44468, + "id": 44542, "isConstant": false, "isLValue": false, "isPure": false, @@ -3692,51 +3700,51 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3834:44:113", + "src": "3834:44:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44469, + "id": 44543, "nodeType": "ExpressionStatement", - "src": "3834:44:113" + "src": "3834:44:114" } ] } }, { "condition": { - "id": 44472, + "id": 44546, "name": "finalized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44446, - "src": "3903:9:113", + "referencedDeclaration": 44520, + "src": "3903:9:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 44487, + "id": 44561, "nodeType": "Block", - "src": "4064:58:113", + "src": "4064:58:114", "statements": [ { "expression": { "arguments": [ { "hexValue": "4e6f7420656e6f756768207061727469636970616e7473", - "id": 44484, + "id": 44558, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4085:25:113", + "src": "4085:25:114", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8979aa78e11231d286d47a92f052b8a41cf7d9d818a58b8b574dd67335800648", "typeString": "literal_string \"Not enough participants\"" @@ -3751,7 +3759,7 @@ "typeString": "literal_string \"Not enough participants\"" } ], - "id": 44483, + "id": 44557, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3759,13 +3767,13 @@ -19 ], "referencedDeclaration": -19, - "src": "4078:6:113", + "src": "4078:6:114", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 44485, + "id": 44559, "isConstant": false, "isLValue": false, "isPure": false, @@ -3774,53 +3782,53 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4078:33:113", + "src": "4078:33:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44486, + "id": 44560, "nodeType": "ExpressionStatement", - "src": "4078:33:113" + "src": "4078:33:114" } ] }, - "id": 44488, + "id": 44562, "nodeType": "IfStatement", - "src": "3899:223:113", + "src": "3899:223:114", "trueBody": { - "id": 44482, + "id": 44556, "nodeType": "Block", - "src": "3914:144:113", + "src": "3914:144:114", "statements": [ { "expression": { "arguments": [ { "expression": { - "id": 44474, + "id": 44548, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44442, - "src": "3958:6:113", + "referencedDeclaration": 44516, + "src": "3958:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44475, + "id": 44549, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3965:13:113", + "memberLocation": "3965:13:114", "memberName": "finalizedSlot", "nodeType": "MemberAccess", - "referencedDeclaration": 44294, - "src": "3958:20:113", + "referencedDeclaration": 44368, + "src": "3958:20:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3828,27 +3836,27 @@ }, { "expression": { - "id": 44476, + "id": 44550, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44442, - "src": "3980:6:113", + "referencedDeclaration": 44516, + "src": "3980:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44477, + "id": 44551, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3987:19:113", + "memberLocation": "3987:19:114", "memberName": "finalizedHeaderRoot", "nodeType": "MemberAccess", - "referencedDeclaration": 44298, - "src": "3980:26:113", + "referencedDeclaration": 44372, + "src": "3980:26:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3856,27 +3864,27 @@ }, { "expression": { - "id": 44478, + "id": 44552, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44442, - "src": "4008:6:113", + "referencedDeclaration": 44516, + "src": "4008:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44479, + "id": 44553, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4015:18:113", + "memberLocation": "4015:18:114", "memberName": "executionStateRoot", "nodeType": "MemberAccess", - "referencedDeclaration": 44300, - "src": "4008:25:113", + "referencedDeclaration": 44374, + "src": "4008:25:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3898,18 +3906,18 @@ "typeString": "bytes32" } ], - "id": 44473, + "id": 44547, "name": "setSlotRoots", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44990, - "src": "3928:12:113", + "referencedDeclaration": 45064, + "src": "3928:12:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (uint256,bytes32,bytes32)" } }, - "id": 44480, + "id": 44554, "isConstant": false, "isLValue": false, "isPure": false, @@ -3918,16 +3926,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3928:119:113", + "src": "3928:119:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44481, + "id": 44555, "nodeType": "ExpressionStatement", - "src": "3928:119:113" + "src": "3928:119:114" } ] } @@ -3935,9 +3943,9 @@ ] }, "documentation": { - "id": 44439, + "id": 44513, "nodeType": "StructuredDocumentation", - "src": "3222:324:113", + "src": "3222:324:114", "text": "@notice Updates the head of the light client to the provided slot.\n @dev The conditions for updating the head of the light client involve checking:\n 1) Enough signatures from the current sync committee for n=512\n 2) A valid finality proof\n 3) A valid execution state root proof" }, "functionSelector": "cb970952", @@ -3945,162 +3953,162 @@ "kind": "function", "modifiers": [], "name": "step", - "nameLocation": "3560:4:113", + "nameLocation": "3560:4:114", "parameters": { - "id": 44443, + "id": 44517, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44442, + "id": 44516, "mutability": "mutable", "name": "update", - "nameLocation": "3588:6:113", + "nameLocation": "3588:6:114", "nodeType": "VariableDeclaration", - "scope": 44490, - "src": "3565:29:113", + "scope": 44564, + "src": "3565:29:114", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep" }, "typeName": { - "id": 44441, + "id": 44515, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 44440, + "id": 44514, "name": "LightClientStep", "nameLocations": [ - "3565:15:113" + "3565:15:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 44304, - "src": "3565:15:113" + "referencedDeclaration": 44378, + "src": "3565:15:114" }, - "referencedDeclaration": 44304, - "src": "3565:15:113", + "referencedDeclaration": 44378, + "src": "3565:15:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", "typeString": "struct LightClientStep" } }, "visibility": "internal" } ], - "src": "3564:31:113" + "src": "3564:31:114" }, "returnParameters": { - "id": 44444, + "id": 44518, "nodeType": "ParameterList", "parameters": [], - "src": "3605:0:113" + "src": "3605:0:114" }, - "scope": 45032, + "scope": 45106, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 44537, + "id": 44611, "nodeType": "FunctionDefinition", - "src": "4310:457:113", + "src": "4310:457:114", "nodes": [], "body": { - "id": 44536, + "id": 44610, "nodeType": "Block", - "src": "4368:399:113", + "src": "4368:399:114", "nodes": [], "statements": [ { "assignments": [ - 44499 + 44573 ], "declarations": [ { "constant": false, - "id": 44499, + "id": 44573, "mutability": "mutable", "name": "stepUpdate", - "nameLocation": "4401:10:113", + "nameLocation": "4401:10:114", "nodeType": "VariableDeclaration", - "scope": 44536, - "src": "4378:33:113", + "scope": 44610, + "src": "4378:33:114", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep" }, "typeName": { - "id": 44498, + "id": 44572, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 44497, + "id": 44571, "name": "LightClientStep", "nameLocations": [ - "4378:15:113" + "4378:15:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 44304, - "src": "4378:15:113" + "referencedDeclaration": 44378, + "src": "4378:15:114" }, - "referencedDeclaration": 44304, - "src": "4378:15:113", + "referencedDeclaration": 44378, + "src": "4378:15:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", "typeString": "struct LightClientStep" } }, "visibility": "internal" } ], - "id": 44502, + "id": 44576, "initialValue": { "expression": { - "id": 44500, + "id": 44574, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44494, - "src": "4414:6:113", + "referencedDeclaration": 44568, + "src": "4414:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", "typeString": "struct LightClientRotate memory" } }, - "id": 44501, + "id": 44575, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4421:4:113", + "memberLocation": "4421:4:114", "memberName": "step", "nodeType": "MemberAccess", - "referencedDeclaration": 44307, - "src": "4414:11:113", + "referencedDeclaration": 44381, + "src": "4414:11:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "4378:47:113" + "src": "4378:47:114" }, { "assignments": [ - 44504 + 44578 ], "declarations": [ { "constant": false, - "id": 44504, + "id": 44578, "mutability": "mutable", "name": "finalized", - "nameLocation": "4440:9:113", + "nameLocation": "4440:9:114", "nodeType": "VariableDeclaration", - "scope": 44536, - "src": "4435:14:113", + "scope": 44610, + "src": "4435:14:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4108,10 +4116,10 @@ "typeString": "bool" }, "typeName": { - "id": 44503, + "id": 44577, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4435:4:113", + "src": "4435:4:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4120,34 +4128,34 @@ "visibility": "internal" } ], - "id": 44509, + "id": 44583, "initialValue": { "arguments": [ { "expression": { - "id": 44506, + "id": 44580, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44494, - "src": "4464:6:113", + "referencedDeclaration": 44568, + "src": "4464:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", "typeString": "struct LightClientRotate memory" } }, - "id": 44507, + "id": 44581, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4471:4:113", + "memberLocation": "4471:4:114", "memberName": "step", "nodeType": "MemberAccess", - "referencedDeclaration": 44307, - "src": "4464:11:113", + "referencedDeclaration": 44381, + "src": "4464:11:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } } @@ -4155,22 +4163,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } ], - "id": 44505, + "id": 44579, "name": "processStep", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44584, - "src": "4452:11:113", + "referencedDeclaration": 44658, + "src": "4452:11:114", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44304_memory_ptr_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44378_memory_ptr_$returns$_t_bool_$", "typeString": "function (struct LightClientStep memory) view returns (bool)" } }, - "id": 44508, + "id": 44582, "isConstant": false, "isLValue": false, "isPure": false, @@ -4179,7 +4187,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4452:24:113", + "src": "4452:24:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4187,22 +4195,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4435:41:113" + "src": "4435:41:114" }, { "assignments": [ - 44511 + 44585 ], "declarations": [ { "constant": false, - "id": 44511, + "id": 44585, "mutability": "mutable", "name": "currentPeriod", - "nameLocation": "4494:13:113", + "nameLocation": "4494:13:114", "nodeType": "VariableDeclaration", - "scope": 44536, - "src": "4486:21:113", + "scope": 44610, + "src": "4486:21:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4210,10 +4218,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44510, + "id": 44584, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4486:7:113", + "src": "4486:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4222,32 +4230,32 @@ "visibility": "internal" } ], - "id": 44516, + "id": 44590, "initialValue": { "arguments": [ { "expression": { - "id": 44513, + "id": 44587, "name": "stepUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44499, - "src": "4533:10:113", + "referencedDeclaration": 44573, + "src": "4533:10:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44514, + "id": 44588, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4544:13:113", + "memberLocation": "4544:13:114", "memberName": "finalizedSlot", "nodeType": "MemberAccess", - "referencedDeclaration": 44294, - "src": "4533:24:113", + "referencedDeclaration": 44368, + "src": "4533:24:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4261,18 +4269,18 @@ "typeString": "uint256" } ], - "id": 44512, + "id": 44586, "name": "getSyncCommitteePeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44892, - "src": "4510:22:113", + "referencedDeclaration": 44966, + "src": "4510:22:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 44515, + "id": 44589, "isConstant": false, "isLValue": false, "isPure": false, @@ -4281,7 +4289,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4510:48:113", + "src": "4510:48:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4289,22 +4297,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4486:72:113" + "src": "4486:72:114" }, { "assignments": [ - 44518 + 44592 ], "declarations": [ { "constant": false, - "id": 44518, + "id": 44592, "mutability": "mutable", "name": "nextPeriod", - "nameLocation": "4576:10:113", + "nameLocation": "4576:10:114", "nodeType": "VariableDeclaration", - "scope": 44536, - "src": "4568:18:113", + "scope": 44610, + "src": "4568:18:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4312,10 +4320,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44517, + "id": 44591, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4568:7:113", + "src": "4568:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4324,24 +4332,24 @@ "visibility": "internal" } ], - "id": 44522, + "id": 44596, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44521, + "id": 44595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 44519, + "id": 44593, "name": "currentPeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44511, - "src": "4589:13:113", + "referencedDeclaration": 44585, + "src": "4589:13:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4351,41 +4359,41 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 44520, + "id": 44594, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4605:1:113", + "src": "4605:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "4589:17:113", + "src": "4589:17:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4568:38:113" + "src": "4568:38:114" }, { "expression": { "arguments": [ { - "id": 44524, + "id": 44598, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44494, - "src": "4637:6:113", + "referencedDeclaration": 44568, + "src": "4637:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", "typeString": "struct LightClientRotate memory" } } @@ -4393,22 +4401,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", "typeString": "struct LightClientRotate memory" } ], - "id": 44523, + "id": 44597, "name": "zkLightClientRotate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44879, - "src": "4617:19:113", + "referencedDeclaration": 44953, + "src": "4617:19:114", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientRotate_$44315_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientRotate_$44389_memory_ptr_$returns$__$", "typeString": "function (struct LightClientRotate memory) view" } }, - "id": 44525, + "id": 44599, "isConstant": false, "isLValue": false, "isPure": false, @@ -4417,48 +4425,48 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4617:27:113", + "src": "4617:27:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44526, + "id": 44600, "nodeType": "ExpressionStatement", - "src": "4617:27:113" + "src": "4617:27:114" }, { "condition": { - "id": 44527, + "id": 44601, "name": "finalized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44504, - "src": "4659:9:113", + "referencedDeclaration": 44578, + "src": "4659:9:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44535, + "id": 44609, "nodeType": "IfStatement", - "src": "4655:106:113", + "src": "4655:106:114", "trueBody": { - "id": 44534, + "id": 44608, "nodeType": "Block", - "src": "4670:91:113", + "src": "4670:91:114", "statements": [ { "expression": { "arguments": [ { - "id": 44529, + "id": 44603, "name": "nextPeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44518, - "src": "4709:10:113", + "referencedDeclaration": 44592, + "src": "4709:10:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4466,27 +4474,27 @@ }, { "expression": { - "id": 44530, + "id": 44604, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44494, - "src": "4721:6:113", + "referencedDeclaration": 44568, + "src": "4721:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", "typeString": "struct LightClientRotate memory" } }, - "id": 44531, + "id": 44605, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4728:21:113", + "memberLocation": "4728:21:114", "memberName": "syncCommitteePoseidon", "nodeType": "MemberAccess", - "referencedDeclaration": 44311, - "src": "4721:28:113", + "referencedDeclaration": 44385, + "src": "4721:28:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4504,18 +4512,18 @@ "typeString": "bytes32" } ], - "id": 44528, + "id": 44602, "name": "setSyncCommitteePoseidon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 45031, - "src": "4684:24:113", + "referencedDeclaration": 45105, + "src": "4684:24:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (uint256,bytes32)" } }, - "id": 44532, + "id": 44606, "isConstant": false, "isLValue": false, "isPure": false, @@ -4524,16 +4532,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4684:66:113", + "src": "4684:66:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44533, + "id": 44607, "nodeType": "ExpressionStatement", - "src": "4684:66:113" + "src": "4684:66:114" } ] } @@ -4541,9 +4549,9 @@ ] }, "documentation": { - "id": 44491, + "id": 44565, "nodeType": "StructuredDocumentation", - "src": "4134:171:113", + "src": "4134:171:114", "text": "@notice Sets the sync committee for the next sync committeee period.\n @dev A commitment to the the next sync committeee is signed by the current sync committee." }, "functionSelector": "4b4e4dff", @@ -4551,87 +4559,87 @@ "kind": "function", "modifiers": [], "name": "rotate", - "nameLocation": "4319:6:113", + "nameLocation": "4319:6:114", "parameters": { - "id": 44495, + "id": 44569, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44494, + "id": 44568, "mutability": "mutable", "name": "update", - "nameLocation": "4351:6:113", + "nameLocation": "4351:6:114", "nodeType": "VariableDeclaration", - "scope": 44537, - "src": "4326:31:113", + "scope": 44611, + "src": "4326:31:114", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", "typeString": "struct LightClientRotate" }, "typeName": { - "id": 44493, + "id": 44567, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 44492, + "id": 44566, "name": "LightClientRotate", "nameLocations": [ - "4326:17:113" + "4326:17:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 44315, - "src": "4326:17:113" + "referencedDeclaration": 44389, + "src": "4326:17:114" }, - "referencedDeclaration": 44315, - "src": "4326:17:113", + "referencedDeclaration": 44389, + "src": "4326:17:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_storage_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_storage_ptr", "typeString": "struct LightClientRotate" } }, "visibility": "internal" } ], - "src": "4325:33:113" + "src": "4325:33:114" }, "returnParameters": { - "id": 44496, + "id": 44570, "nodeType": "ParameterList", "parameters": [], - "src": "4368:0:113" + "src": "4368:0:114" }, - "scope": 45032, + "scope": 45106, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 44584, + "id": 44658, "nodeType": "FunctionDefinition", - "src": "4850:556:113", + "src": "4850:556:114", "nodes": [], "body": { - "id": 44583, + "id": 44657, "nodeType": "Block", - "src": "4931:475:113", + "src": "4931:475:114", "nodes": [], "statements": [ { "assignments": [ - 44547 + 44621 ], "declarations": [ { "constant": false, - "id": 44547, + "id": 44621, "mutability": "mutable", "name": "currentPeriod", - "nameLocation": "4949:13:113", + "nameLocation": "4949:13:114", "nodeType": "VariableDeclaration", - "scope": 44583, - "src": "4941:21:113", + "scope": 44657, + "src": "4941:21:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4639,10 +4647,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44546, + "id": 44620, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4941:7:113", + "src": "4941:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4651,32 +4659,32 @@ "visibility": "internal" } ], - "id": 44552, + "id": 44626, "initialValue": { "arguments": [ { "expression": { - "id": 44549, + "id": 44623, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44541, - "src": "4988:6:113", + "referencedDeclaration": 44615, + "src": "4988:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44550, + "id": 44624, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4995:12:113", + "memberLocation": "4995:12:114", "memberName": "attestedSlot", "nodeType": "MemberAccess", - "referencedDeclaration": 44292, - "src": "4988:19:113", + "referencedDeclaration": 44366, + "src": "4988:19:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4690,18 +4698,18 @@ "typeString": "uint256" } ], - "id": 44548, + "id": 44622, "name": "getSyncCommitteePeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44892, - "src": "4965:22:113", + "referencedDeclaration": 44966, + "src": "4965:22:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 44551, + "id": 44625, "isConstant": false, "isLValue": false, "isPure": false, @@ -4710,7 +4718,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4965:43:113", + "src": "4965:43:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4718,7 +4726,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4941:67:113" + "src": "4941:67:114" }, { "condition": { @@ -4726,32 +4734,32 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 44557, + "id": 44631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 44553, + "id": 44627, "name": "syncCommitteePoseidons", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44377, - "src": "5023:22:113", + "referencedDeclaration": 44451, + "src": "5023:22:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 44555, + "id": 44629, "indexExpression": { - "id": 44554, + "id": 44628, "name": "currentPeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44547, - "src": "5046:13:113", + "referencedDeclaration": 44621, + "src": "5046:13:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4762,7 +4770,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5023:37:113", + "src": "5023:37:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4772,21 +4780,21 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 44556, + "id": 44630, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5064:1:113", + "src": "5064:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "5023:42:113", + "src": "5023:42:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4798,34 +4806,34 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44566, + "id": 44640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 44563, + "id": 44637, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44541, - "src": "5165:6:113", + "referencedDeclaration": 44615, + "src": "5165:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44564, + "id": 44638, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5172:13:113", + "memberLocation": "5172:13:114", "memberName": "participation", "nodeType": "MemberAccess", - "referencedDeclaration": 44296, - "src": "5165:20:113", + "referencedDeclaration": 44370, + "src": "5165:20:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4834,44 +4842,44 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 44565, + "id": 44639, "name": "MIN_SYNC_COMMITTEE_PARTICIPANTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44337, - "src": "5188:31:113", + "referencedDeclaration": 44411, + "src": "5188:31:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5165:54:113", + "src": "5165:54:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44572, + "id": 44646, "nodeType": "IfStatement", - "src": "5161:144:113", + "src": "5161:144:114", "trueBody": { - "id": 44571, + "id": 44645, "nodeType": "Block", - "src": "5221:84:113", + "src": "5221:84:114", "statements": [ { "expression": { "arguments": [ { "hexValue": "4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041525449434950414e5453207369676e65642e", - "id": 44568, + "id": 44642, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5242:51:113", + "src": "5242:51:114", "typeDescriptions": { "typeIdentifier": "t_stringliteral_cae0be8985b78a6c0f9dfa91efa4accdc18ad2daf0009e8f2dec9f1b45d87605", "typeString": "literal_string \"Less than MIN_SYNC_COMMITTEE_PARTICIPANTS signed.\"" @@ -4886,7 +4894,7 @@ "typeString": "literal_string \"Less than MIN_SYNC_COMMITTEE_PARTICIPANTS signed.\"" } ], - "id": 44567, + "id": 44641, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4894,13 +4902,13 @@ -19 ], "referencedDeclaration": -19, - "src": "5235:6:113", + "src": "5235:6:114", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 44569, + "id": 44643, "isConstant": false, "isLValue": false, "isPure": false, @@ -4909,41 +4917,41 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5235:59:113", + "src": "5235:59:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44570, + "id": 44644, "nodeType": "ExpressionStatement", - "src": "5235:59:113" + "src": "5235:59:114" } ] } }, - "id": 44573, + "id": 44647, "nodeType": "IfStatement", - "src": "5019:286:113", + "src": "5019:286:114", "trueBody": { - "id": 44562, + "id": 44636, "nodeType": "Block", - "src": "5067:88:113", + "src": "5067:88:114", "statements": [ { "expression": { "arguments": [ { "hexValue": "53796e6320636f6d6d697474656520666f722063757272656e7420706572696f64206973206e6f7420696e697469616c697a65642e", - "id": 44559, + "id": 44633, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5088:55:113", + "src": "5088:55:114", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e8780d403efa266a60b69589365396827d2cfe370ce2d6818315948fc218b935", "typeString": "literal_string \"Sync committee for current period is not initialized.\"" @@ -4958,7 +4966,7 @@ "typeString": "literal_string \"Sync committee for current period is not initialized.\"" } ], - "id": 44558, + "id": 44632, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4966,13 +4974,13 @@ -19 ], "referencedDeclaration": -19, - "src": "5081:6:113", + "src": "5081:6:114", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 44560, + "id": 44634, "isConstant": false, "isLValue": false, "isPure": false, @@ -4981,16 +4989,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5081:63:113", + "src": "5081:63:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44561, + "id": 44635, "nodeType": "ExpressionStatement", - "src": "5081:63:113" + "src": "5081:63:114" } ] } @@ -4999,14 +5007,14 @@ "expression": { "arguments": [ { - "id": 44575, + "id": 44649, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44541, - "src": "5333:6:113", + "referencedDeclaration": 44615, + "src": "5333:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } } @@ -5014,22 +5022,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } ], - "id": 44574, + "id": 44648, "name": "zkLightClientStep", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44747, - "src": "5315:17:113", + "referencedDeclaration": 44821, + "src": "5315:17:114", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44304_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44378_memory_ptr_$returns$__$", "typeString": "function (struct LightClientStep memory) view" } }, - "id": 44576, + "id": 44650, "isConstant": false, "isLValue": false, "isPure": false, @@ -5038,16 +5046,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5315:25:113", + "src": "5315:25:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44577, + "id": 44651, "nodeType": "ExpressionStatement", - "src": "5315:25:113" + "src": "5315:25:114" }, { "expression": { @@ -5055,34 +5063,34 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44581, + "id": 44655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 44578, + "id": 44652, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44541, - "src": "5358:6:113", + "referencedDeclaration": 44615, + "src": "5358:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44579, + "id": 44653, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5365:13:113", + "memberLocation": "5365:13:114", "memberName": "participation", "nodeType": "MemberAccess", - "referencedDeclaration": 44296, - "src": "5358:20:113", + "referencedDeclaration": 44370, + "src": "5358:20:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5091,98 +5099,98 @@ "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { - "id": 44580, + "id": 44654, "name": "FINALITY_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44334, - "src": "5381:18:113", + "referencedDeclaration": 44408, + "src": "5381:18:114", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "src": "5358:41:113", + "src": "5358:41:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 44545, - "id": 44582, + "functionReturnParameters": 44619, + "id": 44656, "nodeType": "Return", - "src": "5351:48:113" + "src": "5351:48:114" } ] }, "documentation": { - "id": 44538, + "id": 44612, "nodeType": "StructuredDocumentation", - "src": "4773:72:113", + "src": "4773:72:114", "text": "@notice Verifies that the header has enough signatures for finality." }, "implemented": true, "kind": "function", "modifiers": [], "name": "processStep", - "nameLocation": "4859:11:113", + "nameLocation": "4859:11:114", "parameters": { - "id": 44542, + "id": 44616, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44541, + "id": 44615, "mutability": "mutable", "name": "update", - "nameLocation": "4894:6:113", + "nameLocation": "4894:6:114", "nodeType": "VariableDeclaration", - "scope": 44584, - "src": "4871:29:113", + "scope": 44658, + "src": "4871:29:114", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep" }, "typeName": { - "id": 44540, + "id": 44614, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 44539, + "id": 44613, "name": "LightClientStep", "nameLocations": [ - "4871:15:113" + "4871:15:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 44304, - "src": "4871:15:113" + "referencedDeclaration": 44378, + "src": "4871:15:114" }, - "referencedDeclaration": 44304, - "src": "4871:15:113", + "referencedDeclaration": 44378, + "src": "4871:15:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", "typeString": "struct LightClientStep" } }, "visibility": "internal" } ], - "src": "4870:31:113" + "src": "4870:31:114" }, "returnParameters": { - "id": 44545, + "id": 44619, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44544, + "id": 44618, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 44584, - "src": "4925:4:113", + "scope": 44658, + "src": "4925:4:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5190,10 +5198,10 @@ "typeString": "bool" }, "typeName": { - "id": 44543, + "id": 44617, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4925:4:113", + "src": "4925:4:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5202,38 +5210,38 @@ "visibility": "internal" } ], - "src": "4924:6:113" + "src": "4924:6:114" }, - "scope": 45032, + "scope": 45106, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 44747, + "id": 44821, "nodeType": "FunctionDefinition", - "src": "5509:1064:113", + "src": "5509:1064:114", "nodes": [], "body": { - "id": 44746, + "id": 44820, "nodeType": "Block", - "src": "5581:992:113", + "src": "5581:992:114", "nodes": [], "statements": [ { "assignments": [ - 44592 + 44666 ], "declarations": [ { "constant": false, - "id": 44592, + "id": 44666, "mutability": "mutable", "name": "attestedSlotLE", - "nameLocation": "5599:14:113", + "nameLocation": "5599:14:114", "nodeType": "VariableDeclaration", - "scope": 44746, - "src": "5591:22:113", + "scope": 44820, + "src": "5591:22:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5241,10 +5249,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44591, + "id": 44665, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5591:7:113", + "src": "5591:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5253,32 +5261,32 @@ "visibility": "internal" } ], - "id": 44598, + "id": 44672, "initialValue": { "arguments": [ { "expression": { - "id": 44595, + "id": 44669, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44588, - "src": "5635:6:113", + "referencedDeclaration": 44662, + "src": "5635:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44596, + "id": 44670, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5642:12:113", + "memberLocation": "5642:12:114", "memberName": "attestedSlot", "nodeType": "MemberAccess", - "referencedDeclaration": 44292, - "src": "5635:19:113", + "referencedDeclaration": 44366, + "src": "5635:19:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5293,33 +5301,33 @@ } ], "expression": { - "id": 44593, + "id": 44667, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43867, - "src": "5616:3:113", + "referencedDeclaration": 43941, + "src": "5616:3:114", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", "typeString": "type(library SSZ)" } }, - "id": 44594, + "id": 44668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5620:14:113", + "memberLocation": "5620:14:114", "memberName": "toLittleEndian", "nodeType": "MemberAccess", - "referencedDeclaration": 43478, - "src": "5616:18:113", + "referencedDeclaration": 43520, + "src": "5616:18:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) pure returns (bytes32)" } }, - "id": 44597, + "id": 44671, "isConstant": false, "isLValue": false, "isPure": false, @@ -5328,7 +5336,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5616:39:113", + "src": "5616:39:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -5336,22 +5344,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5591:64:113" + "src": "5591:64:114" }, { "assignments": [ - 44600 + 44674 ], "declarations": [ { "constant": false, - "id": 44600, + "id": 44674, "mutability": "mutable", "name": "finalizedSlotLE", - "nameLocation": "5673:15:113", + "nameLocation": "5673:15:114", "nodeType": "VariableDeclaration", - "scope": 44746, - "src": "5665:23:113", + "scope": 44820, + "src": "5665:23:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5359,10 +5367,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44599, + "id": 44673, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5665:7:113", + "src": "5665:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5371,32 +5379,32 @@ "visibility": "internal" } ], - "id": 44606, + "id": 44680, "initialValue": { "arguments": [ { "expression": { - "id": 44603, + "id": 44677, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44588, - "src": "5710:6:113", + "referencedDeclaration": 44662, + "src": "5710:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44604, + "id": 44678, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5717:13:113", + "memberLocation": "5717:13:114", "memberName": "finalizedSlot", "nodeType": "MemberAccess", - "referencedDeclaration": 44294, - "src": "5710:20:113", + "referencedDeclaration": 44368, + "src": "5710:20:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5411,33 +5419,33 @@ } ], "expression": { - "id": 44601, + "id": 44675, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43867, - "src": "5691:3:113", + "referencedDeclaration": 43941, + "src": "5691:3:114", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", "typeString": "type(library SSZ)" } }, - "id": 44602, + "id": 44676, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5695:14:113", + "memberLocation": "5695:14:114", "memberName": "toLittleEndian", "nodeType": "MemberAccess", - "referencedDeclaration": 43478, - "src": "5691:18:113", + "referencedDeclaration": 43520, + "src": "5691:18:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) pure returns (bytes32)" } }, - "id": 44605, + "id": 44679, "isConstant": false, "isLValue": false, "isPure": false, @@ -5446,7 +5454,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5691:40:113", + "src": "5691:40:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -5454,22 +5462,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5665:66:113" + "src": "5665:66:114" }, { "assignments": [ - 44608 + 44682 ], "declarations": [ { "constant": false, - "id": 44608, + "id": 44682, "mutability": "mutable", "name": "participationLE", - "nameLocation": "5749:15:113", + "nameLocation": "5749:15:114", "nodeType": "VariableDeclaration", - "scope": 44746, - "src": "5741:23:113", + "scope": 44820, + "src": "5741:23:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5477,10 +5485,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44607, + "id": 44681, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5741:7:113", + "src": "5741:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5489,32 +5497,32 @@ "visibility": "internal" } ], - "id": 44614, + "id": 44688, "initialValue": { "arguments": [ { "expression": { - "id": 44611, + "id": 44685, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44588, - "src": "5786:6:113", + "referencedDeclaration": 44662, + "src": "5786:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44612, + "id": 44686, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5793:13:113", + "memberLocation": "5793:13:114", "memberName": "participation", "nodeType": "MemberAccess", - "referencedDeclaration": 44296, - "src": "5786:20:113", + "referencedDeclaration": 44370, + "src": "5786:20:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5529,33 +5537,33 @@ } ], "expression": { - "id": 44609, + "id": 44683, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43867, - "src": "5767:3:113", + "referencedDeclaration": 43941, + "src": "5767:3:114", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", "typeString": "type(library SSZ)" } }, - "id": 44610, + "id": 44684, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5771:14:113", + "memberLocation": "5771:14:114", "memberName": "toLittleEndian", "nodeType": "MemberAccess", - "referencedDeclaration": 43478, - "src": "5767:18:113", + "referencedDeclaration": 43520, + "src": "5767:18:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) pure returns (bytes32)" } }, - "id": 44613, + "id": 44687, "isConstant": false, "isLValue": false, "isPure": false, @@ -5564,7 +5572,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5767:40:113", + "src": "5767:40:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -5572,22 +5580,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5741:66:113" + "src": "5741:66:114" }, { "assignments": [ - 44616 + 44690 ], "declarations": [ { "constant": false, - "id": 44616, + "id": 44690, "mutability": "mutable", "name": "currentPeriod", - "nameLocation": "5825:13:113", + "nameLocation": "5825:13:114", "nodeType": "VariableDeclaration", - "scope": 44746, - "src": "5817:21:113", + "scope": 44820, + "src": "5817:21:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5595,10 +5603,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44615, + "id": 44689, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5817:7:113", + "src": "5817:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5607,32 +5615,32 @@ "visibility": "internal" } ], - "id": 44621, + "id": 44695, "initialValue": { "arguments": [ { "expression": { - "id": 44618, + "id": 44692, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44588, - "src": "5864:6:113", + "referencedDeclaration": 44662, + "src": "5864:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44619, + "id": 44693, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5871:12:113", + "memberLocation": "5871:12:114", "memberName": "attestedSlot", "nodeType": "MemberAccess", - "referencedDeclaration": 44292, - "src": "5864:19:113", + "referencedDeclaration": 44366, + "src": "5864:19:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5646,18 +5654,18 @@ "typeString": "uint256" } ], - "id": 44617, + "id": 44691, "name": "getSyncCommitteePeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44892, - "src": "5841:22:113", + "referencedDeclaration": 44966, + "src": "5841:22:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 44620, + "id": 44694, "isConstant": false, "isLValue": false, "isPure": false, @@ -5666,7 +5674,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5841:43:113", + "src": "5841:43:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5674,22 +5682,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5817:67:113" + "src": "5817:67:114" }, { "assignments": [ - 44623 + 44697 ], "declarations": [ { "constant": false, - "id": 44623, + "id": 44697, "mutability": "mutable", "name": "syncCommitteePoseidon", - "nameLocation": "5902:21:113", + "nameLocation": "5902:21:114", "nodeType": "VariableDeclaration", - "scope": 44746, - "src": "5894:29:113", + "scope": 44820, + "src": "5894:29:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5697,10 +5705,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44622, + "id": 44696, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5894:7:113", + "src": "5894:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5709,28 +5717,28 @@ "visibility": "internal" } ], - "id": 44627, + "id": 44701, "initialValue": { "baseExpression": { - "id": 44624, + "id": 44698, "name": "syncCommitteePoseidons", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44377, - "src": "5926:22:113", + "referencedDeclaration": 44451, + "src": "5926:22:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 44626, + "id": 44700, "indexExpression": { - "id": 44625, + "id": 44699, "name": "currentPeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44616, - "src": "5949:13:113", + "referencedDeclaration": 44690, + "src": "5949:13:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5741,29 +5749,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5926:37:113", + "src": "5926:37:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "5894:69:113" + "src": "5894:69:114" }, { "assignments": [ - 44629 + 44703 ], "declarations": [ { "constant": false, - "id": 44629, + "id": 44703, "mutability": "mutable", "name": "h", - "nameLocation": "5982:1:113", + "nameLocation": "5982:1:114", "nodeType": "VariableDeclaration", - "scope": 44746, - "src": "5974:9:113", + "scope": 44820, + "src": "5974:9:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5771,10 +5779,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44628, + "id": 44702, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5974:7:113", + "src": "5974:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5783,24 +5791,24 @@ "visibility": "internal" } ], - "id": 44630, + "id": 44704, "nodeType": "VariableDeclarationStatement", - "src": "5974:9:113" + "src": "5974:9:114" }, { "expression": { - "id": 44640, + "id": 44714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44631, + "id": 44705, "name": "h", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44629, - "src": "5993:1:113", + "referencedDeclaration": 44703, + "src": "5993:1:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5813,24 +5821,24 @@ { "arguments": [ { - "id": 44636, + "id": 44710, "name": "attestedSlotLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44592, - "src": "6017:14:113", + "referencedDeclaration": 44666, + "src": "6017:14:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 44637, + "id": 44711, "name": "finalizedSlotLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44600, - "src": "6033:15:113", + "referencedDeclaration": 44674, + "src": "6033:15:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5849,40 +5857,40 @@ } ], "expression": { - "id": 44634, + "id": 44708, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6004:5:113", + "src": "6004:5:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 44633, + "id": 44707, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "6004:5:113", + "src": "6004:5:114", "typeDescriptions": {} } }, - "id": 44635, + "id": 44709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6010:6:113", + "memberLocation": "6010:6:114", "memberName": "concat", "nodeType": "MemberAccess", - "src": "6004:12:113", + "src": "6004:12:114", "typeDescriptions": { "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 44638, + "id": 44712, "isConstant": false, "isLValue": false, "isPure": false, @@ -5891,7 +5899,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6004:45:113", + "src": "6004:45:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -5906,18 +5914,18 @@ "typeString": "bytes memory" } ], - "id": 44632, + "id": 44706, "name": "sha256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -22, - "src": "5997:6:113", + "src": "5997:6:114", "typeDescriptions": { "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 44639, + "id": 44713, "isConstant": false, "isLValue": false, "isPure": false, @@ -5926,37 +5934,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5997:53:113", + "src": "5997:53:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "5993:57:113", + "src": "5993:57:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 44641, + "id": 44715, "nodeType": "ExpressionStatement", - "src": "5993:57:113" + "src": "5993:57:114" }, { "expression": { - "id": 44652, + "id": 44726, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44642, + "id": 44716, "name": "h", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44629, - "src": "6060:1:113", + "referencedDeclaration": 44703, + "src": "6060:1:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5969,12 +5977,12 @@ { "arguments": [ { - "id": 44647, + "id": 44721, "name": "h", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44629, - "src": "6084:1:113", + "referencedDeclaration": 44703, + "src": "6084:1:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5982,27 +5990,27 @@ }, { "expression": { - "id": 44648, + "id": 44722, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44588, - "src": "6087:6:113", + "referencedDeclaration": 44662, + "src": "6087:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44649, + "id": 44723, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "6094:19:113", + "memberLocation": "6094:19:114", "memberName": "finalizedHeaderRoot", "nodeType": "MemberAccess", - "referencedDeclaration": 44298, - "src": "6087:26:113", + "referencedDeclaration": 44372, + "src": "6087:26:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6021,40 +6029,40 @@ } ], "expression": { - "id": 44645, + "id": 44719, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6071:5:113", + "src": "6071:5:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 44644, + "id": 44718, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "6071:5:113", + "src": "6071:5:114", "typeDescriptions": {} } }, - "id": 44646, + "id": 44720, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6077:6:113", + "memberLocation": "6077:6:114", "memberName": "concat", "nodeType": "MemberAccess", - "src": "6071:12:113", + "src": "6071:12:114", "typeDescriptions": { "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 44650, + "id": 44724, "isConstant": false, "isLValue": false, "isPure": false, @@ -6063,7 +6071,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6071:43:113", + "src": "6071:43:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -6078,18 +6086,18 @@ "typeString": "bytes memory" } ], - "id": 44643, + "id": 44717, "name": "sha256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -22, - "src": "6064:6:113", + "src": "6064:6:114", "typeDescriptions": { "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 44651, + "id": 44725, "isConstant": false, "isLValue": false, "isPure": false, @@ -6098,37 +6106,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6064:51:113", + "src": "6064:51:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "6060:55:113", + "src": "6060:55:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 44653, + "id": 44727, "nodeType": "ExpressionStatement", - "src": "6060:55:113" + "src": "6060:55:114" }, { "expression": { - "id": 44663, + "id": 44737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44654, + "id": 44728, "name": "h", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44629, - "src": "6125:1:113", + "referencedDeclaration": 44703, + "src": "6125:1:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6141,24 +6149,24 @@ { "arguments": [ { - "id": 44659, + "id": 44733, "name": "h", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44629, - "src": "6149:1:113", + "referencedDeclaration": 44703, + "src": "6149:1:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 44660, + "id": 44734, "name": "participationLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44608, - "src": "6152:15:113", + "referencedDeclaration": 44682, + "src": "6152:15:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6177,40 +6185,40 @@ } ], "expression": { - "id": 44657, + "id": 44731, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6136:5:113", + "src": "6136:5:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 44656, + "id": 44730, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "6136:5:113", + "src": "6136:5:114", "typeDescriptions": {} } }, - "id": 44658, + "id": 44732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6142:6:113", + "memberLocation": "6142:6:114", "memberName": "concat", "nodeType": "MemberAccess", - "src": "6136:12:113", + "src": "6136:12:114", "typeDescriptions": { "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 44661, + "id": 44735, "isConstant": false, "isLValue": false, "isPure": false, @@ -6219,7 +6227,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6136:32:113", + "src": "6136:32:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -6234,18 +6242,18 @@ "typeString": "bytes memory" } ], - "id": 44655, + "id": 44729, "name": "sha256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -22, - "src": "6129:6:113", + "src": "6129:6:114", "typeDescriptions": { "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 44662, + "id": 44736, "isConstant": false, "isLValue": false, "isPure": false, @@ -6254,37 +6262,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6129:40:113", + "src": "6129:40:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "6125:44:113", + "src": "6125:44:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 44664, + "id": 44738, "nodeType": "ExpressionStatement", - "src": "6125:44:113" + "src": "6125:44:114" }, { "expression": { - "id": 44675, + "id": 44749, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44665, + "id": 44739, "name": "h", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44629, - "src": "6179:1:113", + "referencedDeclaration": 44703, + "src": "6179:1:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6297,12 +6305,12 @@ { "arguments": [ { - "id": 44670, + "id": 44744, "name": "h", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44629, - "src": "6203:1:113", + "referencedDeclaration": 44703, + "src": "6203:1:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6310,27 +6318,27 @@ }, { "expression": { - "id": 44671, + "id": 44745, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44588, - "src": "6206:6:113", + "referencedDeclaration": 44662, + "src": "6206:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44672, + "id": 44746, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "6213:18:113", + "memberLocation": "6213:18:114", "memberName": "executionStateRoot", "nodeType": "MemberAccess", - "referencedDeclaration": 44300, - "src": "6206:25:113", + "referencedDeclaration": 44374, + "src": "6206:25:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6349,40 +6357,40 @@ } ], "expression": { - "id": 44668, + "id": 44742, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6190:5:113", + "src": "6190:5:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 44667, + "id": 44741, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "6190:5:113", + "src": "6190:5:114", "typeDescriptions": {} } }, - "id": 44669, + "id": 44743, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6196:6:113", + "memberLocation": "6196:6:114", "memberName": "concat", "nodeType": "MemberAccess", - "src": "6190:12:113", + "src": "6190:12:114", "typeDescriptions": { "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 44673, + "id": 44747, "isConstant": false, "isLValue": false, "isPure": false, @@ -6391,7 +6399,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6190:42:113", + "src": "6190:42:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -6406,18 +6414,18 @@ "typeString": "bytes memory" } ], - "id": 44666, + "id": 44740, "name": "sha256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -22, - "src": "6183:6:113", + "src": "6183:6:114", "typeDescriptions": { "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 44674, + "id": 44748, "isConstant": false, "isLValue": false, "isPure": false, @@ -6426,37 +6434,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6183:50:113", + "src": "6183:50:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "6179:54:113", + "src": "6179:54:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 44676, + "id": 44750, "nodeType": "ExpressionStatement", - "src": "6179:54:113" + "src": "6179:54:114" }, { "expression": { - "id": 44686, + "id": 44760, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44677, + "id": 44751, "name": "h", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44629, - "src": "6243:1:113", + "referencedDeclaration": 44703, + "src": "6243:1:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6469,24 +6477,24 @@ { "arguments": [ { - "id": 44682, + "id": 44756, "name": "h", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44629, - "src": "6267:1:113", + "referencedDeclaration": 44703, + "src": "6267:1:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 44683, + "id": 44757, "name": "syncCommitteePoseidon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44623, - "src": "6270:21:113", + "referencedDeclaration": 44697, + "src": "6270:21:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6505,40 +6513,40 @@ } ], "expression": { - "id": 44680, + "id": 44754, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6254:5:113", + "src": "6254:5:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 44679, + "id": 44753, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "6254:5:113", + "src": "6254:5:114", "typeDescriptions": {} } }, - "id": 44681, + "id": 44755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6260:6:113", + "memberLocation": "6260:6:114", "memberName": "concat", "nodeType": "MemberAccess", - "src": "6254:12:113", + "src": "6254:12:114", "typeDescriptions": { "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 44684, + "id": 44758, "isConstant": false, "isLValue": false, "isPure": false, @@ -6547,7 +6555,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6254:38:113", + "src": "6254:38:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -6562,18 +6570,18 @@ "typeString": "bytes memory" } ], - "id": 44678, + "id": 44752, "name": "sha256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -22, - "src": "6247:6:113", + "src": "6247:6:114", "typeDescriptions": { "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 44685, + "id": 44759, "isConstant": false, "isLValue": false, "isPure": false, @@ -6582,37 +6590,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6247:46:113", + "src": "6247:46:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "6243:50:113", + "src": "6243:50:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 44687, + "id": 44761, "nodeType": "ExpressionStatement", - "src": "6243:50:113" + "src": "6243:50:114" }, { "assignments": [ - 44689 + 44763 ], "declarations": [ { "constant": false, - "id": 44689, + "id": 44763, "mutability": "mutable", "name": "t", - "nameLocation": "6311:1:113", + "nameLocation": "6311:1:114", "nodeType": "VariableDeclaration", - "scope": 44746, - "src": "6303:9:113", + "scope": 44820, + "src": "6303:9:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6620,10 +6628,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44688, + "id": 44762, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6303:7:113", + "src": "6303:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6632,7 +6640,7 @@ "visibility": "internal" } ], - "id": 44700, + "id": 44774, "initialValue": { "arguments": [ { @@ -6640,12 +6648,12 @@ { "arguments": [ { - "id": 44696, + "id": 44770, "name": "h", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44629, - "src": "6350:1:113", + "referencedDeclaration": 44703, + "src": "6350:1:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6659,26 +6667,26 @@ "typeString": "bytes32" } ], - "id": 44695, + "id": 44769, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6342:7:113", + "src": "6342:7:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 44694, + "id": 44768, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6342:7:113", + "src": "6342:7:114", "typeDescriptions": {} } }, - "id": 44697, + "id": 44771, "isConstant": false, "isLValue": false, "isPure": false, @@ -6687,7 +6695,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6342:10:113", + "src": "6342:10:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6703,33 +6711,33 @@ } ], "expression": { - "id": 44692, + "id": 44766, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43867, - "src": "6323:3:113", + "referencedDeclaration": 43941, + "src": "6323:3:114", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", "typeString": "type(library SSZ)" } }, - "id": 44693, + "id": 44767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6327:14:113", + "memberLocation": "6327:14:114", "memberName": "toLittleEndian", "nodeType": "MemberAccess", - "referencedDeclaration": 43478, - "src": "6323:18:113", + "referencedDeclaration": 43520, + "src": "6323:18:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) pure returns (bytes32)" } }, - "id": 44698, + "id": 44772, "isConstant": false, "isLValue": false, "isPure": false, @@ -6738,7 +6746,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6323:30:113", + "src": "6323:30:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -6753,26 +6761,26 @@ "typeString": "bytes32" } ], - "id": 44691, + "id": 44765, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6315:7:113", + "src": "6315:7:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 44690, + "id": 44764, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6315:7:113", + "src": "6315:7:114", "typeDescriptions": {} } }, - "id": 44699, + "id": 44773, "isConstant": false, "isLValue": false, "isPure": false, @@ -6781,7 +6789,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6315:39:113", + "src": "6315:39:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6789,22 +6797,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "6303:51:113" + "src": "6303:51:114" }, { "expression": { - "id": 44714, + "id": 44788, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44701, + "id": 44775, "name": "t", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44689, - "src": "6364:1:113", + "referencedDeclaration": 44763, + "src": "6364:1:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6817,18 +6825,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44713, + "id": 44787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 44702, + "id": 44776, "name": "t", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44689, - "src": "6368:1:113", + "referencedDeclaration": 44763, + "src": "6368:1:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6843,7 +6851,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44711, + "id": 44785, "isConstant": false, "isLValue": false, "isPure": true, @@ -6855,7 +6863,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44708, + "id": 44782, "isConstant": false, "isLValue": false, "isPure": true, @@ -6864,14 +6872,14 @@ "arguments": [ { "hexValue": "31", - "id": 44705, + "id": 44779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6382:1:113", + "src": "6382:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -6886,26 +6894,26 @@ "typeString": "int_const 1" } ], - "id": 44704, + "id": 44778, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6374:7:113", + "src": "6374:7:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 44703, + "id": 44777, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6374:7:113", + "src": "6374:7:114", "typeDescriptions": {} } }, - "id": 44706, + "id": 44780, "isConstant": false, "isLValue": false, "isPure": true, @@ -6914,7 +6922,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6374:10:113", + "src": "6374:10:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6925,35 +6933,35 @@ "operator": "<<", "rightExpression": { "hexValue": "323533", - "id": 44707, + "id": 44781, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6388:3:113", + "src": "6388:3:114", "typeDescriptions": { "typeIdentifier": "t_rational_253_by_1", "typeString": "int_const 253" }, "value": "253" }, - "src": "6374:17:113", + "src": "6374:17:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 44709, + "id": 44783, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "6373:19:113", + "src": "6373:19:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6963,145 +6971,145 @@ "operator": "-", "rightExpression": { "hexValue": "31", - "id": 44710, + "id": 44784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6395:1:113", + "src": "6395:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "6373:23:113", + "src": "6373:23:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 44712, + "id": 44786, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "6372:25:113", + "src": "6372:25:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6368:29:113", + "src": "6368:29:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6364:33:113", + "src": "6364:33:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44715, + "id": 44789, "nodeType": "ExpressionStatement", - "src": "6364:33:113" + "src": "6364:33:114" }, { "assignments": [ - 44718 + 44792 ], "declarations": [ { "constant": false, - "id": 44718, + "id": 44792, "mutability": "mutable", "name": "proof", - "nameLocation": "6428:5:113", + "nameLocation": "6428:5:114", "nodeType": "VariableDeclaration", - "scope": 44746, - "src": "6408:25:113", + "scope": 44820, + "src": "6408:25:114", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", "typeString": "struct Groth16Proof" }, "typeName": { - "id": 44717, + "id": 44791, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 44716, + "id": 44790, "name": "Groth16Proof", "nameLocations": [ - "6408:12:113" + "6408:12:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 44290, - "src": "6408:12:113" + "referencedDeclaration": 44364, + "src": "6408:12:114" }, - "referencedDeclaration": 44290, - "src": "6408:12:113", + "referencedDeclaration": 44364, + "src": "6408:12:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", "typeString": "struct Groth16Proof" } }, "visibility": "internal" } ], - "id": 44721, + "id": 44795, "initialValue": { "expression": { - "id": 44719, + "id": 44793, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44588, - "src": "6436:6:113", + "referencedDeclaration": 44662, + "src": "6436:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44720, + "id": 44794, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "6443:5:113", + "memberLocation": "6443:5:114", "memberName": "proof", "nodeType": "MemberAccess", - "referencedDeclaration": 44303, - "src": "6436:12:113", + "referencedDeclaration": 44377, + "src": "6436:12:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", "typeString": "struct Groth16Proof memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "6408:40:113" + "src": "6408:40:114" }, { "assignments": [ - 44727 + 44801 ], "declarations": [ { "constant": false, - "id": 44727, + "id": 44801, "mutability": "mutable", "name": "inputs", - "nameLocation": "6476:6:113", + "nameLocation": "6476:6:114", "nodeType": "VariableDeclaration", - "scope": 44746, - "src": "6458:24:113", + "scope": 44820, + "src": "6458:24:114", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -7110,26 +7118,26 @@ }, "typeName": { "baseType": { - "id": 44725, + "id": 44799, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6458:7:113", + "src": "6458:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44726, + "id": 44800, "length": { "hexValue": "31", - "id": 44724, + "id": 44798, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6466:1:113", + "src": "6466:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -7137,7 +7145,7 @@ "value": "1" }, "nodeType": "ArrayTypeName", - "src": "6458:10:113", + "src": "6458:10:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$1_storage_ptr", "typeString": "uint256[1]" @@ -7146,18 +7154,18 @@ "visibility": "internal" } ], - "id": 44733, + "id": 44807, "initialValue": { "components": [ { "arguments": [ { - "id": 44730, + "id": 44804, "name": "t", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44689, - "src": "6494:1:113", + "referencedDeclaration": 44763, + "src": "6494:1:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7171,26 +7179,26 @@ "typeString": "uint256" } ], - "id": 44729, + "id": 44803, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6486:7:113", + "src": "6486:7:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 44728, + "id": 44802, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6486:7:113", + "src": "6486:7:114", "typeDescriptions": {} } }, - "id": 44731, + "id": 44805, "isConstant": false, "isLValue": false, "isPure": false, @@ -7199,7 +7207,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6486:10:113", + "src": "6486:10:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7207,21 +7215,21 @@ } } ], - "id": 44732, + "id": 44806, "isConstant": false, "isInlineArray": true, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "6485:12:113", + "src": "6485:12:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr", "typeString": "uint256[1] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "6458:39:113" + "src": "6458:39:114" }, { "expression": { @@ -7230,27 +7238,27 @@ "arguments": [ { "expression": { - "id": 44736, + "id": 44810, "name": "proof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44718, - "src": "6531:5:113", + "referencedDeclaration": 44792, + "src": "6531:5:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", "typeString": "struct Groth16Proof memory" } }, - "id": 44737, + "id": 44811, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "6537:1:113", + "memberLocation": "6537:1:114", "memberName": "a", "nodeType": "MemberAccess", - "referencedDeclaration": 44279, - "src": "6531:7:113", + "referencedDeclaration": 44353, + "src": "6531:7:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", "typeString": "uint256[2] memory" @@ -7258,27 +7266,27 @@ }, { "expression": { - "id": 44738, + "id": 44812, "name": "proof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44718, - "src": "6540:5:113", + "referencedDeclaration": 44792, + "src": "6540:5:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", "typeString": "struct Groth16Proof memory" } }, - "id": 44739, + "id": 44813, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "6546:1:113", + "memberLocation": "6546:1:114", "memberName": "b", "nodeType": "MemberAccess", - "referencedDeclaration": 44285, - "src": "6540:7:113", + "referencedDeclaration": 44359, + "src": "6540:7:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr", "typeString": "uint256[2] memory[2] memory" @@ -7286,39 +7294,39 @@ }, { "expression": { - "id": 44740, + "id": 44814, "name": "proof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44718, - "src": "6549:5:113", + "referencedDeclaration": 44792, + "src": "6549:5:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", "typeString": "struct Groth16Proof memory" } }, - "id": 44741, + "id": 44815, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "6555:1:113", + "memberLocation": "6555:1:114", "memberName": "c", "nodeType": "MemberAccess", - "referencedDeclaration": 44289, - "src": "6549:7:113", + "referencedDeclaration": 44363, + "src": "6549:7:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", "typeString": "uint256[2] memory" } }, { - "id": 44742, + "id": 44816, "name": "inputs", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44727, - "src": "6558:6:113", + "referencedDeclaration": 44801, + "src": "6558:6:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr", "typeString": "uint256[1] memory" @@ -7344,18 +7352,18 @@ "typeString": "uint256[1] memory" } ], - "id": 44735, + "id": 44809, "name": "verifyProofStep", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47827, - "src": "6515:15:113", + "referencedDeclaration": 47901, + "src": "6515:15:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr_$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_uint256_$1_memory_ptr_$returns$_t_bool_$", "typeString": "function (uint256[2] memory,uint256[2] memory[2] memory,uint256[2] memory,uint256[1] memory) view returns (bool)" } }, - "id": 44743, + "id": 44817, "isConstant": false, "isLValue": false, "isPure": false, @@ -7364,7 +7372,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6515:50:113", + "src": "6515:50:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7379,7 +7387,7 @@ "typeString": "bool" } ], - "id": 44734, + "id": 44808, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -7387,13 +7395,13 @@ -18 ], "referencedDeclaration": -18, - "src": "6507:7:113", + "src": "6507:7:114", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 44744, + "id": 44818, "isConstant": false, "isLValue": false, "isPure": false, @@ -7402,185 +7410,185 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6507:59:113", + "src": "6507:59:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44745, + "id": 44819, "nodeType": "ExpressionStatement", - "src": "6507:59:113" + "src": "6507:59:114" } ] }, "documentation": { - "id": 44585, + "id": 44659, "nodeType": "StructuredDocumentation", - "src": "5412:92:113", + "src": "5412:92:114", "text": "@notice Serializes the public inputs into a compressed form and verifies the step proof." }, "implemented": true, "kind": "function", "modifiers": [], "name": "zkLightClientStep", - "nameLocation": "5518:17:113", + "nameLocation": "5518:17:114", "parameters": { - "id": 44589, + "id": 44663, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44588, + "id": 44662, "mutability": "mutable", "name": "update", - "nameLocation": "5559:6:113", + "nameLocation": "5559:6:114", "nodeType": "VariableDeclaration", - "scope": 44747, - "src": "5536:29:113", + "scope": 44821, + "src": "5536:29:114", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep" }, "typeName": { - "id": 44587, + "id": 44661, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 44586, + "id": 44660, "name": "LightClientStep", "nameLocations": [ - "5536:15:113" + "5536:15:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 44304, - "src": "5536:15:113" + "referencedDeclaration": 44378, + "src": "5536:15:114" }, - "referencedDeclaration": 44304, - "src": "5536:15:113", + "referencedDeclaration": 44378, + "src": "5536:15:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_storage_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", "typeString": "struct LightClientStep" } }, "visibility": "internal" } ], - "src": "5535:31:113" + "src": "5535:31:114" }, "returnParameters": { - "id": 44590, + "id": 44664, "nodeType": "ParameterList", "parameters": [], - "src": "5581:0:113" + "src": "5581:0:114" }, - "scope": 45032, + "scope": 45106, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 44879, + "id": 44953, "nodeType": "FunctionDefinition", - "src": "6655:882:113", + "src": "6655:882:114", "nodes": [], "body": { - "id": 44878, + "id": 44952, "nodeType": "Block", - "src": "6731:806:113", + "src": "6731:806:114", "nodes": [], "statements": [ { "assignments": [ - 44756 + 44830 ], "declarations": [ { "constant": false, - "id": 44756, + "id": 44830, "mutability": "mutable", "name": "proof", - "nameLocation": "6761:5:113", + "nameLocation": "6761:5:114", "nodeType": "VariableDeclaration", - "scope": 44878, - "src": "6741:25:113", + "scope": 44952, + "src": "6741:25:114", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", "typeString": "struct Groth16Proof" }, "typeName": { - "id": 44755, + "id": 44829, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 44754, + "id": 44828, "name": "Groth16Proof", "nameLocations": [ - "6741:12:113" + "6741:12:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 44290, - "src": "6741:12:113" + "referencedDeclaration": 44364, + "src": "6741:12:114" }, - "referencedDeclaration": 44290, - "src": "6741:12:113", + "referencedDeclaration": 44364, + "src": "6741:12:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_storage_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", "typeString": "struct Groth16Proof" } }, "visibility": "internal" } ], - "id": 44759, + "id": 44833, "initialValue": { "expression": { - "id": 44757, + "id": 44831, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44751, - "src": "6769:6:113", + "referencedDeclaration": 44825, + "src": "6769:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", "typeString": "struct LightClientRotate memory" } }, - "id": 44758, + "id": 44832, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "6776:5:113", + "memberLocation": "6776:5:114", "memberName": "proof", "nodeType": "MemberAccess", - "referencedDeclaration": 44314, - "src": "6769:12:113", + "referencedDeclaration": 44388, + "src": "6769:12:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", "typeString": "struct Groth16Proof memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "6741:40:113" + "src": "6741:40:114" }, { "assignments": [ - 44765 + 44839 ], "declarations": [ { "constant": false, - "id": 44765, + "id": 44839, "mutability": "mutable", "name": "inputs", - "nameLocation": "6810:6:113", + "nameLocation": "6810:6:114", "nodeType": "VariableDeclaration", - "scope": 44878, - "src": "6791:25:113", + "scope": 44952, + "src": "6791:25:114", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -7589,26 +7597,26 @@ }, "typeName": { "baseType": { - "id": 44763, + "id": 44837, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6791:7:113", + "src": "6791:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44764, + "id": 44838, "length": { "hexValue": "3635", - "id": 44762, + "id": 44836, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6799:2:113", + "src": "6799:2:114", "typeDescriptions": { "typeIdentifier": "t_rational_65_by_1", "typeString": "int_const 65" @@ -7616,7 +7624,7 @@ "value": "65" }, "nodeType": "ArrayTypeName", - "src": "6791:11:113", + "src": "6791:11:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$65_storage_ptr", "typeString": "uint256[65]" @@ -7625,24 +7633,24 @@ "visibility": "internal" } ], - "id": 44766, + "id": 44840, "nodeType": "VariableDeclarationStatement", - "src": "6791:25:113" + "src": "6791:25:114" }, { "assignments": [ - 44768 + 44842 ], "declarations": [ { "constant": false, - "id": 44768, + "id": 44842, "mutability": "mutable", "name": "syncCommitteeSSZNumeric", - "nameLocation": "6835:23:113", + "nameLocation": "6835:23:114", "nodeType": "VariableDeclaration", - "scope": 44878, - "src": "6827:31:113", + "scope": 44952, + "src": "6827:31:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7650,10 +7658,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44767, + "id": 44841, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6827:7:113", + "src": "6827:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7662,32 +7670,32 @@ "visibility": "internal" } ], - "id": 44774, + "id": 44848, "initialValue": { "arguments": [ { "expression": { - "id": 44771, + "id": 44845, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44751, - "src": "6869:6:113", + "referencedDeclaration": 44825, + "src": "6869:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", "typeString": "struct LightClientRotate memory" } }, - "id": 44772, + "id": 44846, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "6876:16:113", + "memberLocation": "6876:16:114", "memberName": "syncCommitteeSSZ", "nodeType": "MemberAccess", - "referencedDeclaration": 44309, - "src": "6869:23:113", + "referencedDeclaration": 44383, + "src": "6869:23:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7701,26 +7709,26 @@ "typeString": "bytes32" } ], - "id": 44770, + "id": 44844, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6861:7:113", + "src": "6861:7:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 44769, + "id": 44843, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6861:7:113", + "src": "6861:7:114", "typeDescriptions": {} } }, - "id": 44773, + "id": 44847, "isConstant": false, "isLValue": false, "isPure": false, @@ -7729,7 +7737,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6861:32:113", + "src": "6861:32:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7737,41 +7745,41 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "6827:66:113" + "src": "6827:66:114" }, { "body": { - "id": 44807, + "id": 44881, "nodeType": "Block", - "src": "6936:150:113", + "src": "6936:150:114", "statements": [ { "expression": { - "id": 44797, + "id": 44871, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 44785, + "id": 44859, "name": "inputs", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44765, - "src": "6950:6:113", + "referencedDeclaration": 44839, + "src": "6950:6:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", "typeString": "uint256[65] memory" } }, - "id": 44791, + "id": 44865, "indexExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44790, + "id": 44864, "isConstant": false, "isLValue": false, "isPure": false, @@ -7781,21 +7789,21 @@ "typeIdentifier": "t_rational_31_by_1", "typeString": "int_const 31" }, - "id": 44788, + "id": 44862, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "3332", - "id": 44786, + "id": 44860, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6957:2:113", + "src": "6957:2:114", "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" @@ -7806,21 +7814,21 @@ "operator": "-", "rightExpression": { "hexValue": "31", - "id": 44787, + "id": 44861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6962:1:113", + "src": "6962:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "6957:6:113", + "src": "6957:6:114", "typeDescriptions": { "typeIdentifier": "t_rational_31_by_1", "typeString": "int_const 31" @@ -7829,18 +7837,18 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { - "id": 44789, + "id": 44863, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44776, - "src": "6966:1:113", + "referencedDeclaration": 44850, + "src": "6966:1:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6957:10:113", + "src": "6957:10:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7851,7 +7859,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6950:18:113", + "src": "6950:18:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7864,18 +7872,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44796, + "id": 44870, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 44792, + "id": 44866, "name": "syncCommitteeSSZNumeric", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44768, - "src": "6971:23:113", + "referencedDeclaration": 44842, + "src": "6971:23:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7888,21 +7896,21 @@ "typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256" }, - "id": 44795, + "id": 44869, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "32", - "id": 44793, + "id": 44867, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6997:1:113", + "src": "6997:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -7913,56 +7921,56 @@ "operator": "**", "rightExpression": { "hexValue": "38", - "id": 44794, + "id": 44868, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7002:1:113", + "src": "7002:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8" }, "value": "8" }, - "src": "6997:6:113", + "src": "6997:6:114", "typeDescriptions": { "typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256" } }, - "src": "6971:32:113", + "src": "6971:32:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6950:53:113", + "src": "6950:53:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44798, + "id": 44872, "nodeType": "ExpressionStatement", - "src": "6950:53:113" + "src": "6950:53:114" }, { "expression": { - "id": 44805, + "id": 44879, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44799, + "id": 44873, "name": "syncCommitteeSSZNumeric", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44768, - "src": "7017:23:113", + "referencedDeclaration": 44842, + "src": "7017:23:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7975,18 +7983,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44804, + "id": 44878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 44800, + "id": 44874, "name": "syncCommitteeSSZNumeric", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44768, - "src": "7043:23:113", + "referencedDeclaration": 44842, + "src": "7043:23:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7999,21 +8007,21 @@ "typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256" }, - "id": 44803, + "id": 44877, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "32", - "id": 44801, + "id": 44875, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7069:1:113", + "src": "7069:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -8024,41 +8032,41 @@ "operator": "**", "rightExpression": { "hexValue": "38", - "id": 44802, + "id": 44876, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7074:1:113", + "src": "7074:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8" }, "value": "8" }, - "src": "7069:6:113", + "src": "7069:6:114", "typeDescriptions": { "typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256" } }, - "src": "7043:32:113", + "src": "7043:32:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7017:58:113", + "src": "7017:58:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44806, + "id": 44880, "nodeType": "ExpressionStatement", - "src": "7017:58:113" + "src": "7017:58:114" } ] }, @@ -8067,18 +8075,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44781, + "id": 44855, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 44779, + "id": 44853, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44776, - "src": "6923:1:113", + "referencedDeclaration": 44850, + "src": "6923:1:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8088,41 +8096,41 @@ "operator": "<", "rightExpression": { "hexValue": "3332", - "id": 44780, + "id": 44854, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6927:2:113", + "src": "6927:2:114", "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" }, "value": "32" }, - "src": "6923:6:113", + "src": "6923:6:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44808, + "id": 44882, "initializationExpression": { "assignments": [ - 44776 + 44850 ], "declarations": [ { "constant": false, - "id": 44776, + "id": 44850, "mutability": "mutable", "name": "i", - "nameLocation": "6916:1:113", + "nameLocation": "6916:1:114", "nodeType": "VariableDeclaration", - "scope": 44808, - "src": "6908:9:113", + "scope": 44882, + "src": "6908:9:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8130,10 +8138,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44775, + "id": 44849, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6908:7:113", + "src": "6908:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8142,17 +8150,17 @@ "visibility": "internal" } ], - "id": 44778, + "id": 44852, "initialValue": { "hexValue": "30", - "id": 44777, + "id": 44851, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6920:1:113", + "src": "6920:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -8160,11 +8168,11 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "6908:13:113" + "src": "6908:13:114" }, "loopExpression": { "expression": { - "id": 44783, + "id": 44857, "isConstant": false, "isLValue": false, "isPure": false, @@ -8172,14 +8180,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "6931:3:113", + "src": "6931:3:114", "subExpression": { - "id": 44782, + "id": 44856, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44776, - "src": "6931:1:113", + "referencedDeclaration": 44850, + "src": "6931:1:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8190,27 +8198,27 @@ "typeString": "uint256" } }, - "id": 44784, + "id": 44858, "nodeType": "ExpressionStatement", - "src": "6931:3:113" + "src": "6931:3:114" }, "nodeType": "ForStatement", - "src": "6903:183:113" + "src": "6903:183:114" }, { "assignments": [ - 44810 + 44884 ], "declarations": [ { "constant": false, - "id": 44810, + "id": 44884, "mutability": "mutable", "name": "finalizedHeaderRootNumeric", - "nameLocation": "7103:26:113", + "nameLocation": "7103:26:114", "nodeType": "VariableDeclaration", - "scope": 44878, - "src": "7095:34:113", + "scope": 44952, + "src": "7095:34:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8218,10 +8226,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44809, + "id": 44883, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7095:7:113", + "src": "7095:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8230,48 +8238,48 @@ "visibility": "internal" } ], - "id": 44817, + "id": 44891, "initialValue": { "arguments": [ { "expression": { "expression": { - "id": 44813, + "id": 44887, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44751, - "src": "7140:6:113", + "referencedDeclaration": 44825, + "src": "7140:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", "typeString": "struct LightClientRotate memory" } }, - "id": 44814, + "id": 44888, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "7147:4:113", + "memberLocation": "7147:4:114", "memberName": "step", "nodeType": "MemberAccess", - "referencedDeclaration": 44307, - "src": "7140:11:113", + "referencedDeclaration": 44381, + "src": "7140:11:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44304_memory_ptr", + "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", "typeString": "struct LightClientStep memory" } }, - "id": 44815, + "id": 44889, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "7152:19:113", + "memberLocation": "7152:19:114", "memberName": "finalizedHeaderRoot", "nodeType": "MemberAccess", - "referencedDeclaration": 44298, - "src": "7140:31:113", + "referencedDeclaration": 44372, + "src": "7140:31:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8285,26 +8293,26 @@ "typeString": "bytes32" } ], - "id": 44812, + "id": 44886, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7132:7:113", + "src": "7132:7:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 44811, + "id": 44885, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7132:7:113", + "src": "7132:7:114", "typeDescriptions": {} } }, - "id": 44816, + "id": 44890, "isConstant": false, "isLValue": false, "isPure": false, @@ -8313,7 +8321,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7132:40:113", + "src": "7132:40:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8321,55 +8329,55 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "7095:77:113" + "src": "7095:77:114" }, { "body": { - "id": 44848, + "id": 44922, "nodeType": "Block", - "src": "7215:155:113", + "src": "7215:155:114", "statements": [ { "expression": { - "id": 44838, + "id": 44912, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 44828, + "id": 44902, "name": "inputs", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44765, - "src": "7229:6:113", + "referencedDeclaration": 44839, + "src": "7229:6:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", "typeString": "uint256[65] memory" } }, - "id": 44832, + "id": 44906, "indexExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44831, + "id": 44905, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3634", - "id": 44829, + "id": 44903, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7236:2:113", + "src": "7236:2:114", "typeDescriptions": { "typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64" @@ -8379,18 +8387,18 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { - "id": 44830, + "id": 44904, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44819, - "src": "7241:1:113", + "referencedDeclaration": 44893, + "src": "7241:1:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7236:6:113", + "src": "7236:6:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8401,7 +8409,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7229:14:113", + "src": "7229:14:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8414,18 +8422,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44837, + "id": 44911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 44833, + "id": 44907, "name": "finalizedHeaderRootNumeric", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44810, - "src": "7246:26:113", + "referencedDeclaration": 44884, + "src": "7246:26:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8438,21 +8446,21 @@ "typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256" }, - "id": 44836, + "id": 44910, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "32", - "id": 44834, + "id": 44908, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7275:1:113", + "src": "7275:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -8463,56 +8471,56 @@ "operator": "**", "rightExpression": { "hexValue": "38", - "id": 44835, + "id": 44909, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7280:1:113", + "src": "7280:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8" }, "value": "8" }, - "src": "7275:6:113", + "src": "7275:6:114", "typeDescriptions": { "typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256" } }, - "src": "7246:35:113", + "src": "7246:35:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7229:52:113", + "src": "7229:52:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44839, + "id": 44913, "nodeType": "ExpressionStatement", - "src": "7229:52:113" + "src": "7229:52:114" }, { "expression": { - "id": 44846, + "id": 44920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44840, + "id": 44914, "name": "finalizedHeaderRootNumeric", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44810, - "src": "7295:26:113", + "referencedDeclaration": 44884, + "src": "7295:26:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8525,18 +8533,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44845, + "id": 44919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 44841, + "id": 44915, "name": "finalizedHeaderRootNumeric", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44810, - "src": "7324:26:113", + "referencedDeclaration": 44884, + "src": "7324:26:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8549,21 +8557,21 @@ "typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256" }, - "id": 44844, + "id": 44918, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "32", - "id": 44842, + "id": 44916, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7353:1:113", + "src": "7353:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -8574,41 +8582,41 @@ "operator": "**", "rightExpression": { "hexValue": "38", - "id": 44843, + "id": 44917, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7358:1:113", + "src": "7358:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8" }, "value": "8" }, - "src": "7353:6:113", + "src": "7353:6:114", "typeDescriptions": { "typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256" } }, - "src": "7324:35:113", + "src": "7324:35:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7295:64:113", + "src": "7295:64:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44847, + "id": 44921, "nodeType": "ExpressionStatement", - "src": "7295:64:113" + "src": "7295:64:114" } ] }, @@ -8617,18 +8625,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44824, + "id": 44898, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 44822, + "id": 44896, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44819, - "src": "7202:1:113", + "referencedDeclaration": 44893, + "src": "7202:1:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8638,41 +8646,41 @@ "operator": "<", "rightExpression": { "hexValue": "3332", - "id": 44823, + "id": 44897, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7206:2:113", + "src": "7206:2:114", "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" }, "value": "32" }, - "src": "7202:6:113", + "src": "7202:6:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44849, + "id": 44923, "initializationExpression": { "assignments": [ - 44819 + 44893 ], "declarations": [ { "constant": false, - "id": 44819, + "id": 44893, "mutability": "mutable", "name": "i", - "nameLocation": "7195:1:113", + "nameLocation": "7195:1:114", "nodeType": "VariableDeclaration", - "scope": 44849, - "src": "7187:9:113", + "scope": 44923, + "src": "7187:9:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8680,10 +8688,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44818, + "id": 44892, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7187:7:113", + "src": "7187:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8692,17 +8700,17 @@ "visibility": "internal" } ], - "id": 44821, + "id": 44895, "initialValue": { "hexValue": "30", - "id": 44820, + "id": 44894, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7199:1:113", + "src": "7199:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -8710,11 +8718,11 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "7187:13:113" + "src": "7187:13:114" }, "loopExpression": { "expression": { - "id": 44826, + "id": 44900, "isConstant": false, "isLValue": false, "isPure": false, @@ -8722,14 +8730,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "7210:3:113", + "src": "7210:3:114", "subExpression": { - "id": 44825, + "id": 44899, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44819, - "src": "7210:1:113", + "referencedDeclaration": 44893, + "src": "7210:1:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8740,44 +8748,44 @@ "typeString": "uint256" } }, - "id": 44827, + "id": 44901, "nodeType": "ExpressionStatement", - "src": "7210:3:113" + "src": "7210:3:114" }, "nodeType": "ForStatement", - "src": "7182:188:113" + "src": "7182:188:114" }, { "expression": { - "id": 44864, + "id": 44938, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 44850, + "id": 44924, "name": "inputs", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44765, - "src": "7379:6:113", + "referencedDeclaration": 44839, + "src": "7379:6:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", "typeString": "uint256[65] memory" } }, - "id": 44852, + "id": 44926, "indexExpression": { "hexValue": "3332", - "id": 44851, + "id": 44925, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7386:2:113", + "src": "7386:2:114", "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" @@ -8789,7 +8797,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7379:10:113", + "src": "7379:10:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8805,27 +8813,27 @@ "arguments": [ { "expression": { - "id": 44859, + "id": 44933, "name": "update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44751, - "src": "7427:6:113", + "referencedDeclaration": 44825, + "src": "7427:6:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", "typeString": "struct LightClientRotate memory" } }, - "id": 44860, + "id": 44934, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "7434:21:113", + "memberLocation": "7434:21:114", "memberName": "syncCommitteePoseidon", "nodeType": "MemberAccess", - "referencedDeclaration": 44311, - "src": "7427:28:113", + "referencedDeclaration": 44385, + "src": "7427:28:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8839,26 +8847,26 @@ "typeString": "bytes32" } ], - "id": 44858, + "id": 44932, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7419:7:113", + "src": "7419:7:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 44857, + "id": 44931, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7419:7:113", + "src": "7419:7:114", "typeDescriptions": {} } }, - "id": 44861, + "id": 44935, "isConstant": false, "isLValue": false, "isPure": false, @@ -8867,7 +8875,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7419:37:113", + "src": "7419:37:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8883,33 +8891,33 @@ } ], "expression": { - "id": 44855, + "id": 44929, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43867, - "src": "7400:3:113", + "referencedDeclaration": 43941, + "src": "7400:3:114", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", "typeString": "type(library SSZ)" } }, - "id": 44856, + "id": 44930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7404:14:113", + "memberLocation": "7404:14:114", "memberName": "toLittleEndian", "nodeType": "MemberAccess", - "referencedDeclaration": 43478, - "src": "7400:18:113", + "referencedDeclaration": 43520, + "src": "7400:18:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) pure returns (bytes32)" } }, - "id": 44862, + "id": 44936, "isConstant": false, "isLValue": false, "isPure": false, @@ -8918,7 +8926,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7400:57:113", + "src": "7400:57:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -8933,26 +8941,26 @@ "typeString": "bytes32" } ], - "id": 44854, + "id": 44928, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7392:7:113", + "src": "7392:7:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 44853, + "id": 44927, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7392:7:113", + "src": "7392:7:114", "typeDescriptions": {} } }, - "id": 44863, + "id": 44937, "isConstant": false, "isLValue": false, "isPure": false, @@ -8961,22 +8969,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7392:66:113", + "src": "7392:66:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7379:79:113", + "src": "7379:79:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44865, + "id": 44939, "nodeType": "ExpressionStatement", - "src": "7379:79:113" + "src": "7379:79:114" }, { "expression": { @@ -8985,27 +8993,27 @@ "arguments": [ { "expression": { - "id": 44868, + "id": 44942, "name": "proof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44756, - "src": "7495:5:113", + "referencedDeclaration": 44830, + "src": "7495:5:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", "typeString": "struct Groth16Proof memory" } }, - "id": 44869, + "id": 44943, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "7501:1:113", + "memberLocation": "7501:1:114", "memberName": "a", "nodeType": "MemberAccess", - "referencedDeclaration": 44279, - "src": "7495:7:113", + "referencedDeclaration": 44353, + "src": "7495:7:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", "typeString": "uint256[2] memory" @@ -9013,27 +9021,27 @@ }, { "expression": { - "id": 44870, + "id": 44944, "name": "proof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44756, - "src": "7504:5:113", + "referencedDeclaration": 44830, + "src": "7504:5:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", "typeString": "struct Groth16Proof memory" } }, - "id": 44871, + "id": 44945, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "7510:1:113", + "memberLocation": "7510:1:114", "memberName": "b", "nodeType": "MemberAccess", - "referencedDeclaration": 44285, - "src": "7504:7:113", + "referencedDeclaration": 44359, + "src": "7504:7:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr", "typeString": "uint256[2] memory[2] memory" @@ -9041,39 +9049,39 @@ }, { "expression": { - "id": 44872, + "id": 44946, "name": "proof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44756, - "src": "7513:5:113", + "referencedDeclaration": 44830, + "src": "7513:5:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44290_memory_ptr", + "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", "typeString": "struct Groth16Proof memory" } }, - "id": 44873, + "id": 44947, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "7519:1:113", + "memberLocation": "7519:1:114", "memberName": "c", "nodeType": "MemberAccess", - "referencedDeclaration": 44289, - "src": "7513:7:113", + "referencedDeclaration": 44363, + "src": "7513:7:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", "typeString": "uint256[2] memory" } }, { - "id": 44874, + "id": 44948, "name": "inputs", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44765, - "src": "7522:6:113", + "referencedDeclaration": 44839, + "src": "7522:6:114", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", "typeString": "uint256[65] memory" @@ -9099,18 +9107,18 @@ "typeString": "uint256[65] memory" } ], - "id": 44867, + "id": 44941, "name": "verifyProofRotate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46813, - "src": "7477:17:113", + "referencedDeclaration": 46887, + "src": "7477:17:114", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr_$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_uint256_$65_memory_ptr_$returns$_t_bool_$", "typeString": "function (uint256[2] memory,uint256[2] memory[2] memory,uint256[2] memory,uint256[65] memory) view returns (bool)" } }, - "id": 44875, + "id": 44949, "isConstant": false, "isLValue": false, "isPure": false, @@ -9119,7 +9127,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7477:52:113", + "src": "7477:52:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -9134,7 +9142,7 @@ "typeString": "bool" } ], - "id": 44866, + "id": 44940, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -9142,13 +9150,13 @@ -18 ], "referencedDeclaration": -18, - "src": "7469:7:113", + "src": "7469:7:114", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 44876, + "id": 44950, "isConstant": false, "isLValue": false, "isPure": false, @@ -9157,94 +9165,94 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7469:61:113", + "src": "7469:61:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44877, + "id": 44951, "nodeType": "ExpressionStatement", - "src": "7469:61:113" + "src": "7469:61:114" } ] }, "documentation": { - "id": 44748, + "id": 44822, "nodeType": "StructuredDocumentation", - "src": "6579:71:113", + "src": "6579:71:114", "text": "@notice Serializes the public inputs and verifies the rotate proof." }, "implemented": true, "kind": "function", "modifiers": [], "name": "zkLightClientRotate", - "nameLocation": "6664:19:113", + "nameLocation": "6664:19:114", "parameters": { - "id": 44752, + "id": 44826, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44751, + "id": 44825, "mutability": "mutable", "name": "update", - "nameLocation": "6709:6:113", + "nameLocation": "6709:6:114", "nodeType": "VariableDeclaration", - "scope": 44879, - "src": "6684:31:113", + "scope": 44953, + "src": "6684:31:114", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_memory_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", "typeString": "struct LightClientRotate" }, "typeName": { - "id": 44750, + "id": 44824, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 44749, + "id": 44823, "name": "LightClientRotate", "nameLocations": [ - "6684:17:113" + "6684:17:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 44315, - "src": "6684:17:113" + "referencedDeclaration": 44389, + "src": "6684:17:114" }, - "referencedDeclaration": 44315, - "src": "6684:17:113", + "referencedDeclaration": 44389, + "src": "6684:17:114", "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44315_storage_ptr", + "typeIdentifier": "t_struct$_LightClientRotate_$44389_storage_ptr", "typeString": "struct LightClientRotate" } }, "visibility": "internal" } ], - "src": "6683:33:113" + "src": "6683:33:114" }, "returnParameters": { - "id": 44753, + "id": 44827, "nodeType": "ParameterList", "parameters": [], - "src": "6731:0:113" + "src": "6731:0:114" }, - "scope": 45032, + "scope": 45106, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 44892, + "id": 44966, "nodeType": "FunctionDefinition", - "src": "7603:125:113", + "src": "7603:125:114", "nodes": [], "body": { - "id": 44891, + "id": 44965, "nodeType": "Block", - "src": "7681:47:113", + "src": "7681:47:114", "nodes": [], "statements": [ { @@ -9253,18 +9261,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44889, + "id": 44963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 44887, + "id": 44961, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44882, - "src": "7698:4:113", + "referencedDeclaration": 44956, + "src": "7698:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9273,54 +9281,54 @@ "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { - "id": 44888, + "id": 44962, "name": "SLOTS_PER_PERIOD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44330, - "src": "7705:16:113", + "referencedDeclaration": 44404, + "src": "7705:16:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7698:23:113", + "src": "7698:23:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 44886, - "id": 44890, + "functionReturnParameters": 44960, + "id": 44964, "nodeType": "Return", - "src": "7691:30:113" + "src": "7691:30:114" } ] }, "documentation": { - "id": 44880, + "id": 44954, "nodeType": "StructuredDocumentation", - "src": "7543:55:113", + "src": "7543:55:114", "text": "@notice Gets the sync committee period from a slot." }, "implemented": true, "kind": "function", "modifiers": [], "name": "getSyncCommitteePeriod", - "nameLocation": "7612:22:113", + "nameLocation": "7612:22:114", "parameters": { - "id": 44883, + "id": 44957, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44882, + "id": 44956, "mutability": "mutable", "name": "slot", - "nameLocation": "7643:4:113", + "nameLocation": "7643:4:114", "nodeType": "VariableDeclaration", - "scope": 44892, - "src": "7635:12:113", + "scope": 44966, + "src": "7635:12:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9328,10 +9336,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44881, + "id": 44955, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7635:7:113", + "src": "7635:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9340,21 +9348,21 @@ "visibility": "internal" } ], - "src": "7634:14:113" + "src": "7634:14:114" }, "returnParameters": { - "id": 44886, + "id": 44960, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44885, + "id": 44959, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 44892, - "src": "7672:7:113", + "scope": 44966, + "src": "7672:7:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9362,10 +9370,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44884, + "id": 44958, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7672:7:113", + "src": "7672:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9374,22 +9382,22 @@ "visibility": "internal" } ], - "src": "7671:9:113" + "src": "7671:9:114" }, - "scope": 45032, + "scope": 45106, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 44907, + "id": 44981, "nodeType": "FunctionDefinition", - "src": "7818:133:113", + "src": "7818:133:114", "nodes": [], "body": { - "id": 44906, + "id": 44980, "nodeType": "Block", - "src": "7876:75:113", + "src": "7876:75:114", "nodes": [], "statements": [ { @@ -9398,7 +9406,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44904, + "id": 44978, "isConstant": false, "isLValue": false, "isPure": false, @@ -9410,33 +9418,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 44901, + "id": 44975, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 44898, + "id": 44972, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "7894:5:113", + "src": "7894:5:114", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 44899, + "id": 44973, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7900:9:113", + "memberLocation": "7900:9:114", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "7894:15:113", + "src": "7894:15:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9445,32 +9453,32 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { - "id": 44900, + "id": 44974, "name": "GENESIS_TIME", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44326, - "src": "7912:12:113", + "referencedDeclaration": 44400, + "src": "7912:12:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7894:30:113", + "src": "7894:30:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 44902, + "id": 44976, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "7893:32:113", + "src": "7893:32:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9479,60 +9487,60 @@ "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { - "id": 44903, + "id": 44977, "name": "SECONDS_PER_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44328, - "src": "7928:16:113", + "referencedDeclaration": 44402, + "src": "7928:16:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7893:51:113", + "src": "7893:51:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 44897, - "id": 44905, + "functionReturnParameters": 44971, + "id": 44979, "nodeType": "Return", - "src": "7886:58:113" + "src": "7886:58:114" } ] }, "documentation": { - "id": 44893, + "id": 44967, "nodeType": "StructuredDocumentation", - "src": "7734:79:113", + "src": "7734:79:114", "text": "@notice Gets the current slot for the chain the light client is reflecting." }, "implemented": true, "kind": "function", "modifiers": [], "name": "getCurrentSlot", - "nameLocation": "7827:14:113", + "nameLocation": "7827:14:114", "parameters": { - "id": 44894, + "id": 44968, "nodeType": "ParameterList", "parameters": [], - "src": "7841:2:113" + "src": "7841:2:114" }, "returnParameters": { - "id": 44897, + "id": 44971, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44896, + "id": 44970, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 44907, - "src": "7867:7:113", + "scope": 44981, + "src": "7867:7:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9540,10 +9548,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44895, + "id": 44969, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7867:7:113", + "src": "7867:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9552,22 +9560,22 @@ "visibility": "internal" } ], - "src": "7866:9:113" + "src": "7866:9:114" }, - "scope": 45032, + "scope": 45106, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 44990, + "id": 45064, "nodeType": "FunctionDefinition", - "src": "8310:721:113", + "src": "8310:721:114", "nodes": [], "body": { - "id": 44989, + "id": 45063, "nodeType": "Block", - "src": "8424:607:113", + "src": "8424:607:114", "nodes": [], "statements": [ { @@ -9576,32 +9584,32 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 44924, + "id": 44998, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 44917, + "id": 44991, "name": "headers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44362, - "src": "8438:7:113", + "referencedDeclaration": 44436, + "src": "8438:7:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 44919, + "id": 44993, "indexExpression": { - "id": 44918, + "id": 44992, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44910, - "src": "8446:4:113", + "referencedDeclaration": 44984, + "src": "8446:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9612,7 +9620,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8438:13:113", + "src": "8438:13:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -9624,14 +9632,14 @@ "arguments": [ { "hexValue": "30", - "id": 44922, + "id": 44996, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8463:1:113", + "src": "8463:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -9646,26 +9654,26 @@ "typeString": "int_const 0" } ], - "id": 44921, + "id": 44995, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8455:7:113", + "src": "8455:7:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { - "id": 44920, + "id": 44994, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "8455:7:113", + "src": "8455:7:114", "typeDescriptions": {} } }, - "id": 44923, + "id": 44997, "isConstant": false, "isLValue": false, "isPure": true, @@ -9674,26 +9682,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8455:10:113", + "src": "8455:10:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "8438:27:113", + "src": "8438:27:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44938, + "id": 45012, "nodeType": "IfStatement", - "src": "8434:170:113", + "src": "8434:170:114", "trueBody": { - "id": 44937, + "id": 45011, "nodeType": "Block", - "src": "8467:137:113", + "src": "8467:137:114", "statements": [ { "condition": { @@ -9701,32 +9709,32 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 44929, + "id": 45003, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 44925, + "id": 44999, "name": "headers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44362, - "src": "8485:7:113", + "referencedDeclaration": 44436, + "src": "8485:7:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 44927, + "id": 45001, "indexExpression": { - "id": 44926, + "id": 45000, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44910, - "src": "8493:4:113", + "referencedDeclaration": 44984, + "src": "8493:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9737,7 +9745,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8485:13:113", + "src": "8485:13:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -9746,45 +9754,45 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { - "id": 44928, + "id": 45002, "name": "finalizedHeaderRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44912, - "src": "8502:19:113", + "referencedDeclaration": 44986, + "src": "8502:19:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "8485:36:113", + "src": "8485:36:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44935, + "id": 45009, "nodeType": "IfStatement", - "src": "8481:93:113", + "src": "8481:93:114", "trueBody": { - "id": 44934, + "id": 45008, "nodeType": "Block", - "src": "8523:51:113", + "src": "8523:51:114", "statements": [ { "expression": { - "id": 44932, + "id": 45006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44930, + "id": 45004, "name": "consistent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44353, - "src": "8541:10:113", + "referencedDeclaration": 44427, + "src": "8541:10:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9794,38 +9802,38 @@ "operator": "=", "rightHandSide": { "hexValue": "66616c7365", - "id": 44931, + "id": 45005, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "8554:5:113", + "src": "8554:5:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, - "src": "8541:18:113", + "src": "8541:18:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44933, + "id": 45007, "nodeType": "ExpressionStatement", - "src": "8541:18:113" + "src": "8541:18:114" } ] } }, { - "functionReturnParameters": 44916, - "id": 44936, + "functionReturnParameters": 44990, + "id": 45010, "nodeType": "Return", - "src": "8587:7:113" + "src": "8587:7:114" } ] } @@ -9836,32 +9844,32 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 44946, + "id": 45020, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 44939, + "id": 45013, "name": "executionStateRoots", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44372, - "src": "8617:19:113", + "referencedDeclaration": 44446, + "src": "8617:19:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 44941, + "id": 45015, "indexExpression": { - "id": 44940, + "id": 45014, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44910, - "src": "8637:4:113", + "referencedDeclaration": 44984, + "src": "8637:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9872,7 +9880,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8617:25:113", + "src": "8617:25:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -9884,14 +9892,14 @@ "arguments": [ { "hexValue": "30", - "id": 44944, + "id": 45018, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8654:1:113", + "src": "8654:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -9906,26 +9914,26 @@ "typeString": "int_const 0" } ], - "id": 44943, + "id": 45017, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8646:7:113", + "src": "8646:7:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { - "id": 44942, + "id": 45016, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "8646:7:113", + "src": "8646:7:114", "typeDescriptions": {} } }, - "id": 44945, + "id": 45019, "isConstant": false, "isLValue": false, "isPure": true, @@ -9934,26 +9942,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8646:10:113", + "src": "8646:10:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "8617:39:113", + "src": "8617:39:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44960, + "id": 45034, "nodeType": "IfStatement", - "src": "8613:193:113", + "src": "8613:193:114", "trueBody": { - "id": 44959, + "id": 45033, "nodeType": "Block", - "src": "8658:148:113", + "src": "8658:148:114", "statements": [ { "condition": { @@ -9961,32 +9969,32 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 44951, + "id": 45025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 44947, + "id": 45021, "name": "executionStateRoots", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44372, - "src": "8676:19:113", + "referencedDeclaration": 44446, + "src": "8676:19:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 44949, + "id": 45023, "indexExpression": { - "id": 44948, + "id": 45022, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44910, - "src": "8696:4:113", + "referencedDeclaration": 44984, + "src": "8696:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9997,7 +10005,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8676:25:113", + "src": "8676:25:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -10006,45 +10014,45 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { - "id": 44950, + "id": 45024, "name": "executionStateRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44914, - "src": "8705:18:113", + "referencedDeclaration": 44988, + "src": "8705:18:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "8676:47:113", + "src": "8676:47:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44957, + "id": 45031, "nodeType": "IfStatement", - "src": "8672:104:113", + "src": "8672:104:114", "trueBody": { - "id": 44956, + "id": 45030, "nodeType": "Block", - "src": "8725:51:113", + "src": "8725:51:114", "statements": [ { "expression": { - "id": 44954, + "id": 45028, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44952, + "id": 45026, "name": "consistent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44353, - "src": "8743:10:113", + "referencedDeclaration": 44427, + "src": "8743:10:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10054,56 +10062,56 @@ "operator": "=", "rightHandSide": { "hexValue": "66616c7365", - "id": 44953, + "id": 45027, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "8756:5:113", + "src": "8756:5:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, - "src": "8743:18:113", + "src": "8743:18:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 44955, + "id": 45029, "nodeType": "ExpressionStatement", - "src": "8743:18:113" + "src": "8743:18:114" } ] } }, { - "functionReturnParameters": 44916, - "id": 44958, + "functionReturnParameters": 44990, + "id": 45032, "nodeType": "Return", - "src": "8789:7:113" + "src": "8789:7:114" } ] } }, { "expression": { - "id": 44963, + "id": 45037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 44961, + "id": 45035, "name": "head", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44357, - "src": "8816:4:113", + "referencedDeclaration": 44431, + "src": "8816:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10112,55 +10120,55 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 44962, + "id": 45036, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44910, - "src": "8823:4:113", + "referencedDeclaration": 44984, + "src": "8823:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8816:11:113", + "src": "8816:11:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44964, + "id": 45038, "nodeType": "ExpressionStatement", - "src": "8816:11:113" + "src": "8816:11:114" }, { "expression": { - "id": 44969, + "id": 45043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 44965, + "id": 45039, "name": "headers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44362, - "src": "8837:7:113", + "referencedDeclaration": 44436, + "src": "8837:7:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 44967, + "id": 45041, "indexExpression": { - "id": 44966, + "id": 45040, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44910, - "src": "8845:4:113", + "referencedDeclaration": 44984, + "src": "8845:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10171,7 +10179,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "8837:13:113", + "src": "8837:13:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -10180,55 +10188,55 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 44968, + "id": 45042, "name": "finalizedHeaderRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44912, - "src": "8853:19:113", + "referencedDeclaration": 44986, + "src": "8853:19:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "8837:35:113", + "src": "8837:35:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 44970, + "id": 45044, "nodeType": "ExpressionStatement", - "src": "8837:35:113" + "src": "8837:35:114" }, { "expression": { - "id": 44975, + "id": 45049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 44971, + "id": 45045, "name": "executionStateRoots", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44372, - "src": "8882:19:113", + "referencedDeclaration": 44446, + "src": "8882:19:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 44973, + "id": 45047, "indexExpression": { - "id": 44972, + "id": 45046, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44910, - "src": "8902:4:113", + "referencedDeclaration": 44984, + "src": "8902:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10239,7 +10247,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "8882:25:113", + "src": "8882:25:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -10248,55 +10256,55 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 44974, + "id": 45048, "name": "executionStateRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44914, - "src": "8910:18:113", + "referencedDeclaration": 44988, + "src": "8910:18:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "8882:46:113", + "src": "8882:46:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 44976, + "id": 45050, "nodeType": "ExpressionStatement", - "src": "8882:46:113" + "src": "8882:46:114" }, { "expression": { - "id": 44982, + "id": 45056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 44977, + "id": 45051, "name": "timestamps", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44367, - "src": "8938:10:113", + "referencedDeclaration": 44441, + "src": "8938:10:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", "typeString": "mapping(uint256 => uint256)" } }, - "id": 44979, + "id": 45053, "indexExpression": { - "id": 44978, + "id": 45052, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44910, - "src": "8949:4:113", + "referencedDeclaration": 44984, + "src": "8949:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10307,7 +10315,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "8938:16:113", + "src": "8938:16:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10317,63 +10325,63 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 44980, + "id": 45054, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "8957:5:113", + "src": "8957:5:114", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 44981, + "id": 45055, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8963:9:113", + "memberLocation": "8963:9:114", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "8957:15:113", + "src": "8957:15:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8938:34:113", + "src": "8938:34:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 44983, + "id": 45057, "nodeType": "ExpressionStatement", - "src": "8938:34:113" + "src": "8938:34:114" }, { "eventCall": { "arguments": [ { - "id": 44985, + "id": 45059, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44910, - "src": "8998:4:113", + "referencedDeclaration": 44984, + "src": "8998:4:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 44986, + "id": 45060, "name": "finalizedHeaderRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44912, - "src": "9004:19:113", + "referencedDeclaration": 44986, + "src": "9004:19:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -10391,18 +10399,18 @@ "typeString": "bytes32" } ], - "id": 44984, + "id": 45058, "name": "HeadUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44383, - "src": "8987:10:113", + "referencedDeclaration": 44457, + "src": "8987:10:114", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (uint256,bytes32)" } }, - "id": 44987, + "id": 45061, "isConstant": false, "isLValue": false, "isPure": false, @@ -10411,43 +10419,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8987:37:113", + "src": "8987:37:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 44988, + "id": 45062, "nodeType": "EmitStatement", - "src": "8982:42:113" + "src": "8982:42:114" } ] }, "documentation": { - "id": 44908, + "id": 44982, "nodeType": "StructuredDocumentation", - "src": "7957:348:113", + "src": "7957:348:114", "text": "@notice Sets the current slot for the chain the light client is reflecting.\n @dev Checks if roots exists for the slot already. If there is, check for a conflict between\n the given roots and the existing roots. If there is an existing header but no\n conflict, do nothing. This avoids timestamp renewal DoS attacks." }, "implemented": true, "kind": "function", "modifiers": [], "name": "setSlotRoots", - "nameLocation": "8319:12:113", + "nameLocation": "8319:12:114", "parameters": { - "id": 44915, + "id": 44989, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44910, + "id": 44984, "mutability": "mutable", "name": "slot", - "nameLocation": "8340:4:113", + "nameLocation": "8340:4:114", "nodeType": "VariableDeclaration", - "scope": 44990, - "src": "8332:12:113", + "scope": 45064, + "src": "8332:12:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10455,10 +10463,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44909, + "id": 44983, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "8332:7:113", + "src": "8332:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10468,13 +10476,13 @@ }, { "constant": false, - "id": 44912, + "id": 44986, "mutability": "mutable", "name": "finalizedHeaderRoot", - "nameLocation": "8354:19:113", + "nameLocation": "8354:19:114", "nodeType": "VariableDeclaration", - "scope": 44990, - "src": "8346:27:113", + "scope": 45064, + "src": "8346:27:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10482,10 +10490,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44911, + "id": 44985, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "8346:7:113", + "src": "8346:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -10495,13 +10503,13 @@ }, { "constant": false, - "id": 44914, + "id": 44988, "mutability": "mutable", "name": "executionStateRoot", - "nameLocation": "8383:18:113", + "nameLocation": "8383:18:114", "nodeType": "VariableDeclaration", - "scope": 44990, - "src": "8375:26:113", + "scope": 45064, + "src": "8375:26:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10509,10 +10517,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44913, + "id": 44987, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "8375:7:113", + "src": "8375:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -10521,28 +10529,28 @@ "visibility": "internal" } ], - "src": "8331:71:113" + "src": "8331:71:114" }, "returnParameters": { - "id": 44916, + "id": 44990, "nodeType": "ParameterList", "parameters": [], - "src": "8424:0:113" + "src": "8424:0:114" }, - "scope": 45032, + "scope": 45106, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 45031, + "id": 45105, "nodeType": "FunctionDefinition", - "src": "9106:393:113", + "src": "9106:393:114", "nodes": [], "body": { - "id": 45030, + "id": 45104, "nodeType": "Block", - "src": "9183:316:113", + "src": "9183:316:114", "nodes": [], "statements": [ { @@ -10551,7 +10559,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 45011, + "id": 45085, "isConstant": false, "isLValue": false, "isPure": false, @@ -10561,32 +10569,32 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 45005, + "id": 45079, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 44998, + "id": 45072, "name": "syncCommitteePoseidons", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44377, - "src": "9210:22:113", + "referencedDeclaration": 44451, + "src": "9210:22:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 45000, + "id": 45074, "indexExpression": { - "id": 44999, + "id": 45073, "name": "period", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44993, - "src": "9233:6:113", + "referencedDeclaration": 45067, + "src": "9233:6:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10597,7 +10605,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "9210:30:113", + "src": "9210:30:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -10609,14 +10617,14 @@ "arguments": [ { "hexValue": "30", - "id": 45003, + "id": 45077, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9252:1:113", + "src": "9252:1:114", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -10631,26 +10639,26 @@ "typeString": "int_const 0" } ], - "id": 45002, + "id": 45076, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9244:7:113", + "src": "9244:7:114", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { - "id": 45001, + "id": 45075, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9244:7:113", + "src": "9244:7:114", "typeDescriptions": {} } }, - "id": 45004, + "id": 45078, "isConstant": false, "isLValue": false, "isPure": true, @@ -10659,14 +10667,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9244:10:113", + "src": "9244:10:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "9210:44:113", + "src": "9210:44:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10679,32 +10687,32 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 45010, + "id": 45084, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 45006, + "id": 45080, "name": "syncCommitteePoseidons", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44377, - "src": "9274:22:113", + "referencedDeclaration": 44451, + "src": "9274:22:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 45008, + "id": 45082, "indexExpression": { - "id": 45007, + "id": 45081, "name": "period", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44993, - "src": "9297:6:113", + "referencedDeclaration": 45067, + "src": "9297:6:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10715,7 +10723,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "9274:30:113", + "src": "9274:30:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -10724,51 +10732,51 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { - "id": 45009, + "id": 45083, "name": "poseidon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44995, - "src": "9308:8:113", + "referencedDeclaration": 45069, + "src": "9308:8:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "9274:42:113", + "src": "9274:42:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "9210:106:113", + "src": "9210:106:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 45018, + "id": 45092, "nodeType": "IfStatement", - "src": "9193:197:113", + "src": "9193:197:114", "trueBody": { - "id": 45017, + "id": 45091, "nodeType": "Block", - "src": "9327:63:113", + "src": "9327:63:114", "statements": [ { "expression": { - "id": 45014, + "id": 45088, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 45012, + "id": 45086, "name": "consistent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44353, - "src": "9341:10:113", + "referencedDeclaration": 44427, + "src": "9341:10:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10778,67 +10786,67 @@ "operator": "=", "rightHandSide": { "hexValue": "66616c7365", - "id": 45013, + "id": 45087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "9354:5:113", + "src": "9354:5:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, - "src": "9341:18:113", + "src": "9341:18:114", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 45015, + "id": 45089, "nodeType": "ExpressionStatement", - "src": "9341:18:113" + "src": "9341:18:114" }, { - "functionReturnParameters": 44997, - "id": 45016, + "functionReturnParameters": 45071, + "id": 45090, "nodeType": "Return", - "src": "9373:7:113" + "src": "9373:7:114" } ] } }, { "expression": { - "id": 45023, + "id": 45097, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 45019, + "id": 45093, "name": "syncCommitteePoseidons", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44377, - "src": "9399:22:113", + "referencedDeclaration": 44451, + "src": "9399:22:114", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 45021, + "id": 45095, "indexExpression": { - "id": 45020, + "id": 45094, "name": "period", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44993, - "src": "9422:6:113", + "referencedDeclaration": 45067, + "src": "9422:6:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10849,7 +10857,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "9399:30:113", + "src": "9399:30:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -10858,49 +10866,49 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 45022, + "id": 45096, "name": "poseidon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44995, - "src": "9432:8:113", + "referencedDeclaration": 45069, + "src": "9432:8:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "9399:41:113", + "src": "9399:41:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 45024, + "id": 45098, "nodeType": "ExpressionStatement", - "src": "9399:41:113" + "src": "9399:41:114" }, { "eventCall": { "arguments": [ { - "id": 45026, + "id": 45100, "name": "period", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44993, - "src": "9475:6:113", + "referencedDeclaration": 45067, + "src": "9475:6:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 45027, + "id": 45101, "name": "poseidon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44995, - "src": "9483:8:113", + "referencedDeclaration": 45069, + "src": "9483:8:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -10918,18 +10926,18 @@ "typeString": "bytes32" } ], - "id": 45025, + "id": 45099, "name": "SyncCommitteeUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44389, - "src": "9455:19:113", + "referencedDeclaration": 44463, + "src": "9455:19:114", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (uint256,bytes32)" } }, - "id": 45028, + "id": 45102, "isConstant": false, "isLValue": false, "isPure": false, @@ -10938,43 +10946,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9455:37:113", + "src": "9455:37:114", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 45029, + "id": 45103, "nodeType": "EmitStatement", - "src": "9450:42:113" + "src": "9450:42:114" } ] }, "documentation": { - "id": 44991, + "id": 45065, "nodeType": "StructuredDocumentation", - "src": "9037:64:113", + "src": "9037:64:114", "text": "@notice Sets the sync committee poseidon for a given period." }, "implemented": true, "kind": "function", "modifiers": [], "name": "setSyncCommitteePoseidon", - "nameLocation": "9115:24:113", + "nameLocation": "9115:24:114", "parameters": { - "id": 44996, + "id": 45070, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44993, + "id": 45067, "mutability": "mutable", "name": "period", - "nameLocation": "9148:6:113", + "nameLocation": "9148:6:114", "nodeType": "VariableDeclaration", - "scope": 45031, - "src": "9140:14:113", + "scope": 45105, + "src": "9140:14:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10982,10 +10990,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44992, + "id": 45066, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9140:7:113", + "src": "9140:7:114", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10995,13 +11003,13 @@ }, { "constant": false, - "id": 44995, + "id": 45069, "mutability": "mutable", "name": "poseidon", - "nameLocation": "9164:8:113", + "nameLocation": "9164:8:114", "nodeType": "VariableDeclaration", - "scope": 45031, - "src": "9156:16:113", + "scope": 45105, + "src": "9156:16:114", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11009,10 +11017,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 44994, + "id": 45068, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9156:7:113", + "src": "9156:7:114", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -11021,15 +11029,15 @@ "visibility": "internal" } ], - "src": "9139:34:113" + "src": "9139:34:114" }, "returnParameters": { - "id": 44997, + "id": 45071, "nodeType": "ParameterList", "parameters": [], - "src": "9183:0:113" + "src": "9183:0:114" }, - "scope": 45032, + "scope": 45106, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" @@ -11039,72 +11047,72 @@ "baseContracts": [ { "baseName": { - "id": 44317, + "id": 44391, "name": "ILightClient", "nameLocations": [ - "977:12:113" + "977:12:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 47862, - "src": "977:12:113" + "referencedDeclaration": 47936, + "src": "977:12:114" }, - "id": 44318, + "id": 44392, "nodeType": "InheritanceSpecifier", - "src": "977:12:113" + "src": "977:12:114" }, { "baseName": { - "id": 44319, + "id": 44393, "name": "StepVerifier", "nameLocations": [ - "991:12:113" + "991:12:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 47828, - "src": "991:12:113" + "referencedDeclaration": 47902, + "src": "991:12:114" }, - "id": 44320, + "id": 44394, "nodeType": "InheritanceSpecifier", - "src": "991:12:113" + "src": "991:12:114" }, { "baseName": { - "id": 44321, + "id": 44395, "name": "RotateVerifier", "nameLocations": [ - "1005:14:113" + "1005:14:114" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46814, - "src": "1005:14:113" + "referencedDeclaration": 46888, + "src": "1005:14:114" }, - "id": 44322, + "id": 44396, "nodeType": "InheritanceSpecifier", - "src": "1005:14:113" + "src": "1005:14:114" } ], "canonicalName": "LightClient", "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 44316, + "id": 44390, "nodeType": "StructuredDocumentation", - "src": "710:243:113", + "src": "710:243:114", "text": "@title Light Client\n @author Succinct Labs\n @notice Uses Ethereum 2's Sync Committee Protocol to keep up-to-date with block headers from a\n Beacon Chain. This is done in a gas-efficient manner using zero-knowledge proofs." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 45032, - 46814, - 47828, - 47862 + 45106, + 46888, + 47902, + 47936 ], "name": "LightClient", - "nameLocation": "962:11:113", - "scope": 45033, + "nameLocation": "962:11:114", + "scope": 45107, "usedErrors": [] } ] }, - "id": 113 + "id": 114 } \ No newline at end of file diff --git a/out/LightClientMock.sol/LightClientMock.json b/out/LightClientMock.sol/LightClientMock.json index a16988c..689ac66 100644 --- a/out/LightClientMock.sol/LightClientMock.json +++ b/out/LightClientMock.sol/LightClientMock.json @@ -141,12 +141,12 @@ ], "bytecode": { "object": "0x60806040526000805460ff1916600117905534801561001d57600080fd5b506102568061002d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637623ee291161005b5780637623ee29146100e75780638bc33af3146101075780638f7dcfa314610127578063955cbb2b1461013057600080fd5b806303247e7c146100825780632bcccca51461009757806356f90d79146100b9575b600080fd5b6100956100903660046101e5565b610143565b005b6000546100a49060ff1681565b60405190151581526020015b60405180910390f35b6100d96100c7366004610207565b60026020526000908152604090205481565b6040519081526020016100b0565b6100d96100f5366004610207565b60036020526000908152604090205481565b6100d9610115366004610207565b60046020526000908152604090205481565b6100d960015481565b61009561013e3660046101e5565b610194565b60008281526003602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b60008281526002602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b600080604083850312156101f857600080fd5b50508035926020909101359150565b60006020828403121561021957600080fd5b503591905056fea264697066735822122046799f8b4de9028af946ca44115f076d489391e741964eb3a3706d9bf6b39f0064736f6c63430008100033", - "sourceMap": "266:800:128:-:0;;;317:29;;;-1:-1:-1;;317:29:128;342:4;317:29;;;266:800;;;;;;;;;;;;;;;;", + "sourceMap": "266:800:129:-:0;;;317:29;;;-1:-1:-1;;317:29:129;342:4;317:29;;;266:800;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80637623ee291161005b5780637623ee29146100e75780638bc33af3146101075780638f7dcfa314610127578063955cbb2b1461013057600080fd5b806303247e7c146100825780632bcccca51461009757806356f90d79146100b9575b600080fd5b6100956100903660046101e5565b610143565b005b6000546100a49060ff1681565b60405190151581526020015b60405180910390f35b6100d96100c7366004610207565b60026020526000908152604090205481565b6040519081526020016100b0565b6100d96100f5366004610207565b60036020526000908152604090205481565b6100d9610115366004610207565b60046020526000908152604090205481565b6100d960015481565b61009561013e3660046101e5565b610194565b60008281526003602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b60008281526002602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b600080604083850312156101f857600080fd5b50508035926020909101359150565b60006020828403121561021957600080fd5b503591905056fea264697066735822122046799f8b4de9028af946ca44115f076d489391e741964eb3a3706d9bf6b39f0064736f6c63430008100033", - "sourceMap": "266:800:128:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:241;;;;;;:::i;:::-;;:::i;:::-;;317:29;;;;;;;;;;;;432:14:145;;425:22;407:41;;395:2;380:18;317:29:128;;;;;;;;377:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;790:25:145;;;778:2;763:18;377:42:128;644:177:145;425:54:128;;;;;;:::i;:::-;;;;;;;;;;;;;;485:45;;;;;;:::i;:::-;;;;;;;;;;;;;;352:19;;;;;;604:213;;;;;;:::i;:::-;;:::i;823:241::-;905:25;;;;:19;:25;;;;;;;;:41;;;956:10;:16;;;;;;975:15;956:34;;1000:4;:11;;;1026:31;933:13;;925:4;;1026:31;;905:25;1026:31;823:241;;:::o;604:213::-;676:13;;;;:7;:13;;;;;;;;:26;;;712:10;:16;;;;;;731:15;712:34;;756:4;:11;;;782:28;692:10;;684:4;;782:28;;676:13;782:28;604:213;;:::o;14:248:145:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:145;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:145:o;459:180::-;518:6;571:2;559:9;550:7;546:23;542:32;539:52;;;587:1;584;577:12;539:52;-1:-1:-1;610:23:145;;459:180;-1:-1:-1;459:180:145:o", + "sourceMap": "266:800:129:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:241;;;;;;:::i;:::-;;:::i;:::-;;317:29;;;;;;;;;;;;432:14:146;;425:22;407:41;;395:2;380:18;317:29:129;;;;;;;;377:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;790:25:146;;;778:2;763:18;377:42:129;644:177:146;425:54:129;;;;;;:::i;:::-;;;;;;;;;;;;;;485:45;;;;;;:::i;:::-;;;;;;;;;;;;;;352:19;;;;;;604:213;;;;;;:::i;:::-;;:::i;823:241::-;905:25;;;;:19;:25;;;;;;;;:41;;;956:10;:16;;;;;;975:15;956:34;;1000:4;:11;;;1026:31;933:13;;925:4;;1026:31;;905:25;1026:31;823:241;;:::o;604:213::-;676:13;;;;:7;:13;;;;;;;;:26;;;712:10;:16;;;;;;731:15;712:34;;756:4;:11;;;782:28;692:10;;684:4;;782:28;;676:13;782:28;604:213;;:::o;14:248:146:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:146;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:146:o;459:180::-;518:6;571:2;559:9;550:7;546:23;542:32;539:52;;;587:1;584;577:12;539:52;-1:-1:-1;610:23:146;;459:180;-1:-1:-1;459:180:146:o", "linkReferences": {} }, "methodIdentifiers": { @@ -362,22 +362,22 @@ }, "ast": { "absolutePath": "test/amb/LightClientMock.sol", - "id": 49370, + "id": 49446, "exportedSymbols": { "ILightClientMock": [ - 47862 + 47936 ], "LightClientMock": [ - 49369 + 49445 ] }, "nodeType": "SourceUnit", - "src": "0:1067:128", + "src": "0:1067:129", "nodes": [ { - "id": 49281, + "id": 49357, "nodeType": "PragmaDirective", - "src": "0:23:128", + "src": "0:23:129", "nodes": [], "literals": [ "solidity", @@ -386,24 +386,24 @@ ] }, { - "id": 49283, + "id": 49359, "nodeType": "ImportDirective", - "src": "171:93:128", + "src": "171:93:129", "nodes": [], "absolutePath": "src/lightclient/interfaces/ILightClient.sol", "file": "src/lightclient/interfaces/ILightClient.sol", "nameLocation": "-1:-1:-1", - "scope": 49370, - "sourceUnit": 47863, + "scope": 49446, + "sourceUnit": 47937, "symbolAliases": [ { "foreign": { - "id": 49282, + "id": 49358, "name": "ILightClient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47862, - "src": "179:12:128", + "referencedDeclaration": 47936, + "src": "179:12:129", "typeDescriptions": {} }, "local": "ILightClientMock", @@ -413,24 +413,24 @@ "unitAlias": "" }, { - "id": 49369, + "id": 49445, "nodeType": "ContractDefinition", - "src": "266:800:128", + "src": "266:800:129", "nodes": [ { - "id": 49288, + "id": 49364, "nodeType": "VariableDeclaration", - "src": "317:29:128", + "src": "317:29:129", "nodes": [], "baseFunctions": [ - 47835 + 47909 ], "constant": false, "functionSelector": "2bcccca5", "mutability": "mutable", "name": "consistent", - "nameLocation": "329:10:128", - "scope": 49369, + "nameLocation": "329:10:129", + "scope": 49445, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -438,10 +438,10 @@ "typeString": "bool" }, "typeName": { - "id": 49286, + "id": 49362, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "317:4:128", + "src": "317:4:129", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -449,14 +449,14 @@ }, "value": { "hexValue": "74727565", - "id": 49287, + "id": 49363, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "342:4:128", + "src": "342:4:129", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -466,19 +466,19 @@ "visibility": "public" }, { - "id": 49290, + "id": 49366, "nodeType": "VariableDeclaration", - "src": "352:19:128", + "src": "352:19:129", "nodes": [], "baseFunctions": [ - 47840 + 47914 ], "constant": false, "functionSelector": "8f7dcfa3", "mutability": "mutable", "name": "head", - "nameLocation": "367:4:128", - "scope": 49369, + "nameLocation": "367:4:129", + "scope": 49445, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -486,10 +486,10 @@ "typeString": "uint256" }, "typeName": { - "id": 49289, + "id": 49365, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "352:7:128", + "src": "352:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -498,19 +498,19 @@ "visibility": "public" }, { - "id": 49294, + "id": 49370, "nodeType": "VariableDeclaration", - "src": "377:42:128", + "src": "377:42:129", "nodes": [], "baseFunctions": [ - 47847 + 47921 ], "constant": false, "functionSelector": "56f90d79", "mutability": "mutable", "name": "headers", - "nameLocation": "412:7:128", - "scope": 49369, + "nameLocation": "412:7:129", + "scope": 49445, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -518,28 +518,28 @@ "typeString": "mapping(uint256 => bytes32)" }, "typeName": { - "id": 49293, + "id": 49369, "keyType": { - "id": 49291, + "id": 49367, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "385:7:128", + "src": "385:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", - "src": "377:27:128", + "src": "377:27:129", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" }, "valueType": { - "id": 49292, + "id": 49368, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "396:7:128", + "src": "396:7:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -549,19 +549,19 @@ "visibility": "public" }, { - "id": 49298, + "id": 49374, "nodeType": "VariableDeclaration", - "src": "425:54:128", + "src": "425:54:129", "nodes": [], "baseFunctions": [ - 47854 + 47928 ], "constant": false, "functionSelector": "7623ee29", "mutability": "mutable", "name": "executionStateRoots", - "nameLocation": "460:19:128", - "scope": 49369, + "nameLocation": "460:19:129", + "scope": 49445, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -569,28 +569,28 @@ "typeString": "mapping(uint256 => bytes32)" }, "typeName": { - "id": 49297, + "id": 49373, "keyType": { - "id": 49295, + "id": 49371, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "433:7:128", + "src": "433:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", - "src": "425:27:128", + "src": "425:27:129", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" }, "valueType": { - "id": 49296, + "id": 49372, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "444:7:128", + "src": "444:7:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -600,19 +600,19 @@ "visibility": "public" }, { - "id": 49302, + "id": 49378, "nodeType": "VariableDeclaration", - "src": "485:45:128", + "src": "485:45:129", "nodes": [], "baseFunctions": [ - 47861 + 47935 ], "constant": false, "functionSelector": "8bc33af3", "mutability": "mutable", "name": "timestamps", - "nameLocation": "520:10:128", - "scope": 49369, + "nameLocation": "520:10:129", + "scope": 49445, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -620,28 +620,28 @@ "typeString": "mapping(uint256 => uint256)" }, "typeName": { - "id": 49301, + "id": 49377, "keyType": { - "id": 49299, + "id": 49375, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "493:7:128", + "src": "493:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", - "src": "485:27:128", + "src": "485:27:129", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", "typeString": "mapping(uint256 => uint256)" }, "valueType": { - "id": 49300, + "id": 49376, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "504:7:128", + "src": "504:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -651,28 +651,28 @@ "visibility": "public" }, { - "id": 49308, + "id": 49384, "nodeType": "EventDefinition", - "src": "537:61:128", + "src": "537:61:129", "nodes": [], "anonymous": false, "eventSelector": "fefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a02", "name": "HeadUpdate", - "nameLocation": "543:10:128", + "nameLocation": "543:10:129", "parameters": { - "id": 49307, + "id": 49383, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49304, + "id": 49380, "indexed": true, "mutability": "mutable", "name": "slot", - "nameLocation": "570:4:128", + "nameLocation": "570:4:129", "nodeType": "VariableDeclaration", - "scope": 49308, - "src": "554:20:128", + "scope": 49384, + "src": "554:20:129", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -680,10 +680,10 @@ "typeString": "uint256" }, "typeName": { - "id": 49303, + "id": 49379, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "554:7:128", + "src": "554:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -693,14 +693,14 @@ }, { "constant": false, - "id": 49306, + "id": 49382, "indexed": true, "mutability": "mutable", "name": "root", - "nameLocation": "592:4:128", + "nameLocation": "592:4:129", "nodeType": "VariableDeclaration", - "scope": 49308, - "src": "576:20:128", + "scope": 49384, + "src": "576:20:129", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -708,10 +708,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 49305, + "id": 49381, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "576:7:128", + "src": "576:7:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -720,48 +720,48 @@ "visibility": "internal" } ], - "src": "553:44:128" + "src": "553:44:129" } }, { - "id": 49338, + "id": 49414, "nodeType": "FunctionDefinition", - "src": "604:213:128", + "src": "604:213:129", "nodes": [], "body": { - "id": 49337, + "id": 49413, "nodeType": "Block", - "src": "666:151:128", + "src": "666:151:129", "nodes": [], "statements": [ { "expression": { - "id": 49319, + "id": 49395, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 49315, + "id": 49391, "name": "headers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49294, - "src": "676:7:128", + "referencedDeclaration": 49370, + "src": "676:7:129", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 49317, + "id": 49393, "indexExpression": { - "id": 49316, + "id": 49392, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49310, - "src": "684:4:128", + "referencedDeclaration": 49386, + "src": "684:4:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -772,7 +772,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "676:13:128", + "src": "676:13:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -781,55 +781,55 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 49318, + "id": 49394, "name": "headerRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49312, - "src": "692:10:128", + "referencedDeclaration": 49388, + "src": "692:10:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "676:26:128", + "src": "676:26:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 49320, + "id": 49396, "nodeType": "ExpressionStatement", - "src": "676:26:128" + "src": "676:26:129" }, { "expression": { - "id": 49326, + "id": 49402, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 49321, + "id": 49397, "name": "timestamps", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49302, - "src": "712:10:128", + "referencedDeclaration": 49378, + "src": "712:10:129", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", "typeString": "mapping(uint256 => uint256)" } }, - "id": 49323, + "id": 49399, "indexExpression": { - "id": 49322, + "id": 49398, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49310, - "src": "723:4:128", + "referencedDeclaration": 49386, + "src": "723:4:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -840,7 +840,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "712:16:128", + "src": "712:16:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -850,55 +850,55 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 49324, + "id": 49400, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "731:5:128", + "src": "731:5:129", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 49325, + "id": 49401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "737:9:128", + "memberLocation": "737:9:129", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "731:15:128", + "src": "731:15:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "712:34:128", + "src": "712:34:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 49327, + "id": 49403, "nodeType": "ExpressionStatement", - "src": "712:34:128" + "src": "712:34:129" }, { "expression": { - "id": 49330, + "id": 49406, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49328, + "id": 49404, "name": "head", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49290, - "src": "756:4:128", + "referencedDeclaration": 49366, + "src": "756:4:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -907,49 +907,49 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 49329, + "id": 49405, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49310, - "src": "763:4:128", + "referencedDeclaration": 49386, + "src": "763:4:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "756:11:128", + "src": "756:11:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 49331, + "id": 49407, "nodeType": "ExpressionStatement", - "src": "756:11:128" + "src": "756:11:129" }, { "eventCall": { "arguments": [ { - "id": 49333, + "id": 49409, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49310, - "src": "793:4:128", + "referencedDeclaration": 49386, + "src": "793:4:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 49334, + "id": 49410, "name": "headerRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49312, - "src": "799:10:128", + "referencedDeclaration": 49388, + "src": "799:10:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -967,18 +967,18 @@ "typeString": "bytes32" } ], - "id": 49332, + "id": 49408, "name": "HeadUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49308, - "src": "782:10:128", + "referencedDeclaration": 49384, + "src": "782:10:129", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (uint256,bytes32)" } }, - "id": 49335, + "id": 49411, "isConstant": false, "isLValue": false, "isPure": false, @@ -987,16 +987,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "782:28:128", + "src": "782:28:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 49336, + "id": 49412, "nodeType": "EmitStatement", - "src": "777:33:128" + "src": "777:33:129" } ] }, @@ -1005,20 +1005,20 @@ "kind": "function", "modifiers": [], "name": "setHeader", - "nameLocation": "613:9:128", + "nameLocation": "613:9:129", "parameters": { - "id": 49313, + "id": 49389, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49310, + "id": 49386, "mutability": "mutable", "name": "slot", - "nameLocation": "631:4:128", + "nameLocation": "631:4:129", "nodeType": "VariableDeclaration", - "scope": 49338, - "src": "623:12:128", + "scope": 49414, + "src": "623:12:129", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1026,10 +1026,10 @@ "typeString": "uint256" }, "typeName": { - "id": 49309, + "id": 49385, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "623:7:128", + "src": "623:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1039,13 +1039,13 @@ }, { "constant": false, - "id": 49312, + "id": 49388, "mutability": "mutable", "name": "headerRoot", - "nameLocation": "645:10:128", + "nameLocation": "645:10:129", "nodeType": "VariableDeclaration", - "scope": 49338, - "src": "637:18:128", + "scope": 49414, + "src": "637:18:129", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1053,10 +1053,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 49311, + "id": 49387, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "637:7:128", + "src": "637:7:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1065,58 +1065,58 @@ "visibility": "internal" } ], - "src": "622:34:128" + "src": "622:34:129" }, "returnParameters": { - "id": 49314, + "id": 49390, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:128" + "src": "666:0:129" }, - "scope": 49369, + "scope": 49445, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 49368, + "id": 49444, "nodeType": "FunctionDefinition", - "src": "823:241:128", + "src": "823:241:129", "nodes": [], "body": { - "id": 49367, + "id": 49443, "nodeType": "Block", - "src": "895:169:128", + "src": "895:169:129", "nodes": [], "statements": [ { "expression": { - "id": 49349, + "id": 49425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 49345, + "id": 49421, "name": "executionStateRoots", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49298, - "src": "905:19:128", + "referencedDeclaration": 49374, + "src": "905:19:129", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", "typeString": "mapping(uint256 => bytes32)" } }, - "id": 49347, + "id": 49423, "indexExpression": { - "id": 49346, + "id": 49422, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49340, - "src": "925:4:128", + "referencedDeclaration": 49416, + "src": "925:4:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1127,7 +1127,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "905:25:128", + "src": "905:25:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1136,55 +1136,55 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 49348, + "id": 49424, "name": "executionRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49342, - "src": "933:13:128", + "referencedDeclaration": 49418, + "src": "933:13:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "905:41:128", + "src": "905:41:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 49350, + "id": 49426, "nodeType": "ExpressionStatement", - "src": "905:41:128" + "src": "905:41:129" }, { "expression": { - "id": 49356, + "id": 49432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 49351, + "id": 49427, "name": "timestamps", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49302, - "src": "956:10:128", + "referencedDeclaration": 49378, + "src": "956:10:129", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", "typeString": "mapping(uint256 => uint256)" } }, - "id": 49353, + "id": 49429, "indexExpression": { - "id": 49352, + "id": 49428, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49340, - "src": "967:4:128", + "referencedDeclaration": 49416, + "src": "967:4:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1195,7 +1195,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "956:16:128", + "src": "956:16:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1205,55 +1205,55 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 49354, + "id": 49430, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "975:5:128", + "src": "975:5:129", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 49355, + "id": 49431, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "981:9:128", + "memberLocation": "981:9:129", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "975:15:128", + "src": "975:15:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "956:34:128", + "src": "956:34:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 49357, + "id": 49433, "nodeType": "ExpressionStatement", - "src": "956:34:128" + "src": "956:34:129" }, { "expression": { - "id": 49360, + "id": 49436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49358, + "id": 49434, "name": "head", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49290, - "src": "1000:4:128", + "referencedDeclaration": 49366, + "src": "1000:4:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1262,49 +1262,49 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 49359, + "id": 49435, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49340, - "src": "1007:4:128", + "referencedDeclaration": 49416, + "src": "1007:4:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1000:11:128", + "src": "1000:11:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 49361, + "id": 49437, "nodeType": "ExpressionStatement", - "src": "1000:11:128" + "src": "1000:11:129" }, { "eventCall": { "arguments": [ { - "id": 49363, + "id": 49439, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49340, - "src": "1037:4:128", + "referencedDeclaration": 49416, + "src": "1037:4:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 49364, + "id": 49440, "name": "executionRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49342, - "src": "1043:13:128", + "referencedDeclaration": 49418, + "src": "1043:13:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1322,18 +1322,18 @@ "typeString": "bytes32" } ], - "id": 49362, + "id": 49438, "name": "HeadUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49308, - "src": "1026:10:128", + "referencedDeclaration": 49384, + "src": "1026:10:129", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (uint256,bytes32)" } }, - "id": 49365, + "id": 49441, "isConstant": false, "isLValue": false, "isPure": false, @@ -1342,16 +1342,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1026:31:128", + "src": "1026:31:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 49366, + "id": 49442, "nodeType": "EmitStatement", - "src": "1021:36:128" + "src": "1021:36:129" } ] }, @@ -1360,20 +1360,20 @@ "kind": "function", "modifiers": [], "name": "setExecutionRoot", - "nameLocation": "832:16:128", + "nameLocation": "832:16:129", "parameters": { - "id": 49343, + "id": 49419, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49340, + "id": 49416, "mutability": "mutable", "name": "slot", - "nameLocation": "857:4:128", + "nameLocation": "857:4:129", "nodeType": "VariableDeclaration", - "scope": 49368, - "src": "849:12:128", + "scope": 49444, + "src": "849:12:129", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1381,10 +1381,10 @@ "typeString": "uint256" }, "typeName": { - "id": 49339, + "id": 49415, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "849:7:128", + "src": "849:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1394,13 +1394,13 @@ }, { "constant": false, - "id": 49342, + "id": 49418, "mutability": "mutable", "name": "executionRoot", - "nameLocation": "871:13:128", + "nameLocation": "871:13:129", "nodeType": "VariableDeclaration", - "scope": 49368, - "src": "863:21:128", + "scope": 49444, + "src": "863:21:129", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1408,10 +1408,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 49341, + "id": 49417, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "863:7:128", + "src": "863:7:129", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1420,15 +1420,15 @@ "visibility": "internal" } ], - "src": "848:37:128" + "src": "848:37:129" }, "returnParameters": { - "id": 49344, + "id": 49420, "nodeType": "ParameterList", "parameters": [], - "src": "895:0:128" + "src": "895:0:129" }, - "scope": 49369, + "scope": 49445, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -1438,18 +1438,18 @@ "baseContracts": [ { "baseName": { - "id": 49284, + "id": 49360, "name": "ILightClientMock", "nameLocations": [ - "294:16:128" + "294:16:129" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 47862, - "src": "294:16:128" + "referencedDeclaration": 47936, + "src": "294:16:129" }, - "id": 49285, + "id": 49361, "nodeType": "InheritanceSpecifier", - "src": "294:16:128" + "src": "294:16:129" } ], "canonicalName": "LightClientMock", @@ -1457,15 +1457,15 @@ "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 49369, - 47862 + 49445, + 47936 ], "name": "LightClientMock", - "nameLocation": "275:15:128", - "scope": 49370, + "nameLocation": "275:15:129", + "scope": 49446, "usedErrors": [] } ] }, - "id": 128 + "id": 129 } \ No newline at end of file diff --git a/out/SourceAMB.sol/SourceAMB.json b/out/SourceAMB.sol/SourceAMB.json index 1a73ff0..ef7b48d 100644 --- a/out/SourceAMB.sol/SourceAMB.json +++ b/out/SourceAMB.sol/SourceAMB.json @@ -1,5 +1,15 @@ { "abi": [ + { + "inputs": [], + "name": "CannotSendToSameChain", + "type": "error" + }, + { + "inputs": [], + "name": "SendingDisabled", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -315,13 +325,13 @@ } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b50610949806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806368346a921161008c5780638d080d1d116100665780638d080d1d146102545780639efeff1c14610274578063a96a2e921461029c578063affed0e0146102af57600080fd5b806368346a92146102055780636fdbccbf146102185780637599735c1461022b57600080fd5b80633c6cf473116100c85780633c6cf473146101685780633e99e9ce1461019857806354fd4d50146101a557806359f89787146101c457600080fd5b8063029d6713146100ef578063147bce491461012257806336ae7c1814610135575b600080fd5b61010f6100fd3660046105fc565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61010f61013036600461068d565b6102da565b6101586101433660046106fb565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61018b610176366004610716565b60076020526000908152604090205460ff1681565b604051610119919061072f565b6000546101589060ff1681565b6008546101b29060ff1681565b60405160ff9091168152602001610119565b6101ed6101d23660046106fb565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61010f61021336600461068d565b6103e7565b61010f610226366004610757565b610466565b6101ed6102393660046106fb565b6004602052600090815260409020546001600160a01b031681565b61010f610262366004610716565b60096020526000908152604090205481565b610287610282366004610716565b6104bd565b60405163ffffffff9091168152602001610119565b61010f6102aa366004610757565b6104f7565b6002546102c2906001600160401b031681565b6040516001600160401b039091168152602001610119565b6000805460ff166103065760405162461bcd60e51b81526004016102fd90610798565b60405180910390fd5b468563ffffffff160361032b5760405162461bcd60e51b81526004016102fd906107c5565b600080610344876001600160a01b0388165b878761054a565b600280546001600160401b039081166000908152600160205260408120849055825494965092945084931691610379836107fc565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516103d59190610854565b60405180910390a39695505050505050565b6000805460ff1661040a5760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff160361042f5760405162461bcd60e51b81526004016102fd906107c5565b600080610445876001600160a01b03881661033d565b6002805492945090925082916001600160401b0316906000610379836107fc565b6000805460ff166104895760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff16036104ae5760405162461bcd60e51b81526004016102fd906107c5565b6000806103448787878761054a565b600381815481106104cd57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff1661051a5760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff160361053f5760405162461bcd60e51b81526004016102fd906107c5565b600080610445878787875b600854600254604080516020601f86018190048102820181019092528481526060936000936105ad9360ff909216926001600160401b0390911691469133918c918c918c908c90819084018382808284376000920191909152506105c192505050565b805160208201209097909650945050505050565b6060878787878787876040516020016105e09796959493929190610887565b6040516020818303038152906040529050979650505050505050565b60006020828403121561060e57600080fd5b81356001600160401b038116811461062557600080fd5b9392505050565b803563ffffffff8116811461064057600080fd5b919050565b60008083601f84011261065757600080fd5b5081356001600160401b0381111561066e57600080fd5b60208301915083602082850101111561068657600080fd5b9250929050565b600080600080606085870312156106a357600080fd5b6106ac8561062c565b935060208501356001600160a01b03811681146106c857600080fd5b925060408501356001600160401b038111156106e357600080fd5b6106ef87828801610645565b95989497509550505050565b60006020828403121561070d57600080fd5b6106258261062c565b60006020828403121561072857600080fd5b5035919050565b602081016003831061075157634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806060858703121561076d57600080fd5b6107768561062c565b93506020850135925060408501356001600160401b038111156106e357600080fd5b60208082526013908201527214d95b991a5b99c81a5cc8191a5cd8589b1959606a1b604082015260600190565b60208082526019908201527f43616e6e6f742073656e6420746f2073616d6520636861696e00000000000000604082015260600190565b60006001600160401b0380831681810361082657634e487b7160e01b600052601160045260246000fd5b6001019392505050565b60005b8381101561084b578181015183820152602001610833565b50506000910152565b6020815260008251806020840152610873816040850160208701610830565b601f01601f19169190910160400192915050565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526bffffffffffffffffffffffff19606088901b16600d84015285901b166021820152602581018390528151600090610900816045850160208701610830565b919091016045019897505050505050505056fea2646970667358221220fce48af7de822a4f3957651609012de83de5db78d9aad2750b5f3497339caf7464736f6c63430008100033", - "sourceMap": "699:4255:99:-:0;;;;;;;;;;;;;;;;;;;", + "object": "0x608060405234801561001057600080fd5b506108e4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806368346a921161008c5780638d080d1d116100665780638d080d1d146102545780639efeff1c14610274578063a96a2e921461029c578063affed0e0146102af57600080fd5b806368346a92146102055780636fdbccbf146102185780637599735c1461022b57600080fd5b80633c6cf473116100c85780633c6cf473146101685780633e99e9ce1461019857806354fd4d50146101a557806359f89787146101c457600080fd5b8063029d6713146100ef578063147bce491461012257806336ae7c1814610135575b600080fd5b61010f6100fd3660046105fb565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61010f61013036600461068c565b6102da565b6101586101433660046106fa565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61018b610176366004610715565b60076020526000908152604090205460ff1681565b604051610119919061072e565b6000546101589060ff1681565b6008546101b29060ff1681565b60405160ff9091168152602001610119565b6101ed6101d23660046106fa565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61010f61021336600461068c565b6103e0565b61010f610226366004610756565b610461565b6101ed6102393660046106fa565b6004602052600090815260409020546001600160a01b031681565b61010f610262366004610715565b60096020526000908152604090205481565b610287610282366004610715565b6104ba565b60405163ffffffff9091168152602001610119565b61010f6102aa366004610756565b6104f4565b6002546102c2906001600160401b031681565b6040516001600160401b039091168152602001610119565b6000805460ff166102fe57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036103245760405163b0747d8160e01b815260040160405180910390fd5b60008061033d876001600160a01b0388165b8787610549565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161037283610797565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516103ce91906107ef565b60405180910390a39695505050505050565b6000805460ff1661040457604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361042a5760405163b0747d8160e01b815260040160405180910390fd5b600080610440876001600160a01b038816610336565b6002805492945090925082916001600160401b031690600061037283610797565b6000805460ff1661048557604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036104ab5760405163b0747d8160e01b815260040160405180910390fd5b60008061033d87878787610549565b600381815481106104ca57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff1661051857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361053e5760405163b0747d8160e01b815260040160405180910390fd5b600080610440878787875b600854600254604080516020601f86018190048102820181019092528481526060936000936105ac9360ff909216926001600160401b0390911691469133918c918c918c908c90819084018382808284376000920191909152506105c092505050565b805160208201209097909650945050505050565b6060878787878787876040516020016105df9796959493929190610822565b6040516020818303038152906040529050979650505050505050565b60006020828403121561060d57600080fd5b81356001600160401b038116811461062457600080fd5b9392505050565b803563ffffffff8116811461063f57600080fd5b919050565b60008083601f84011261065657600080fd5b5081356001600160401b0381111561066d57600080fd5b60208301915083602082850101111561068557600080fd5b9250929050565b600080600080606085870312156106a257600080fd5b6106ab8561062b565b935060208501356001600160a01b03811681146106c757600080fd5b925060408501356001600160401b038111156106e257600080fd5b6106ee87828801610644565b95989497509550505050565b60006020828403121561070c57600080fd5b6106248261062b565b60006020828403121561072757600080fd5b5035919050565b602081016003831061075057634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806060858703121561076c57600080fd5b6107758561062b565b93506020850135925060408501356001600160401b038111156106e257600080fd5b60006001600160401b038083168181036107c157634e487b7160e01b600052601160045260246000fd5b6001019392505050565b60005b838110156107e65781810151838201526020016107ce565b50506000910152565b602081526000825180602084015261080e8160408501602087016107cb565b601f01601f19169190910160400192915050565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526bffffffffffffffffffffffff19606088901b16600d84015285901b16602182015260258101839052815160009061089b8160458501602087016107cb565b919091016045019897505050505050505056fea2646970667358221220c55d27a2f7fa1e8ee8ea50b7be07b69395959c5dcf71ee86a979b17ae375333064736f6c63430008100033", + "sourceMap": "699:4335:99:-:0;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806368346a921161008c5780638d080d1d116100665780638d080d1d146102545780639efeff1c14610274578063a96a2e921461029c578063affed0e0146102af57600080fd5b806368346a92146102055780636fdbccbf146102185780637599735c1461022b57600080fd5b80633c6cf473116100c85780633c6cf473146101685780633e99e9ce1461019857806354fd4d50146101a557806359f89787146101c457600080fd5b8063029d6713146100ef578063147bce491461012257806336ae7c1814610135575b600080fd5b61010f6100fd3660046105fc565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61010f61013036600461068d565b6102da565b6101586101433660046106fb565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61018b610176366004610716565b60076020526000908152604090205460ff1681565b604051610119919061072f565b6000546101589060ff1681565b6008546101b29060ff1681565b60405160ff9091168152602001610119565b6101ed6101d23660046106fb565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61010f61021336600461068d565b6103e7565b61010f610226366004610757565b610466565b6101ed6102393660046106fb565b6004602052600090815260409020546001600160a01b031681565b61010f610262366004610716565b60096020526000908152604090205481565b610287610282366004610716565b6104bd565b60405163ffffffff9091168152602001610119565b61010f6102aa366004610757565b6104f7565b6002546102c2906001600160401b031681565b6040516001600160401b039091168152602001610119565b6000805460ff166103065760405162461bcd60e51b81526004016102fd90610798565b60405180910390fd5b468563ffffffff160361032b5760405162461bcd60e51b81526004016102fd906107c5565b600080610344876001600160a01b0388165b878761054a565b600280546001600160401b039081166000908152600160205260408120849055825494965092945084931691610379836107fc565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516103d59190610854565b60405180910390a39695505050505050565b6000805460ff1661040a5760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff160361042f5760405162461bcd60e51b81526004016102fd906107c5565b600080610445876001600160a01b03881661033d565b6002805492945090925082916001600160401b0316906000610379836107fc565b6000805460ff166104895760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff16036104ae5760405162461bcd60e51b81526004016102fd906107c5565b6000806103448787878761054a565b600381815481106104cd57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff1661051a5760405162461bcd60e51b81526004016102fd90610798565b468563ffffffff160361053f5760405162461bcd60e51b81526004016102fd906107c5565b600080610445878787875b600854600254604080516020601f86018190048102820181019092528481526060936000936105ad9360ff909216926001600160401b0390911691469133918c918c918c908c90819084018382808284376000920191909152506105c192505050565b805160208201209097909650945050505050565b6060878787878787876040516020016105e09796959493929190610887565b6040516020818303038152906040529050979650505050505050565b60006020828403121561060e57600080fd5b81356001600160401b038116811461062557600080fd5b9392505050565b803563ffffffff8116811461064057600080fd5b919050565b60008083601f84011261065757600080fd5b5081356001600160401b0381111561066e57600080fd5b60208301915083602082850101111561068657600080fd5b9250929050565b600080600080606085870312156106a357600080fd5b6106ac8561062c565b935060208501356001600160a01b03811681146106c857600080fd5b925060408501356001600160401b038111156106e357600080fd5b6106ef87828801610645565b95989497509550505050565b60006020828403121561070d57600080fd5b6106258261062c565b60006020828403121561072857600080fd5b5035919050565b602081016003831061075157634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806060858703121561076d57600080fd5b6107768561062c565b93506020850135925060408501356001600160401b038111156106e357600080fd5b60208082526013908201527214d95b991a5b99c81a5cc8191a5cd8589b1959606a1b604082015260600190565b60208082526019908201527f43616e6e6f742073656e6420746f2073616d6520636861696e00000000000000604082015260600190565b60006001600160401b0380831681810361082657634e487b7160e01b600052601160045260246000fd5b6001019392505050565b60005b8381101561084b578181015183820152602001610833565b50506000910152565b6020815260008251806020840152610873816040850160208701610830565b601f01601f19169190910160400192915050565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526bffffffffffffffffffffffff19606088901b16600d84015285901b166021820152602581018390528151600090610900816045850160208701610830565b919091016045019897505050505050505056fea2646970667358221220fce48af7de822a4f3957651609012de83de5db78d9aad2750b5f3497339caf7464736f6c63430008100033", - "sourceMap": "699:4255:99:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;449:25:145;;;437:2;422:18;527:42:103;;;;;;;;3356:541:99;;;;;;:::i;:::-;;:::i;1291:37:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2019:14:145;;2012:22;1994:41;;1982:2;1967:18;1291:37:103;1854:187:145;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1690:20;;;;;;;;;;;;2755:4:145;2743:17;;;2725:36;;2713:2;2698:18;1690:20:103;2583:184:145;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;2936:32:145;;;2918:51;;2906:2;2891:18;1164:46:103;2772:203:145;1778:490:99;;;;;;:::i;:::-;;:::i;2830:520::-;;;;;;:::i;:::-;;:::i;999:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;1936;;;;;;:::i;:::-;;;;;;;;;;;;;;879:30;;;;;;:::i;:::-;;:::i;:::-;;;4123:10:145;4111:23;;;4093:42;;4081:2;4066:18;879:30:103;3949:192:145;1303:469:99;;;;;;:::i;:::-;;:::i;634:19:103:-;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;4308:31:145;;;4290:50;;4278:2;4263:18;634:19:103;4146:200:145;3356:541:99;3521:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;;;;;;;;;3570:13:::1;3548:18;:35;;::::0;3540:73:::1;;;;-1:-1:-1::0;;;3540:73:99::1;;;;;;;:::i;:::-;3624:20;::::0;3681:85:::1;3700:18:::0;-1:-1:-1;;;;;337:22:112;;3720:39:99::1;3761:4;;3681:18;:85::i;:::-;3785:5;::::0;;-1:-1:-1;;;;;3785:5:99;;::::1;3776:15;::::0;;;:8:::1;:15;::::0;;;;:29;;;3832:7;;3623:143;;-1:-1:-1;3623:143:99;;-1:-1:-1;3623:143:99;;3832:7:::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;3832:7:99::1;;;;;-1:-1:-1::0;;;;;3832:7:99::1;;;;;;-1:-1:-1::0;;;;;3820:42:99::1;;3854:7;3820:42;;;;;;:::i;:::-;;;;;;;;3879:11:::0;3356:541;-1:-1:-1;;;;;;3356:541:99:o;1778:490::-;1927:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;1980:13:::1;1958:18;:35;;::::0;1950:73:::1;;;;-1:-1:-1::0;;;1950:73:99::1;;;;;;;:::i;:::-;2034:20;::::0;2091:85:::1;2110:18:::0;-1:-1:-1;;;;;337:22:112;;2130:39:99::1;245:122:112::0;2091:85:99::1;2203:5;:7:::0;;2033:143;;-1:-1:-1;2033:143:99;;-1:-1:-1;2033:143:99;;-1:-1:-1;;;;;2203:7:99::1;::::0;:5:::1;:7;::::0;::::1;:::i;2830:520::-:0;2995:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;3044:13:::1;3022:18;:35;;::::0;3014:73:::1;;;;-1:-1:-1::0;;;3014:73:99::1;;;;;;;:::i;:::-;3098:20;3120:19:::0;3155:64:::1;3174:18;3194;3214:4;;3155:18;:64::i;879:30:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1303:469:99:-;1452:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;1505:13:::1;1483:18;:35;;::::0;1475:73:::1;;;;-1:-1:-1::0;;;1475:73:99::1;;;;;;;:::i;:::-;1559:20;1581:19:::0;1616:64:::1;1635:18;1655;1675:4;;4455:497:::0;4721:7;;4742:5;;4685:213;;;;;;;;;;;;;;;;;;;;;;4612:25;;4639:19;;4685:213;;4721:7;;;;;-1:-1:-1;;;;;4742:5:99;;;;4768:13;;4796:10;;4820:18;;4852;;4884:4;;;;;;4685:213;;4884:4;;;;4685:213;;;;;;;;;-1:-1:-1;4685:22:99;;-1:-1:-1;;;4685:213:99:i;:::-;4922:23;;;;;;4670:228;;4922:23;;-1:-1:-1;4455:497:99;-1:-1:-1;;;;;4455:497:99:o;3800:489:107:-;4049:12;4110:7;4131:5;4150:13;4177;4204:18;4236;4268:4;4080:202;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4073:209;;3800:489;;;;;;;;;:::o;14:284:145:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;-1:-1:-1;;;;;223:5:145;219:30;212:5;209:41;199:69;;264:1;261;254:12;199:69;287:5;14:284;-1:-1:-1;;;14:284:145:o;485:163::-;552:20;;612:10;601:22;;591:33;;581:61;;638:1;635;628:12;581:61;485:163;;;:::o;653:347::-;704:8;714:6;768:3;761:4;753:6;749:17;745:27;735:55;;786:1;783;776:12;735:55;-1:-1:-1;809:20:145;;-1:-1:-1;;;;;841:30:145;;838:50;;;884:1;881;874:12;838:50;921:4;913:6;909:17;897:29;;973:3;966:4;957:6;949;945:19;941:30;938:39;935:59;;;990:1;987;980:12;935:59;653:347;;;;;:::o;1005:655::-;1092:6;1100;1108;1116;1169:2;1157:9;1148:7;1144:23;1140:32;1137:52;;;1185:1;1182;1175:12;1137:52;1208:28;1226:9;1208:28;:::i;:::-;1198:38;-1:-1:-1;1286:2:145;1271:18;;1258:32;-1:-1:-1;;;;;1319:31:145;;1309:42;;1299:70;;1365:1;1362;1355:12;1299:70;1388:5;-1:-1:-1;1444:2:145;1429:18;;1416:32;-1:-1:-1;;;;;1460:30:145;;1457:50;;;1503:1;1500;1493:12;1457:50;1542:58;1592:7;1583:6;1572:9;1568:22;1542:58;:::i;:::-;1005:655;;;;-1:-1:-1;1619:8:145;-1:-1:-1;;;;1005:655:145:o;1665:184::-;1723:6;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1815:28;1833:9;1815:28;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:145;;2046:180;-1:-1:-1;2046:180:145:o;2231:347::-;2382:2;2367:18;;2415:1;2404:13;;2394:144;;2460:10;2455:3;2451:20;2448:1;2441:31;2495:4;2492:1;2485:15;2523:4;2520:1;2513:15;2394:144;2547:25;;;2231:347;:::o;2980:549::-;3067:6;3075;3083;3091;3144:2;3132:9;3123:7;3119:23;3115:32;3112:52;;;3160:1;3157;3150:12;3112:52;3183:28;3201:9;3183:28;:::i;:::-;3173:38;;3258:2;3247:9;3243:18;3230:32;3220:42;;3313:2;3302:9;3298:18;3285:32;-1:-1:-1;;;;;3332:6:145;3329:30;3326:50;;;3372:1;3369;3362:12;4351:343;4553:2;4535:21;;;4592:2;4572:18;;;4565:30;-1:-1:-1;;;4626:2:145;4611:18;;4604:49;4685:2;4670:18;;4351:343::o;4699:349::-;4901:2;4883:21;;;4940:2;4920:18;;;4913:30;4979:27;4974:2;4959:18;;4952:55;5039:2;5024:18;;4699:349::o;5053:306::-;5091:3;-1:-1:-1;;;;;5172:2:145;5165:5;5161:14;5199:2;5190:7;5187:15;5184:138;;5244:10;5239:3;5235:20;5232:1;5225:31;5279:4;5276:1;5269:15;5307:4;5304:1;5297:15;5184:138;5351:1;5338:15;;5053:306;-1:-1:-1;;;5053:306:145:o;5364:250::-;5449:1;5459:113;5473:6;5470:1;5467:13;5459:113;;;5549:11;;;5543:18;5530:11;;;5523:39;5495:2;5488:10;5459:113;;;-1:-1:-1;;5606:1:145;5588:16;;5581:27;5364:250::o;5619:394::-;5766:2;5755:9;5748:21;5729:4;5798:6;5792:13;5841:6;5836:2;5825:9;5821:18;5814:34;5857:79;5929:6;5924:2;5913:9;5909:18;5904:2;5896:6;5892:15;5857:79;:::i;:::-;5997:2;5976:15;-1:-1:-1;;5972:29:145;5957:45;;;;6004:2;5953:54;;5619:394;-1:-1:-1;;5619:394:145:o;6018:873::-;-1:-1:-1;;;;;;6361:3:145;6339:16;;;6335:36;6323:49;;-1:-1:-1;;;;;;6427:3:145;6405:16;;;6401:51;6397:1;6388:11;;6381:72;-1:-1:-1;;;;;;6476:3:145;6525:16;;;6521:25;;6517:1;6508:11;;6501:46;-1:-1:-1;;6585:2:145;6581:15;;;6577:53;6572:2;6563:12;;6556:75;6665:16;;;6661:25;6656:2;6647:12;;6640:47;6712:2;6703:12;;6696:28;;;6747:13;;-1:-1:-1;;6769:75:145;6747:13;6832:2;6823:12;;6816:4;6804:17;;6769:75;:::i;:::-;6864:16;;;;6882:2;6860:25;;6018:873;-1:-1:-1;;;;;;;;6018:873:145:o", + "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806368346a921161008c5780638d080d1d116100665780638d080d1d146102545780639efeff1c14610274578063a96a2e921461029c578063affed0e0146102af57600080fd5b806368346a92146102055780636fdbccbf146102185780637599735c1461022b57600080fd5b80633c6cf473116100c85780633c6cf473146101685780633e99e9ce1461019857806354fd4d50146101a557806359f89787146101c457600080fd5b8063029d6713146100ef578063147bce491461012257806336ae7c1814610135575b600080fd5b61010f6100fd3660046105fb565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61010f61013036600461068c565b6102da565b6101586101433660046106fa565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61018b610176366004610715565b60076020526000908152604090205460ff1681565b604051610119919061072e565b6000546101589060ff1681565b6008546101b29060ff1681565b60405160ff9091168152602001610119565b6101ed6101d23660046106fa565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61010f61021336600461068c565b6103e0565b61010f610226366004610756565b610461565b6101ed6102393660046106fa565b6004602052600090815260409020546001600160a01b031681565b61010f610262366004610715565b60096020526000908152604090205481565b610287610282366004610715565b6104ba565b60405163ffffffff9091168152602001610119565b61010f6102aa366004610756565b6104f4565b6002546102c2906001600160401b031681565b6040516001600160401b039091168152602001610119565b6000805460ff166102fe57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036103245760405163b0747d8160e01b815260040160405180910390fd5b60008061033d876001600160a01b0388165b8787610549565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161037283610797565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516103ce91906107ef565b60405180910390a39695505050505050565b6000805460ff1661040457604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361042a5760405163b0747d8160e01b815260040160405180910390fd5b600080610440876001600160a01b038816610336565b6002805492945090925082916001600160401b031690600061037283610797565b6000805460ff1661048557604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036104ab5760405163b0747d8160e01b815260040160405180910390fd5b60008061033d87878787610549565b600381815481106104ca57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff1661051857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361053e5760405163b0747d8160e01b815260040160405180910390fd5b600080610440878787875b600854600254604080516020601f86018190048102820181019092528481526060936000936105ac9360ff909216926001600160401b0390911691469133918c918c918c908c90819084018382808284376000920191909152506105c092505050565b805160208201209097909650945050505050565b6060878787878787876040516020016105df9796959493929190610822565b6040516020818303038152906040529050979650505050505050565b60006020828403121561060d57600080fd5b81356001600160401b038116811461062457600080fd5b9392505050565b803563ffffffff8116811461063f57600080fd5b919050565b60008083601f84011261065657600080fd5b5081356001600160401b0381111561066d57600080fd5b60208301915083602082850101111561068557600080fd5b9250929050565b600080600080606085870312156106a257600080fd5b6106ab8561062b565b935060208501356001600160a01b03811681146106c757600080fd5b925060408501356001600160401b038111156106e257600080fd5b6106ee87828801610644565b95989497509550505050565b60006020828403121561070c57600080fd5b6106248261062b565b60006020828403121561072757600080fd5b5035919050565b602081016003831061075057634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806060858703121561076c57600080fd5b6107758561062b565b93506020850135925060408501356001600160401b038111156106e257600080fd5b60006001600160401b038083168181036107c157634e487b7160e01b600052601160045260246000fd5b6001019392505050565b60005b838110156107e65781810151838201526020016107ce565b50506000910152565b602081526000825180602084015261080e8160408501602087016107cb565b601f01601f19169190910160400192915050565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526bffffffffffffffffffffffff19606088901b16600d84015285901b16602182015260258101839052815160009061089b8160458501602087016107cb565b919091016045019897505050505050505056fea2646970667358221220c55d27a2f7fa1e8ee8ea50b7be07b69395959c5dcf71ee86a979b17ae375333064736f6c63430008100033", + "sourceMap": "699:4335:99:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;449:25:146;;;437:2;422:18;527:42:103;;;;;;;;3438:539:99;;;;;;:::i;:::-;;:::i;1291:37:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2019:14:146;;2012:22;1994:41;;1982:2;1967:18;1291:37:103;1854:187:146;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1690:20;;;;;;;;;;;;2755:4:146;2743:17;;;2725:36;;2713:2;2698:18;1690:20:103;2583:184:146;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;2936:32:146;;;2918:51;;2906:2;2891:18;1164:46:103;2772:203:146;1864:488:99;;;;;;:::i;:::-;;:::i;2914:518::-;;;;;;:::i;:::-;;:::i;999:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;1936;;;;;;:::i;:::-;;;;;;;;;;;;;;879:30;;;;;;:::i;:::-;;:::i;:::-;;;4123:10:146;4111:23;;;4093:42;;4081:2;4066:18;879:30:103;3949:192:146;1391:467:99;;;;;;:::i;:::-;;:::i;634:19:103:-;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;4308:31:146;;;4290:50;;4278:2;4263:18;634:19:103;4146:200:146;3438:539:99;3603:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3648:13:::1;3626:18;:35;;::::0;3622:71:::1;;3670:23;;-1:-1:-1::0;;;3670:23:99::1;;;;;;;;;;;3622:71;3704:20;::::0;3761:85:::1;3780:18:::0;-1:-1:-1;;;;;337:22:113;;3800:39:99::1;3841:4;;3761:18;:85::i;:::-;3865:5;::::0;;-1:-1:-1;;;;;3865:5:99;;::::1;3856:15;::::0;;;:8:::1;:15;::::0;;;;:29;;;3912:7;;3703:143;;-1:-1:-1;3703:143:99;;-1:-1:-1;3703:143:99;;3912:7:::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;;-1:-1:-1::0;;;;;3900:42:99::1;;3934:7;3900:42;;;;;;:::i;:::-;;;;;;;;3959:11:::0;3438:539;-1:-1:-1;;;;;;3438:539:99:o;1864:488::-;2013:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;2062:13:::1;2040:18;:35;;::::0;2036:71:::1;;2084:23;;-1:-1:-1::0;;;2084:23:99::1;;;;;;;;;;;2036:71;2118:20;::::0;2175:85:::1;2194:18:::0;-1:-1:-1;;;;;337:22:113;;2214:39:99::1;245:122:113::0;2175:85:99::1;2287:5;:7:::0;;2117:143;;-1:-1:-1;2117:143:99;;-1:-1:-1;2117:143:99;;-1:-1:-1;;;;;2287:7:99::1;::::0;:5:::1;:7;::::0;::::1;:::i;2914:518::-:0;3079:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3124:13:::1;3102:18;:35;;::::0;3098:71:::1;;3146:23;;-1:-1:-1::0;;;3146:23:99::1;;;;;;;;;;;3098:71;3180:20;3202:19:::0;3237:64:::1;3256:18;3276;3296:4;;3237:18;:64::i;879:30:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1391:467:99:-;1540:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;1589:13:::1;1567:18;:35;;::::0;1563:71:::1;;1611:23;;-1:-1:-1::0;;;1611:23:99::1;;;;;;;;;;;1563:71;1645:20;1667:19:::0;1702:64:::1;1721:18;1741;1761:4;;4535:497:::0;4801:7;;4822:5;;4765:213;;;;;;;;;;;;;;;;;;;;;;4692:25;;4719:19;;4765:213;;4801:7;;;;;-1:-1:-1;;;;;4822:5:99;;;;4848:13;;4876:10;;4900:18;;4932;;4964:4;;;;;;4765:213;;4964:4;;;;4765:213;;;;;;;;;-1:-1:-1;4765:22:99;;-1:-1:-1;;;4765:213:99:i;:::-;5002:23;;;;;;4750:228;;5002:23;;-1:-1:-1;4535:497:99;-1:-1:-1;;;;;4535:497:99:o;3800:489:108:-;4049:12;4110:7;4131:5;4150:13;4177;4204:18;4236;4268:4;4080:202;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4073:209;;3800:489;;;;;;;;;:::o;14:284:146:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;-1:-1:-1;;;;;223:5:146;219:30;212:5;209:41;199:69;;264:1;261;254:12;199:69;287:5;14:284;-1:-1:-1;;;14:284:146:o;485:163::-;552:20;;612:10;601:22;;591:33;;581:61;;638:1;635;628:12;581:61;485:163;;;:::o;653:347::-;704:8;714:6;768:3;761:4;753:6;749:17;745:27;735:55;;786:1;783;776:12;735:55;-1:-1:-1;809:20:146;;-1:-1:-1;;;;;841:30:146;;838:50;;;884:1;881;874:12;838:50;921:4;913:6;909:17;897:29;;973:3;966:4;957:6;949;945:19;941:30;938:39;935:59;;;990:1;987;980:12;935:59;653:347;;;;;:::o;1005:655::-;1092:6;1100;1108;1116;1169:2;1157:9;1148:7;1144:23;1140:32;1137:52;;;1185:1;1182;1175:12;1137:52;1208:28;1226:9;1208:28;:::i;:::-;1198:38;-1:-1:-1;1286:2:146;1271:18;;1258:32;-1:-1:-1;;;;;1319:31:146;;1309:42;;1299:70;;1365:1;1362;1355:12;1299:70;1388:5;-1:-1:-1;1444:2:146;1429:18;;1416:32;-1:-1:-1;;;;;1460:30:146;;1457:50;;;1503:1;1500;1493:12;1457:50;1542:58;1592:7;1583:6;1572:9;1568:22;1542:58;:::i;:::-;1005:655;;;;-1:-1:-1;1619:8:146;-1:-1:-1;;;;1005:655:146:o;1665:184::-;1723:6;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1815:28;1833:9;1815:28;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:146;;2046:180;-1:-1:-1;2046:180:146:o;2231:347::-;2382:2;2367:18;;2415:1;2404:13;;2394:144;;2460:10;2455:3;2451:20;2448:1;2441:31;2495:4;2492:1;2485:15;2523:4;2520:1;2513:15;2394:144;2547:25;;;2231:347;:::o;2980:549::-;3067:6;3075;3083;3091;3144:2;3132:9;3123:7;3119:23;3115:32;3112:52;;;3160:1;3157;3150:12;3112:52;3183:28;3201:9;3183:28;:::i;:::-;3173:38;;3258:2;3247:9;3243:18;3230:32;3220:42;;3313:2;3302:9;3298:18;3285:32;-1:-1:-1;;;;;3332:6:146;3329:30;3326:50;;;3372:1;3369;3362:12;4351:306;4389:3;-1:-1:-1;;;;;4470:2:146;4463:5;4459:14;4497:2;4488:7;4485:15;4482:138;;4542:10;4537:3;4533:20;4530:1;4523:31;4577:4;4574:1;4567:15;4605:4;4602:1;4595:15;4482:138;4649:1;4636:15;;4351:306;-1:-1:-1;;;4351:306:146:o;4662:250::-;4747:1;4757:113;4771:6;4768:1;4765:13;4757:113;;;4847:11;;;4841:18;4828:11;;;4821:39;4793:2;4786:10;4757:113;;;-1:-1:-1;;4904:1:146;4886:16;;4879:27;4662:250::o;4917:394::-;5064:2;5053:9;5046:21;5027:4;5096:6;5090:13;5139:6;5134:2;5123:9;5119:18;5112:34;5155:79;5227:6;5222:2;5211:9;5207:18;5202:2;5194:6;5190:15;5155:79;:::i;:::-;5295:2;5274:15;-1:-1:-1;;5270:29:146;5255:45;;;;5302:2;5251:54;;4917:394;-1:-1:-1;;4917:394:146:o;5316:873::-;-1:-1:-1;;;;;;5659:3:146;5637:16;;;5633:36;5621:49;;-1:-1:-1;;;;;;5725:3:146;5703:16;;;5699:51;5695:1;5686:11;;5679:72;-1:-1:-1;;;;;;5774:3:146;5823:16;;;5819:25;;5815:1;5806:11;;5799:46;-1:-1:-1;;5883:2:146;5879:15;;;5875:53;5870:2;5861:12;;5854:75;5963:16;;;5959:25;5954:2;5945:12;;5938:47;6010:2;6001:12;;5994:28;;;6045:13;;-1:-1:-1;;6067:75:146;6045:13;6130:2;6121:12;;6114:4;6102:17;;6067:75;:::i;:::-;6162:16;;;;6180:2;6158:25;;5316:873;-1:-1:-1;;;;;;;;5316:873:146:o", "linkReferences": {} }, "methodIdentifiers": { @@ -340,7 +350,7 @@ "storageRootCache(bytes32)": "8d080d1d", "version()": "54fd4d50" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"send(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"sendViaStorage(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}}},\"title\":\"Source Arbitrary Message Bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"send(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.\"},\"sendViaStorage(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"This contract is the entrypoint for sending messages to other chains.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/SourceAMB.sol\":\"SourceAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CannotSendToSameChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SendingDisabled\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"send(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"sendViaStorage(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}}},\"title\":\"Source Arbitrary Message Bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"send(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.\"},\"sendViaStorage(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"This contract is the entrypoint for sending messages to other chains.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/SourceAMB.sol\":\"SourceAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -348,6 +358,16 @@ "language": "Solidity", "output": { "abi": [ + { + "inputs": [], + "type": "error", + "name": "CannotSendToSameChain" + }, + { + "inputs": [], + "type": "error", + "name": "SendingDisabled" + }, { "inputs": [ { @@ -879,10 +899,10 @@ "license": "MIT" }, "src/amb/SourceAMB.sol": { - "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", "urls": [ - "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", - "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", + "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" ], "license": null }, @@ -939,38 +959,38 @@ }, "ast": { "absolutePath": "src/amb/SourceAMB.sol", - "id": 41474, + "id": 41480, "exportedSymbols": { "Bytes32": [ - 44265 + 44339 ], "ITelepathyRouter": [ - 42699 + 42707 ], "Message": [ - 42646 + 42654 ], "MessageEncoding": [ - 43343 + 43383 ], "OwnableUpgradeable": [ 28846 ], "SourceAMB": [ - 41473 + 41479 ], "TelepathyAccess": [ - 42407 + 42415 ], "TelepathyStorage": [ - 42625 + 42633 ], "UUPSUpgradeable": [ 29540 ] }, "nodeType": "SourceUnit", - "src": "0:4955:99", + "src": "0:5035:99", "nodes": [ { "id": 41219, @@ -991,7 +1011,7 @@ "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", "file": "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "nameLocation": "-1:-1:-1", - "scope": 41474, + "scope": 41480, "sourceUnit": 29541, "symbolAliases": [ { @@ -1017,7 +1037,7 @@ "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", "file": "openzeppelin-contracts-upgradeable/access/OwnableUpgradeable.sol", "nameLocation": "-1:-1:-1", - "scope": 41474, + "scope": 41480, "sourceUnit": 28847, "symbolAliases": [ { @@ -1043,8 +1063,8 @@ "absolutePath": "src/libraries/Typecast.sol", "file": "src/libraries/Typecast.sol", "nameLocation": "-1:-1:-1", - "scope": 41474, - "sourceUnit": 44266, + "scope": 41480, + "sourceUnit": 44340, "symbolAliases": [ { "foreign": { @@ -1052,7 +1072,7 @@ "name": "Bytes32", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44265, + "referencedDeclaration": 44339, "src": "235:7:99", "typeDescriptions": {} }, @@ -1069,8 +1089,8 @@ "absolutePath": "src/libraries/MessageEncoding.sol", "file": "src/libraries/MessageEncoding.sol", "nameLocation": "-1:-1:-1", - "scope": 41474, - "sourceUnit": 43344, + "scope": 41480, + "sourceUnit": 43384, "symbolAliases": [ { "foreign": { @@ -1078,7 +1098,7 @@ "name": "MessageEncoding", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43343, + "referencedDeclaration": 43383, "src": "287:15:99", "typeDescriptions": {} }, @@ -1095,8 +1115,8 @@ "absolutePath": "src/amb/interfaces/ITelepathy.sol", "file": "src/amb/interfaces/ITelepathy.sol", "nameLocation": "-1:-1:-1", - "scope": 41474, - "sourceUnit": 42757, + "scope": 41480, + "sourceUnit": 42765, "symbolAliases": [ { "foreign": { @@ -1104,7 +1124,7 @@ "name": "ITelepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42699, + "referencedDeclaration": 42707, "src": "354:16:99", "typeDescriptions": {} }, @@ -1116,7 +1136,7 @@ "name": "Message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42646, + "referencedDeclaration": 42654, "src": "372:7:99", "typeDescriptions": {} }, @@ -1133,8 +1153,8 @@ "absolutePath": "src/amb/TelepathyAccess.sol", "file": "src/amb/TelepathyAccess.sol", "nameLocation": "-1:-1:-1", - "scope": 41474, - "sourceUnit": 42408, + "scope": 41480, + "sourceUnit": 42416, "symbolAliases": [ { "foreign": { @@ -1142,7 +1162,7 @@ "name": "TelepathyAccess", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42407, + "referencedDeclaration": 42415, "src": "431:15:99", "typeDescriptions": {} }, @@ -1159,8 +1179,8 @@ "absolutePath": "src/amb/TelepathyStorage.sol", "file": "src/amb/TelepathyStorage.sol", "nameLocation": "-1:-1:-1", - "scope": 41474, - "sourceUnit": 42626, + "scope": 41480, + "sourceUnit": 42634, "symbolAliases": [ { "foreign": { @@ -1168,7 +1188,7 @@ "name": "TelepathyStorage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42625, + "referencedDeclaration": 42633, "src": "492:16:99", "typeDescriptions": {} }, @@ -1178,270 +1198,274 @@ "unitAlias": "" }, { - "id": 41473, + "id": 41479, "nodeType": "ContractDefinition", - "src": "699:4255:99", + "src": "699:4335:99", "nodes": [ { - "id": 41249, + "id": 41241, + "nodeType": "ErrorDefinition", + "src": "762:24:99", + "nodes": [], + "errorSelector": "29256c5e", + "name": "SendingDisabled", + "nameLocation": "768:15:99", + "parameters": { + "id": 41240, + "nodeType": "ParameterList", + "parameters": [], + "src": "783:2:99" + } + }, + { + "id": 41243, + "nodeType": "ErrorDefinition", + "src": "791:30:99", + "nodes": [], + "errorSelector": "b0747d81", + "name": "CannotSendToSameChain", + "nameLocation": "797:21:99", + "parameters": { + "id": 41242, + "nodeType": "ParameterList", + "parameters": [], + "src": "818:2:99" + } + }, + { + "id": 41255, "nodeType": "ModifierDefinition", - "src": "823:102:99", + "src": "888:125:99", "nodes": [], "body": { - "id": 41248, + "id": 41254, "nodeType": "Block", - "src": "851:74:99", + "src": "916:97:99", "nodes": [], "statements": [ { - "expression": { - "arguments": [ - { - "id": 41243, - "name": "sendingEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42577, - "src": "869:14:99", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "53656e64696e672069732064697361626c6564", - "id": 41244, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "885:21:99", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_436ec06d7787a61e0375bb38248042d4cacd1c4428d2ace4b77dcc57e78cac0b", - "typeString": "literal_string \"Sending is disabled\"" - }, - "value": "Sending is disabled" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_436ec06d7787a61e0375bb38248042d4cacd1c4428d2ace4b77dcc57e78cac0b", - "typeString": "literal_string \"Sending is disabled\"" - } - ], - "id": 41242, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "861:7:99", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 41245, + "condition": { + "id": 41247, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "861:46:99", - "tryCall": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "930:15:99", + "subExpression": { + "id": 41246, + "name": "sendingEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42585, + "src": "931:14:99", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 41246, - "nodeType": "ExpressionStatement", - "src": "861:46:99" + "id": 41252, + "nodeType": "IfStatement", + "src": "926:70:99", + "trueBody": { + "id": 41251, + "nodeType": "Block", + "src": "947:49:99", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 41248, + "name": "SendingDisabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41241, + "src": "968:15:99", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 41249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "968:17:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41250, + "nodeType": "RevertStatement", + "src": "961:24:99" + } + ] + } }, { - "id": 41247, + "id": 41253, "nodeType": "PlaceholderStatement", - "src": "917:1:99" + "src": "1005:1:99" } ] }, "documentation": { - "id": 41240, + "id": 41244, "nodeType": "StructuredDocumentation", - "src": "762:56:99", + "src": "827:56:99", "text": "@notice Modifier to require that sending is enabled." }, "name": "isSendingEnabled", - "nameLocation": "832:16:99", + "nameLocation": "897:16:99", "parameters": { - "id": 41241, + "id": 41245, "nodeType": "ParameterList", "parameters": [], - "src": "848:2:99" + "src": "913:2:99" }, "virtual": false, "visibility": "internal" }, { - "id": 41291, + "id": 41297, "nodeType": "FunctionDefinition", - "src": "1303:469:99", + "src": "1391:467:99", "nodes": [], "body": { - "id": 41290, + "id": 41296, "nodeType": "Block", - "src": "1465:307:99", + "src": "1553:305:99", "nodes": [], "statements": [ { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41264, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41252, - "src": "1483:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 41265, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "1505:5:99", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 41266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1511:7:99", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "1505:13:99", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1483:35:99", + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41269, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41258, + "src": "1567:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 41270, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "1589:5:99", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_magic_block", + "typeString": "block" } }, - { - "hexValue": "43616e6e6f742073656e6420746f2073616d6520636861696e", - "id": 41268, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1520:27:99", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", - "typeString": "literal_string \"Cannot send to same chain\"" - }, - "value": "Cannot send to same chain" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", - "typeString": "literal_string \"Cannot send to same chain\"" - } - ], - "id": 41263, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1475:7:99", + "id": 41271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1595:7:99", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "1589:13:99", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 41269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1475:73:99", - "tryCall": false, + "src": "1567:35:99", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 41270, - "nodeType": "ExpressionStatement", - "src": "1475:73:99" + "id": 41276, + "nodeType": "IfStatement", + "src": "1563:71:99", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 41273, + "name": "CannotSendToSameChain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41243, + "src": "1611:21:99", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 41274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1611:23:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41275, + "nodeType": "RevertStatement", + "src": "1604:30:99" + } }, { "assignments": [ - 41272, - 41274 + 41278, + 41280 ], "declarations": [ { "constant": false, - "id": 41272, + "id": 41278, "mutability": "mutable", "name": "message", - "nameLocation": "1572:7:99", + "nameLocation": "1658:7:99", "nodeType": "VariableDeclaration", - "scope": 41290, - "src": "1559:20:99", + "scope": 41296, + "src": "1645:20:99", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1449,10 +1473,10 @@ "typeString": "bytes" }, "typeName": { - "id": 41271, + "id": 41277, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1559:5:99", + "src": "1645:5:99", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1462,13 +1486,13 @@ }, { "constant": false, - "id": 41274, + "id": 41280, "mutability": "mutable", "name": "messageRoot", - "nameLocation": "1589:11:99", + "nameLocation": "1675:11:99", "nodeType": "VariableDeclaration", - "scope": 41290, - "src": "1581:19:99", + "scope": 41296, + "src": "1667:19:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1476,10 +1500,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41273, + "id": 41279, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1581:7:99", + "src": "1667:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1488,40 +1512,40 @@ "visibility": "internal" } ], - "id": 41280, + "id": 41286, "initialValue": { "arguments": [ { - "id": 41276, + "id": 41282, "name": "destinationChainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41252, - "src": "1635:18:99", + "referencedDeclaration": 41258, + "src": "1721:18:99", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, { - "id": 41277, + "id": 41283, "name": "destinationAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41254, - "src": "1655:18:99", + "referencedDeclaration": 41260, + "src": "1741:18:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41278, + "id": 41284, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41256, - "src": "1675:4:99", + "referencedDeclaration": 41262, + "src": "1761:4:99", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -1543,18 +1567,18 @@ "typeString": "bytes calldata" } ], - "id": 41275, + "id": 41281, "name": "_getMessageAndRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41472, - "src": "1616:18:99", + "referencedDeclaration": 41478, + "src": "1702:18:99", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" } }, - "id": 41279, + "id": 41285, "isConstant": false, "isLValue": false, "isPure": false, @@ -1563,7 +1587,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1616:64:99", + "src": "1702:64:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", @@ -1571,13 +1595,13 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1558:122:99" + "src": "1644:122:99" }, { "eventCall": { "arguments": [ { - "id": 41283, + "id": 41289, "isConstant": false, "isLValue": false, "isPure": false, @@ -1585,14 +1609,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1707:7:99", + "src": "1793:7:99", "subExpression": { - "id": 41282, + "id": 41288, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42585, - "src": "1707:5:99", + "referencedDeclaration": 42593, + "src": "1793:5:99", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -1604,24 +1628,24 @@ } }, { - "id": 41284, + "id": 41290, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41274, - "src": "1716:11:99", + "referencedDeclaration": 41280, + "src": "1802:11:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41285, + "id": 41291, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41272, - "src": "1729:7:99", + "referencedDeclaration": 41278, + "src": "1815:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1643,18 +1667,18 @@ "typeString": "bytes memory" } ], - "id": 41281, + "id": 41287, "name": "SentMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42654, - "src": "1695:11:99", + "referencedDeclaration": 42662, + "src": "1781:11:99", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (uint64,bytes32,bytes memory)" } }, - "id": 41286, + "id": 41292, "isConstant": false, "isLValue": false, "isPure": false, @@ -1663,44 +1687,44 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1695:42:99", + "src": "1781:42:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41287, + "id": 41293, "nodeType": "EmitStatement", - "src": "1690:47:99" + "src": "1776:47:99" }, { "expression": { - "id": 41288, + "id": 41294, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41274, - "src": "1754:11:99", + "referencedDeclaration": 41280, + "src": "1840:11:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 41262, - "id": 41289, + "functionReturnParameters": 41268, + "id": 41295, "nodeType": "Return", - "src": "1747:18:99" + "src": "1833:18:99" } ] }, "baseFunctions": [ - 42665 + 42673 ], "documentation": { - "id": 41250, + "id": 41256, "nodeType": "StructuredDocumentation", - "src": "931:367:99", + "src": "1019:367:99", "text": "@notice Sends a message to a destination chain.\n @param destinationChainId The chain id that specifies the destination chain.\n @param destinationAddress The contract address that will be called on the destination chain.\n @param data The data passed to the contract on the other chain\n @return bytes32 A unique identifier for a message." }, "functionSelector": "a96a2e92", @@ -1708,37 +1732,37 @@ "kind": "function", "modifiers": [ { - "id": 41259, + "id": 41265, "kind": "modifierInvocation", "modifierName": { - "id": 41258, + "id": 41264, "name": "isSendingEnabled", "nameLocations": [ - "1418:16:99" + "1506:16:99" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 41249, - "src": "1418:16:99" + "referencedDeclaration": 41255, + "src": "1506:16:99" }, "nodeType": "ModifierInvocation", - "src": "1418:16:99" + "src": "1506:16:99" } ], "name": "send", - "nameLocation": "1312:4:99", + "nameLocation": "1400:4:99", "parameters": { - "id": 41257, + "id": 41263, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41252, + "id": 41258, "mutability": "mutable", "name": "destinationChainId", - "nameLocation": "1324:18:99", + "nameLocation": "1412:18:99", "nodeType": "VariableDeclaration", - "scope": 41291, - "src": "1317:25:99", + "scope": 41297, + "src": "1405:25:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1746,10 +1770,10 @@ "typeString": "uint32" }, "typeName": { - "id": 41251, + "id": 41257, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1317:6:99", + "src": "1405:6:99", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1759,13 +1783,13 @@ }, { "constant": false, - "id": 41254, + "id": 41260, "mutability": "mutable", "name": "destinationAddress", - "nameLocation": "1352:18:99", + "nameLocation": "1440:18:99", "nodeType": "VariableDeclaration", - "scope": 41291, - "src": "1344:26:99", + "scope": 41297, + "src": "1432:26:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1773,10 +1797,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41253, + "id": 41259, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1344:7:99", + "src": "1432:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1786,13 +1810,13 @@ }, { "constant": false, - "id": 41256, + "id": 41262, "mutability": "mutable", "name": "data", - "nameLocation": "1387:4:99", + "nameLocation": "1475:4:99", "nodeType": "VariableDeclaration", - "scope": 41291, - "src": "1372:19:99", + "scope": 41297, + "src": "1460:19:99", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -1800,10 +1824,10 @@ "typeString": "bytes" }, "typeName": { - "id": 41255, + "id": 41261, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1372:5:99", + "src": "1460:5:99", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1812,21 +1836,21 @@ "visibility": "internal" } ], - "src": "1316:76:99" + "src": "1404:76:99" }, "returnParameters": { - "id": 41262, + "id": 41268, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41261, + "id": 41267, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 41291, - "src": "1452:7:99", + "scope": 41297, + "src": "1540:7:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1834,10 +1858,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41260, + "id": 41266, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1452:7:99", + "src": "1540:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1846,161 +1870,137 @@ "visibility": "internal" } ], - "src": "1451:9:99" + "src": "1539:9:99" }, - "scope": 41473, + "scope": 41479, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 41335, + "id": 41341, "nodeType": "FunctionDefinition", - "src": "1778:490:99", + "src": "1864:488:99", "nodes": [], "body": { - "id": 41334, + "id": 41340, "nodeType": "Block", - "src": "1940:328:99", + "src": "2026:326:99", "nodes": [], "statements": [ { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41308, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41305, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41293, - "src": "1958:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 41306, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "1980:5:99", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 41307, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1986:7:99", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "1980:13:99", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1958:35:99", + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41310, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41299, + "src": "2040:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 41311, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "2062:5:99", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_magic_block", + "typeString": "block" } }, - { - "hexValue": "43616e6e6f742073656e6420746f2073616d6520636861696e", - "id": 41309, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1995:27:99", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", - "typeString": "literal_string \"Cannot send to same chain\"" - }, - "value": "Cannot send to same chain" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", - "typeString": "literal_string \"Cannot send to same chain\"" - } - ], - "id": 41304, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1950:7:99", + "id": 41312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2068:7:99", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "2062:13:99", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 41310, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1950:73:99", - "tryCall": false, + "src": "2040:35:99", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 41311, - "nodeType": "ExpressionStatement", - "src": "1950:73:99" + "id": 41317, + "nodeType": "IfStatement", + "src": "2036:71:99", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 41314, + "name": "CannotSendToSameChain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41243, + "src": "2084:21:99", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 41315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2084:23:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41316, + "nodeType": "RevertStatement", + "src": "2077:30:99" + } }, { "assignments": [ - 41313, - 41315 + 41319, + 41321 ], "declarations": [ { "constant": false, - "id": 41313, + "id": 41319, "mutability": "mutable", "name": "message", - "nameLocation": "2047:7:99", + "nameLocation": "2131:7:99", "nodeType": "VariableDeclaration", - "scope": 41334, - "src": "2034:20:99", + "scope": 41340, + "src": "2118:20:99", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2008,10 +2008,10 @@ "typeString": "bytes" }, "typeName": { - "id": 41312, + "id": 41318, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2034:5:99", + "src": "2118:5:99", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2021,13 +2021,13 @@ }, { "constant": false, - "id": 41315, + "id": 41321, "mutability": "mutable", "name": "messageRoot", - "nameLocation": "2064:11:99", + "nameLocation": "2148:11:99", "nodeType": "VariableDeclaration", - "scope": 41334, - "src": "2056:19:99", + "scope": 41340, + "src": "2140:19:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2035,10 +2035,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41314, + "id": 41320, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2056:7:99", + "src": "2140:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2047,16 +2047,16 @@ "visibility": "internal" } ], - "id": 41324, + "id": 41330, "initialValue": { "arguments": [ { - "id": 41317, + "id": 41323, "name": "destinationChainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41293, - "src": "2110:18:99", + "referencedDeclaration": 41299, + "src": "2194:18:99", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -2065,12 +2065,12 @@ { "arguments": [ { - "id": 41320, + "id": 41326, "name": "destinationAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41295, - "src": "2150:18:99", + "referencedDeclaration": 41301, + "src": "2234:18:99", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2085,33 +2085,33 @@ } ], "expression": { - "id": 41318, + "id": 41324, "name": "Bytes32", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44265, - "src": "2130:7:99", + "referencedDeclaration": 44339, + "src": "2214:7:99", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Bytes32_$44265_$", + "typeIdentifier": "t_type$_t_contract$_Bytes32_$44339_$", "typeString": "type(library Bytes32)" } }, - "id": 41319, + "id": 41325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2138:11:99", + "memberLocation": "2222:11:99", "memberName": "fromAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 44264, - "src": "2130:19:99", + "referencedDeclaration": 44338, + "src": "2214:19:99", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", "typeString": "function (address) pure returns (bytes32)" } }, - "id": 41321, + "id": 41327, "isConstant": false, "isLValue": false, "isPure": false, @@ -2120,7 +2120,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2130:39:99", + "src": "2214:39:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2128,12 +2128,12 @@ } }, { - "id": 41322, + "id": 41328, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41297, - "src": "2171:4:99", + "referencedDeclaration": 41303, + "src": "2255:4:99", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -2155,18 +2155,18 @@ "typeString": "bytes calldata" } ], - "id": 41316, + "id": 41322, "name": "_getMessageAndRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41472, - "src": "2091:18:99", + "referencedDeclaration": 41478, + "src": "2175:18:99", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" } }, - "id": 41323, + "id": 41329, "isConstant": false, "isLValue": false, "isPure": false, @@ -2175,7 +2175,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2091:85:99", + "src": "2175:85:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", @@ -2183,13 +2183,13 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2033:143:99" + "src": "2117:143:99" }, { "eventCall": { "arguments": [ { - "id": 41327, + "id": 41333, "isConstant": false, "isLValue": false, "isPure": false, @@ -2197,14 +2197,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2203:7:99", + "src": "2287:7:99", "subExpression": { - "id": 41326, + "id": 41332, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42585, - "src": "2203:5:99", + "referencedDeclaration": 42593, + "src": "2287:5:99", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -2216,24 +2216,24 @@ } }, { - "id": 41328, + "id": 41334, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41315, - "src": "2212:11:99", + "referencedDeclaration": 41321, + "src": "2296:11:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41329, + "id": 41335, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41313, - "src": "2225:7:99", + "referencedDeclaration": 41319, + "src": "2309:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2255,18 +2255,18 @@ "typeString": "bytes memory" } ], - "id": 41325, + "id": 41331, "name": "SentMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42654, - "src": "2191:11:99", + "referencedDeclaration": 42662, + "src": "2275:11:99", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (uint64,bytes32,bytes memory)" } }, - "id": 41330, + "id": 41336, "isConstant": false, "isLValue": false, "isPure": false, @@ -2275,76 +2275,76 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2191:42:99", + "src": "2275:42:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41331, + "id": 41337, "nodeType": "EmitStatement", - "src": "2186:47:99" + "src": "2270:47:99" }, { "expression": { - "id": 41332, + "id": 41338, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41315, - "src": "2250:11:99", + "referencedDeclaration": 41321, + "src": "2334:11:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 41303, - "id": 41333, + "functionReturnParameters": 41309, + "id": 41339, "nodeType": "Return", - "src": "2243:18:99" + "src": "2327:18:99" } ] }, "baseFunctions": [ - 42676 + 42684 ], "functionSelector": "68346a92", "implemented": true, "kind": "function", "modifiers": [ { - "id": 41300, + "id": 41306, "kind": "modifierInvocation", "modifierName": { - "id": 41299, + "id": 41305, "name": "isSendingEnabled", "nameLocations": [ - "1893:16:99" + "1979:16:99" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 41249, - "src": "1893:16:99" + "referencedDeclaration": 41255, + "src": "1979:16:99" }, "nodeType": "ModifierInvocation", - "src": "1893:16:99" + "src": "1979:16:99" } ], "name": "send", - "nameLocation": "1787:4:99", + "nameLocation": "1873:4:99", "parameters": { - "id": 41298, + "id": 41304, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41293, + "id": 41299, "mutability": "mutable", "name": "destinationChainId", - "nameLocation": "1799:18:99", + "nameLocation": "1885:18:99", "nodeType": "VariableDeclaration", - "scope": 41335, - "src": "1792:25:99", + "scope": 41341, + "src": "1878:25:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2352,10 +2352,10 @@ "typeString": "uint32" }, "typeName": { - "id": 41292, + "id": 41298, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1792:6:99", + "src": "1878:6:99", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -2365,13 +2365,13 @@ }, { "constant": false, - "id": 41295, + "id": 41301, "mutability": "mutable", "name": "destinationAddress", - "nameLocation": "1827:18:99", + "nameLocation": "1913:18:99", "nodeType": "VariableDeclaration", - "scope": 41335, - "src": "1819:26:99", + "scope": 41341, + "src": "1905:26:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2379,10 +2379,10 @@ "typeString": "address" }, "typeName": { - "id": 41294, + "id": 41300, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1819:7:99", + "src": "1905:7:99", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2393,13 +2393,13 @@ }, { "constant": false, - "id": 41297, + "id": 41303, "mutability": "mutable", "name": "data", - "nameLocation": "1862:4:99", + "nameLocation": "1948:4:99", "nodeType": "VariableDeclaration", - "scope": 41335, - "src": "1847:19:99", + "scope": 41341, + "src": "1933:19:99", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -2407,10 +2407,10 @@ "typeString": "bytes" }, "typeName": { - "id": 41296, + "id": 41302, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1847:5:99", + "src": "1933:5:99", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2419,21 +2419,21 @@ "visibility": "internal" } ], - "src": "1791:76:99" + "src": "1877:76:99" }, "returnParameters": { - "id": 41303, + "id": 41309, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41302, + "id": 41308, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 41335, - "src": "1927:7:99", + "scope": 41341, + "src": "2013:7:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2441,10 +2441,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41301, + "id": 41307, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1927:7:99", + "src": "2013:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2453,161 +2453,137 @@ "visibility": "internal" } ], - "src": "1926:9:99" + "src": "2012:9:99" }, - "scope": 41473, + "scope": 41479, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 41383, + "id": 41389, "nodeType": "FunctionDefinition", - "src": "2830:520:99", + "src": "2914:518:99", "nodes": [], "body": { - "id": 41382, + "id": 41388, "nodeType": "Block", - "src": "3004:346:99", + "src": "3088:344:99", "nodes": [], "statements": [ { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41353, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41350, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41338, - "src": "3022:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 41351, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3044:5:99", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 41352, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3050:7:99", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "3044:13:99", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3022:35:99", + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41355, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41344, + "src": "3102:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 41356, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3124:5:99", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_magic_block", + "typeString": "block" } }, - { - "hexValue": "43616e6e6f742073656e6420746f2073616d6520636861696e", - "id": 41354, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3059:27:99", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", - "typeString": "literal_string \"Cannot send to same chain\"" - }, - "value": "Cannot send to same chain" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", - "typeString": "literal_string \"Cannot send to same chain\"" - } - ], - "id": 41349, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3014:7:99", + "id": 41357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3130:7:99", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "3124:13:99", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 41355, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3014:73:99", - "tryCall": false, + "src": "3102:35:99", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 41356, - "nodeType": "ExpressionStatement", - "src": "3014:73:99" + "id": 41362, + "nodeType": "IfStatement", + "src": "3098:71:99", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 41359, + "name": "CannotSendToSameChain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41243, + "src": "3146:21:99", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 41360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3146:23:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41361, + "nodeType": "RevertStatement", + "src": "3139:30:99" + } }, { "assignments": [ - 41358, - 41360 + 41364, + 41366 ], "declarations": [ { "constant": false, - "id": 41358, + "id": 41364, "mutability": "mutable", "name": "message", - "nameLocation": "3111:7:99", + "nameLocation": "3193:7:99", "nodeType": "VariableDeclaration", - "scope": 41382, - "src": "3098:20:99", + "scope": 41388, + "src": "3180:20:99", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2615,10 +2591,10 @@ "typeString": "bytes" }, "typeName": { - "id": 41357, + "id": 41363, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3098:5:99", + "src": "3180:5:99", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2628,13 +2604,13 @@ }, { "constant": false, - "id": 41360, + "id": 41366, "mutability": "mutable", "name": "messageRoot", - "nameLocation": "3128:11:99", + "nameLocation": "3210:11:99", "nodeType": "VariableDeclaration", - "scope": 41382, - "src": "3120:19:99", + "scope": 41388, + "src": "3202:19:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2642,10 +2618,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41359, + "id": 41365, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3120:7:99", + "src": "3202:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2654,40 +2630,40 @@ "visibility": "internal" } ], - "id": 41366, + "id": 41372, "initialValue": { "arguments": [ { - "id": 41362, + "id": 41368, "name": "destinationChainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41338, - "src": "3174:18:99", + "referencedDeclaration": 41344, + "src": "3256:18:99", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, { - "id": 41363, + "id": 41369, "name": "destinationAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41340, - "src": "3194:18:99", + "referencedDeclaration": 41346, + "src": "3276:18:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41364, + "id": 41370, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41342, - "src": "3214:4:99", + "referencedDeclaration": 41348, + "src": "3296:4:99", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -2709,18 +2685,18 @@ "typeString": "bytes calldata" } ], - "id": 41361, + "id": 41367, "name": "_getMessageAndRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41472, - "src": "3155:18:99", + "referencedDeclaration": 41478, + "src": "3237:18:99", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" } }, - "id": 41365, + "id": 41371, "isConstant": false, "isLValue": false, "isPure": false, @@ -2729,7 +2705,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3155:64:99", + "src": "3237:64:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", @@ -2737,36 +2713,36 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3097:122:99" + "src": "3179:122:99" }, { "expression": { - "id": 41371, + "id": 41377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 41367, + "id": 41373, "name": "messages", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42582, - "src": "3229:8:99", + "referencedDeclaration": 42590, + "src": "3311:8:99", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint64_$_t_bytes32_$", "typeString": "mapping(uint64 => bytes32)" } }, - "id": 41369, + "id": 41375, "indexExpression": { - "id": 41368, + "id": 41374, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42585, - "src": "3238:5:99", + "referencedDeclaration": 42593, + "src": "3320:5:99", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -2777,7 +2753,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3229:15:99", + "src": "3311:15:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2786,32 +2762,32 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 41370, + "id": 41376, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41360, - "src": "3247:11:99", + "referencedDeclaration": 41366, + "src": "3329:11:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "3229:29:99", + "src": "3311:29:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 41372, + "id": 41378, "nodeType": "ExpressionStatement", - "src": "3229:29:99" + "src": "3311:29:99" }, { "eventCall": { "arguments": [ { - "id": 41375, + "id": 41381, "isConstant": false, "isLValue": false, "isPure": false, @@ -2819,14 +2795,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3285:7:99", + "src": "3367:7:99", "subExpression": { - "id": 41374, + "id": 41380, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42585, - "src": "3285:5:99", + "referencedDeclaration": 42593, + "src": "3367:5:99", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -2838,24 +2814,24 @@ } }, { - "id": 41376, + "id": 41382, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41360, - "src": "3294:11:99", + "referencedDeclaration": 41366, + "src": "3376:11:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41377, + "id": 41383, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41358, - "src": "3307:7:99", + "referencedDeclaration": 41364, + "src": "3389:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2877,18 +2853,18 @@ "typeString": "bytes memory" } ], - "id": 41373, + "id": 41379, "name": "SentMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42654, - "src": "3273:11:99", + "referencedDeclaration": 42662, + "src": "3355:11:99", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (uint64,bytes32,bytes memory)" } }, - "id": 41378, + "id": 41384, "isConstant": false, "isLValue": false, "isPure": false, @@ -2897,44 +2873,44 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3273:42:99", + "src": "3355:42:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41379, + "id": 41385, "nodeType": "EmitStatement", - "src": "3268:47:99" + "src": "3350:47:99" }, { "expression": { - "id": 41380, + "id": 41386, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41360, - "src": "3332:11:99", + "referencedDeclaration": 41366, + "src": "3414:11:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 41348, - "id": 41381, + "functionReturnParameters": 41354, + "id": 41387, "nodeType": "Return", - "src": "3325:18:99" + "src": "3407:18:99" } ] }, "baseFunctions": [ - 42687 + 42695 ], "documentation": { - "id": 41336, + "id": 41342, "nodeType": "StructuredDocumentation", - "src": "2274:551:99", + "src": "2358:551:99", "text": "@notice Sends a message to a destination chain.\n @notice This method is more expensive than the `send` method as it requires adding to\n contract storage. Use `send` when interacting with Telepathy to save gas.\n @param destinationChainId The chain id that specifies the destination chain.\n @param destinationAddress The contract address that will be called on the destination chain.\n @param data The data passed to the contract on the other chain\n @return bytes32 A unique identifier for a message." }, "functionSelector": "6fdbccbf", @@ -2942,37 +2918,37 @@ "kind": "function", "modifiers": [ { - "id": 41345, + "id": 41351, "kind": "modifierInvocation", "modifierName": { - "id": 41344, + "id": 41350, "name": "isSendingEnabled", "nameLocations": [ - "2969:16:99" + "3053:16:99" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 41249, - "src": "2969:16:99" + "referencedDeclaration": 41255, + "src": "3053:16:99" }, "nodeType": "ModifierInvocation", - "src": "2969:16:99" + "src": "3053:16:99" } ], "name": "sendViaStorage", - "nameLocation": "2839:14:99", + "nameLocation": "2923:14:99", "parameters": { - "id": 41343, + "id": 41349, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41338, + "id": 41344, "mutability": "mutable", "name": "destinationChainId", - "nameLocation": "2870:18:99", + "nameLocation": "2954:18:99", "nodeType": "VariableDeclaration", - "scope": 41383, - "src": "2863:25:99", + "scope": 41389, + "src": "2947:25:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2980,10 +2956,10 @@ "typeString": "uint32" }, "typeName": { - "id": 41337, + "id": 41343, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "2863:6:99", + "src": "2947:6:99", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -2993,13 +2969,13 @@ }, { "constant": false, - "id": 41340, + "id": 41346, "mutability": "mutable", "name": "destinationAddress", - "nameLocation": "2906:18:99", + "nameLocation": "2990:18:99", "nodeType": "VariableDeclaration", - "scope": 41383, - "src": "2898:26:99", + "scope": 41389, + "src": "2982:26:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3007,10 +2983,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41339, + "id": 41345, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2898:7:99", + "src": "2982:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3020,13 +2996,13 @@ }, { "constant": false, - "id": 41342, + "id": 41348, "mutability": "mutable", "name": "data", - "nameLocation": "2949:4:99", + "nameLocation": "3033:4:99", "nodeType": "VariableDeclaration", - "scope": 41383, - "src": "2934:19:99", + "scope": 41389, + "src": "3018:19:99", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -3034,10 +3010,10 @@ "typeString": "bytes" }, "typeName": { - "id": 41341, + "id": 41347, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2934:5:99", + "src": "3018:5:99", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3046,21 +3022,21 @@ "visibility": "internal" } ], - "src": "2853:106:99" + "src": "2937:106:99" }, "returnParameters": { - "id": 41348, + "id": 41354, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41347, + "id": 41353, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 41383, - "src": "2995:7:99", + "scope": 41389, + "src": "3079:7:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3068,10 +3044,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41346, + "id": 41352, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2995:7:99", + "src": "3079:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3080,161 +3056,137 @@ "visibility": "internal" } ], - "src": "2994:9:99" + "src": "3078:9:99" }, - "scope": 41473, + "scope": 41479, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 41433, + "id": 41439, "nodeType": "FunctionDefinition", - "src": "3356:541:99", + "src": "3438:539:99", "nodes": [], "body": { - "id": 41432, + "id": 41438, "nodeType": "Block", - "src": "3530:367:99", + "src": "3612:365:99", "nodes": [], "statements": [ { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41400, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41397, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41385, - "src": "3548:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 41398, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3570:5:99", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 41399, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3576:7:99", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "3570:13:99", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3548:35:99", + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41402, + "name": "destinationChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41391, + "src": "3626:18:99", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 41403, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3648:5:99", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_magic_block", + "typeString": "block" } }, - { - "hexValue": "43616e6e6f742073656e6420746f2073616d6520636861696e", - "id": 41401, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3585:27:99", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", - "typeString": "literal_string \"Cannot send to same chain\"" - }, - "value": "Cannot send to same chain" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9c201e2d68184166e9e97086ced931fd447680eba104235f10355063aa682b1f", - "typeString": "literal_string \"Cannot send to same chain\"" - } - ], - "id": 41396, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3540:7:99", + "id": 41404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3654:7:99", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "3648:13:99", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 41402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3540:73:99", - "tryCall": false, + "src": "3626:35:99", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 41403, - "nodeType": "ExpressionStatement", - "src": "3540:73:99" + "id": 41409, + "nodeType": "IfStatement", + "src": "3622:71:99", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 41406, + "name": "CannotSendToSameChain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41243, + "src": "3670:21:99", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 41407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3670:23:99", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41408, + "nodeType": "RevertStatement", + "src": "3663:30:99" + } }, { "assignments": [ - 41405, - 41407 + 41411, + 41413 ], "declarations": [ { "constant": false, - "id": 41405, + "id": 41411, "mutability": "mutable", "name": "message", - "nameLocation": "3637:7:99", + "nameLocation": "3717:7:99", "nodeType": "VariableDeclaration", - "scope": 41432, - "src": "3624:20:99", + "scope": 41438, + "src": "3704:20:99", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3242,10 +3194,10 @@ "typeString": "bytes" }, "typeName": { - "id": 41404, + "id": 41410, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3624:5:99", + "src": "3704:5:99", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3255,13 +3207,13 @@ }, { "constant": false, - "id": 41407, + "id": 41413, "mutability": "mutable", "name": "messageRoot", - "nameLocation": "3654:11:99", + "nameLocation": "3734:11:99", "nodeType": "VariableDeclaration", - "scope": 41432, - "src": "3646:19:99", + "scope": 41438, + "src": "3726:19:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3269,10 +3221,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41406, + "id": 41412, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3646:7:99", + "src": "3726:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3281,16 +3233,16 @@ "visibility": "internal" } ], - "id": 41416, + "id": 41422, "initialValue": { "arguments": [ { - "id": 41409, + "id": 41415, "name": "destinationChainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41385, - "src": "3700:18:99", + "referencedDeclaration": 41391, + "src": "3780:18:99", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -3299,12 +3251,12 @@ { "arguments": [ { - "id": 41412, + "id": 41418, "name": "destinationAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41387, - "src": "3740:18:99", + "referencedDeclaration": 41393, + "src": "3820:18:99", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3319,33 +3271,33 @@ } ], "expression": { - "id": 41410, + "id": 41416, "name": "Bytes32", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44265, - "src": "3720:7:99", + "referencedDeclaration": 44339, + "src": "3800:7:99", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Bytes32_$44265_$", + "typeIdentifier": "t_type$_t_contract$_Bytes32_$44339_$", "typeString": "type(library Bytes32)" } }, - "id": 41411, + "id": 41417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3728:11:99", + "memberLocation": "3808:11:99", "memberName": "fromAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 44264, - "src": "3720:19:99", + "referencedDeclaration": 44338, + "src": "3800:19:99", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", "typeString": "function (address) pure returns (bytes32)" } }, - "id": 41413, + "id": 41419, "isConstant": false, "isLValue": false, "isPure": false, @@ -3354,7 +3306,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3720:39:99", + "src": "3800:39:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3362,12 +3314,12 @@ } }, { - "id": 41414, + "id": 41420, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41389, - "src": "3761:4:99", + "referencedDeclaration": 41395, + "src": "3841:4:99", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -3389,18 +3341,18 @@ "typeString": "bytes calldata" } ], - "id": 41408, + "id": 41414, "name": "_getMessageAndRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41472, - "src": "3681:18:99", + "referencedDeclaration": 41478, + "src": "3761:18:99", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" } }, - "id": 41415, + "id": 41421, "isConstant": false, "isLValue": false, "isPure": false, @@ -3409,7 +3361,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3681:85:99", + "src": "3761:85:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", @@ -3417,36 +3369,36 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3623:143:99" + "src": "3703:143:99" }, { "expression": { - "id": 41421, + "id": 41427, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 41417, + "id": 41423, "name": "messages", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42582, - "src": "3776:8:99", + "referencedDeclaration": 42590, + "src": "3856:8:99", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint64_$_t_bytes32_$", "typeString": "mapping(uint64 => bytes32)" } }, - "id": 41419, + "id": 41425, "indexExpression": { - "id": 41418, + "id": 41424, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42585, - "src": "3785:5:99", + "referencedDeclaration": 42593, + "src": "3865:5:99", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -3457,7 +3409,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3776:15:99", + "src": "3856:15:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3466,32 +3418,32 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 41420, + "id": 41426, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41407, - "src": "3794:11:99", + "referencedDeclaration": 41413, + "src": "3874:11:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "3776:29:99", + "src": "3856:29:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 41422, + "id": 41428, "nodeType": "ExpressionStatement", - "src": "3776:29:99" + "src": "3856:29:99" }, { "eventCall": { "arguments": [ { - "id": 41425, + "id": 41431, "isConstant": false, "isLValue": false, "isPure": false, @@ -3499,14 +3451,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3832:7:99", + "src": "3912:7:99", "subExpression": { - "id": 41424, + "id": 41430, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42585, - "src": "3832:5:99", + "referencedDeclaration": 42593, + "src": "3912:5:99", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -3518,24 +3470,24 @@ } }, { - "id": 41426, + "id": 41432, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41407, - "src": "3841:11:99", + "referencedDeclaration": 41413, + "src": "3921:11:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41427, + "id": 41433, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41405, - "src": "3854:7:99", + "referencedDeclaration": 41411, + "src": "3934:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3557,18 +3509,18 @@ "typeString": "bytes memory" } ], - "id": 41423, + "id": 41429, "name": "SentMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42654, - "src": "3820:11:99", + "referencedDeclaration": 42662, + "src": "3900:11:99", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (uint64,bytes32,bytes memory)" } }, - "id": 41428, + "id": 41434, "isConstant": false, "isLValue": false, "isPure": false, @@ -3577,76 +3529,76 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3820:42:99", + "src": "3900:42:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41429, + "id": 41435, "nodeType": "EmitStatement", - "src": "3815:47:99" + "src": "3895:47:99" }, { "expression": { - "id": 41430, + "id": 41436, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41407, - "src": "3879:11:99", + "referencedDeclaration": 41413, + "src": "3959:11:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 41395, - "id": 41431, + "functionReturnParameters": 41401, + "id": 41437, "nodeType": "Return", - "src": "3872:18:99" + "src": "3952:18:99" } ] }, "baseFunctions": [ - 42698 + 42706 ], "functionSelector": "147bce49", "implemented": true, "kind": "function", "modifiers": [ { - "id": 41392, + "id": 41398, "kind": "modifierInvocation", "modifierName": { - "id": 41391, + "id": 41397, "name": "isSendingEnabled", "nameLocations": [ - "3495:16:99" + "3577:16:99" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 41249, - "src": "3495:16:99" + "referencedDeclaration": 41255, + "src": "3577:16:99" }, "nodeType": "ModifierInvocation", - "src": "3495:16:99" + "src": "3577:16:99" } ], "name": "sendViaStorage", - "nameLocation": "3365:14:99", + "nameLocation": "3447:14:99", "parameters": { - "id": 41390, + "id": 41396, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41385, + "id": 41391, "mutability": "mutable", "name": "destinationChainId", - "nameLocation": "3396:18:99", + "nameLocation": "3478:18:99", "nodeType": "VariableDeclaration", - "scope": 41433, - "src": "3389:25:99", + "scope": 41439, + "src": "3471:25:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3654,10 +3606,10 @@ "typeString": "uint32" }, "typeName": { - "id": 41384, + "id": 41390, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "3389:6:99", + "src": "3471:6:99", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -3667,13 +3619,13 @@ }, { "constant": false, - "id": 41387, + "id": 41393, "mutability": "mutable", "name": "destinationAddress", - "nameLocation": "3432:18:99", + "nameLocation": "3514:18:99", "nodeType": "VariableDeclaration", - "scope": 41433, - "src": "3424:26:99", + "scope": 41439, + "src": "3506:26:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3681,10 +3633,10 @@ "typeString": "address" }, "typeName": { - "id": 41386, + "id": 41392, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3424:7:99", + "src": "3506:7:99", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3695,13 +3647,13 @@ }, { "constant": false, - "id": 41389, + "id": 41395, "mutability": "mutable", "name": "data", - "nameLocation": "3475:4:99", + "nameLocation": "3557:4:99", "nodeType": "VariableDeclaration", - "scope": 41433, - "src": "3460:19:99", + "scope": 41439, + "src": "3542:19:99", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -3709,10 +3661,10 @@ "typeString": "bytes" }, "typeName": { - "id": 41388, + "id": 41394, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3460:5:99", + "src": "3542:5:99", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3721,21 +3673,21 @@ "visibility": "internal" } ], - "src": "3379:106:99" + "src": "3461:106:99" }, "returnParameters": { - "id": 41395, + "id": 41401, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41394, + "id": 41400, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 41433, - "src": "3521:7:99", + "scope": 41439, + "src": "3603:7:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3743,10 +3695,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41393, + "id": 41399, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3521:7:99", + "src": "3603:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3755,38 +3707,38 @@ "visibility": "internal" } ], - "src": "3520:9:99" + "src": "3602:9:99" }, - "scope": 41473, + "scope": 41479, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 41472, + "id": 41478, "nodeType": "FunctionDefinition", - "src": "4455:497:99", + "src": "4535:497:99", "nodes": [], "body": { - "id": 41471, + "id": 41477, "nodeType": "Block", - "src": "4660:292:99", + "src": "4740:292:99", "nodes": [], "statements": [ { "expression": { - "id": 41463, + "id": 41469, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 41447, + "id": 41453, "name": "messageBytes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41443, - "src": "4670:12:99", + "referencedDeclaration": 41449, + "src": "4750:12:99", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3797,24 +3749,24 @@ "rightHandSide": { "arguments": [ { - "id": 41450, + "id": 41456, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42614, - "src": "4721:7:99", + "referencedDeclaration": 42622, + "src": "4801:7:99", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { - "id": 41451, + "id": 41457, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42585, - "src": "4742:5:99", + "referencedDeclaration": 42593, + "src": "4822:5:99", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -3824,26 +3776,26 @@ "arguments": [ { "expression": { - "id": 41454, + "id": 41460, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "4768:5:99", + "src": "4848:5:99", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 41455, + "id": 41461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4774:7:99", + "memberLocation": "4854:7:99", "memberName": "chainid", "nodeType": "MemberAccess", - "src": "4768:13:99", + "src": "4848:13:99", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3857,26 +3809,26 @@ "typeString": "uint256" } ], - "id": 41453, + "id": 41459, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4761:6:99", + "src": "4841:6:99", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)" }, "typeName": { - "id": 41452, + "id": 41458, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "4761:6:99", + "src": "4841:6:99", "typeDescriptions": {} } }, - "id": 41456, + "id": 41462, "isConstant": false, "isLValue": false, "isPure": false, @@ -3885,7 +3837,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4761:21:99", + "src": "4841:21:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3894,62 +3846,62 @@ }, { "expression": { - "id": 41457, + "id": 41463, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "4796:3:99", + "src": "4876:3:99", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 41458, + "id": 41464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4800:6:99", + "memberLocation": "4880:6:99", "memberName": "sender", "nodeType": "MemberAccess", - "src": "4796:10:99", + "src": "4876:10:99", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 41459, + "id": 41465, "name": "destinationChainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41436, - "src": "4820:18:99", + "referencedDeclaration": 41442, + "src": "4900:18:99", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, { - "id": 41460, + "id": 41466, "name": "destinationAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41438, - "src": "4852:18:99", + "referencedDeclaration": 41444, + "src": "4932:18:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41461, + "id": 41467, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41440, - "src": "4884:4:99", + "referencedDeclaration": 41446, + "src": "4964:4:99", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -3988,33 +3940,33 @@ } ], "expression": { - "id": 41448, + "id": 41454, "name": "MessageEncoding", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43343, - "src": "4685:15:99", + "referencedDeclaration": 43383, + "src": "4765:15:99", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MessageEncoding_$43343_$", + "typeIdentifier": "t_type$_t_contract$_MessageEncoding_$43383_$", "typeString": "type(library MessageEncoding)" } }, - "id": 41449, + "id": 41455, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4701:6:99", + "memberLocation": "4781:6:99", "memberName": "encode", "nodeType": "MemberAccess", - "referencedDeclaration": 43264, - "src": "4685:22:99", + "referencedDeclaration": 43304, + "src": "4765:22:99", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint8_$_t_uint64_$_t_uint32_$_t_address_$_t_uint32_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint8,uint64,uint32,address,uint32,bytes32,bytes memory) pure returns (bytes memory)" } }, - "id": 41462, + "id": 41468, "isConstant": false, "isLValue": false, "isPure": false, @@ -4023,37 +3975,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4685:213:99", + "src": "4765:213:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "src": "4670:228:99", + "src": "4750:228:99", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 41464, + "id": 41470, "nodeType": "ExpressionStatement", - "src": "4670:228:99" + "src": "4750:228:99" }, { "expression": { - "id": 41469, + "id": 41475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 41465, + "id": 41471, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41445, - "src": "4908:11:99", + "referencedDeclaration": 41451, + "src": "4988:11:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4064,12 +4016,12 @@ "rightHandSide": { "arguments": [ { - "id": 41467, + "id": 41473, "name": "messageBytes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41443, - "src": "4932:12:99", + "referencedDeclaration": 41449, + "src": "5012:12:99", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4083,18 +4035,18 @@ "typeString": "bytes memory" } ], - "id": 41466, + "id": 41472, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "4922:9:99", + "src": "5002:9:99", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 41468, + "id": 41474, "isConstant": false, "isLValue": false, "isPure": false, @@ -4103,49 +4055,49 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4922:23:99", + "src": "5002:23:99", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "4908:37:99", + "src": "4988:37:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 41470, + "id": 41476, "nodeType": "ExpressionStatement", - "src": "4908:37:99" + "src": "4988:37:99" } ] }, "documentation": { - "id": 41434, + "id": 41440, "nodeType": "StructuredDocumentation", - "src": "3903:547:99", + "src": "3983:547:99", "text": "@notice Gets the message and message root from the user-provided arguments to `send`\n @param destinationChainId The chain id that specifies the destination chain.\n @param destinationAddress The contract address that will be called on the destination chain.\n @param data The calldata used when calling the contract on the destination chain.\n @return messageBytes The message encoded as bytes, used in SentMessage event.\n @return messageRoot The hash of messageBytes, used as a unique identifier for a message." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_getMessageAndRoot", - "nameLocation": "4464:18:99", + "nameLocation": "4544:18:99", "parameters": { - "id": 41441, + "id": 41447, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41436, + "id": 41442, "mutability": "mutable", "name": "destinationChainId", - "nameLocation": "4499:18:99", + "nameLocation": "4579:18:99", "nodeType": "VariableDeclaration", - "scope": 41472, - "src": "4492:25:99", + "scope": 41478, + "src": "4572:25:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4153,10 +4105,10 @@ "typeString": "uint32" }, "typeName": { - "id": 41435, + "id": 41441, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "4492:6:99", + "src": "4572:6:99", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -4166,13 +4118,13 @@ }, { "constant": false, - "id": 41438, + "id": 41444, "mutability": "mutable", "name": "destinationAddress", - "nameLocation": "4535:18:99", + "nameLocation": "4615:18:99", "nodeType": "VariableDeclaration", - "scope": 41472, - "src": "4527:26:99", + "scope": 41478, + "src": "4607:26:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4180,10 +4132,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41437, + "id": 41443, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4527:7:99", + "src": "4607:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4193,13 +4145,13 @@ }, { "constant": false, - "id": 41440, + "id": 41446, "mutability": "mutable", "name": "data", - "nameLocation": "4578:4:99", + "nameLocation": "4658:4:99", "nodeType": "VariableDeclaration", - "scope": 41472, - "src": "4563:19:99", + "scope": 41478, + "src": "4643:19:99", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -4207,10 +4159,10 @@ "typeString": "bytes" }, "typeName": { - "id": 41439, + "id": 41445, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4563:5:99", + "src": "4643:5:99", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4219,21 +4171,21 @@ "visibility": "internal" } ], - "src": "4482:106:99" + "src": "4562:106:99" }, "returnParameters": { - "id": 41446, + "id": 41452, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41443, + "id": 41449, "mutability": "mutable", "name": "messageBytes", - "nameLocation": "4625:12:99", + "nameLocation": "4705:12:99", "nodeType": "VariableDeclaration", - "scope": 41472, - "src": "4612:25:99", + "scope": 41478, + "src": "4692:25:99", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4241,10 +4193,10 @@ "typeString": "bytes" }, "typeName": { - "id": 41442, + "id": 41448, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4612:5:99", + "src": "4692:5:99", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4254,13 +4206,13 @@ }, { "constant": false, - "id": 41445, + "id": 41451, "mutability": "mutable", "name": "messageRoot", - "nameLocation": "4647:11:99", + "nameLocation": "4727:11:99", "nodeType": "VariableDeclaration", - "scope": 41472, - "src": "4639:19:99", + "scope": 41478, + "src": "4719:19:99", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4268,10 +4220,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41444, + "id": 41450, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4639:7:99", + "src": "4719:7:99", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4280,9 +4232,9 @@ "visibility": "internal" } ], - "src": "4611:48:99" + "src": "4691:48:99" }, - "scope": 41473, + "scope": 41479, "stateMutability": "view", "virtual": false, "visibility": "internal" @@ -4298,7 +4250,7 @@ "721:16:99" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42625, + "referencedDeclaration": 42633, "src": "721:16:99" }, "id": 41237, @@ -4313,7 +4265,7 @@ "739:16:99" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42699, + "referencedDeclaration": 42707, "src": "739:16:99" }, "id": 41239, @@ -4332,14 +4284,17 @@ }, "fullyImplemented": true, "linearizedBaseContracts": [ - 41473, - 42699, - 42625 + 41479, + 42707, + 42633 ], "name": "SourceAMB", "nameLocation": "708:9:99", - "scope": 41474, - "usedErrors": [] + "scope": 41480, + "usedErrors": [ + 41241, + 41243 + ] } ] }, diff --git a/out/TargetAMB.sol/TargetAMB.json b/out/TargetAMB.sol/TargetAMB.json index d478da0..38917d2 100644 --- a/out/TargetAMB.sol/TargetAMB.json +++ b/out/TargetAMB.sol/TargetAMB.json @@ -321,14 +321,32 @@ } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b50613ccb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd36600461345f565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61014561013036600461347a565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b6101686101633660046135da565b6102c6565b005b61018d6101783660046136d7565b60076020526000908152604090205460ff1681565b6040516101199190613706565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc36600461347a565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d36600461347a565b6004602052600090815260409020546001600160a01b031681565b61016861024636600461372e565b610594565b61010f6102593660046136d7565b60096020526000908152604090205481565b61027e6102793660046136d7565b6108b7565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f1565b6000806102db8b8b61094a565b915091506102ec8260400151610bb4565b6102f98260400151610ce6565b6000808e8e81019061030b91906137d8565b9150915061031d828560400151610d42565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac919061380b565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b600061043c8b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610f7b565b90508061048b5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f08787906104a19190613824565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac6002611123565b90508181146105395760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061057b82828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114d692505050565b50506105876001603355565b5050505050505050505050565b61059c6108f1565b6000806105a9888861094a565b915091506105ba8260400151610bb4565b6105c78260400151610ce6565b6105d5898360400151610d42565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c8401528351808403820181529284018452825192810192909220808252600990925291822054820361078c5760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106eb919061380b565b9050600081900361073e5760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b61077261074b898b613824565b60408088015163ffffffff166000908152600560205220546001600160a01b03168361167d565b6000838152600960205260409020819055925061079e9050565b60008181526009602052604090205491505b6000846020015160016040516020016107cc9291906001600160401b03929092168252602082015260400190565b60408051808303601f19018152828252805160209182012081840152815180840382018152928201909152815191012090506000610814828561080f8a8c613824565b611779565b905084811461085d5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a282828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114d692505050565b50506108ae6001603355565b50505050505050565b600381815481106108c757600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109435760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109c785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061181592505050565b9050600085856040516109db9291906138a7565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0a57610a0a6136f0565b14610a575760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610a9f5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610ae95760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b34575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610ba75760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1a5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9791906138b7565b610ce35760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce35760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610da85760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e35919061380b565b600003610e845760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061380b565b610f1890426138ef565b90506078811015610f765760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b600080826001600160401b0316846001600160401b031603610fb95750600b610fa681610200613902565b610fb290610183613921565b905061110c565b612000610fc68486613934565b6001600160401b0316116110285750600b610fe2816020613902565b610fed906006613921565b90506110046120006001600160401b038516613971565b61101061200083613902565b61101a9190613921565b9050610fa681610200613902565b836001600160401b0316836001600160401b031610156110ba5750600b611050816020613902565b61105b906007613921565b9050611068816002613902565b611073906000613921565b905061108a6120006001600160401b038516613985565b611098630100000083613902565b6110a29190613921565b90506110af816002613902565b610fed906001613921565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016103ef565b611118878288886118da565b979650505050505050565b600080611131878a8a6118f4565b905060008160008151811061114857611148613999565b01602001516001600160f81b03191690506000600160f81b82148061117a5750600160f91b6001600160f81b03198316145b15611187575060016111ec565b600360fe1b6001600160f81b03198316106111a4575060006111ec565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b60006020840190506000604051806040016040528084875161120e91906138ef565b815260200161121d8585613921565b90529050600061122c82612194565b905080516004146112785760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b600061129d8260038151811061129057611290613999565b6020026020010151612194565b905080518c106112ef5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b6000611306828e8151811061129057611290613999565b905080516003146113645760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006113898260008151811061137c5761137c613999565b60200260200101516123b9565b90508c6001600160a01b0316816001600160a01b0316146113fc5760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b60006114148360018151811061129057611290613999565b90508c61143a8260008151811061142d5761142d613999565b602002602001015161242d565b1461149d5760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b6114bf818d815181106114b2576114b2613999565b6020026020010151612434565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401611505939291906139ff565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516115579190613a2f565b6000604051808303816000865af19150503d8060008114611594576040519150601f19603f3d011682016040523d82523d6000602084013e611599565b606091505b50805191955093506000925060200390506115db576000828060200190518101906115c49190613a4b565b6001600160e01b031916631dee306b60e11b149150505b8280156115e55750805b15611608576000858152600760205260409020805460ff19166002179055611622565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe8947878760405161166d929190613a75565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006116e7826040516020016116d191815260200190565b60405160208183030381529060405287866118f4565b905060008151116117335760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b600061174661174183612537565b612194565b9050805160041461175657600080fd5b61176c8160028151811061142d5761142d613999565b93505050505b9392505050565b6000806117a88560405160200161179291815260200190565b60405160208183030381529060405284866118f4565b905060008151116117fb5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b61180c61180782612537565b61242d565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916118c9918a91906118c49082906138ef565b61258a565b60c088015250949695505050505050565b6000806118e8868686612676565b90921495945050505050565b6060600084511161193f5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b600061194a84612805565b90506000611957866128f3565b905060008460405160200161196e91815260200190565b60405160208183030381529060405290506000805b845181101561213d5760008582815181106119a0576119a0613999565b602002602001015190508451831115611a125760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611ab15780518051602091820120604051611a6092611a3a92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611aac5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611ba7565b805151602011611b375780518051602091820120604051611adb92611a3a92910190815260200190565b611aac5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611ba75760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611bb360106001613921565b81602001515103611d605784518303611cf8576000611bef8260200151601081518110611be257611be2613999565b6020026020010151612a0d565b90506000815111611c685760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611c7691906138ef565b8314611cea5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b965061177295505050505050565b6000858481518110611d0c57611d0c613999565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611d3757611d37613999565b60200260200101519050611d4a81612b30565b9550611d57600186613921565b9450505061212a565b6002816020015151036120d1576000611d7882612b55565b9050600081600081518110611d8f57611d8f613999565b016020015160f81c90506000611da6600283613a99565b611db1906002613abb565b90506000611dc2848360ff16612b79565b90506000611dd08a89612b79565b90506000611dde8383612baf565b905080835114611e565760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611e6b575060ff85166003145b156120115780825114611ee65760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611f028860200151600181518110611be257611be2613999565b90506000815111611f7b5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d51611f8991906138ef565b8914611ffd5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c506117729b505050505050505050505050565b60ff85161580612024575060ff85166001145b1561206357612050876020015160018151811061204357612043613999565b6020026020010151612b30565b995061205c818a613921565b98506120c6565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b50505050505061212a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b508061213581613ad4565b915050611983565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b606060008060006121a485612c2e565b9194509250905060018160018111156121bf576121bf6136f0565b146122325760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b845161223e8385613921565b146122a65760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816122bf5790505090506000845b87518110156123ad576000806123326040518060400160405280858d6000015161231691906138ef565b8152602001858d6020015161232b9190613921565b9052612c2e565b50915091506040518060400160405280838361234e9190613921565b8152602001848c602001516123639190613921565b81525085858151811061237857612378613999565b602090810291909101015261238e600185613921565b935061239a8183613921565b6123a49084613921565b925050506122ec565b50815295945050505050565b80516000906001036123cd57506000919050565b815160151461241e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b6124278261242d565b92915050565b6000612427825b600060218260000151111561248b5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061249985612c2e565b9194509250905060008160018111156124b4576124b46136f0565b146125015760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125139190613921565b8051909150602084101561252d5760208490036101000a90045b9695505050505050565b6040805180820190915260008082526020820152600082511161256c5760405162461bcd60e51b81526004016103ef90613aed565b50604080518082019091528151815260209182019181019190915290565b60608161259881601f613921565b10156125b65760405162461bcd60e51b81526004016103ef90613b5d565b6125c08284613921565b845110156126045760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b606082158015612623576040519150600082526020820160405261266d565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561265c578051835260209283019201612644565b5050858452601f01601f1916604052505b50949350505050565b600082825160016126879190613921565b612692906002613c69565b1161269c57600080fd5b8360005b8460011461266d576126b3600286613971565b6001036127525760028482815181106126ce576126ce613999565b6020026020010151836040516020016126f1929190918252602082015260400190565b60408051601f198184030181529082905261270b91613a2f565b602060405180830381855afa158015612728573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061274b919061380b565b91506127e6565b60028285838151811061276757612767613999565b6020026020010151604051602001612789929190918252602082015260400190565b60408051601f19818403018152908290526127a391613a2f565b602060405180830381855afa1580156127c0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127e3919061380b565b91505b6127f1600286613985565b9450806127fd81613ad4565b9150506126a0565b80516060906000816001600160401b0381111561282457612824613525565b60405190808252806020026020018201604052801561286957816020015b60408051808201909152606080825260208201528152602001906001900390816128425790505b50905060005b828110156128eb57604051806040016040528086838151811061289457612894613999565b602002602001015181526020016128c38784815181106128b6576128b6613999565b60200260200101516132f1565b8152508282815181106128d8576128d8613999565b602090810291909101015260010161286f565b509392505050565b80516060906000612905826002613902565b6001600160401b0381111561291c5761291c613525565b6040519080825280601f01601f191660200182016040528015612946576020820181803683370190505b5090506000805b83811015612a035785818151811061296757612967613999565b6020910101516001600160f81b03198116925060041c60ff60f41b168361298f836002613902565b8151811061299f5761299f613999565b60200101906001600160f81b031916908160001a905350600f60f81b8216836129c9836002613902565b6129d4906001613921565b815181106129e4576129e4613999565b60200101906001600160f81b031916908160001a90535060010161294d565b5090949350505050565b60606000806000612a1d85612c2e565b919450925090506000816001811115612a3857612a386136f0565b14612aab5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612ab58284613921565b855114612b215760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b61180c856020015184846132ff565b60606020826000015110612b4c57612b4782612a0d565b612427565b6124278261339f565b6060612427612b748360200151600081518110611be257611be2613999565b6128f3565b606082518210612b985750604080516020810190915260008152612427565b6117728383848651612baa91906138ef565b6133b5565b60008060008351855110612bc4578351612bc7565b84515b90505b8082108015612c1e5750838281518110612be657612be6613999565b602001015160f81c60f81b6001600160f81b031916858381518110612c0d57612c0d613999565b01602001516001600160f81b031916145b156128eb57816001019150612bca565b600080600080846000015111612c565760405162461bcd60e51b81526004016103ef90613aed565b6020840151805160001a607f8111612c7b5760006001600094509450945050506132ea565b60b78111612dd8576000612c906080836138ef565b905080876000015111612d105760405162461bcd60e51b815260206004820152604e6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612d3d5750600160ff1b6001600160f81b0319821610155b612dc55760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b50600195509350600092506132ea915050565b60bf8111613019576000612ded60b7836138ef565b905080876000015111612e705760405162461bcd60e51b81526020600482015260516024820152600080516020613c7683398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612ef75760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c60378111612f7a5760405162461bcd60e51b81526020600482015260486024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b612f848184613921565b895111612ffc5760405162461bcd60e51b815260206004820152604c6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b613007836001613921565b97509550600094506132ea9350505050565b60f781116130bb57600061302e60c0836138ef565b9050808760000151116130aa5760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b6001955093508492506132ea915050565b60006130c860f7836138ef565b9050808760000151116131475760405162461bcd60e51b815260206004820152604d6024820152600080516020613c7683398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036131cc5760405162461bcd60e51b81526020600482015260486024820152600080516020613c7683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c6037811161324d5760405162461bcd60e51b81526020600482015260466024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6132578184613921565b8951116132cd5760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b6132d8836001613921565b97509550600194506132ea9350505050565b9193909250565b606061242761174183612537565b60606000826001600160401b0381111561331b5761331b613525565b6040519080825280601f01601f191660200182016040528015613345576020820181803683370190505b50905082600003613357579050611772565b60006133638587613921565b90506020820160005b8581101561338457828101518282015260200161336c565b85811115613393576000868301525b50919695505050505050565b60606124278260200151600084600001516132ff565b60608182601f0110156133da5760405162461bcd60e51b81526004016103ef90613b5d565b8282840110156133fc5760405162461bcd60e51b81526004016103ef90613b5d565b818301845110156126045760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461345a57600080fd5b919050565b60006020828403121561347157600080fd5b61177282613443565b60006020828403121561348c57600080fd5b813563ffffffff8116811461177257600080fd5b60008083601f8401126134b257600080fd5b5081356001600160401b038111156134c957600080fd5b602083019150836020828501011115610bad57600080fd5b60008083601f8401126134f357600080fd5b5081356001600160401b0381111561350a57600080fd5b6020830191508360208260051b8501011115610bad57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561356357613563613525565b604052919050565b600082601f83011261357c57600080fd5b81356001600160401b0381111561359557613595613525565b6135a8601f8201601f191660200161353b565b8181528460208386010111156135bd57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156135fb57600080fd5b6001600160401b03808d35111561361157600080fd5b61361e8e8e358f016134a0565b909c509a5060208d013581101561363457600080fd5b6136448e60208f01358f016134a0565b909a50985060408d013581101561365a57600080fd5b61366a8e60408f01358f016134e1565b909850965060608d0135955060808d013581101561368757600080fd5b6136978e60808f01358f016134e1565b909550935060a08d01358110156136ad57600080fd5b506136be8d60a08e01358e0161356b565b915060c08c013590509295989b509295989b9093969950565b6000602082840312156136e957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061372857634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561374957600080fd5b61375288613443565b965060208801356001600160401b038082111561376e57600080fd5b61377a8b838c016134a0565b909850965060408a013591508082111561379357600080fd5b61379f8b838c016134e1565b909650945060608a01359150808211156137b857600080fd5b506137c58a828b016134e1565b989b979a50959850939692959293505050565b600080604083850312156137eb57600080fd5b6137f483613443565b915061380260208401613443565b90509250929050565b60006020828403121561381d57600080fd5b5051919050565b60006001600160401b038084111561383e5761383e613525565b8360051b602061384f81830161353b565b86815291850191818101903684111561386757600080fd5b865b8481101561389b578035868111156138815760008081fd5b61388d36828b0161356b565b845250918301918301613869565b50979650505050505050565b8183823760009101908152919050565b6000602082840312156138c957600080fd5b8151801515811461177257600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612427576124276138d9565b600081600019048311821515161561391c5761391c6138d9565b500290565b80820180821115612427576124276138d9565b6001600160401b03828116828216039080821115613954576139546138d9565b5092915050565b634e487b7160e01b600052601260045260246000fd5b6000826139805761398061395b565b500690565b6000826139945761399461395b565b500490565b634e487b7160e01b600052603260045260246000fd5b60005b838110156139ca5781810151838201526020016139b2565b50506000910152565b600081518084526139eb8160208601602086016139af565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061180c908301846139d3565b60008251613a418184602087016139af565b9190910192915050565b600060208284031215613a5d57600080fd5b81516001600160e01b03198116811461177257600080fd5b604081526000613a8860408301856139d3565b905082151560208301529392505050565b600060ff831680613aac57613aac61395b565b8060ff84160691505092915050565b60ff8281168282160390811115612427576124276138d9565b600060018201613ae657613ae66138d9565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613bc0578160001904821115613ba657613ba66138d9565b80851615613bb357918102915b93841c9390800290613b8a565b509250929050565b600082613bd757506001612427565b81613be457506000612427565b8160018114613bfa5760028114613c0457613c20565b6001915050612427565b60ff841115613c1557613c156138d9565b50506001821b612427565b5060208310610133831016604e8410600b8410161715613c43575081810a612427565b613c4d8383613b85565b8060001904821115613c6157613c616138d9565b029392505050565b60006117728383613bc856fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212206a97625bc300e9ead0f59393fd498c078655fa8c3a42ebddbe4432362362406464736f6c63430008100033", - "sourceMap": "748:10128:100:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} + "object": "0x608060405234801561001057600080fd5b50613da4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd366004613538565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610145610130366004613553565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b6101686101633660046136b3565b6102c6565b005b61018d6101783660046137b0565b60076020526000908152604090205460ff1681565b60405161011991906137df565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc366004613553565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d366004613553565b6004602052600090815260409020546001600160a01b031681565b610168610246366004613807565b610599565b61010f6102593660046137b0565b60096020526000908152604090205481565b61027e6102793660046137b0565b6108bc565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f6565b6000806102db8b8b61094f565b915091506102ec8260400151610bb9565b6102f98260400151610ceb565b6000808e8e81019061030b91906138b1565b9150915061031d828560400151610d47565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac91906138e4565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104418b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890610f80565b9050806104905760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f58787906104a691906138fd565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026111fc565b905081811461053e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061058082828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115af92505050565b505061058c6001603355565b5050505050505050505050565b6105a16108f6565b6000806105ae888861094f565b915091506105bf8260400151610bb9565b6105cc8260400151610ceb565b6105da898360400151610d47565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107915760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f091906138e4565b905060008190036107435760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b610777610750898b6138fd565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611756565b600083815260096020526040902081905592506107a39050565b60008181526009602052604090205491505b6000846020015160016040516020016107d19291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061081982856108148a8c6138fd565b611852565b90508481146108625760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a782828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115af92505050565b50506108b36001603355565b50505050505050565b600381815481106108cc57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109cc85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118ee92505050565b9050600085856040516109e0929190613980565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0f57610a0f6137c9565b14610a5c5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610aa45760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610aee5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b39575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610bac5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1f5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190613990565b610ce85760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce85760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610dad5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906138e4565b600003610e895760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1391906138e4565b610f1d90426139c8565b90506078811015610f7b5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffe91906138e4565b9050600081856001600160401b03161061101957601b61101c565b60075b60ff169050600082866001600160401b03161061105857612000611049846001600160401b0389166139c8565b61105391906139f1565b61106d565b61106d6120006001600160401b0388166139f1565b90506000866001600160401b0316886001600160401b0316036110ac5750600b61109981610200613a05565b6110a590610183613a24565b90506111e1565b6120006110b9888a613a37565b6001600160401b03161161111b5750600b6110d5816020613a05565b6110e0906006613a24565b90506110f76120006001600160401b038916613a5e565b61110361200083613a05565b61110d9190613a24565b905061109981610200613a05565b876001600160401b0316876001600160401b031610156111995750600b82611144826020613a05565b61114e9190613a24565b905061115b816002613a05565b611166906000613a24565b905081611177630100000083613a05565b6111819190613a24565b905061118e816002613a05565b6110e0906001613a24565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016103ef565b6111ed8b828c8c6119b3565b9b9a5050505050505050505050565b60008061120a878a8a6119cd565b905060008160008151811061122157611221613a72565b01602001516001600160f81b03191690506000600160f81b8214806112535750600160f91b6001600160f81b03198316145b15611260575060016112c5565b600360fe1b6001600160f81b031983161061127d575060006112c5565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b6000602084019050600060405180604001604052808487516112e791906139c8565b81526020016112f68585613a24565b9052905060006113058261226d565b905080516004146113515760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b60006113768260038151811061136957611369613a72565b602002602001015161226d565b905080518c106113c85760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b60006113df828e8151811061136957611369613a72565b9050805160031461143d5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006114628260008151811061145557611455613a72565b6020026020010151612492565b90508c6001600160a01b0316816001600160a01b0316146114d55760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b60006114ed8360018151811061136957611369613a72565b90508c6115138260008151811061150657611506613a72565b6020026020010151612506565b146115765760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b611598818d8151811061158b5761158b613a72565b602002602001015161250d565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c001516040516024016115de93929190613ad8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116309190613b08565b6000604051808303816000865af19150503d806000811461166d576040519150601f19603f3d011682016040523d82523d6000602084013e611672565b606091505b50805191955093506000925060200390506116b45760008280602001905181019061169d9190613b24565b6001600160e01b031916631dee306b60e11b149150505b8280156116be5750805b156116e1576000858152600760205260409020805460ff191660021790556116fb565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051611746929190613b4e565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117c0826040516020016117aa91815260200190565b60405160208183030381529060405287866119cd565b9050600081511161180c5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b600061181f61181a83612610565b61226d565b9050805160041461182f57600080fd5b6118458160028151811061150657611506613a72565b93505050505b9392505050565b6000806118818560405160200161186b91815260200190565b60405160208183030381529060405284866119cd565b905060008151116118d45760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b6118e56118e082612610565b612506565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916119a2918a919061199d9082906139c8565b612663565b60c088015250949695505050505050565b6000806119c186868661274f565b90921495945050505050565b60606000845111611a185760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b6000611a23846128de565b90506000611a30866129cc565b9050600084604051602001611a4791815260200190565b60405160208183030381529060405290506000805b8451811015612216576000858281518110611a7957611a79613a72565b602002602001015190508451831115611aeb5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611b8a5780518051602091820120604051611b3992611b1392910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b855760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611c80565b805151602011611c105780518051602091820120604051611bb492611b1392910190815260200190565b611b855760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611c805760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611c8c60106001613a24565b81602001515103611e395784518303611dd1576000611cc88260200151601081518110611cbb57611cbb613a72565b6020026020010151612ae6565b90506000815111611d415760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611d4f91906139c8565b8314611dc35760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b965061184b95505050505050565b6000858481518110611de557611de5613a72565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611e1057611e10613a72565b60200260200101519050611e2381612c09565b9550611e30600186613a24565b94505050612203565b6002816020015151036121aa576000611e5182612c2e565b9050600081600081518110611e6857611e68613a72565b016020015160f81c90506000611e7f600283613b72565b611e8a906002613b94565b90506000611e9b848360ff16612c52565b90506000611ea98a89612c52565b90506000611eb78383612c88565b905080835114611f2f5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611f44575060ff85166003145b156120ea5780825114611fbf5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611fdb8860200151600181518110611cbb57611cbb613a72565b905060008151116120545760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d5161206291906139c8565b89146120d65760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c5061184b9b505050505050505050505050565b60ff851615806120fd575060ff85166001145b1561213c57612129876020015160018151811061211c5761211c613a72565b6020026020010151612c09565b9950612135818a613a24565b985061219f565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b505050505050612203565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b508061220e81613bad565b915050611a5c565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b6060600080600061227d85612d07565b919450925090506001816001811115612298576122986137c9565b1461230b5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b84516123178385613a24565b1461237f5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123985790505090506000845b87518110156124865760008061240b6040518060400160405280858d600001516123ef91906139c8565b8152602001858d602001516124049190613a24565b9052612d07565b5091509150604051806040016040528083836124279190613a24565b8152602001848c6020015161243c9190613a24565b81525085858151811061245157612451613a72565b6020908102919091010152612467600185613a24565b93506124738183613a24565b61247d9084613a24565b925050506123c5565b50815295945050505050565b80516000906001036124a657506000919050565b81516015146124f75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b61250082612506565b92915050565b6000612500825b60006021826000015111156125645760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061257285612d07565b91945092509050600081600181111561258d5761258d6137c9565b146125da5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125ec9190613a24565b805190915060208410156126065760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126455760405162461bcd60e51b81526004016103ef90613bc6565b50604080518082019091528151815260209182019181019190915290565b60608161267181601f613a24565b101561268f5760405162461bcd60e51b81526004016103ef90613c36565b6126998284613a24565b845110156126dd5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b6060821580156126fc5760405191506000825260208201604052612746565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561273557805183526020928301920161271d565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127609190613a24565b61276b906002613d42565b1161277557600080fd5b8360005b846001146127465761278c600286613a5e565b60010361282b5760028482815181106127a7576127a7613a72565b6020026020010151836040516020016127ca929190918252602082015260400190565b60408051601f19818403018152908290526127e491613b08565b602060405180830381855afa158015612801573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061282491906138e4565b91506128bf565b60028285838151811061284057612840613a72565b6020026020010151604051602001612862929190918252602082015260400190565b60408051601f198184030181529082905261287c91613b08565b602060405180830381855afa158015612899573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128bc91906138e4565b91505b6128ca6002866139f1565b9450806128d681613bad565b915050612779565b80516060906000816001600160401b038111156128fd576128fd6135fe565b60405190808252806020026020018201604052801561294257816020015b604080518082019091526060808252602082015281526020019060019003908161291b5790505b50905060005b828110156129c457604051806040016040528086838151811061296d5761296d613a72565b6020026020010151815260200161299c87848151811061298f5761298f613a72565b60200260200101516133ca565b8152508282815181106129b1576129b1613a72565b6020908102919091010152600101612948565b509392505050565b805160609060006129de826002613a05565b6001600160401b038111156129f5576129f56135fe565b6040519080825280601f01601f191660200182016040528015612a1f576020820181803683370190505b5090506000805b83811015612adc57858181518110612a4057612a40613a72565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a68836002613a05565b81518110612a7857612a78613a72565b60200101906001600160f81b031916908160001a905350600f60f81b821683612aa2836002613a05565b612aad906001613a24565b81518110612abd57612abd613a72565b60200101906001600160f81b031916908160001a905350600101612a26565b5090949350505050565b60606000806000612af685612d07565b919450925090506000816001811115612b1157612b116137c9565b14612b845760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612b8e8284613a24565b855114612bfa5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b6118e5856020015184846133d8565b60606020826000015110612c2557612c2082612ae6565b612500565b61250082613478565b6060612500612c4d8360200151600081518110611cbb57611cbb613a72565b6129cc565b606082518210612c715750604080516020810190915260008152612500565b61184b8383848651612c8391906139c8565b61348e565b60008060008351855110612c9d578351612ca0565b84515b90505b8082108015612cf75750838281518110612cbf57612cbf613a72565b602001015160f81c60f81b6001600160f81b031916858381518110612ce657612ce6613a72565b01602001516001600160f81b031916145b156129c457816001019150612ca3565b600080600080846000015111612d2f5760405162461bcd60e51b81526004016103ef90613bc6565b6020840151805160001a607f8111612d545760006001600094509450945050506133c3565b60b78111612eb1576000612d696080836139c8565b905080876000015111612de95760405162461bcd60e51b815260206004820152604e6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612e165750600160ff1b6001600160f81b0319821610155b612e9e5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b50600195509350600092506133c3915050565b60bf81116130f2576000612ec660b7836139c8565b905080876000015111612f495760405162461bcd60e51b81526020600482015260516024820152600080516020613d4f83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612fd05760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c603781116130535760405162461bcd60e51b81526020600482015260486024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b61305d8184613a24565b8951116130d55760405162461bcd60e51b815260206004820152604c6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b6130e0836001613a24565b97509550600094506133c39350505050565b60f7811161319457600061310760c0836139c8565b9050808760000151116131835760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b6001955093508492506133c3915050565b60006131a160f7836139c8565b9050808760000151116132205760405162461bcd60e51b815260206004820152604d6024820152600080516020613d4f83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036132a55760405162461bcd60e51b81526020600482015260486024820152600080516020613d4f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c603781116133265760405162461bcd60e51b81526020600482015260466024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6133308184613a24565b8951116133a65760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b6133b1836001613a24565b97509550600194506133c39350505050565b9193909250565b606061250061181a83612610565b60606000826001600160401b038111156133f4576133f46135fe565b6040519080825280601f01601f19166020018201604052801561341e576020820181803683370190505b5090508260000361343057905061184b565b600061343c8587613a24565b90506020820160005b8581101561345d578281015182820152602001613445565b8581111561346c576000868301525b50919695505050505050565b60606125008260200151600084600001516133d8565b60608182601f0110156134b35760405162461bcd60e51b81526004016103ef90613c36565b8282840110156134d55760405162461bcd60e51b81526004016103ef90613c36565b818301845110156126dd5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461353357600080fd5b919050565b60006020828403121561354a57600080fd5b61184b8261351c565b60006020828403121561356557600080fd5b813563ffffffff8116811461184b57600080fd5b60008083601f84011261358b57600080fd5b5081356001600160401b038111156135a257600080fd5b602083019150836020828501011115610bb257600080fd5b60008083601f8401126135cc57600080fd5b5081356001600160401b038111156135e357600080fd5b6020830191508360208260051b8501011115610bb257600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561363c5761363c6135fe565b604052919050565b600082601f83011261365557600080fd5b81356001600160401b0381111561366e5761366e6135fe565b613681601f8201601f1916602001613614565b81815284602083860101111561369657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156136d457600080fd5b6001600160401b03808d3511156136ea57600080fd5b6136f78e8e358f01613579565b909c509a5060208d013581101561370d57600080fd5b61371d8e60208f01358f01613579565b909a50985060408d013581101561373357600080fd5b6137438e60408f01358f016135ba565b909850965060608d0135955060808d013581101561376057600080fd5b6137708e60808f01358f016135ba565b909550935060a08d013581101561378657600080fd5b506137978d60a08e01358e01613644565b915060c08c013590509295989b509295989b9093969950565b6000602082840312156137c257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061380157634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561382257600080fd5b61382b8861351c565b965060208801356001600160401b038082111561384757600080fd5b6138538b838c01613579565b909850965060408a013591508082111561386c57600080fd5b6138788b838c016135ba565b909650945060608a013591508082111561389157600080fd5b5061389e8a828b016135ba565b989b979a50959850939692959293505050565b600080604083850312156138c457600080fd5b6138cd8361351c565b91506138db6020840161351c565b90509250929050565b6000602082840312156138f657600080fd5b5051919050565b60006001600160401b0380841115613917576139176135fe565b8360051b6020613928818301613614565b86815291850191818101903684111561394057600080fd5b865b848110156139745780358681111561395a5760008081fd5b61396636828b01613644565b845250918301918301613942565b50979650505050505050565b8183823760009101908152919050565b6000602082840312156139a257600080fd5b8151801515811461184b57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612500576125006139b2565b634e487b7160e01b600052601260045260246000fd5b600082613a0057613a006139db565b500490565b6000816000190483118215151615613a1f57613a1f6139b2565b500290565b80820180821115612500576125006139b2565b6001600160401b03828116828216039080821115613a5757613a576139b2565b5092915050565b600082613a6d57613a6d6139db565b500690565b634e487b7160e01b600052603260045260246000fd5b60005b83811015613aa3578181015183820152602001613a8b565b50506000910152565b60008151808452613ac4816020860160208601613a88565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b03831660208201526060604082018190526000906118e590830184613aac565b60008251613b1a818460208701613a88565b9190910192915050565b600060208284031215613b3657600080fd5b81516001600160e01b03198116811461184b57600080fd5b604081526000613b616040830185613aac565b905082151560208301529392505050565b600060ff831680613b8557613b856139db565b8060ff84160691505092915050565b60ff8281168282160390811115612500576125006139b2565b600060018201613bbf57613bbf6139b2565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613c99578160001904821115613c7f57613c7f6139b2565b80851615613c8c57918102915b93841c9390800290613c63565b509250929050565b600082613cb057506001612500565b81613cbd57506000612500565b8160018114613cd35760028114613cdd57613cf9565b6001915050612500565b60ff841115613cee57613cee6139b2565b50506001821b612500565b5060208310610133831016604e8410600b8410161715613d1c575081810a612500565b613d268383613c5e565b8060001904821115613d3a57613d3a6139b2565b029392505050565b600061184b8383613ca156fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212200b05ed5ae63b09c514431342b32abbec5ca9ab35e53d2a4b1a886369d8b7f6b164736f6c63430008100033", + "sourceMap": "748:10165:100:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": { + "src/libraries/BeaconChainForks.sol": { + "BeaconChainForks": [ + { + "start": 4032, + "length": 20 + } + ] + } + } }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd36600461345f565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61014561013036600461347a565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b6101686101633660046135da565b6102c6565b005b61018d6101783660046136d7565b60076020526000908152604090205460ff1681565b6040516101199190613706565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc36600461347a565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d36600461347a565b6004602052600090815260409020546001600160a01b031681565b61016861024636600461372e565b610594565b61010f6102593660046136d7565b60096020526000908152604090205481565b61027e6102793660046136d7565b6108b7565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f1565b6000806102db8b8b61094a565b915091506102ec8260400151610bb4565b6102f98260400151610ce6565b6000808e8e81019061030b91906137d8565b9150915061031d828560400151610d42565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac919061380b565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b600061043c8b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610f7b565b90508061048b5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f08787906104a19190613824565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac6002611123565b90508181146105395760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061057b82828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114d692505050565b50506105876001603355565b5050505050505050505050565b61059c6108f1565b6000806105a9888861094a565b915091506105ba8260400151610bb4565b6105c78260400151610ce6565b6105d5898360400151610d42565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c8401528351808403820181529284018452825192810192909220808252600990925291822054820361078c5760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106eb919061380b565b9050600081900361073e5760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b61077261074b898b613824565b60408088015163ffffffff166000908152600560205220546001600160a01b03168361167d565b6000838152600960205260409020819055925061079e9050565b60008181526009602052604090205491505b6000846020015160016040516020016107cc9291906001600160401b03929092168252602082015260400190565b60408051808303601f19018152828252805160209182012081840152815180840382018152928201909152815191012090506000610814828561080f8a8c613824565b611779565b905084811461085d5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a282828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114d692505050565b50506108ae6001603355565b50505050505050565b600381815481106108c757600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109435760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109c785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061181592505050565b9050600085856040516109db9291906138a7565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0a57610a0a6136f0565b14610a575760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610a9f5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610ae95760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b34575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610ba75760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1a5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9791906138b7565b610ce35760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce35760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610da85760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e35919061380b565b600003610e845760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061380b565b610f1890426138ef565b90506078811015610f765760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b600080826001600160401b0316846001600160401b031603610fb95750600b610fa681610200613902565b610fb290610183613921565b905061110c565b612000610fc68486613934565b6001600160401b0316116110285750600b610fe2816020613902565b610fed906006613921565b90506110046120006001600160401b038516613971565b61101061200083613902565b61101a9190613921565b9050610fa681610200613902565b836001600160401b0316836001600160401b031610156110ba5750600b611050816020613902565b61105b906007613921565b9050611068816002613902565b611073906000613921565b905061108a6120006001600160401b038516613985565b611098630100000083613902565b6110a29190613921565b90506110af816002613902565b610fed906001613921565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016103ef565b611118878288886118da565b979650505050505050565b600080611131878a8a6118f4565b905060008160008151811061114857611148613999565b01602001516001600160f81b03191690506000600160f81b82148061117a5750600160f91b6001600160f81b03198316145b15611187575060016111ec565b600360fe1b6001600160f81b03198316106111a4575060006111ec565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b60006020840190506000604051806040016040528084875161120e91906138ef565b815260200161121d8585613921565b90529050600061122c82612194565b905080516004146112785760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b600061129d8260038151811061129057611290613999565b6020026020010151612194565b905080518c106112ef5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b6000611306828e8151811061129057611290613999565b905080516003146113645760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006113898260008151811061137c5761137c613999565b60200260200101516123b9565b90508c6001600160a01b0316816001600160a01b0316146113fc5760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b60006114148360018151811061129057611290613999565b90508c61143a8260008151811061142d5761142d613999565b602002602001015161242d565b1461149d5760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b6114bf818d815181106114b2576114b2613999565b6020026020010151612434565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401611505939291906139ff565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516115579190613a2f565b6000604051808303816000865af19150503d8060008114611594576040519150601f19603f3d011682016040523d82523d6000602084013e611599565b606091505b50805191955093506000925060200390506115db576000828060200190518101906115c49190613a4b565b6001600160e01b031916631dee306b60e11b149150505b8280156115e55750805b15611608576000858152600760205260409020805460ff19166002179055611622565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe8947878760405161166d929190613a75565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006116e7826040516020016116d191815260200190565b60405160208183030381529060405287866118f4565b905060008151116117335760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b600061174661174183612537565b612194565b9050805160041461175657600080fd5b61176c8160028151811061142d5761142d613999565b93505050505b9392505050565b6000806117a88560405160200161179291815260200190565b60405160208183030381529060405284866118f4565b905060008151116117fb5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b61180c61180782612537565b61242d565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916118c9918a91906118c49082906138ef565b61258a565b60c088015250949695505050505050565b6000806118e8868686612676565b90921495945050505050565b6060600084511161193f5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b600061194a84612805565b90506000611957866128f3565b905060008460405160200161196e91815260200190565b60405160208183030381529060405290506000805b845181101561213d5760008582815181106119a0576119a0613999565b602002602001015190508451831115611a125760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611ab15780518051602091820120604051611a6092611a3a92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611aac5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611ba7565b805151602011611b375780518051602091820120604051611adb92611a3a92910190815260200190565b611aac5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611ba75760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611bb360106001613921565b81602001515103611d605784518303611cf8576000611bef8260200151601081518110611be257611be2613999565b6020026020010151612a0d565b90506000815111611c685760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611c7691906138ef565b8314611cea5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b965061177295505050505050565b6000858481518110611d0c57611d0c613999565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611d3757611d37613999565b60200260200101519050611d4a81612b30565b9550611d57600186613921565b9450505061212a565b6002816020015151036120d1576000611d7882612b55565b9050600081600081518110611d8f57611d8f613999565b016020015160f81c90506000611da6600283613a99565b611db1906002613abb565b90506000611dc2848360ff16612b79565b90506000611dd08a89612b79565b90506000611dde8383612baf565b905080835114611e565760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611e6b575060ff85166003145b156120115780825114611ee65760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611f028860200151600181518110611be257611be2613999565b90506000815111611f7b5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d51611f8991906138ef565b8914611ffd5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c506117729b505050505050505050505050565b60ff85161580612024575060ff85166001145b1561206357612050876020015160018151811061204357612043613999565b6020026020010151612b30565b995061205c818a613921565b98506120c6565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b50505050505061212a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b508061213581613ad4565b915050611983565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b606060008060006121a485612c2e565b9194509250905060018160018111156121bf576121bf6136f0565b146122325760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b845161223e8385613921565b146122a65760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816122bf5790505090506000845b87518110156123ad576000806123326040518060400160405280858d6000015161231691906138ef565b8152602001858d6020015161232b9190613921565b9052612c2e565b50915091506040518060400160405280838361234e9190613921565b8152602001848c602001516123639190613921565b81525085858151811061237857612378613999565b602090810291909101015261238e600185613921565b935061239a8183613921565b6123a49084613921565b925050506122ec565b50815295945050505050565b80516000906001036123cd57506000919050565b815160151461241e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b6124278261242d565b92915050565b6000612427825b600060218260000151111561248b5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061249985612c2e565b9194509250905060008160018111156124b4576124b46136f0565b146125015760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125139190613921565b8051909150602084101561252d5760208490036101000a90045b9695505050505050565b6040805180820190915260008082526020820152600082511161256c5760405162461bcd60e51b81526004016103ef90613aed565b50604080518082019091528151815260209182019181019190915290565b60608161259881601f613921565b10156125b65760405162461bcd60e51b81526004016103ef90613b5d565b6125c08284613921565b845110156126045760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b606082158015612623576040519150600082526020820160405261266d565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561265c578051835260209283019201612644565b5050858452601f01601f1916604052505b50949350505050565b600082825160016126879190613921565b612692906002613c69565b1161269c57600080fd5b8360005b8460011461266d576126b3600286613971565b6001036127525760028482815181106126ce576126ce613999565b6020026020010151836040516020016126f1929190918252602082015260400190565b60408051601f198184030181529082905261270b91613a2f565b602060405180830381855afa158015612728573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061274b919061380b565b91506127e6565b60028285838151811061276757612767613999565b6020026020010151604051602001612789929190918252602082015260400190565b60408051601f19818403018152908290526127a391613a2f565b602060405180830381855afa1580156127c0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127e3919061380b565b91505b6127f1600286613985565b9450806127fd81613ad4565b9150506126a0565b80516060906000816001600160401b0381111561282457612824613525565b60405190808252806020026020018201604052801561286957816020015b60408051808201909152606080825260208201528152602001906001900390816128425790505b50905060005b828110156128eb57604051806040016040528086838151811061289457612894613999565b602002602001015181526020016128c38784815181106128b6576128b6613999565b60200260200101516132f1565b8152508282815181106128d8576128d8613999565b602090810291909101015260010161286f565b509392505050565b80516060906000612905826002613902565b6001600160401b0381111561291c5761291c613525565b6040519080825280601f01601f191660200182016040528015612946576020820181803683370190505b5090506000805b83811015612a035785818151811061296757612967613999565b6020910101516001600160f81b03198116925060041c60ff60f41b168361298f836002613902565b8151811061299f5761299f613999565b60200101906001600160f81b031916908160001a905350600f60f81b8216836129c9836002613902565b6129d4906001613921565b815181106129e4576129e4613999565b60200101906001600160f81b031916908160001a90535060010161294d565b5090949350505050565b60606000806000612a1d85612c2e565b919450925090506000816001811115612a3857612a386136f0565b14612aab5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612ab58284613921565b855114612b215760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b61180c856020015184846132ff565b60606020826000015110612b4c57612b4782612a0d565b612427565b6124278261339f565b6060612427612b748360200151600081518110611be257611be2613999565b6128f3565b606082518210612b985750604080516020810190915260008152612427565b6117728383848651612baa91906138ef565b6133b5565b60008060008351855110612bc4578351612bc7565b84515b90505b8082108015612c1e5750838281518110612be657612be6613999565b602001015160f81c60f81b6001600160f81b031916858381518110612c0d57612c0d613999565b01602001516001600160f81b031916145b156128eb57816001019150612bca565b600080600080846000015111612c565760405162461bcd60e51b81526004016103ef90613aed565b6020840151805160001a607f8111612c7b5760006001600094509450945050506132ea565b60b78111612dd8576000612c906080836138ef565b905080876000015111612d105760405162461bcd60e51b815260206004820152604e6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612d3d5750600160ff1b6001600160f81b0319821610155b612dc55760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b50600195509350600092506132ea915050565b60bf8111613019576000612ded60b7836138ef565b905080876000015111612e705760405162461bcd60e51b81526020600482015260516024820152600080516020613c7683398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612ef75760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c60378111612f7a5760405162461bcd60e51b81526020600482015260486024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b612f848184613921565b895111612ffc5760405162461bcd60e51b815260206004820152604c6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b613007836001613921565b97509550600094506132ea9350505050565b60f781116130bb57600061302e60c0836138ef565b9050808760000151116130aa5760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b6001955093508492506132ea915050565b60006130c860f7836138ef565b9050808760000151116131475760405162461bcd60e51b815260206004820152604d6024820152600080516020613c7683398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036131cc5760405162461bcd60e51b81526020600482015260486024820152600080516020613c7683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c6037811161324d5760405162461bcd60e51b81526020600482015260466024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6132578184613921565b8951116132cd5760405162461bcd60e51b815260206004820152604a6024820152600080516020613c7683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b6132d8836001613921565b97509550600194506132ea9350505050565b9193909250565b606061242761174183612537565b60606000826001600160401b0381111561331b5761331b613525565b6040519080825280601f01601f191660200182016040528015613345576020820181803683370190505b50905082600003613357579050611772565b60006133638587613921565b90506020820160005b8581101561338457828101518282015260200161336c565b85811115613393576000868301525b50919695505050505050565b60606124278260200151600084600001516132ff565b60608182601f0110156133da5760405162461bcd60e51b81526004016103ef90613b5d565b8282840110156133fc5760405162461bcd60e51b81526004016103ef90613b5d565b818301845110156126045760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461345a57600080fd5b919050565b60006020828403121561347157600080fd5b61177282613443565b60006020828403121561348c57600080fd5b813563ffffffff8116811461177257600080fd5b60008083601f8401126134b257600080fd5b5081356001600160401b038111156134c957600080fd5b602083019150836020828501011115610bad57600080fd5b60008083601f8401126134f357600080fd5b5081356001600160401b0381111561350a57600080fd5b6020830191508360208260051b8501011115610bad57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561356357613563613525565b604052919050565b600082601f83011261357c57600080fd5b81356001600160401b0381111561359557613595613525565b6135a8601f8201601f191660200161353b565b8181528460208386010111156135bd57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156135fb57600080fd5b6001600160401b03808d35111561361157600080fd5b61361e8e8e358f016134a0565b909c509a5060208d013581101561363457600080fd5b6136448e60208f01358f016134a0565b909a50985060408d013581101561365a57600080fd5b61366a8e60408f01358f016134e1565b909850965060608d0135955060808d013581101561368757600080fd5b6136978e60808f01358f016134e1565b909550935060a08d01358110156136ad57600080fd5b506136be8d60a08e01358e0161356b565b915060c08c013590509295989b509295989b9093969950565b6000602082840312156136e957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061372857634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561374957600080fd5b61375288613443565b965060208801356001600160401b038082111561376e57600080fd5b61377a8b838c016134a0565b909850965060408a013591508082111561379357600080fd5b61379f8b838c016134e1565b909650945060608a01359150808211156137b857600080fd5b506137c58a828b016134e1565b989b979a50959850939692959293505050565b600080604083850312156137eb57600080fd5b6137f483613443565b915061380260208401613443565b90509250929050565b60006020828403121561381d57600080fd5b5051919050565b60006001600160401b038084111561383e5761383e613525565b8360051b602061384f81830161353b565b86815291850191818101903684111561386757600080fd5b865b8481101561389b578035868111156138815760008081fd5b61388d36828b0161356b565b845250918301918301613869565b50979650505050505050565b8183823760009101908152919050565b6000602082840312156138c957600080fd5b8151801515811461177257600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612427576124276138d9565b600081600019048311821515161561391c5761391c6138d9565b500290565b80820180821115612427576124276138d9565b6001600160401b03828116828216039080821115613954576139546138d9565b5092915050565b634e487b7160e01b600052601260045260246000fd5b6000826139805761398061395b565b500690565b6000826139945761399461395b565b500490565b634e487b7160e01b600052603260045260246000fd5b60005b838110156139ca5781810151838201526020016139b2565b50506000910152565b600081518084526139eb8160208601602086016139af565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061180c908301846139d3565b60008251613a418184602087016139af565b9190910192915050565b600060208284031215613a5d57600080fd5b81516001600160e01b03198116811461177257600080fd5b604081526000613a8860408301856139d3565b905082151560208301529392505050565b600060ff831680613aac57613aac61395b565b8060ff84160691505092915050565b60ff8281168282160390811115612427576124276138d9565b600060018201613ae657613ae66138d9565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613bc0578160001904821115613ba657613ba66138d9565b80851615613bb357918102915b93841c9390800290613b8a565b509250929050565b600082613bd757506001612427565b81613be457506000612427565b8160018114613bfa5760028114613c0457613c20565b6001915050612427565b60ff841115613c1557613c156138d9565b50506001821b612427565b5060208310610133831016604e8410600b8410161715613c43575081810a612427565b613c4d8383613b85565b8060001904821115613c6157613c616138d9565b029392505050565b60006117728383613bc856fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212206a97625bc300e9ead0f59393fd498c078655fa8c3a42ebddbe4432362362406464736f6c63430008100033", - "sourceMap": "748:10128:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:145;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:145;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:145;4866:1891:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:145;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:145;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:145;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:145;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;879:30;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:145;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:145;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:145;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:145;924:58:100;;973:9;924:58;;4866:1891;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:145;;5661:52:100;;::::1;7526:50:145::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:145;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;8445:2:145;5727:58:100::1;::::0;::::1;8427:21:145::0;8484:2;8464:18;;;8457:30;-1:-1:-1;;;8503:18:145;;;8496:51;8564:18;;5727:58:100::1;;;;;;;;;5799:12;5830:84;5853:12;5867:17;;5830:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5886:10:100;;-1:-1:-1;5898:7:100;;-1:-1:-1;5907:6:100;;-1:-1:-1;5830:22:100::1;:84::i;:::-;5799:115;;5936:7;5928:47;;;::::0;-1:-1:-1;;;5928:47:100;;8795:2:145;5928:47:100::1;::::0;::::1;8777:21:145::0;8834:2;8814:18;;;8807:30;8873:29;8853:18;;;8846:57;8920:18;;5928:47:100::1;8593:351:145::0;5928:47:100::1;5462:524;;;;6209:26;6263:320;6309:12;;6263:320;;;;;:::i;:::-;6459:21;::::0;;::::1;::::0;6446:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6343:12;;6377:17;;6416:8;;-1:-1:-1;;;;;6446:35:100::1;1151:46;1484:1;6263:24;:320::i;:::-;6209:388;;6641:11;6619:18;:33;6611:67;;;::::0;-1:-1:-1;;;6611:67:100;;10090:2:145;6611:67:100::1;::::0;::::1;10072:21:145::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:145;;;10141:51;10209:18;;6611:67:100::1;9888:345:145::0;6611:67:100::1;5996:693;6699:51;6715:7;6724:11;6737:12;;6699:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6699:15:100::1;::::0;-1:-1:-1;;;6699:51:100:i:1;:::-;5185:1572;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1891:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;10457:3:145;10435:16;;;;-1:-1:-1;;;;;;10431:43:145;2955:82:100;;::::1;10419:56:145::0;10530:3;10508:16;;;-1:-1:-1;;;;;;10504:51:145;10491:11;;;10484:72;10594:2;10590:15;-1:-1:-1;;10590:15:145;10572:12;;;10565:75;2955:82:100;;;;;;;;;10656:12:145;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:145;;3301:61:100;;::::1;7526:50:145::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:145;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;10881:2:145;3380:67:100::1;::::0;::::1;10863:21:145::0;10920:2;10900:18;;;10893:30;10959:33;10939:18;;;10932:61;11010:18;;3380:67:100::1;10679:355:145::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;11229:31:145;;;;11211:50;;11292:2;11277:18;;11270:34;11199:2;11184:18;;11039:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:145::0;3826:80:100;;;;;;;;;498:18:145;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10090:2:145;4090:31:100::1;::::0;::::1;10072:21:145::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:145;;;10141:51;10209:18;;4090:31:100::1;9888:345:145::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;11517:2:145;2704:63:39;;;11499:21:145;11556:2;11536:18;;;11529:30;11595:33;11575:18;;;11568:61;11646:18;;2704:63:39;11315:355:145;2704:63:39;1830:1;2842:7;:18;2580:287::o;7985:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8106:7:100;8129:22;8154:36;8177:12;;8154:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8154:22:100;;-1:-1:-1;;;8154:36:100:i;:::-;8129:61;;8200:19;8232:12;;8222:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8290:26:100;8260;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8256:562;;8332:35;;-1:-1:-1;;;8332:35:100;;12153:2:145;8332:35:100;;;12135:21:145;12192:2;12172:18;;;12165:30;12231:27;12211:18;;;12204:55;12276:18;;8332:35:100;11951:349:145;8256:562:100;8418:13;8388:7;:26;;;:43;;;8384:434;;8447:22;;-1:-1:-1;;;8447:22:100;;12507:2:145;8447:22:100;;;12489:21:145;12546:2;12526:18;;;12519:30;-1:-1:-1;;;12565:18:145;;;12558:42;12617:18;;8447:22:100;12305:336:145;8384:434:100;8509:7;;8490:15;;8509:7;8490:26;;;8509:7;;8490:26;8486:332;;8532:24;;-1:-1:-1;;;8532:24:100;;12848:2:145;8532:24:100;;;12830:21:145;12887:2;12867:18;;;12860:30;-1:-1:-1;;;12906:18:145;;;12899:44;12960:18;;8532:24:100;12646:338:145;8486:332:100;8611:21;;;;;8598:35;;8646:1;8598:35;;;:12;:35;;;;-1:-1:-1;;;;;8598:35:100;8590:58;;:127;;-1:-1:-1;8681:21:100;;;;;8668:35;;8715:1;8668:35;;;:12;:35;;;;-1:-1:-1;;;;;8668:35:100;:49;8590:127;8573:245;;;8742:65;;-1:-1:-1;;;8742:65:100;;13191:2:145;8742:65:100;;;13173:21:145;13230:2;13210:18;;;13203:30;13269:34;13249:18;;;13242:62;13340:25;13320:18;;;13313:53;13383:19;;8742:65:100;12989:419:145;8573:245:100;8835:7;;-1:-1:-1;8844:11:100;-1:-1:-1;7985:878:100;;;;;;:::o;6843:253::-;6938:21;;;6972:1;6938:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6938:21:100;6922:81;;;;-1:-1:-1;;;6922:81:100;;13615:2:145;6922:81:100;;;13597:21:145;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:145;;;13666:54;13737:18;;6922:81:100;13413:348:145;6922:81:100;7021:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7021:34:100;;;;-1:-1:-1;;;;;7021:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7013:76;;;;-1:-1:-1;;;7013:76:100;;14250:2:145;7013:76:100;;;14232:21:145;14289:2;14269:18;;;14262:30;14328:31;14308:18;;;14301:59;14377:18;;7013:76:100;14048:353:145;7013:76:100;6843:253;:::o;7157:121::-;7232:15;;;;;;;:6;:15;;;;;;;;7231:16;7223:48;;;;-1:-1:-1;;;7223:48:100;;14608:2:145;7223:48:100;;;14590:21:145;14647:2;14627:18;;;14620:30;-1:-1:-1;;;14666:18:145;;;14659:49;14725:18;;7223:48:100;14406:343:145;7348:452:100;7450:21;;;7484:1;7450:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7450:21:100;7434:81;;;;-1:-1:-1;;;7434:81:100;;13615:2:145;7434:81:100;;;13597:21:145;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:145;;;13666:54;13737:18;;7434:81:100;13413:348:145;7434:81:100;7533:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7533:38:100;;-1:-1:-1;;;;;7544:31:145;;7533:38:100;;;7526:50:145;;;;-1:-1:-1;;;;;7533:21:100;;;;:32;;7499:18:145;;7533:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7575:1;7533:43;7525:86;;;;-1:-1:-1;;;7525:86:100;;15145:2:145;7525:86:100;;;15127:21:145;15184:2;15164:18;;;15157:30;15223:32;15203:18;;;15196:60;15273:18;;7525:86:100;14943:354:145;7525:86:100;7661:21;;;7621:19;7661:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7661:38:100;;-1:-1:-1;;;;;7544:31:145;;7661:38:100;;;7526:50:145;;;;-1:-1:-1;;;;;7661:21:100;;:32;;7499:18:145;;7661:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7643:56;;:15;:56;:::i;:::-;7621:78;;973:9;7717:11;:37;;7709:84;;;;-1:-1:-1;;;7709:84:100;;15769:2:145;7709:84:100;;;15751:21:145;15808:2;15788:18;;;15781:30;15847:34;15827:18;;;15820:62;-1:-1:-1;;;15898:18:145;;;15891:32;15940:19;;7709:84:100;15567:398:145;7709:84:100;7424:376;7348:452;;:::o;3024:1184:109:-;3230:4;3246:13;3284:6;-1:-1:-1;;;;;3273:17:109;:7;-1:-1:-1;;;;;3273:17:109;;3269:845;;-1:-1:-1;3314:5:109;3341:14;3314:5;3349:6;3341:14;:::i;:::-;:20;;3358:3;3341:20;:::i;:::-;3333:28;;3269:845;;;304:4;3382:16;3392:6;3382:7;:16;:::i;:::-;-1:-1:-1;;;;;3382:45:109;;3378:736;;-1:-1:-1;3451:5:109;3478:14;3451:5;3486:6;3478:14;:::i;:::-;:18;;3495:1;3478:18;:::i;:::-;3470:26;-1:-1:-1;3554:34:109;304:4;-1:-1:-1;;;;;3554:34:109;;;:::i;:::-;3518:33;304:4;3518:5;:33;:::i;:::-;:70;;;;:::i;:::-;3510:78;-1:-1:-1;3610:14:109;3510:78;3618:6;3610:14;:::i;3378:736::-;3660:7;-1:-1:-1;;;;;3651:16:109;:6;-1:-1:-1;;;;;3651:16:109;;3647:467;;;-1:-1:-1;3691:5:109;3718:14;3691:5;3726:6;3718:14;:::i;:::-;:18;;3735:1;3718:18;:::i;:::-;3710:26;-1:-1:-1;3758:9:109;3710:26;3766:1;3758:9;:::i;:::-;:13;;3770:1;3758:13;:::i;:::-;3750:21;-1:-1:-1;3826:34:109;304:4;-1:-1:-1;;;;;3826:34:109;;;:::i;:::-;3793:30;236:8;3793:5;:30;:::i;:::-;:67;;;;:::i;:::-;3785:75;-1:-1:-1;3882:9:109;3785:75;3890:1;3882:9;:::i;:::-;:13;;3894:1;3882:13;:::i;3647:467::-;4060:43;;-1:-1:-1;;;4060:43:109;;17037:2:145;4060:43:109;;;17019:21:145;17076:2;17056:18;;;17049:30;17115:34;17095:18;;;17088:62;-1:-1:-1;;;17166:18:145;;;17159:31;17207:19;;4060:43:109;16835:397:145;3647:467:109;4130:71;4150:12;4164:5;4171:17;4190:10;4130:19;:71::i;:::-;4123:78;3024:1184;-1:-1:-1;;;;;;;3024:1184:109:o;1420:2836:110:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:110;;-1:-1:-1;2441:14:110;-1:-1:-1;;;2469:25:110;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:110;;;2469:54;2465:236;;;-1:-1:-1;2548:1:110;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:110;;;2566:135;;-1:-1:-1;2620:1:110;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:110;;17571:2:145;2652:38:110;;;17553:21:145;17610:2;17590:18;;;17583:30;17649;17629:18;;;17622:58;17697:18;;2652:38:110;17369:352:145;2566:135:110;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:110;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:110;;17928:2:145;3233:58:110;;;17910:21:145;17967:2;17947:18;;;17940:30;-1:-1:-1;;;17986:18:145;;;17979:52;18048:18;;3233:58:110;17726:346:145;3233:58:110;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:110;;18279:2:145;3450:58:110;;;18261:21:145;18318:2;18298:18;;;18291:30;18357:25;18337:18;;;18330:53;18400:18;;3450:58:110;18077:347:145;3450:58:110;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:110;;18631:2:145;3594:70:110;;;18613:21:145;18670:2;18650:18;;;18643:30;18709:34;18689:18;;;18682:62;-1:-1:-1;;;18760:18:145;;;18753:32;18802:19;;3594:70:110;18429:398:145;3594:70:110;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:110;:15;-1:-1:-1;;;;;3811:33:110;;3803:85;;;;-1:-1:-1;;;3803:85:110;;19034:2:145;3803:85:110;;;19016:21:145;19073:2;19053:18;;;19046:30;19112:34;19092:18;;;19085:62;-1:-1:-1;;;19163:18:145;;;19156:37;19210:19;;3803:85:110;18832:403:145;3803:85:110;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:110;;19442:2:145;4057:142:110;;;19424:21:145;19481:2;19461:18;;;19454:30;19520:34;19500:18;;;19493:62;-1:-1:-1;;;19571:18:145;;;19564:43;19624:19;;4057:142:110;19240:409:145;4057:142:110;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9345:1529:100:-;9473:11;9494:17;9535:24;9602:42;;;9662:7;:21;;;9701:7;:21;;;9740:7;:12;;;9562:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9562:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9562:204:100;-1:-1:-1;;;;;;9562:204:100;;;;;;;;;;9822:26;;;;9562:204;;-1:-1:-1;9880:11:100;-1:-1:-1;;;;;9880:16:100;9897:11;9880:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10350:11:100;;9863:46;;-1:-1:-1;9863:46:100;-1:-1:-1;10306:22:100;;-1:-1:-1;10365:2:100;10350:17;;-1:-1:-1;10346:176:100;;10384:12;10411:4;10400:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10460:51:100;-1:-1:-1;;;10460:51:100;;-1:-1:-1;;10346:176:100;10536:6;:27;;;;;10546:17;10536:27;10532:210;;;10579:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10579:62:100;10608:33;10579:62;;;10532:210;;;10672:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10672:59:100;10701:30;10672:59;;;10532:210;10824:11;10809:7;:13;;;-1:-1:-1;;;;;10757:110:100;10786:7;:21;;;10757:110;;;10837:12;10851:6;10757:110;;;;;;;:::i;:::-;;;;;;;;9463:1411;;;9345:1529;;;:::o;735:581:110:-;927:33;;-1:-1:-1;;21628:2:145;21624:15;;;21620:53;927:33:110;;;21608:66:145;872:7:110;;;;21690:12:145;;927:33:110;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;21842:19:145;;21886:2;21877:12;;21713:182;1014:29:110;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:110;;22102:2:145;1072:58:110;;;22084:21:145;22141:2;22121:18;;;22114:30;-1:-1:-1;;;22160:18:145;;;22153:52;22222:18;;1072:58:110;21900:346:145;1072:58:110;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:110;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;21842:19:145;;21886:2;21877:12;;21713:182;538:26:110;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:110;;22453:2:145;601:65:110;;;22435:21:145;22492:2;22472:18;;;22465:30;22531;22511:18;;;22504:58;22579:18;;601:65:110;22251:352:145;601:65:110;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:110:o;4295:1028:107:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:107;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:107;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:107;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:107;;4295:1028;-1:-1:-1;;;;;;4295:1028:107:o;1770:281:109:-;1914:4;1934:26;1963:38;1981:4;1987:5;1994:6;1963:17;:38::i;:::-;2018:26;;;;1770:281;-1:-1:-1;;;;;1770:281:109:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;22810:2:145;3101:49:77;;;22792:21:145;22849:2;22829:18;;;22822:30;-1:-1:-1;;;22868:18:145;;;22861:51;22929:18;;3101:49:77;22608:345:145;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;21842:19:145;;21886:2;21877:12;;21713:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;23160:2:145;3636:134:77;;;23142:21:145;23199:2;23179:18;;;23172:30;23238:34;23218:18;;;23211:62;-1:-1:-1;;;23289:18:145;;;23282:44;23343:19;;3636:134:77;22958:410:145;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;21842:19:145;;;21886:2;21877:12;;21713:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;23575:2:145;3893:176:77;;;23557:21:145;23614:2;23594:18;;;23587:30;23653:31;23633:18;;;23626:59;23702:18;;3893:176:77;23373:353:145;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;21842:19:145;;;21886:2;21877:12;;21713:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;23933:2:145;4222:186:77;;;23915:21:145;23972:2;23952:18;;;23945:30;24011:34;23991:18;;;23984:62;-1:-1:-1;;;24062:18:145;;;24055:37;24109:19;;4222:186:77;23731:403:145;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;24341:2:145;4509:156:77;;;24323:21:145;24380:2;24360:18;;;24353:30;24419:34;24399:18;;;24392:62;-1:-1:-1;;;24470:18:145;;;24463:36;24516:19;;4509:156:77;24139:402:145;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;24748:2:145;5384:158:77;;;24730:21:145;24787:2;24767:18;;;24760:30;24826:34;24806:18;;;24799:62;24897:29;24877:18;;;24870:57;24944:19;;5384:158:77;24546:423:145;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;25176:2:145;5626:162:77;;;25158:21:145;25215:2;25195:18;;;25188:30;25254:34;25234:18;;;25227:62;25325:28;25305:18;;;25298:56;25371:19;;5626:162:77;24974:422:145;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;25921:2:145;7009:171:77;;;25903:21:145;25960:2;25940:18;;;25933:30;25999:34;25979:18;;;25972:62;26070:28;26050:18;;;26043:56;26116:19;;7009:171:77;25719:422:145;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;26348:2:145;7843:185:77;;;26330:21:145;26387:2;26367:18;;;26360:30;26426:34;26406:18;;;26399:62;26497:31;26477:18;;;26470:59;26546:19;;7843:185:77;26146:425:145;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;26778:2:145;8463:156:77;;;26760:21:145;26817:2;26797:18;;;26790:30;26856:34;26836:18;;;26829:62;26927:27;26907:18;;;26900:55;26972:19;;8463:156:77;26576:421:145;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;27204:2:145;8703:160:77;;;27186:21:145;27243:2;27223:18;;;27216:30;27282:34;27262:18;;;27255:62;27353:26;27333:18;;;27326:54;27397:19;;8703:160:77;27002:420:145;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;27629:2:145;9439:60:77;;;27611:21:145;27668:2;27648:18;;;27641:30;27707:34;27687:18;;;27680:62;-1:-1:-1;;;27758:18:145;;;27751:48;27816:19;;9439:60:77;27427:414:145;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;28048:2:145;9556:50:77;;;28030:21:145;28087:2;28067:18;;;28060:30;28126:34;28106:18;;;28099:62;-1:-1:-1;;;28177:18:145;;;28170:38;28225:19;;9556:50:77;27846:404:145;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;28597:2:145;9641:47:77;;;28579:21:145;28636:2;28616:18;;;28609:30;28675:34;28655:18;;;28648:62;-1:-1:-1;;;28726:18:145;;;28719:35;28771:19;;9641:47:77;28395:401:145;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;29003:2:145;2161:136:75;;;28985:21:145;29042:2;29022:18;;;29015:30;29081:34;29061:18;;;29054:62;29152:26;29132:18;;;29125:54;29196:19;;2161:136:75;28801:420:145;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;29428:2:145;2308:134:75;;;29410:21:145;29467:2;29447:18;;;29440:30;29506:34;29486:18;;;29479:62;-1:-1:-1;;;29557:18:145;;;29550:48;29615:19;;2308:134:75;29226:414:145;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;29847:2:145;12579:55:75;;;29829:21:145;29886:2;29866:18;;;29859:30;29925:28;29905:18;;;29898:56;29971:18;;12579:55:75;29645:350:145;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;30202:2:145;11438:55:75;;;30184:21:145;30241:2;30221:18;;;30214:30;30280:28;30260:18;;;30253:56;30326:18;;11438:55:75;30000:350:145;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;30202:2:145;11598:72:75;;;30184:21:145;30241:2;30221:18;;;30214:30;30280:28;30260:18;;;30253:56;30326:18;;11598:72:75;30000:350:145;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:107:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:107;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:107;;31383:2:145;409:63:107;;;31365:21:145;31422:2;31402:18;;;31395:30;-1:-1:-1;;;31441:18:145;;;31434:47;31498:18;;409:63:107;31181:341:145;409:63:107;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:107;;;2803:2;2786:11;-1:-1:-1;;2782:25:107;2776:4;2769:39;-1:-1:-1;617:2736:107;-1:-1:-1;3380:9:107;205:3191;-1:-1:-1;;;;205:3191:107:o;1213:551:109:-;1341:7;1399:5;1378:6;:13;1394:1;1378:17;;;;:::i;:::-;1372:24;;:1;:24;:::i;:::-;:32;1364:41;;;;;;1431:4;1415:13;1468:268;1475:5;1484:1;1475:10;1468:268;;1505:9;1513:1;1505:5;:9;:::i;:::-;1518:1;1505:14;1501:184;;1547:38;1567:6;1574:1;1567:9;;;;;;;;:::i;:::-;;;;;;;1578:5;1554:30;;;;;;;;33058:19:145;;;33102:2;33093:12;;33086:28;33139:2;33130:12;;32901:247;1554:30:109;;;;-1:-1:-1;;1554:30:109;;;;;;;;;;1547:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1539:46;;1501:184;;;1632:38;1652:5;1659:6;1666:1;1659:9;;;;;;;;:::i;:::-;;;;;;;1639:30;;;;;;;;33058:19:145;;;33102:2;33093:12;;33086:28;33139:2;33130:12;;32901:247;1639:30:109;;;;-1:-1:-1;;1639:30:109;;;;;;;;;;1632:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1624:46;;1501:184;1698:10;1707:1;1698:10;;:::i;:::-;;-1:-1:-1;1722:3:109;;;;:::i;:::-;;;;1468:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;33355:2:145;4505:137:75;;;33337:21:145;33394:2;33374:18;;;33367:30;33433:34;33413:18;;;33406:62;33504:27;33484:18;;;33477:55;33549:19;;4505:137:75;33153:421:145;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;33781:2:145;4653:136:75;;;33763:21:145;33820:2;33800:18;;;33793:30;33859:34;33839:18;;;33832:62;-1:-1:-1;;;33910:18:145;;;33903:50;33970:19;;4653:136:75;33579:416:145;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;34202:2:145;6699:156:75;;;34184:21:145;34241:2;34221:18;;;34214:30;-1:-1:-1;;;;;;;;;;;34260:18:145;;;34253:62;34351:34;34331:18;;;34324:62;-1:-1:-1;;;34402:19:145;;;34395:45;34457:19;;6699:156:75;34000:482:145;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;34689:2:145;7025:177:75;;;34671:21:145;34728:2;34708:18;;;34701:30;34767:34;34747:18;;;34740:62;34838:34;34818:18;;;34811:62;-1:-1:-1;;;34889:19:145;;;34882:44;34943:19;;7025:177:75;34487:481:145;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;35175:2:145;7387:164:75;;;35157:21:145;35214:2;35194:18;;;35187:30;-1:-1:-1;;;;;;;;;;;35233:18:145;;;35226:62;35324:34;35304:18;;;35297:62;-1:-1:-1;;;35375:19:145;;;35368:48;35433:19;;7387:164:75;34973:485:145;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;35665:2:145;7721:159:75;;;35647:21:145;35704:2;35684:18;;;35677:30;-1:-1:-1;;;;;;;;;;;35723:18:145;;;35716:62;35814:34;35794:18;;;35787:62;-1:-1:-1;;;35865:19:145;;;35858:41;35916:19;;7721:159:75;35463:478:145;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;36148:2:145;8042:142:75;;;36130:21:145;36187:2;36167:18;;;36160:30;-1:-1:-1;;;;;;;;;;;36206:18:145;;;36199:62;36297:34;36277:18;;;36270:62;-1:-1:-1;;;36348:19:145;;;36341:39;36397:19;;8042:142:75;35946:476:145;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;36629:2:145;8199:168:75;;;36611:21:145;36668:2;36648:18;;;36641:30;-1:-1:-1;;;;;;;;;;;36687:18:145;;;36680:62;36778:34;36758:18;;;36751:62;-1:-1:-1;;;36829:19:145;;;36822:43;36882:19;;8199:168:75;36427:480:145;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;37114:2:145;8617:153:75;;;37096:21:145;37153:2;37133:18;;;37126:30;-1:-1:-1;;;;;;;;;;;37172:18:145;;;37165:62;37263:34;37243:18;;;37236:62;-1:-1:-1;;;37314:19:145;;;37307:41;37365:19;;8617:153:75;36912:478:145;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;37597:2:145;8935:161:75;;;37579:21:145;37636:2;37616:18;;;37609:30;-1:-1:-1;;;;;;;;;;;37655:18:145;;;37648:62;37746:34;37726:18;;;37719:62;-1:-1:-1;;;37797:19:145;;;37790:44;37851:19;;8935:161:75;37395:481:145;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;38083:2:145;9266:157:75;;;38065:21:145;38122:2;38102:18;;;38095:30;-1:-1:-1;;;;;;;;;;;38141:18:145;;;38134:62;38232:34;38212:18;;;38205:62;-1:-1:-1;;;38283:19:145;;;38276:39;38332:19;;9266:157:75;37881:476:145;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;38564:2:145;9588:141:75;;;38546:21:145;38603:2;38583:18;;;38576:30;-1:-1:-1;;;;;;;;;;;38622:18:145;;;38615:62;38713:34;38693:18;;;38686:62;-1:-1:-1;;;38764:19:145;;;38757:37;38811:19;;9588:141:75;38362:474:145;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;39043:2:145;9744:168:75;;;39025:21:145;39082:2;39062:18;;;39055:30;-1:-1:-1;;;;;;;;;;;39101:18:145;;;39094:62;39192:34;39172:18;;;39165:62;-1:-1:-1;;;39243:19:145;;;39236:41;39294:19;;9744:168:75;38841:478:145;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;31383:2:145;989:63:74;;;31365:21:145;31422:2;31402:18;;;31395:30;-1:-1:-1;;;31441:18:145;;;31434:47;31498:18;;989:63:74;31181:341:145;14:171;81:20;;-1:-1:-1;;;;;130:30:145;;120:41;;110:69;;175:1;172;165:12;110:69;14:171;;;:::o;190:184::-;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:145;;-1:-1:-1;;;;;1222:30:145;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:145;;-1:-1:-1;;;;;1586:30:145;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:145;1991:40;;-1:-1:-1;;;;;2046:34:145;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:145:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:145;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:145;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:145:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:145;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:145;-1:-1:-1;3373:2:145;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:145;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:145;-1:-1:-1;3615:2:145;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:145;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:145;-1:-1:-1;3873:2:145;3858:18;;3845:32;;-1:-1:-1;3920:3:145;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:145;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:145;-1:-1:-1;4176:3:145;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:145;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:145;;4362:180;-1:-1:-1;4362:180:145:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:145;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:145;-1:-1:-1;6516:2:145;6501:18;;6488:32;;-1:-1:-1;6532:16:145;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:145;-1:-1:-1;6779:2:145;6764:18;;6751:32;;-1:-1:-1;6795:16:145;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:145;;-1:-1:-1;5840:1155:145;;;;6837:98;;-1:-1:-1;;;5840:1155:145:o;7587:256::-;7653:6;7661;7714:2;7702:9;7693:7;7689:23;7685:32;7682:52;;;7730:1;7727;7720:12;7682:52;7753:28;7771:9;7753:28;:::i;:::-;7743:38;;7800:37;7833:2;7822:9;7818:18;7800:37;:::i;:::-;7790:47;;7587:256;;;;;:::o;8054:184::-;8124:6;8177:2;8165:9;8156:7;8152:23;8148:32;8145:52;;;8193:1;8190;8183:12;8145:52;-1:-1:-1;8216:16:145;;8054:184;-1:-1:-1;8054:184:145:o;8949:934::-;9085:9;-1:-1:-1;;;;;9160:2:145;9152:6;9149:14;9146:40;;;9166:18;;:::i;:::-;9212:6;9209:1;9205:14;9238:4;9262:28;9286:2;9282;9278:11;9262:28;:::i;:::-;9324:19;;;9394:14;;;;9359:12;;;;9431:14;9420:26;;9417:46;;;9459:1;9456;9449:12;9417:46;9483:5;9497:353;9513:6;9508:3;9505:15;9497:353;;;9599:3;9586:17;9635:2;9622:11;9619:19;9616:109;;;9679:1;9708:2;9704;9697:14;9616:109;9750:57;9792:14;9778:11;9771:5;9767:23;9750:57;:::i;:::-;9738:70;;-1:-1:-1;9828:12:145;;;;9530;;9497:353;;;-1:-1:-1;9872:5:145;8949:934;-1:-1:-1;;;;;;;8949:934:145:o;11675:271::-;11858:6;11850;11845:3;11832:33;11814:3;11884:16;;11909:13;;;11884:16;11675:271;-1:-1:-1;11675:271:145:o;13766:277::-;13833:6;13886:2;13874:9;13865:7;13861:23;13857:32;13854:52;;;13902:1;13899;13892:12;13854:52;13934:9;13928:16;13987:5;13980:13;13973:21;13966:5;13963:32;13953:60;;14009:1;14006;13999:12;15302:127;15363:10;15358:3;15354:20;15351:1;15344:31;15394:4;15391:1;15384:15;15418:4;15415:1;15408:15;15434:128;15501:9;;;15522:11;;;15519:37;;;15536:18;;:::i;15970:168::-;16010:7;16076:1;16072;16068:6;16064:14;16061:1;16058:21;16053:1;16046:9;16039:17;16035:45;16032:71;;;16083:18;;:::i;:::-;-1:-1:-1;16123:9:145;;15970:168::o;16143:125::-;16208:9;;;16229:10;;;16226:36;;;16242:18;;:::i;16273:183::-;-1:-1:-1;;;;;16392:10:145;;;16380;;;16376:27;;16415:12;;;16412:38;;;16430:18;;:::i;:::-;16412:38;16273:183;;;;:::o;16461:127::-;16522:10;16517:3;16513:20;16510:1;16503:31;16553:4;16550:1;16543:15;16577:4;16574:1;16567:15;16593:112;16625:1;16651;16641:35;;16656:18;;:::i;:::-;-1:-1:-1;16690:9:145;;16593:112::o;16710:120::-;16750:1;16776;16766:35;;16781:18;;:::i;:::-;-1:-1:-1;16815:9:145;;16710:120::o;17237:127::-;17298:10;17293:3;17289:20;17286:1;17279:31;17329:4;17326:1;17319:15;17353:4;17350:1;17343:15;19654:250;19739:1;19749:113;19763:6;19760:1;19757:13;19749:113;;;19839:11;;;19833:18;19820:11;;;19813:39;19785:2;19778:10;19749:113;;;-1:-1:-1;;19896:1:145;19878:16;;19871:27;19654:250::o;19909:270::-;19950:3;19988:5;19982:12;20015:6;20010:3;20003:19;20031:76;20100:6;20093:4;20088:3;20084:14;20077:4;20070:5;20066:16;20031:76;:::i;:::-;20161:2;20140:15;-1:-1:-1;;20136:29:145;20127:39;;;;20168:4;20123:50;;19909:270;-1:-1:-1;;19909:270:145:o;20184:400::-;20397:10;20385:23;;20367:42;;-1:-1:-1;;;;;20445:32:145;;20440:2;20425:18;;20418:60;20514:2;20509;20494:18;;20487:30;;;-1:-1:-1;;20534:44:145;;20559:18;;20551:6;20534:44;:::i;20589:287::-;20718:3;20756:6;20750:13;20772:66;20831:6;20826:3;20819:4;20811:6;20807:17;20772:66;:::i;:::-;20854:16;;;;;20589:287;-1:-1:-1;;20589:287:145:o;20881:290::-;20950:6;21003:2;20991:9;20982:7;20978:23;20974:32;20971:52;;;21019:1;21016;21009:12;20971:52;21045:16;;-1:-1:-1;;;;;;21090:32:145;;21080:43;;21070:71;;21137:1;21134;21127:12;21176:298;21345:2;21334:9;21327:21;21308:4;21365:44;21405:2;21394:9;21390:18;21382:6;21365:44;:::i;:::-;21357:52;;21459:6;21452:14;21445:22;21440:2;21429:9;21425:18;21418:50;21176:298;;;;;:::o;25401:157::-;25431:1;25465:4;25462:1;25458:12;25489:3;25479:37;;25496:18;;:::i;:::-;25548:3;25541:4;25538:1;25534:12;25530:22;25525:27;;;25401:157;;;;:::o;25563:151::-;25653:4;25646:12;;;25632;;;25628:31;;25671:14;;25668:40;;;25688:18;;:::i;28255:135::-;28294:3;28315:17;;;28312:43;;28335:18;;:::i;:::-;-1:-1:-1;28382:1:145;28371:13;;28255:135::o;30355:478::-;30557:2;30539:21;;;30596:2;30576:18;;;30569:30;30635:34;30630:2;30615:18;;30608:62;30706:34;30701:2;30686:18;;30679:62;-1:-1:-1;;;30772:3:145;30757:19;;30750:41;30823:3;30808:19;;30355:478::o;30838:338::-;31040:2;31022:21;;;31079:2;31059:18;;;31052:30;-1:-1:-1;;;31113:2:145;31098:18;;31091:44;31167:2;31152:18;;30838:338::o;31527:422::-;31616:1;31659:5;31616:1;31673:270;31694:7;31684:8;31681:21;31673:270;;;31753:4;31749:1;31745:6;31741:17;31735:4;31732:27;31729:53;;;31762:18;;:::i;:::-;31812:7;31802:8;31798:22;31795:55;;;31832:16;;;;31795:55;31911:22;;;;31871:15;;;;31673:270;;;31677:3;31527:422;;;;;:::o;31954:806::-;32003:5;32033:8;32023:80;;-1:-1:-1;32074:1:145;32088:5;;32023:80;32122:4;32112:76;;-1:-1:-1;32159:1:145;32173:5;;32112:76;32204:4;32222:1;32217:59;;;;32290:1;32285:130;;;;32197:218;;32217:59;32247:1;32238:10;;32261:5;;;32285:130;32322:3;32312:8;32309:17;32306:43;;;32329:18;;:::i;:::-;-1:-1:-1;;32385:1:145;32371:16;;32400:5;;32197:218;;32499:2;32489:8;32486:16;32480:3;32474:4;32471:13;32467:36;32461:2;32451:8;32448:16;32443:2;32437:4;32434:12;32430:35;32427:77;32424:159;;;-1:-1:-1;32536:19:145;;;32568:5;;32424:159;32615:34;32640:8;32634:4;32615:34;:::i;:::-;32685:6;32681:1;32677:6;32673:19;32664:7;32661:32;32658:58;;;32696:18;;:::i;:::-;32734:20;;31954:806;-1:-1:-1;;;31954:806:145:o;32765:131::-;32825:5;32854:36;32881:8;32875:4;32854:36;:::i", - "linkReferences": {} + "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd366004613538565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610145610130366004613553565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b6101686101633660046136b3565b6102c6565b005b61018d6101783660046137b0565b60076020526000908152604090205460ff1681565b60405161011991906137df565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc366004613553565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d366004613553565b6004602052600090815260409020546001600160a01b031681565b610168610246366004613807565b610599565b61010f6102593660046137b0565b60096020526000908152604090205481565b61027e6102793660046137b0565b6108bc565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f6565b6000806102db8b8b61094f565b915091506102ec8260400151610bb9565b6102f98260400151610ceb565b6000808e8e81019061030b91906138b1565b9150915061031d828560400151610d47565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac91906138e4565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104418b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890610f80565b9050806104905760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f58787906104a691906138fd565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026111fc565b905081811461053e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061058082828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115af92505050565b505061058c6001603355565b5050505050505050505050565b6105a16108f6565b6000806105ae888861094f565b915091506105bf8260400151610bb9565b6105cc8260400151610ceb565b6105da898360400151610d47565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107915760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f091906138e4565b905060008190036107435760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b610777610750898b6138fd565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611756565b600083815260096020526040902081905592506107a39050565b60008181526009602052604090205491505b6000846020015160016040516020016107d19291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061081982856108148a8c6138fd565b611852565b90508481146108625760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a782828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115af92505050565b50506108b36001603355565b50505050505050565b600381815481106108cc57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109cc85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118ee92505050565b9050600085856040516109e0929190613980565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0f57610a0f6137c9565b14610a5c5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610aa45760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610aee5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b39575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610bac5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1f5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190613990565b610ce85760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce85760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610dad5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906138e4565b600003610e895760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1391906138e4565b610f1d90426139c8565b90506078811015610f7b5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffe91906138e4565b9050600081856001600160401b03161061101957601b61101c565b60075b60ff169050600082866001600160401b03161061105857612000611049846001600160401b0389166139c8565b61105391906139f1565b61106d565b61106d6120006001600160401b0388166139f1565b90506000866001600160401b0316886001600160401b0316036110ac5750600b61109981610200613a05565b6110a590610183613a24565b90506111e1565b6120006110b9888a613a37565b6001600160401b03161161111b5750600b6110d5816020613a05565b6110e0906006613a24565b90506110f76120006001600160401b038916613a5e565b61110361200083613a05565b61110d9190613a24565b905061109981610200613a05565b876001600160401b0316876001600160401b031610156111995750600b82611144826020613a05565b61114e9190613a24565b905061115b816002613a05565b611166906000613a24565b905081611177630100000083613a05565b6111819190613a24565b905061118e816002613a05565b6110e0906001613a24565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016103ef565b6111ed8b828c8c6119b3565b9b9a5050505050505050505050565b60008061120a878a8a6119cd565b905060008160008151811061122157611221613a72565b01602001516001600160f81b03191690506000600160f81b8214806112535750600160f91b6001600160f81b03198316145b15611260575060016112c5565b600360fe1b6001600160f81b031983161061127d575060006112c5565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b6000602084019050600060405180604001604052808487516112e791906139c8565b81526020016112f68585613a24565b9052905060006113058261226d565b905080516004146113515760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b60006113768260038151811061136957611369613a72565b602002602001015161226d565b905080518c106113c85760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b60006113df828e8151811061136957611369613a72565b9050805160031461143d5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006114628260008151811061145557611455613a72565b6020026020010151612492565b90508c6001600160a01b0316816001600160a01b0316146114d55760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b60006114ed8360018151811061136957611369613a72565b90508c6115138260008151811061150657611506613a72565b6020026020010151612506565b146115765760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b611598818d8151811061158b5761158b613a72565b602002602001015161250d565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c001516040516024016115de93929190613ad8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116309190613b08565b6000604051808303816000865af19150503d806000811461166d576040519150601f19603f3d011682016040523d82523d6000602084013e611672565b606091505b50805191955093506000925060200390506116b45760008280602001905181019061169d9190613b24565b6001600160e01b031916631dee306b60e11b149150505b8280156116be5750805b156116e1576000858152600760205260409020805460ff191660021790556116fb565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051611746929190613b4e565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117c0826040516020016117aa91815260200190565b60405160208183030381529060405287866119cd565b9050600081511161180c5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b600061181f61181a83612610565b61226d565b9050805160041461182f57600080fd5b6118458160028151811061150657611506613a72565b93505050505b9392505050565b6000806118818560405160200161186b91815260200190565b60405160208183030381529060405284866119cd565b905060008151116118d45760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b6118e56118e082612610565b612506565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916119a2918a919061199d9082906139c8565b612663565b60c088015250949695505050505050565b6000806119c186868661274f565b90921495945050505050565b60606000845111611a185760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b6000611a23846128de565b90506000611a30866129cc565b9050600084604051602001611a4791815260200190565b60405160208183030381529060405290506000805b8451811015612216576000858281518110611a7957611a79613a72565b602002602001015190508451831115611aeb5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611b8a5780518051602091820120604051611b3992611b1392910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b855760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611c80565b805151602011611c105780518051602091820120604051611bb492611b1392910190815260200190565b611b855760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611c805760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611c8c60106001613a24565b81602001515103611e395784518303611dd1576000611cc88260200151601081518110611cbb57611cbb613a72565b6020026020010151612ae6565b90506000815111611d415760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611d4f91906139c8565b8314611dc35760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b965061184b95505050505050565b6000858481518110611de557611de5613a72565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611e1057611e10613a72565b60200260200101519050611e2381612c09565b9550611e30600186613a24565b94505050612203565b6002816020015151036121aa576000611e5182612c2e565b9050600081600081518110611e6857611e68613a72565b016020015160f81c90506000611e7f600283613b72565b611e8a906002613b94565b90506000611e9b848360ff16612c52565b90506000611ea98a89612c52565b90506000611eb78383612c88565b905080835114611f2f5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611f44575060ff85166003145b156120ea5780825114611fbf5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611fdb8860200151600181518110611cbb57611cbb613a72565b905060008151116120545760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d5161206291906139c8565b89146120d65760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c5061184b9b505050505050505050505050565b60ff851615806120fd575060ff85166001145b1561213c57612129876020015160018151811061211c5761211c613a72565b6020026020010151612c09565b9950612135818a613a24565b985061219f565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b505050505050612203565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b508061220e81613bad565b915050611a5c565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b6060600080600061227d85612d07565b919450925090506001816001811115612298576122986137c9565b1461230b5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b84516123178385613a24565b1461237f5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123985790505090506000845b87518110156124865760008061240b6040518060400160405280858d600001516123ef91906139c8565b8152602001858d602001516124049190613a24565b9052612d07565b5091509150604051806040016040528083836124279190613a24565b8152602001848c6020015161243c9190613a24565b81525085858151811061245157612451613a72565b6020908102919091010152612467600185613a24565b93506124738183613a24565b61247d9084613a24565b925050506123c5565b50815295945050505050565b80516000906001036124a657506000919050565b81516015146124f75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b61250082612506565b92915050565b6000612500825b60006021826000015111156125645760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061257285612d07565b91945092509050600081600181111561258d5761258d6137c9565b146125da5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125ec9190613a24565b805190915060208410156126065760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126455760405162461bcd60e51b81526004016103ef90613bc6565b50604080518082019091528151815260209182019181019190915290565b60608161267181601f613a24565b101561268f5760405162461bcd60e51b81526004016103ef90613c36565b6126998284613a24565b845110156126dd5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b6060821580156126fc5760405191506000825260208201604052612746565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561273557805183526020928301920161271d565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127609190613a24565b61276b906002613d42565b1161277557600080fd5b8360005b846001146127465761278c600286613a5e565b60010361282b5760028482815181106127a7576127a7613a72565b6020026020010151836040516020016127ca929190918252602082015260400190565b60408051601f19818403018152908290526127e491613b08565b602060405180830381855afa158015612801573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061282491906138e4565b91506128bf565b60028285838151811061284057612840613a72565b6020026020010151604051602001612862929190918252602082015260400190565b60408051601f198184030181529082905261287c91613b08565b602060405180830381855afa158015612899573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128bc91906138e4565b91505b6128ca6002866139f1565b9450806128d681613bad565b915050612779565b80516060906000816001600160401b038111156128fd576128fd6135fe565b60405190808252806020026020018201604052801561294257816020015b604080518082019091526060808252602082015281526020019060019003908161291b5790505b50905060005b828110156129c457604051806040016040528086838151811061296d5761296d613a72565b6020026020010151815260200161299c87848151811061298f5761298f613a72565b60200260200101516133ca565b8152508282815181106129b1576129b1613a72565b6020908102919091010152600101612948565b509392505050565b805160609060006129de826002613a05565b6001600160401b038111156129f5576129f56135fe565b6040519080825280601f01601f191660200182016040528015612a1f576020820181803683370190505b5090506000805b83811015612adc57858181518110612a4057612a40613a72565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a68836002613a05565b81518110612a7857612a78613a72565b60200101906001600160f81b031916908160001a905350600f60f81b821683612aa2836002613a05565b612aad906001613a24565b81518110612abd57612abd613a72565b60200101906001600160f81b031916908160001a905350600101612a26565b5090949350505050565b60606000806000612af685612d07565b919450925090506000816001811115612b1157612b116137c9565b14612b845760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612b8e8284613a24565b855114612bfa5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b6118e5856020015184846133d8565b60606020826000015110612c2557612c2082612ae6565b612500565b61250082613478565b6060612500612c4d8360200151600081518110611cbb57611cbb613a72565b6129cc565b606082518210612c715750604080516020810190915260008152612500565b61184b8383848651612c8391906139c8565b61348e565b60008060008351855110612c9d578351612ca0565b84515b90505b8082108015612cf75750838281518110612cbf57612cbf613a72565b602001015160f81c60f81b6001600160f81b031916858381518110612ce657612ce6613a72565b01602001516001600160f81b031916145b156129c457816001019150612ca3565b600080600080846000015111612d2f5760405162461bcd60e51b81526004016103ef90613bc6565b6020840151805160001a607f8111612d545760006001600094509450945050506133c3565b60b78111612eb1576000612d696080836139c8565b905080876000015111612de95760405162461bcd60e51b815260206004820152604e6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612e165750600160ff1b6001600160f81b0319821610155b612e9e5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b50600195509350600092506133c3915050565b60bf81116130f2576000612ec660b7836139c8565b905080876000015111612f495760405162461bcd60e51b81526020600482015260516024820152600080516020613d4f83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612fd05760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c603781116130535760405162461bcd60e51b81526020600482015260486024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b61305d8184613a24565b8951116130d55760405162461bcd60e51b815260206004820152604c6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b6130e0836001613a24565b97509550600094506133c39350505050565b60f7811161319457600061310760c0836139c8565b9050808760000151116131835760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b6001955093508492506133c3915050565b60006131a160f7836139c8565b9050808760000151116132205760405162461bcd60e51b815260206004820152604d6024820152600080516020613d4f83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036132a55760405162461bcd60e51b81526020600482015260486024820152600080516020613d4f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c603781116133265760405162461bcd60e51b81526020600482015260466024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6133308184613a24565b8951116133a65760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b6133b1836001613a24565b97509550600194506133c39350505050565b9193909250565b606061250061181a83612610565b60606000826001600160401b038111156133f4576133f46135fe565b6040519080825280601f01601f19166020018201604052801561341e576020820181803683370190505b5090508260000361343057905061184b565b600061343c8587613a24565b90506020820160005b8581101561345d578281015182820152602001613445565b8581111561346c576000868301525b50919695505050505050565b60606125008260200151600084600001516133d8565b60608182601f0110156134b35760405162461bcd60e51b81526004016103ef90613c36565b8282840110156134d55760405162461bcd60e51b81526004016103ef90613c36565b818301845110156126dd5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461353357600080fd5b919050565b60006020828403121561354a57600080fd5b61184b8261351c565b60006020828403121561356557600080fd5b813563ffffffff8116811461184b57600080fd5b60008083601f84011261358b57600080fd5b5081356001600160401b038111156135a257600080fd5b602083019150836020828501011115610bb257600080fd5b60008083601f8401126135cc57600080fd5b5081356001600160401b038111156135e357600080fd5b6020830191508360208260051b8501011115610bb257600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561363c5761363c6135fe565b604052919050565b600082601f83011261365557600080fd5b81356001600160401b0381111561366e5761366e6135fe565b613681601f8201601f1916602001613614565b81815284602083860101111561369657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156136d457600080fd5b6001600160401b03808d3511156136ea57600080fd5b6136f78e8e358f01613579565b909c509a5060208d013581101561370d57600080fd5b61371d8e60208f01358f01613579565b909a50985060408d013581101561373357600080fd5b6137438e60408f01358f016135ba565b909850965060608d0135955060808d013581101561376057600080fd5b6137708e60808f01358f016135ba565b909550935060a08d013581101561378657600080fd5b506137978d60a08e01358e01613644565b915060c08c013590509295989b509295989b9093969950565b6000602082840312156137c257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061380157634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561382257600080fd5b61382b8861351c565b965060208801356001600160401b038082111561384757600080fd5b6138538b838c01613579565b909850965060408a013591508082111561386c57600080fd5b6138788b838c016135ba565b909650945060608a013591508082111561389157600080fd5b5061389e8a828b016135ba565b989b979a50959850939692959293505050565b600080604083850312156138c457600080fd5b6138cd8361351c565b91506138db6020840161351c565b90509250929050565b6000602082840312156138f657600080fd5b5051919050565b60006001600160401b0380841115613917576139176135fe565b8360051b6020613928818301613614565b86815291850191818101903684111561394057600080fd5b865b848110156139745780358681111561395a5760008081fd5b61396636828b01613644565b845250918301918301613942565b50979650505050505050565b8183823760009101908152919050565b6000602082840312156139a257600080fd5b8151801515811461184b57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612500576125006139b2565b634e487b7160e01b600052601260045260246000fd5b600082613a0057613a006139db565b500490565b6000816000190483118215151615613a1f57613a1f6139b2565b500290565b80820180821115612500576125006139b2565b6001600160401b03828116828216039080821115613a5757613a576139b2565b5092915050565b600082613a6d57613a6d6139db565b500690565b634e487b7160e01b600052603260045260246000fd5b60005b83811015613aa3578181015183820152602001613a8b565b50506000910152565b60008151808452613ac4816020860160208601613a88565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b03831660208201526060604082018190526000906118e590830184613aac565b60008251613b1a818460208701613a88565b9190910192915050565b600060208284031215613b3657600080fd5b81516001600160e01b03198116811461184b57600080fd5b604081526000613b616040830185613aac565b905082151560208301529392505050565b600060ff831680613b8557613b856139db565b8060ff84160691505092915050565b60ff8281168282160390811115612500576125006139b2565b600060018201613bbf57613bbf6139b2565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613c99578160001904821115613c7f57613c7f6139b2565b80851615613c8c57918102915b93841c9390800290613c63565b509250929050565b600082613cb057506001612500565b81613cbd57506000612500565b8160018114613cd35760028114613cdd57613cf9565b6001915050612500565b60ff841115613cee57613cee6139b2565b50506001821b612500565b5060208310610133831016604e8410600b8410161715613d1c575081810a612500565b613d268383613c5e565b8060001904821115613d3a57613d3a6139b2565b029392505050565b600061184b8383613ca156fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212200b05ed5ae63b09c514431342b32abbec5ca9ab35e53d2a4b1a886369d8b7f6b164736f6c63430008100033", + "sourceMap": "748:10165:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:146;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:146;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:146;4866:1928:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:146;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:146;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:146;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:146;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;879:30;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:146;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:146;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:146;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:146;924:58:100;;973:9;924:58;;4866:1928;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:146;;5661:52:100;;::::1;7526:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;8445:2:146;5727:58:100::1;::::0;::::1;8427:21:146::0;8484:2;8464:18;;;8457:30;-1:-1:-1;;;8503:18:146;;;8496:51;8564:18;;5727:58:100::1;;;;;;;;;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;8795:2:146;5965:47:100::1;::::0;::::1;8777:21:146::0;8834:2;8814:18;;;8807:30;8873:29;8853:18;;;8846:57;8920:18;;5965:47:100::1;8593:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;10090:2:146;6648:67:100::1;::::0;::::1;10072:21:146::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:146;;;10141:51;10209:18;;6648:67:100::1;9888:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;10457:3:146;10435:16;;;;-1:-1:-1;;;;;;10431:43:146;2955:82:100;;::::1;10419:56:146::0;10530:3;10508:16;;;-1:-1:-1;;;;;;10504:51:146;10491:11;;;10484:72;10594:2;10590:15;-1:-1:-1;;10590:15:146;10572:12;;;10565:75;2955:82:100;;;;;;;;;10656:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:146;;3301:61:100;;::::1;7526:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;10881:2:146;3380:67:100::1;::::0;::::1;10863:21:146::0;10920:2;10900:18;;;10893:30;10959:33;10939:18;;;10932:61;11010:18;;3380:67:100::1;10679:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;11229:31:146;;;;11211:50;;11292:2;11277:18;;11270:34;11199:2;11184:18;;11039:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:146::0;3826:80:100;;;;;;;;;498:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10090:2:146;4090:31:100::1;::::0;::::1;10072:21:146::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:146;;;10141:51;10209:18;;4090:31:100::1;9888:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;11517:2:146;2704:63:39;;;11499:21:146;11556:2;11536:18;;;11529:30;11595:33;11575:18;;;11568:61;11646:18;;2704:63:39;11315:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;12153:2:146;8369:35:100;;;12135:21:146;12192:2;12172:18;;;12165:30;12231:27;12211:18;;;12204:55;12276:18;;8369:35:100;11951:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;12507:2:146;8484:22:100;;;12489:21:146;12546:2;12526:18;;;12519:30;-1:-1:-1;;;12565:18:146;;;12558:42;12617:18;;8484:22:100;12305:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;12848:2:146;8569:24:100;;;12830:21:146;12887:2;12867:18;;;12860:30;-1:-1:-1;;;12906:18:146;;;12899:44;12960:18;;8569:24:100;12646:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;13191:2:146;8779:65:100;;;13173:21:146;13230:2;13210:18;;;13203:30;13269:34;13249:18;;;13242:62;13340:25;13320:18;;;13313:53;13383:19;;8779:65:100;12989:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;13615:2:146;6959:81:100;;;13597:21:146;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:146;;;13666:54;13737:18;;6959:81:100;13413:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;14250:2:146;7050:76:100;;;14232:21:146;14289:2;14269:18;;;14262:30;14328:31;14308:18;;;14301:59;14377:18;;7050:76:100;14048:353:146;7050:76:100;6880:253;:::o;7194:121::-;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;14608:2:146;7260:48:100;;;14590:21:146;14647:2;14627:18;;;14620:30;-1:-1:-1;;;14666:18:146;;;14659:49;14725:18;;7260:48:100;14406:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;13615:2:146;7471:81:100;;;13597:21:146;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:146;;;13666:54;13737:18;;7471:81:100;13413:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;7544:31:146;;7570:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;7499:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;15145:2:146;7562:86:100;;;15127:21:146;15184:2;15164:18;;;15157:30;15223:32;15203:18;;;15196:60;15273:18;;7562:86:100;14943:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;7544:31:146;;7698:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;7499:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;15769:2:146;7746:84:100;;;15751:21:146;15808:2;15788:18;;;15781:30;15847:34;15827:18;;;15820:62;-1:-1:-1;;;15898:18:146;;;15891:32;15940:19;;7746:84:100;15567:398:146;7746:84:100;7461:376;7385:452;;:::o;3094:1947:110:-;3372:46;;-1:-1:-1;;;3372:46:110;;;7347:23:146;;3372:46:110;;;7329:42:146;3330:4:110;;;;3372:16;;:31;;7302:18:146;;3372:46:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;17242:2:146;4896:40:110;;;17224:21:146;17281:2;17261:18;;;17254:30;17320:32;17300:18;;;17293:60;17370:18;;4896:40:110;17040:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;17733:2:146;2652:38:111;;;17715:21:146;17772:2;17752:18;;;17745:30;17811;17791:18;;;17784:58;17859:18;;2652:38:111;17531:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;18090:2:146;3233:58:111;;;18072:21:146;18129:2;18109:18;;;18102:30;-1:-1:-1;;;18148:18:146;;;18141:52;18210:18;;3233:58:111;17888:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;18441:2:146;3450:58:111;;;18423:21:146;18480:2;18460:18;;;18453:30;18519:25;18499:18;;;18492:53;18562:18;;3450:58:111;18239:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;18793:2:146;3594:70:111;;;18775:21:146;18832:2;18812:18;;;18805:30;18871:34;18851:18;;;18844:62;-1:-1:-1;;;18922:18:146;;;18915:32;18964:19;;3594:70:111;18591:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;19196:2:146;3803:85:111;;;19178:21:146;19235:2;19215:18;;;19208:30;19274:34;19254:18;;;19247:62;-1:-1:-1;;;19325:18:146;;;19318:37;19372:19;;3803:85:111;18994:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;19604:2:146;4057:142:111;;;19586:21:146;19643:2;19623:18;;;19616:30;19682:34;19662:18;;;19655:62;-1:-1:-1;;;19733:18:146;;;19726:43;19786:19;;4057:142:111;19402:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;735:581:111:-;927:33;;-1:-1:-1;;21790:2:146;21786:15;;;21782:53;927:33:111;;;21770:66:146;872:7:111;;;;21852:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;22004:19:146;;22048:2;22039:12;;21875:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;22264:2:146;1072:58:111;;;22246:21:146;22303:2;22283:18;;;22276:30;-1:-1:-1;;;22322:18:146;;;22315:52;22384:18;;1072:58:111;22062:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;22004:19:146;;22048:2;22039:12;;21875:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;22615:2:146;601:65:111;;;22597:21:146;22654:2;22634:18;;;22627:30;22693;22673:18;;;22666:58;22741:18;;601:65:111;22413:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;22972:2:146;3101:49:77;;;22954:21:146;23011:2;22991:18;;;22984:30;-1:-1:-1;;;23030:18:146;;;23023:51;23091:18;;3101:49:77;22770:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;22004:19:146;;22048:2;22039:12;;21875:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;23322:2:146;3636:134:77;;;23304:21:146;23361:2;23341:18;;;23334:30;23400:34;23380:18;;;23373:62;-1:-1:-1;;;23451:18:146;;;23444:44;23505:19;;3636:134:77;23120:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;22004:19:146;;;22048:2;22039:12;;21875:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;23737:2:146;3893:176:77;;;23719:21:146;23776:2;23756:18;;;23749:30;23815:31;23795:18;;;23788:59;23864:18;;3893:176:77;23535:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;22004:19:146;;;22048:2;22039:12;;21875:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;24095:2:146;4222:186:77;;;24077:21:146;24134:2;24114:18;;;24107:30;24173:34;24153:18;;;24146:62;-1:-1:-1;;;24224:18:146;;;24217:37;24271:19;;4222:186:77;23893:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;24503:2:146;4509:156:77;;;24485:21:146;24542:2;24522:18;;;24515:30;24581:34;24561:18;;;24554:62;-1:-1:-1;;;24632:18:146;;;24625:36;24678:19;;4509:156:77;24301:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;24910:2:146;5384:158:77;;;24892:21:146;24949:2;24929:18;;;24922:30;24988:34;24968:18;;;24961:62;25059:29;25039:18;;;25032:57;25106:19;;5384:158:77;24708:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;25338:2:146;5626:162:77;;;25320:21:146;25377:2;25357:18;;;25350:30;25416:34;25396:18;;;25389:62;25487:28;25467:18;;;25460:56;25533:19;;5626:162:77;25136:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;26083:2:146;7009:171:77;;;26065:21:146;26122:2;26102:18;;;26095:30;26161:34;26141:18;;;26134:62;26232:28;26212:18;;;26205:56;26278:19;;7009:171:77;25881:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;26510:2:146;7843:185:77;;;26492:21:146;26549:2;26529:18;;;26522:30;26588:34;26568:18;;;26561:62;26659:31;26639:18;;;26632:59;26708:19;;7843:185:77;26308:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;26940:2:146;8463:156:77;;;26922:21:146;26979:2;26959:18;;;26952:30;27018:34;26998:18;;;26991:62;27089:27;27069:18;;;27062:55;27134:19;;8463:156:77;26738:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;27366:2:146;8703:160:77;;;27348:21:146;27405:2;27385:18;;;27378:30;27444:34;27424:18;;;27417:62;27515:26;27495:18;;;27488:54;27559:19;;8703:160:77;27164:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;27791:2:146;9439:60:77;;;27773:21:146;27830:2;27810:18;;;27803:30;27869:34;27849:18;;;27842:62;-1:-1:-1;;;27920:18:146;;;27913:48;27978:19;;9439:60:77;27589:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;28210:2:146;9556:50:77;;;28192:21:146;28249:2;28229:18;;;28222:30;28288:34;28268:18;;;28261:62;-1:-1:-1;;;28339:18:146;;;28332:38;28387:19;;9556:50:77;28008:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;28759:2:146;9641:47:77;;;28741:21:146;28798:2;28778:18;;;28771:30;28837:34;28817:18;;;28810:62;-1:-1:-1;;;28888:18:146;;;28881:35;28933:19;;9641:47:77;28557:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;29165:2:146;2161:136:75;;;29147:21:146;29204:2;29184:18;;;29177:30;29243:34;29223:18;;;29216:62;29314:26;29294:18;;;29287:54;29358:19;;2161:136:75;28963:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;29590:2:146;2308:134:75;;;29572:21:146;29629:2;29609:18;;;29602:30;29668:34;29648:18;;;29641:62;-1:-1:-1;;;29719:18:146;;;29712:48;29777:19;;2308:134:75;29388:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;30009:2:146;12579:55:75;;;29991:21:146;30048:2;30028:18;;;30021:30;30087:28;30067:18;;;30060:56;30133:18;;12579:55:75;29807:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;30364:2:146;11438:55:75;;;30346:21:146;30403:2;30383:18;;;30376:30;30442:28;30422:18;;;30415:56;30488:18;;11438:55:75;30162:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;30364:2:146;11598:72:75;;;30346:21:146;30403:2;30383:18;;;30376:30;30442:28;30422:18;;;30415:56;30488:18;;11598:72:75;30162:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;31545:2:146;409:63:108;;;31527:21:146;31584:2;31564:18;;;31557:30;-1:-1:-1;;;31603:18:146;;;31596:47;31660:18;;409:63:108;31343:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;33220:19:146;;;33264:2;33255:12;;33248:28;33301:2;33292:12;;33063:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;33220:19:146;;;33264:2;33255:12;;33248:28;33301:2;33292:12;;33063:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;33517:2:146;4505:137:75;;;33499:21:146;33556:2;33536:18;;;33529:30;33595:34;33575:18;;;33568:62;33666:27;33646:18;;;33639:55;33711:19;;4505:137:75;33315:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;33943:2:146;4653:136:75;;;33925:21:146;33982:2;33962:18;;;33955:30;34021:34;34001:18;;;33994:62;-1:-1:-1;;;34072:18:146;;;34065:50;34132:19;;4653:136:75;33741:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;34364:2:146;6699:156:75;;;34346:21:146;34403:2;34383:18;;;34376:30;-1:-1:-1;;;;;;;;;;;34422:18:146;;;34415:62;34513:34;34493:18;;;34486:62;-1:-1:-1;;;34564:19:146;;;34557:45;34619:19;;6699:156:75;34162:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;34851:2:146;7025:177:75;;;34833:21:146;34890:2;34870:18;;;34863:30;34929:34;34909:18;;;34902:62;35000:34;34980:18;;;34973:62;-1:-1:-1;;;35051:19:146;;;35044:44;35105:19;;7025:177:75;34649:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;35337:2:146;7387:164:75;;;35319:21:146;35376:2;35356:18;;;35349:30;-1:-1:-1;;;;;;;;;;;35395:18:146;;;35388:62;35486:34;35466:18;;;35459:62;-1:-1:-1;;;35537:19:146;;;35530:48;35595:19;;7387:164:75;35135:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;35827:2:146;7721:159:75;;;35809:21:146;35866:2;35846:18;;;35839:30;-1:-1:-1;;;;;;;;;;;35885:18:146;;;35878:62;35976:34;35956:18;;;35949:62;-1:-1:-1;;;36027:19:146;;;36020:41;36078:19;;7721:159:75;35625:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;36310:2:146;8042:142:75;;;36292:21:146;36349:2;36329:18;;;36322:30;-1:-1:-1;;;;;;;;;;;36368:18:146;;;36361:62;36459:34;36439:18;;;36432:62;-1:-1:-1;;;36510:19:146;;;36503:39;36559:19;;8042:142:75;36108:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;36791:2:146;8199:168:75;;;36773:21:146;36830:2;36810:18;;;36803:30;-1:-1:-1;;;;;;;;;;;36849:18:146;;;36842:62;36940:34;36920:18;;;36913:62;-1:-1:-1;;;36991:19:146;;;36984:43;37044:19;;8199:168:75;36589:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;37276:2:146;8617:153:75;;;37258:21:146;37315:2;37295:18;;;37288:30;-1:-1:-1;;;;;;;;;;;37334:18:146;;;37327:62;37425:34;37405:18;;;37398:62;-1:-1:-1;;;37476:19:146;;;37469:41;37527:19;;8617:153:75;37074:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;37759:2:146;8935:161:75;;;37741:21:146;37798:2;37778:18;;;37771:30;-1:-1:-1;;;;;;;;;;;37817:18:146;;;37810:62;37908:34;37888:18;;;37881:62;-1:-1:-1;;;37959:19:146;;;37952:44;38013:19;;8935:161:75;37557:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;38245:2:146;9266:157:75;;;38227:21:146;38284:2;38264:18;;;38257:30;-1:-1:-1;;;;;;;;;;;38303:18:146;;;38296:62;38394:34;38374:18;;;38367:62;-1:-1:-1;;;38445:19:146;;;38438:39;38494:19;;9266:157:75;38043:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;38726:2:146;9588:141:75;;;38708:21:146;38765:2;38745:18;;;38738:30;-1:-1:-1;;;;;;;;;;;38784:18:146;;;38777:62;38875:34;38855:18;;;38848:62;-1:-1:-1;;;38926:19:146;;;38919:37;38973:19;;9588:141:75;38524:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;39205:2:146;9744:168:75;;;39187:21:146;39244:2;39224:18;;;39217:30;-1:-1:-1;;;;;;;;;;;39263:18:146;;;39256:62;39354:34;39334:18;;;39327:62;-1:-1:-1;;;39405:19:146;;;39398:41;39456:19;;9744:168:75;39003:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;31545:2:146;989:63:74;;;31527:21:146;31584:2;31564:18;;;31557:30;-1:-1:-1;;;31603:18:146;;;31596:47;31660:18;;989:63:74;31343:341:146;14:171;81:20;;-1:-1:-1;;;;;130:30:146;;120:41;;110:69;;175:1;172;165:12;110:69;14:171;;;:::o;190:184::-;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:146;;-1:-1:-1;;;;;1222:30:146;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:146;;-1:-1:-1;;;;;1586:30:146;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:146;1991:40;;-1:-1:-1;;;;;2046:34:146;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:146:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:146;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:146;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:146:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:146;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:146;-1:-1:-1;3373:2:146;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:146;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:146;-1:-1:-1;3615:2:146;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:146;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:146;-1:-1:-1;3873:2:146;3858:18;;3845:32;;-1:-1:-1;3920:3:146;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:146;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:146;-1:-1:-1;4176:3:146;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:146;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:146;;4362:180;-1:-1:-1;4362:180:146:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:146;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:146;-1:-1:-1;6516:2:146;6501:18;;6488:32;;-1:-1:-1;6532:16:146;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:146;-1:-1:-1;6779:2:146;6764:18;;6751:32;;-1:-1:-1;6795:16:146;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:146;;-1:-1:-1;5840:1155:146;;;;6837:98;;-1:-1:-1;;;5840:1155:146:o;7587:256::-;7653:6;7661;7714:2;7702:9;7693:7;7689:23;7685:32;7682:52;;;7730:1;7727;7720:12;7682:52;7753:28;7771:9;7753:28;:::i;:::-;7743:38;;7800:37;7833:2;7822:9;7818:18;7800:37;:::i;:::-;7790:47;;7587:256;;;;;:::o;8054:184::-;8124:6;8177:2;8165:9;8156:7;8152:23;8148:32;8145:52;;;8193:1;8190;8183:12;8145:52;-1:-1:-1;8216:16:146;;8054:184;-1:-1:-1;8054:184:146:o;8949:934::-;9085:9;-1:-1:-1;;;;;9160:2:146;9152:6;9149:14;9146:40;;;9166:18;;:::i;:::-;9212:6;9209:1;9205:14;9238:4;9262:28;9286:2;9282;9278:11;9262:28;:::i;:::-;9324:19;;;9394:14;;;;9359:12;;;;9431:14;9420:26;;9417:46;;;9459:1;9456;9449:12;9417:46;9483:5;9497:353;9513:6;9508:3;9505:15;9497:353;;;9599:3;9586:17;9635:2;9622:11;9619:19;9616:109;;;9679:1;9708:2;9704;9697:14;9616:109;9750:57;9792:14;9778:11;9771:5;9767:23;9750:57;:::i;:::-;9738:70;;-1:-1:-1;9828:12:146;;;;9530;;9497:353;;;-1:-1:-1;9872:5:146;8949:934;-1:-1:-1;;;;;;;8949:934:146:o;11675:271::-;11858:6;11850;11845:3;11832:33;11814:3;11884:16;;11909:13;;;11884:16;11675:271;-1:-1:-1;11675:271:146:o;13766:277::-;13833:6;13886:2;13874:9;13865:7;13861:23;13857:32;13854:52;;;13902:1;13899;13892:12;13854:52;13934:9;13928:16;13987:5;13980:13;13973:21;13966:5;13963:32;13953:60;;14009:1;14006;13999:12;15302:127;15363:10;15358:3;15354:20;15351:1;15344:31;15394:4;15391:1;15384:15;15418:4;15415:1;15408:15;15434:128;15501:9;;;15522:11;;;15519:37;;;15536:18;;:::i;16175:127::-;16236:10;16231:3;16227:20;16224:1;16217:31;16267:4;16264:1;16257:15;16291:4;16288:1;16281:15;16307:120;16347:1;16373;16363:35;;16378:18;;:::i;:::-;-1:-1:-1;16412:9:146;;16307:120::o;16432:168::-;16472:7;16538:1;16534;16530:6;16526:14;16523:1;16520:21;16515:1;16508:9;16501:17;16497:45;16494:71;;;16545:18;;:::i;:::-;-1:-1:-1;16585:9:146;;16432:168::o;16605:125::-;16670:9;;;16691:10;;;16688:36;;;16704:18;;:::i;16735:183::-;-1:-1:-1;;;;;16854:10:146;;;16842;;;16838:27;;16877:12;;;16874:38;;;16892:18;;:::i;:::-;16874:38;16735:183;;;;:::o;16923:112::-;16955:1;16981;16971:35;;16986:18;;:::i;:::-;-1:-1:-1;17020:9:146;;16923:112::o;17399:127::-;17460:10;17455:3;17451:20;17448:1;17441:31;17491:4;17488:1;17481:15;17515:4;17512:1;17505:15;19816:250;19901:1;19911:113;19925:6;19922:1;19919:13;19911:113;;;20001:11;;;19995:18;19982:11;;;19975:39;19947:2;19940:10;19911:113;;;-1:-1:-1;;20058:1:146;20040:16;;20033:27;19816:250::o;20071:270::-;20112:3;20150:5;20144:12;20177:6;20172:3;20165:19;20193:76;20262:6;20255:4;20250:3;20246:14;20239:4;20232:5;20228:16;20193:76;:::i;:::-;20323:2;20302:15;-1:-1:-1;;20298:29:146;20289:39;;;;20330:4;20285:50;;20071:270;-1:-1:-1;;20071:270:146:o;20346:400::-;20559:10;20547:23;;20529:42;;-1:-1:-1;;;;;20607:32:146;;20602:2;20587:18;;20580:60;20676:2;20671;20656:18;;20649:30;;;-1:-1:-1;;20696:44:146;;20721:18;;20713:6;20696:44;:::i;20751:287::-;20880:3;20918:6;20912:13;20934:66;20993:6;20988:3;20981:4;20973:6;20969:17;20934:66;:::i;:::-;21016:16;;;;;20751:287;-1:-1:-1;;20751:287:146:o;21043:290::-;21112:6;21165:2;21153:9;21144:7;21140:23;21136:32;21133:52;;;21181:1;21178;21171:12;21133:52;21207:16;;-1:-1:-1;;;;;;21252:32:146;;21242:43;;21232:71;;21299:1;21296;21289:12;21338:298;21507:2;21496:9;21489:21;21470:4;21527:44;21567:2;21556:9;21552:18;21544:6;21527:44;:::i;:::-;21519:52;;21621:6;21614:14;21607:22;21602:2;21591:9;21587:18;21580:50;21338:298;;;;;:::o;25563:157::-;25593:1;25627:4;25624:1;25620:12;25651:3;25641:37;;25658:18;;:::i;:::-;25710:3;25703:4;25700:1;25696:12;25692:22;25687:27;;;25563:157;;;;:::o;25725:151::-;25815:4;25808:12;;;25794;;;25790:31;;25833:14;;25830:40;;;25850:18;;:::i;28417:135::-;28456:3;28477:17;;;28474:43;;28497:18;;:::i;:::-;-1:-1:-1;28544:1:146;28533:13;;28417:135::o;30517:478::-;30719:2;30701:21;;;30758:2;30738:18;;;30731:30;30797:34;30792:2;30777:18;;30770:62;30868:34;30863:2;30848:18;;30841:62;-1:-1:-1;;;30934:3:146;30919:19;;30912:41;30985:3;30970:19;;30517:478::o;31000:338::-;31202:2;31184:21;;;31241:2;31221:18;;;31214:30;-1:-1:-1;;;31275:2:146;31260:18;;31253:44;31329:2;31314:18;;31000:338::o;31689:422::-;31778:1;31821:5;31778:1;31835:270;31856:7;31846:8;31843:21;31835:270;;;31915:4;31911:1;31907:6;31903:17;31897:4;31894:27;31891:53;;;31924:18;;:::i;:::-;31974:7;31964:8;31960:22;31957:55;;;31994:16;;;;31957:55;32073:22;;;;32033:15;;;;31835:270;;;31839:3;31689:422;;;;;:::o;32116:806::-;32165:5;32195:8;32185:80;;-1:-1:-1;32236:1:146;32250:5;;32185:80;32284:4;32274:76;;-1:-1:-1;32321:1:146;32335:5;;32274:76;32366:4;32384:1;32379:59;;;;32452:1;32447:130;;;;32359:218;;32379:59;32409:1;32400:10;;32423:5;;;32447:130;32484:3;32474:8;32471:17;32468:43;;;32491:18;;:::i;:::-;-1:-1:-1;;32547:1:146;32533:16;;32562:5;;32359:218;;32661:2;32651:8;32648:16;32642:3;32636:4;32633:13;32629:36;32623:2;32613:8;32610:16;32605:2;32599:4;32596:12;32592:35;32589:77;32586:159;;;-1:-1:-1;32698:19:146;;;32730:5;;32586:159;32777:34;32802:8;32796:4;32777:34;:::i;:::-;32847:6;32843:1;32839:6;32835:19;32826:7;32823:32;32820:58;;;32858:18;;:::i;:::-;32896:20;;32116:806;-1:-1:-1;;;32116:806:146:o;32927:131::-;32987:5;33016:36;33043:8;33037:4;33016:36;:::i", + "linkReferences": { + "src/libraries/BeaconChainForks.sol": { + "BeaconChainForks": [ + { + "start": 4000, + "length": 20 + } + ] + } + } }, "methodIdentifiers": { "MIN_LIGHT_CLIENT_DELAY()": "e4407b15", @@ -346,7 +364,7 @@ "storageRootCache(bytes32)": "8d080d1d", "version()": "54fd4d50" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"stateVariables\":{\"MESSAGES_MAPPING_STORAGE_INDEX\":{\"details\":\"We need this when calling `executeMessage` via storage proofs, as it is used in getting the slot key.\"},\"MSG_HASH_TOPIC_IDX\":{\"details\":\"Because topic[0] is the hash of the event signature (`SENT_MESSAGE_EVENT_SIG` above), the topic index of msgHash is 2.\"}},\"title\":\"Target Arbitrary Message Bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Executes messages sent from the source chain on the destination chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TargetAMB.sol\":\"TargetAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"stateVariables\":{\"MESSAGES_MAPPING_STORAGE_INDEX\":{\"details\":\"We need this when calling `executeMessage` via storage proofs, as it is used in getting the slot key.\"},\"MSG_HASH_TOPIC_IDX\":{\"details\":\"Because topic[0] is the hash of the event signature (`SENT_MESSAGE_EVENT_SIG` above), the topic index of msgHash is 2.\"}},\"title\":\"Target Arbitrary Message Bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Executes messages sent from the source chain on the destination chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TargetAMB.sol\":\"TargetAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -834,10 +852,10 @@ "license": "MIT" }, "src/amb/TargetAMB.sol": { - "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", "urls": [ - "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", - "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", + "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" ], "license": null }, @@ -857,6 +875,14 @@ ], "license": null }, + "src/libraries/BeaconChainForks.sol": { + "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "urls": [ + "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", + "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + ], + "license": null + }, "src/libraries/MessageEncoding.sol": { "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", "urls": [ @@ -866,10 +892,10 @@ "license": null }, "src/libraries/SimpleSerialize.sol": { - "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", "urls": [ - "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", - "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", + "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" ], "license": null }, @@ -902,50 +928,50 @@ }, "ast": { "absolutePath": "src/amb/TargetAMB.sol", - "id": 42116, + "id": 42124, "exportedSymbols": { "Address": [ - 44245 + 44319 ], "EventProof": [ - 44195 + 44269 ], "ITelepathyHandler": [ - 42756 + 42764 ], "ITelepathyReceiver": [ - 42744 + 42752 ], "Message": [ - 42646 + 42654 ], "MessageEncoding": [ - 43343 + 43383 ], "MessageStatus": [ - 42631 + 42639 ], "ReentrancyGuardUpgradeable": [ 29613 ], "SSZ": [ - 43867 + 43941 ], "StorageProof": [ - 43992 + 44066 ], "TargetAMB": [ - 42115 + 42123 ], "TelepathyStorage": [ - 42625 + 42633 ] }, "nodeType": "SourceUnit", - "src": "0:10877:100", + "src": "0:10914:100", "nodes": [ { - "id": 41475, + "id": 41481, "nodeType": "PragmaDirective", "src": "0:23:100", "nodes": [], @@ -956,19 +982,19 @@ ] }, { - "id": 41477, + "id": 41483, "nodeType": "ImportDirective", "src": "25:122:100", "nodes": [], "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol", "file": "openzeppelin-contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "nameLocation": "-1:-1:-1", - "scope": 42116, + "scope": 42124, "sourceUnit": 29614, "symbolAliases": [ { "foreign": { - "id": 41476, + "id": 41482, "name": "ReentrancyGuardUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -982,23 +1008,23 @@ "unitAlias": "" }, { - "id": 41479, + "id": 41485, "nodeType": "ImportDirective", "src": "149:54:100", "nodes": [], "absolutePath": "src/libraries/SimpleSerialize.sol", "file": "src/libraries/SimpleSerialize.sol", "nameLocation": "-1:-1:-1", - "scope": 42116, - "sourceUnit": 43868, + "scope": 42124, + "sourceUnit": 43942, "symbolAliases": [ { "foreign": { - "id": 41478, + "id": 41484, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43867, + "referencedDeclaration": 43941, "src": "157:3:100", "typeDescriptions": {} }, @@ -1008,23 +1034,23 @@ "unitAlias": "" }, { - "id": 41482, + "id": 41488, "nodeType": "ImportDirective", "src": "204:76:100", "nodes": [], "absolutePath": "src/libraries/StateProofHelper.sol", "file": "src/libraries/StateProofHelper.sol", "nameLocation": "-1:-1:-1", - "scope": 42116, - "sourceUnit": 44196, + "scope": 42124, + "sourceUnit": 44270, "symbolAliases": [ { "foreign": { - "id": 41480, + "id": 41486, "name": "StorageProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43992, + "referencedDeclaration": 44066, "src": "212:12:100", "typeDescriptions": {} }, @@ -1032,11 +1058,11 @@ }, { "foreign": { - "id": 41481, + "id": 41487, "name": "EventProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44195, + "referencedDeclaration": 44269, "src": "226:10:100", "typeDescriptions": {} }, @@ -1046,23 +1072,23 @@ "unitAlias": "" }, { - "id": 41484, + "id": 41490, "nodeType": "ImportDirective", "src": "281:51:100", "nodes": [], "absolutePath": "src/libraries/Typecast.sol", "file": "src/libraries/Typecast.sol", "nameLocation": "-1:-1:-1", - "scope": 42116, - "sourceUnit": 44266, + "scope": 42124, + "sourceUnit": 44340, "symbolAliases": [ { "foreign": { - "id": 41483, + "id": 41489, "name": "Address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44245, + "referencedDeclaration": 44319, "src": "289:7:100", "typeDescriptions": {} }, @@ -1072,23 +1098,23 @@ "unitAlias": "" }, { - "id": 41486, + "id": 41492, "nodeType": "ImportDirective", "src": "333:66:100", "nodes": [], "absolutePath": "src/libraries/MessageEncoding.sol", "file": "src/libraries/MessageEncoding.sol", "nameLocation": "-1:-1:-1", - "scope": 42116, - "sourceUnit": 43344, + "scope": 42124, + "sourceUnit": 43384, "symbolAliases": [ { "foreign": { - "id": 41485, + "id": 41491, "name": "MessageEncoding", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43343, + "referencedDeclaration": 43383, "src": "341:15:100", "typeDescriptions": {} }, @@ -1098,23 +1124,23 @@ "unitAlias": "" }, { - "id": 41488, + "id": 41494, "nodeType": "ImportDirective", "src": "401:62:100", "nodes": [], "absolutePath": "src/amb/TelepathyStorage.sol", "file": "src/amb/TelepathyStorage.sol", "nameLocation": "-1:-1:-1", - "scope": 42116, - "sourceUnit": 42626, + "scope": 42124, + "sourceUnit": 42634, "symbolAliases": [ { "foreign": { - "id": 41487, + "id": 41493, "name": "TelepathyStorage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42625, + "referencedDeclaration": 42633, "src": "409:16:100", "typeDescriptions": {} }, @@ -1124,23 +1150,23 @@ "unitAlias": "" }, { - "id": 41493, + "id": 41499, "nodeType": "ImportDirective", "src": "464:130:100", "nodes": [], "absolutePath": "src/amb/interfaces/ITelepathy.sol", "file": "src/amb/interfaces/ITelepathy.sol", "nameLocation": "-1:-1:-1", - "scope": 42116, - "sourceUnit": 42757, + "scope": 42124, + "sourceUnit": 42765, "symbolAliases": [ { "foreign": { - "id": 41489, + "id": 41495, "name": "ITelepathyHandler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42756, + "referencedDeclaration": 42764, "src": "477:17:100", "typeDescriptions": {} }, @@ -1148,11 +1174,11 @@ }, { "foreign": { - "id": 41490, + "id": 41496, "name": "ITelepathyReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42744, + "referencedDeclaration": 42752, "src": "500:18:100", "typeDescriptions": {} }, @@ -1160,11 +1186,11 @@ }, { "foreign": { - "id": 41491, + "id": 41497, "name": "Message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42646, + "referencedDeclaration": 42654, "src": "524:7:100", "typeDescriptions": {} }, @@ -1172,11 +1198,11 @@ }, { "foreign": { - "id": 41492, + "id": 41498, "name": "MessageStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42631, + "referencedDeclaration": 42639, "src": "537:13:100", "typeDescriptions": {} }, @@ -1186,18 +1212,18 @@ "unitAlias": "" }, { - "id": 42115, + "id": 42123, "nodeType": "ContractDefinition", - "src": "748:10128:100", + "src": "748:10165:100", "nodes": [ { - "id": 41504, + "id": 41510, "nodeType": "VariableDeclaration", "src": "924:58:100", "nodes": [], "constant": true, "documentation": { - "id": 41501, + "id": 41507, "nodeType": "StructuredDocumentation", "src": "841:78:100", "text": "@notice The minimum delay for using any information from the light client." @@ -1206,7 +1232,7 @@ "mutability": "constant", "name": "MIN_LIGHT_CLIENT_DELAY", "nameLocation": "948:22:100", - "scope": 42115, + "scope": 42123, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1214,7 +1240,7 @@ "typeString": "uint256" }, "typeName": { - "id": 41502, + "id": 41508, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "924:7:100", @@ -1225,7 +1251,7 @@ }, "value": { "hexValue": "32", - "id": 41503, + "id": 41509, "isConstant": false, "isLValue": false, "isPure": true, @@ -1243,13 +1269,13 @@ "visibility": "public" }, { - "id": 41510, + "id": 41516, "nodeType": "VariableDeclaration", "src": "1092:105:100", "nodes": [], "constant": true, "documentation": { - "id": 41505, + "id": 41511, "nodeType": "StructuredDocumentation", "src": "989:98:100", "text": "@notice The ITelepathyBroadcaster SentMessage event signature used in `executeMessageFromLog`." @@ -1257,7 +1283,7 @@ "mutability": "constant", "name": "SENT_MESSAGE_EVENT_SIG", "nameLocation": "1118:22:100", - "scope": 42115, + "scope": 42123, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1265,7 +1291,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 41506, + "id": 41512, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1092:7:100", @@ -1278,7 +1304,7 @@ "arguments": [ { "hexValue": "53656e744d6573736167652875696e7436342c627974657333322c627974657329", - "id": 41508, + "id": 41514, "isConstant": false, "isLValue": false, "isPure": true, @@ -1300,7 +1326,7 @@ "typeString": "literal_string \"SentMessage(uint64,bytes32,bytes)\"" } ], - "id": 41507, + "id": 41513, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1311,7 +1337,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 41509, + "id": 41515, "isConstant": false, "isLValue": false, "isPure": true, @@ -1330,13 +1356,13 @@ "visibility": "internal" }, { - "id": 41514, + "id": 41520, "nodeType": "VariableDeclaration", "src": "1437:48:100", "nodes": [], "constant": true, "documentation": { - "id": 41511, + "id": 41517, "nodeType": "StructuredDocumentation", "src": "1204:228:100", "text": "@notice The topic index of the message root in the SourceAMB SentMessage event.\n @dev Because topic[0] is the hash of the event signature (`SENT_MESSAGE_EVENT_SIG` above),\n the topic index of msgHash is 2." @@ -1344,7 +1370,7 @@ "mutability": "constant", "name": "MSG_HASH_TOPIC_IDX", "nameLocation": "1463:18:100", - "scope": 42115, + "scope": 42123, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1352,7 +1378,7 @@ "typeString": "uint256" }, "typeName": { - "id": 41512, + "id": 41518, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1437:7:100", @@ -1363,7 +1389,7 @@ }, "value": { "hexValue": "32", - "id": 41513, + "id": 41519, "isConstant": false, "isLValue": false, "isPure": true, @@ -1380,13 +1406,13 @@ "visibility": "internal" }, { - "id": 41518, + "id": 41524, "nodeType": "VariableDeclaration", "src": "1692:60:100", "nodes": [], "constant": true, "documentation": { - "id": 41515, + "id": 41521, "nodeType": "StructuredDocumentation", "src": "1492:195:100", "text": "@notice The index of the `messages` mapping in TelepathyStorage.sol.\n @dev We need this when calling `executeMessage` via storage proofs, as it is used in\n getting the slot key." @@ -1394,7 +1420,7 @@ "mutability": "constant", "name": "MESSAGES_MAPPING_STORAGE_INDEX", "nameLocation": "1718:30:100", - "scope": 42115, + "scope": 42123, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1402,7 +1428,7 @@ "typeString": "uint256" }, "typeName": { - "id": 41516, + "id": 41522, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1692:7:100", @@ -1413,7 +1439,7 @@ }, "value": { "hexValue": "31", - "id": 41517, + "id": 41523, "isConstant": false, "isLValue": false, "isPure": true, @@ -1430,12 +1456,12 @@ "visibility": "internal" }, { - "id": 41528, + "id": 41534, "nodeType": "FunctionDefinition", "src": "1876:109:100", "nodes": [], "body": { - "id": 41527, + "id": 41533, "nodeType": "Block", "src": "1940:45:100", "nodes": [], @@ -1443,18 +1469,18 @@ { "expression": { "expression": { - "id": 41524, + "id": 41530, "name": "sourceChainIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42589, + "referencedDeclaration": 42597, "src": "1957:14:100", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint32_$dyn_storage", "typeString": "uint32[] storage ref" } }, - "id": 41525, + "id": 41531, "isConstant": false, "isLValue": false, "isPure": false, @@ -1468,15 +1494,15 @@ "typeString": "uint256" } }, - "functionReturnParameters": 41523, - "id": 41526, + "functionReturnParameters": 41529, + "id": 41532, "nodeType": "Return", "src": "1950:28:100" } ] }, "documentation": { - "id": 41519, + "id": 41525, "nodeType": "StructuredDocumentation", "src": "1759:112:100", "text": "@notice Gets the length of the sourceChainIds array.\n @return The length of the sourceChainIds array." @@ -1488,23 +1514,23 @@ "name": "sourceChainIdsLength", "nameLocation": "1885:20:100", "parameters": { - "id": 41520, + "id": 41526, "nodeType": "ParameterList", "parameters": [], "src": "1905:2:100" }, "returnParameters": { - "id": 41523, + "id": 41529, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41522, + "id": 41528, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 41528, + "scope": 41534, "src": "1931:7:100", "stateVariable": false, "storageLocation": "default", @@ -1513,7 +1539,7 @@ "typeString": "uint256" }, "typeName": { - "id": 41521, + "id": 41527, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1931:7:100", @@ -1527,60 +1553,60 @@ ], "src": "1930:9:100" }, - "scope": 42115, + "scope": 42123, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 41681, + "id": 41687, "nodeType": "FunctionDefinition", "src": "2394:1820:100", "nodes": [], "body": { - "id": 41680, + "id": 41686, "nodeType": "Block", "src": "2582:1632:100", "nodes": [], "statements": [ { "assignments": [ - 41546, - 41548 + 41552, + 41554 ], "declarations": [ { "constant": false, - "id": 41546, + "id": 41552, "mutability": "mutable", "name": "message", "nameLocation": "2608:7:100", "nodeType": "VariableDeclaration", - "scope": 41680, + "scope": 41686, "src": "2593:22:100", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message" }, "typeName": { - "id": 41545, + "id": 41551, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 41544, + "id": 41550, "name": "Message", "nameLocations": [ "2593:7:100" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42646, + "referencedDeclaration": 42654, "src": "2593:7:100" }, - "referencedDeclaration": 42646, + "referencedDeclaration": 42654, "src": "2593:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_storage_ptr", + "typeIdentifier": "t_struct$_Message_$42654_storage_ptr", "typeString": "struct Message" } }, @@ -1588,12 +1614,12 @@ }, { "constant": false, - "id": 41548, + "id": 41554, "mutability": "mutable", "name": "messageRoot", "nameLocation": "2625:11:100", "nodeType": "VariableDeclaration", - "scope": 41680, + "scope": 41686, "src": "2617:19:100", "stateVariable": false, "storageLocation": "default", @@ -1602,7 +1628,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 41547, + "id": 41553, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2617:7:100", @@ -1614,15 +1640,15 @@ "visibility": "internal" } ], - "id": 41552, + "id": 41558, "initialValue": { "arguments": [ { - "id": 41550, + "id": 41556, "name": "messageBytes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41533, + "referencedDeclaration": 41539, "src": "2660:12:100", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", @@ -1637,18 +1663,18 @@ "typeString": "bytes calldata" } ], - "id": 41549, + "id": 41555, "name": "_checkPreconditions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42005, + "referencedDeclaration": 42013, "src": "2640:19:100", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$", "typeString": "function (bytes calldata) view returns (struct Message memory,bytes32)" } }, - "id": 41551, + "id": 41557, "isConstant": false, "isLValue": false, "isPure": false, @@ -1660,7 +1686,7 @@ "src": "2640:33:100", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$", + "typeIdentifier": "t_tuple$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$", "typeString": "tuple(struct Message memory,bytes32)" } }, @@ -1672,18 +1698,18 @@ "arguments": [ { "expression": { - "id": 41554, + "id": 41560, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41546, + "referencedDeclaration": 41552, "src": "2713:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41555, + "id": 41561, "isConstant": false, "isLValue": true, "isPure": false, @@ -1691,7 +1717,7 @@ "memberLocation": "2721:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, + "referencedDeclaration": 42645, "src": "2713:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -1706,18 +1732,18 @@ "typeString": "uint32" } ], - "id": 41553, + "id": 41559, "name": "requireLightClientConsistency", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41844, + "referencedDeclaration": 41852, "src": "2683:29:100", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", "typeString": "function (uint32) view" } }, - "id": 41556, + "id": 41562, "isConstant": false, "isLValue": false, "isPure": false, @@ -1733,7 +1759,7 @@ "typeString": "tuple()" } }, - "id": 41557, + "id": 41563, "nodeType": "ExpressionStatement", "src": "2683:52:100" }, @@ -1742,18 +1768,18 @@ "arguments": [ { "expression": { - "id": 41559, + "id": 41565, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41546, + "referencedDeclaration": 41552, "src": "2762:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41560, + "id": 41566, "isConstant": false, "isLValue": true, "isPure": false, @@ -1761,7 +1787,7 @@ "memberLocation": "2770:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, + "referencedDeclaration": 42645, "src": "2762:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -1776,18 +1802,18 @@ "typeString": "uint32" } ], - "id": 41558, + "id": 41564, "name": "requireNotFrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41859, + "referencedDeclaration": 41867, "src": "2745:16:100", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", "typeString": "function (uint32) view" } }, - "id": 41561, + "id": 41567, "isConstant": false, "isLValue": false, "isPure": false, @@ -1803,12 +1829,12 @@ "typeString": "tuple()" } }, - "id": 41562, + "id": 41568, "nodeType": "ExpressionStatement", "src": "2745:39:100" }, { - "id": 41673, + "id": 41679, "nodeType": "Block", "src": "2795:1351:100", "statements": [ @@ -1816,11 +1842,11 @@ "expression": { "arguments": [ { - "id": 41564, + "id": 41570, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41531, + "referencedDeclaration": 41537, "src": "2833:4:100", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -1829,18 +1855,18 @@ }, { "expression": { - "id": 41565, + "id": 41571, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41546, + "referencedDeclaration": 41552, "src": "2839:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41566, + "id": 41572, "isConstant": false, "isLValue": true, "isPure": false, @@ -1848,7 +1874,7 @@ "memberLocation": "2847:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, + "referencedDeclaration": 42645, "src": "2839:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -1867,18 +1893,18 @@ "typeString": "uint32" } ], - "id": 41563, + "id": 41569, "name": "requireLightClientDelay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41914, + "referencedDeclaration": 41922, "src": "2809:23:100", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint32_$returns$__$", "typeString": "function (uint64,uint32) view" } }, - "id": 41567, + "id": 41573, "isConstant": false, "isLValue": false, "isPure": false, @@ -1894,23 +1920,23 @@ "typeString": "tuple()" } }, - "id": 41568, + "id": 41574, "nodeType": "ExpressionStatement", "src": "2809:52:100" }, { "assignments": [ - 41570 + 41576 ], "declarations": [ { "constant": false, - "id": 41570, + "id": 41576, "mutability": "mutable", "name": "storageRoot", "nameLocation": "2884:11:100", "nodeType": "VariableDeclaration", - "scope": 41673, + "scope": 41679, "src": "2876:19:100", "stateVariable": false, "storageLocation": "default", @@ -1919,7 +1945,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 41569, + "id": 41575, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2876:7:100", @@ -1931,23 +1957,23 @@ "visibility": "internal" } ], - "id": 41571, + "id": 41577, "nodeType": "VariableDeclarationStatement", "src": "2876:19:100" }, { "assignments": [ - 41573 + 41579 ], "declarations": [ { "constant": false, - "id": 41573, + "id": 41579, "mutability": "mutable", "name": "cacheKey", "nameLocation": "2917:8:100", "nodeType": "VariableDeclaration", - "scope": 41673, + "scope": 41679, "src": "2909:16:100", "stateVariable": false, "storageLocation": "default", @@ -1956,7 +1982,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 41572, + "id": 41578, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2909:7:100", @@ -1968,25 +1994,25 @@ "visibility": "internal" } ], - "id": 41586, + "id": 41592, "initialValue": { "arguments": [ { "arguments": [ { "expression": { - "id": 41577, + "id": 41583, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41546, + "referencedDeclaration": 41552, "src": "2972:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41578, + "id": 41584, "isConstant": false, "isLValue": true, "isPure": false, @@ -1994,7 +2020,7 @@ "memberLocation": "2980:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, + "referencedDeclaration": 42645, "src": "2972:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -2002,11 +2028,11 @@ } }, { - "id": 41579, + "id": 41585, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41531, + "referencedDeclaration": 41537, "src": "2995:4:100", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -2015,32 +2041,32 @@ }, { "baseExpression": { - "id": 41580, + "id": 41586, "name": "broadcasters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42600, + "referencedDeclaration": 42608, "src": "3001:12:100", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", "typeString": "mapping(uint32 => address)" } }, - "id": 41583, + "id": 41589, "indexExpression": { "expression": { - "id": 41581, + "id": 41587, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41546, + "referencedDeclaration": 41552, "src": "3014:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41582, + "id": 41588, "isConstant": false, "isLValue": true, "isPure": false, @@ -2048,7 +2074,7 @@ "memberLocation": "3022:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, + "referencedDeclaration": 42645, "src": "3014:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -2083,7 +2109,7 @@ } ], "expression": { - "id": 41575, + "id": 41581, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2094,7 +2120,7 @@ "typeString": "abi" } }, - "id": 41576, + "id": 41582, "isConstant": false, "isLValue": false, "isPure": true, @@ -2108,7 +2134,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 41584, + "id": 41590, "isConstant": false, "isLValue": false, "isPure": false, @@ -2132,7 +2158,7 @@ "typeString": "bytes memory" } ], - "id": 41574, + "id": 41580, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2143,7 +2169,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 41585, + "id": 41591, "isConstant": false, "isLValue": false, "isPure": false, @@ -2168,31 +2194,31 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 41591, + "id": 41597, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 41587, + "id": 41593, "name": "storageRootCache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42619, + "referencedDeclaration": 42627, "src": "3201:16:100", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)" } }, - "id": 41589, + "id": 41595, "indexExpression": { - "id": 41588, + "id": 41594, "name": "cacheKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41573, + "referencedDeclaration": 41579, "src": "3218:8:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2214,7 +2240,7 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 41590, + "id": 41596, "isConstant": false, "isLValue": false, "isPure": true, @@ -2235,23 +2261,23 @@ } }, "falseBody": { - "id": 41634, + "id": 41640, "nodeType": "Block", "src": "3694:73:100", "statements": [ { "expression": { - "id": 41632, + "id": 41638, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 41628, + "id": 41634, "name": "storageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41570, + "referencedDeclaration": 41576, "src": "3712:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2262,24 +2288,24 @@ "operator": "=", "rightHandSide": { "baseExpression": { - "id": 41629, + "id": 41635, "name": "storageRootCache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42619, + "referencedDeclaration": 42627, "src": "3726:16:100", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)" } }, - "id": 41631, + "id": 41637, "indexExpression": { - "id": 41630, + "id": 41636, "name": "cacheKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41573, + "referencedDeclaration": 41579, "src": "3743:8:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2303,33 +2329,33 @@ "typeString": "bytes32" } }, - "id": 41633, + "id": 41639, "nodeType": "ExpressionStatement", "src": "3712:40:100" } ] }, - "id": 41635, + "id": 41641, "nodeType": "IfStatement", "src": "3197:570:100", "trueBody": { - "id": 41627, + "id": 41633, "nodeType": "Block", "src": "3234:454:100", "statements": [ { "assignments": [ - 41593 + 41599 ], "declarations": [ { "constant": false, - "id": 41593, + "id": 41599, "mutability": "mutable", "name": "executionStateRoot", "nameLocation": "3260:18:100", "nodeType": "VariableDeclaration", - "scope": 41627, + "scope": 41633, "src": "3252:26:100", "stateVariable": false, "storageLocation": "default", @@ -2338,7 +2364,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 41592, + "id": 41598, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3252:7:100", @@ -2350,15 +2376,15 @@ "visibility": "internal" } ], - "id": 41601, + "id": 41607, "initialValue": { "arguments": [ { - "id": 41599, + "id": 41605, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41531, + "referencedDeclaration": 41537, "src": "3357:4:100", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -2375,32 +2401,32 @@ ], "expression": { "baseExpression": { - "id": 41594, + "id": 41600, "name": "lightClients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42595, + "referencedDeclaration": 42603, "src": "3301:12:100", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", "typeString": "mapping(uint32 => contract ILightClient)" } }, - "id": 41597, + "id": 41603, "indexExpression": { "expression": { - "id": 41595, + "id": 41601, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41546, + "referencedDeclaration": 41552, "src": "3314:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41596, + "id": 41602, "isConstant": false, "isLValue": true, "isPure": false, @@ -2408,7 +2434,7 @@ "memberLocation": "3322:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, + "referencedDeclaration": 42645, "src": "3314:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -2422,11 +2448,11 @@ "nodeType": "IndexAccess", "src": "3301:35:100", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, - "id": 41598, + "id": 41604, "isConstant": false, "isLValue": false, "isPure": false, @@ -2434,14 +2460,14 @@ "memberLocation": "3337:19:100", "memberName": "executionStateRoots", "nodeType": "MemberAccess", - "referencedDeclaration": 47854, + "referencedDeclaration": 47928, "src": "3301:55:100", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view external returns (bytes32)" } }, - "id": 41600, + "id": 41606, "isConstant": false, "isLValue": false, "isPure": false, @@ -2468,17 +2494,17 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 41605, + "id": 41611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 41603, + "id": 41609, "name": "executionStateRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41593, + "referencedDeclaration": 41599, "src": "3388:18:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2489,7 +2515,7 @@ "operator": "!=", "rightExpression": { "hexValue": "30", - "id": 41604, + "id": 41610, "isConstant": false, "isLValue": false, "isPure": true, @@ -2511,7 +2537,7 @@ }, { "hexValue": "457865637574696f6e20537461746520526f6f74206973206e6f7420736574", - "id": 41606, + "id": 41612, "isConstant": false, "isLValue": false, "isPure": true, @@ -2537,7 +2563,7 @@ "typeString": "literal_string \"Execution State Root is not set\"" } ], - "id": 41602, + "id": 41608, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2551,7 +2577,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 41607, + "id": 41613, "isConstant": false, "isLValue": false, "isPure": false, @@ -2567,23 +2593,23 @@ "typeString": "tuple()" } }, - "id": 41608, + "id": 41614, "nodeType": "ExpressionStatement", "src": "3380:67:100" }, { "expression": { - "id": 41619, + "id": 41625, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 41609, + "id": 41615, "name": "storageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41570, + "referencedDeclaration": 41576, "src": "3465:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2595,11 +2621,11 @@ "rightHandSide": { "arguments": [ { - "id": 41612, + "id": 41618, "name": "accountProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41536, + "referencedDeclaration": 41542, "src": "3528:12:100", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", @@ -2608,32 +2634,32 @@ }, { "baseExpression": { - "id": 41613, + "id": 41619, "name": "broadcasters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42600, + "referencedDeclaration": 42608, "src": "3542:12:100", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", "typeString": "mapping(uint32 => address)" } }, - "id": 41616, + "id": 41622, "indexExpression": { "expression": { - "id": 41614, + "id": 41620, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41546, + "referencedDeclaration": 41552, "src": "3555:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41615, + "id": 41621, "isConstant": false, "isLValue": true, "isPure": false, @@ -2641,7 +2667,7 @@ "memberLocation": "3563:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, + "referencedDeclaration": 42645, "src": "3555:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -2660,11 +2686,11 @@ } }, { - "id": 41617, + "id": 41623, "name": "executionStateRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41593, + "referencedDeclaration": 41599, "src": "3579:18:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2688,18 +2714,18 @@ } ], "expression": { - "id": 41610, + "id": 41616, "name": "StorageProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43992, + "referencedDeclaration": 44066, "src": "3479:12:100", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_StorageProof_$43992_$", + "typeIdentifier": "t_type$_t_contract$_StorageProof_$44066_$", "typeString": "type(library StorageProof)" } }, - "id": 41611, + "id": 41617, "isConstant": false, "isLValue": false, "isPure": false, @@ -2707,14 +2733,14 @@ "memberLocation": "3492:14:100", "memberName": "getStorageRoot", "nodeType": "MemberAccess", - "referencedDeclaration": 43991, + "referencedDeclaration": 44065, "src": "3479:27:100", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_bytes32_$returns$_t_bytes32_$", "typeString": "function (bytes memory[] memory,address,bytes32) pure returns (bytes32)" } }, - "id": 41618, + "id": 41624, "isConstant": false, "isLValue": false, "isPure": false, @@ -2736,37 +2762,37 @@ "typeString": "bytes32" } }, - "id": 41620, + "id": 41626, "nodeType": "ExpressionStatement", "src": "3465:150:100" }, { "expression": { - "id": 41625, + "id": 41631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 41621, + "id": 41627, "name": "storageRootCache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42619, + "referencedDeclaration": 42627, "src": "3633:16:100", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)" } }, - "id": 41623, + "id": 41629, "indexExpression": { - "id": 41622, + "id": 41628, "name": "cacheKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41573, + "referencedDeclaration": 41579, "src": "3650:8:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2787,11 +2813,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 41624, + "id": 41630, "name": "storageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41570, + "referencedDeclaration": 41576, "src": "3662:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2804,7 +2830,7 @@ "typeString": "bytes32" } }, - "id": 41626, + "id": 41632, "nodeType": "ExpressionStatement", "src": "3633:40:100" } @@ -2813,17 +2839,17 @@ }, { "assignments": [ - 41637 + 41643 ], "declarations": [ { "constant": false, - "id": 41637, + "id": 41643, "mutability": "mutable", "name": "slotKey", "nameLocation": "3789:7:100", "nodeType": "VariableDeclaration", - "scope": 41673, + "scope": 41679, "src": "3781:15:100", "stateVariable": false, "storageLocation": "default", @@ -2832,7 +2858,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 41636, + "id": 41642, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3781:7:100", @@ -2844,7 +2870,7 @@ "visibility": "internal" } ], - "id": 41651, + "id": 41657, "initialValue": { "arguments": [ { @@ -2855,18 +2881,18 @@ "arguments": [ { "expression": { - "id": 41644, + "id": 41650, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41546, + "referencedDeclaration": 41552, "src": "3858:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41645, + "id": 41651, "isConstant": false, "isLValue": true, "isPure": false, @@ -2874,7 +2900,7 @@ "memberLocation": "3866:5:100", "memberName": "nonce", "nodeType": "MemberAccess", - "referencedDeclaration": 42635, + "referencedDeclaration": 42643, "src": "3858:13:100", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -2882,11 +2908,11 @@ } }, { - "id": 41646, + "id": 41652, "name": "MESSAGES_MAPPING_STORAGE_INDEX", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41518, + "referencedDeclaration": 41524, "src": "3873:30:100", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2906,7 +2932,7 @@ } ], "expression": { - "id": 41642, + "id": 41648, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2917,7 +2943,7 @@ "typeString": "abi" } }, - "id": 41643, + "id": 41649, "isConstant": false, "isLValue": false, "isPure": true, @@ -2931,7 +2957,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 41647, + "id": 41653, "isConstant": false, "isLValue": false, "isPure": false, @@ -2955,7 +2981,7 @@ "typeString": "bytes memory" } ], - "id": 41641, + "id": 41647, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2966,7 +2992,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 41648, + "id": 41654, "isConstant": false, "isLValue": false, "isPure": false, @@ -2991,7 +3017,7 @@ } ], "expression": { - "id": 41639, + "id": 41645, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3002,7 +3028,7 @@ "typeString": "abi" } }, - "id": 41640, + "id": 41646, "isConstant": false, "isLValue": false, "isPure": true, @@ -3016,7 +3042,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 41649, + "id": 41655, "isConstant": false, "isLValue": false, "isPure": false, @@ -3040,7 +3066,7 @@ "typeString": "bytes memory" } ], - "id": 41638, + "id": 41644, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3051,7 +3077,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 41650, + "id": 41656, "isConstant": false, "isLValue": false, "isPure": false, @@ -3072,17 +3098,17 @@ }, { "assignments": [ - 41653 + 41659 ], "declarations": [ { "constant": false, - "id": 41653, + "id": 41659, "mutability": "mutable", "name": "slotValue", "nameLocation": "3942:9:100", "nodeType": "VariableDeclaration", - "scope": 41673, + "scope": 41679, "src": "3934:17:100", "stateVariable": false, "storageLocation": "default", @@ -3091,7 +3117,7 @@ "typeString": "uint256" }, "typeName": { - "id": 41652, + "id": 41658, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3934:7:100", @@ -3103,15 +3129,15 @@ "visibility": "internal" } ], - "id": 41660, + "id": 41666, "initialValue": { "arguments": [ { - "id": 41656, + "id": 41662, "name": "slotKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41637, + "referencedDeclaration": 41643, "src": "3983:7:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3119,11 +3145,11 @@ } }, { - "id": 41657, + "id": 41663, "name": "storageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41570, + "referencedDeclaration": 41576, "src": "3992:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3131,11 +3157,11 @@ } }, { - "id": 41658, + "id": 41664, "name": "storageProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41539, + "referencedDeclaration": 41545, "src": "4005:12:100", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", @@ -3159,18 +3185,18 @@ } ], "expression": { - "id": 41654, + "id": 41660, "name": "StorageProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43992, + "referencedDeclaration": 44066, "src": "3954:12:100", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_StorageProof_$43992_$", + "typeIdentifier": "t_type$_t_contract$_StorageProof_$44066_$", "typeString": "type(library StorageProof)" } }, - "id": 41655, + "id": 41661, "isConstant": false, "isLValue": false, "isPure": false, @@ -3178,14 +3204,14 @@ "memberLocation": "3967:15:100", "memberName": "getStorageValue", "nodeType": "MemberAccess", - "referencedDeclaration": 43921, + "referencedDeclaration": 43995, "src": "3954:28:100", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (bytes32,bytes32,bytes memory[] memory) pure returns (uint256)" } }, - "id": 41659, + "id": 41665, "isConstant": false, "isLValue": false, "isPure": false, @@ -3210,7 +3236,7 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 41666, + "id": 41672, "isConstant": false, "isLValue": false, "isPure": false, @@ -3218,11 +3244,11 @@ "leftExpression": { "arguments": [ { - "id": 41663, + "id": 41669, "name": "slotValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41653, + "referencedDeclaration": 41659, "src": "4045:9:100", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3237,7 +3263,7 @@ "typeString": "uint256" } ], - "id": 41662, + "id": 41668, "isConstant": false, "isLValue": false, "isPure": true, @@ -3249,14 +3275,14 @@ "typeString": "type(bytes32)" }, "typeName": { - "id": 41661, + "id": 41667, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4037:7:100", "typeDescriptions": {} } }, - "id": 41664, + "id": 41670, "isConstant": false, "isLValue": false, "isPure": false, @@ -3275,11 +3301,11 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { - "id": 41665, + "id": 41671, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41548, + "referencedDeclaration": 41554, "src": "4059:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3292,11 +3318,11 @@ "typeString": "bool" } }, - "id": 41672, + "id": 41678, "nodeType": "IfStatement", "src": "4033:103:100", "trueBody": { - "id": 41671, + "id": 41677, "nodeType": "Block", "src": "4072:64:100", "statements": [ @@ -3305,7 +3331,7 @@ "arguments": [ { "hexValue": "496e76616c6964206d65737361676520686173682e", - "id": 41668, + "id": 41674, "isConstant": false, "isLValue": false, "isPure": true, @@ -3327,7 +3353,7 @@ "typeString": "literal_string \"Invalid message hash.\"" } ], - "id": 41667, + "id": 41673, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3341,7 +3367,7 @@ "typeString": "function (string memory) pure" } }, - "id": 41669, + "id": 41675, "isConstant": false, "isLValue": false, "isPure": false, @@ -3357,7 +3383,7 @@ "typeString": "tuple()" } }, - "id": 41670, + "id": 41676, "nodeType": "ExpressionStatement", "src": "4090:31:100" } @@ -3370,23 +3396,23 @@ "expression": { "arguments": [ { - "id": 41675, + "id": 41681, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41546, + "referencedDeclaration": 41552, "src": "4172:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, { - "id": 41676, + "id": 41682, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41548, + "referencedDeclaration": 41554, "src": "4181:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3394,11 +3420,11 @@ } }, { - "id": 41677, + "id": 41683, "name": "messageBytes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41533, + "referencedDeclaration": 41539, "src": "4194:12:100", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", @@ -3409,7 +3435,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" }, { @@ -3421,18 +3447,18 @@ "typeString": "bytes calldata" } ], - "id": 41674, + "id": 41680, "name": "_executeMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42114, + "referencedDeclaration": 42122, "src": "4156:15:100", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (struct Message memory,bytes32,bytes memory)" } }, - "id": 41678, + "id": 41684, "isConstant": false, "isLValue": false, "isPure": false, @@ -3448,17 +3474,17 @@ "typeString": "tuple()" } }, - "id": 41679, + "id": 41685, "nodeType": "ExpressionStatement", "src": "4156:51:100" } ] }, "baseFunctions": [ - 42724 + 42732 ], "documentation": { - "id": 41529, + "id": 41535, "nodeType": "StructuredDocumentation", "src": "1991:398:100", "text": "@notice Executes a message given a storage proof.\n @param slot Specifies which execution state root should be read from the light client.\n @param messageBytes The message we want to execute provided as bytes.\n @param accountProof Used to prove the broadcaster's state root.\n @param storageProof Used to prove the existence of the message root inside the broadcaster." @@ -3468,10 +3494,10 @@ "kind": "function", "modifiers": [ { - "id": 41542, + "id": 41548, "kind": "modifierInvocation", "modifierName": { - "id": 41541, + "id": 41547, "name": "nonReentrant", "nameLocations": [ "2569:12:100" @@ -3487,17 +3513,17 @@ "name": "executeMessage", "nameLocation": "2403:14:100", "parameters": { - "id": 41540, + "id": 41546, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41531, + "id": 41537, "mutability": "mutable", "name": "slot", "nameLocation": "2434:4:100", "nodeType": "VariableDeclaration", - "scope": 41681, + "scope": 41687, "src": "2427:11:100", "stateVariable": false, "storageLocation": "default", @@ -3506,7 +3532,7 @@ "typeString": "uint64" }, "typeName": { - "id": 41530, + "id": 41536, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2427:6:100", @@ -3519,12 +3545,12 @@ }, { "constant": false, - "id": 41533, + "id": 41539, "mutability": "mutable", "name": "messageBytes", "nameLocation": "2463:12:100", "nodeType": "VariableDeclaration", - "scope": 41681, + "scope": 41687, "src": "2448:27:100", "stateVariable": false, "storageLocation": "calldata", @@ -3533,7 +3559,7 @@ "typeString": "bytes" }, "typeName": { - "id": 41532, + "id": 41538, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2448:5:100", @@ -3546,12 +3572,12 @@ }, { "constant": false, - "id": 41536, + "id": 41542, "mutability": "mutable", "name": "accountProof", "nameLocation": "2502:12:100", "nodeType": "VariableDeclaration", - "scope": 41681, + "scope": 41687, "src": "2485:29:100", "stateVariable": false, "storageLocation": "calldata", @@ -3561,7 +3587,7 @@ }, "typeName": { "baseType": { - "id": 41534, + "id": 41540, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2485:5:100", @@ -3570,7 +3596,7 @@ "typeString": "bytes" } }, - "id": 41535, + "id": 41541, "nodeType": "ArrayTypeName", "src": "2485:7:100", "typeDescriptions": { @@ -3582,12 +3608,12 @@ }, { "constant": false, - "id": 41539, + "id": 41545, "mutability": "mutable", "name": "storageProof", "nameLocation": "2541:12:100", "nodeType": "VariableDeclaration", - "scope": 41681, + "scope": 41687, "src": "2524:29:100", "stateVariable": false, "storageLocation": "calldata", @@ -3597,7 +3623,7 @@ }, "typeName": { "baseType": { - "id": 41537, + "id": 41543, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2524:5:100", @@ -3606,7 +3632,7 @@ "typeString": "bytes" } }, - "id": 41538, + "id": 41544, "nodeType": "ArrayTypeName", "src": "2524:7:100", "typeDescriptions": { @@ -3620,65 +3646,65 @@ "src": "2417:142:100" }, "returnParameters": { - "id": 41543, + "id": 41549, "nodeType": "ParameterList", "parameters": [], "src": "2582:0:100" }, - "scope": 42115, + "scope": 42123, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 41813, + "id": 41821, "nodeType": "FunctionDefinition", - "src": "4866:1891:100", + "src": "4866:1928:100", "nodes": [], "body": { - "id": 41812, + "id": 41820, "nodeType": "Block", - "src": "5185:1572:100", + "src": "5185:1609:100", "nodes": [], "statements": [ { "assignments": [ - 41705, - 41707 + 41711, + 41713 ], "declarations": [ { "constant": false, - "id": 41705, + "id": 41711, "mutability": "mutable", "name": "message", "nameLocation": "5275:7:100", "nodeType": "VariableDeclaration", - "scope": 41812, + "scope": 41820, "src": "5260:22:100", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message" }, "typeName": { - "id": 41704, + "id": 41710, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 41703, + "id": 41709, "name": "Message", "nameLocations": [ "5260:7:100" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42646, + "referencedDeclaration": 42654, "src": "5260:7:100" }, - "referencedDeclaration": 42646, + "referencedDeclaration": 42654, "src": "5260:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_storage_ptr", + "typeIdentifier": "t_struct$_Message_$42654_storage_ptr", "typeString": "struct Message" } }, @@ -3686,12 +3712,12 @@ }, { "constant": false, - "id": 41707, + "id": 41713, "mutability": "mutable", "name": "messageRoot", "nameLocation": "5292:11:100", "nodeType": "VariableDeclaration", - "scope": 41812, + "scope": 41820, "src": "5284:19:100", "stateVariable": false, "storageLocation": "default", @@ -3700,7 +3726,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 41706, + "id": 41712, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5284:7:100", @@ -3712,15 +3738,15 @@ "visibility": "internal" } ], - "id": 41711, + "id": 41717, "initialValue": { "arguments": [ { - "id": 41709, + "id": 41715, "name": "messageBytes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41686, + "referencedDeclaration": 41692, "src": "5327:12:100", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", @@ -3735,18 +3761,18 @@ "typeString": "bytes calldata" } ], - "id": 41708, + "id": 41714, "name": "_checkPreconditions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42005, + "referencedDeclaration": 42013, "src": "5307:19:100", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$", "typeString": "function (bytes calldata) view returns (struct Message memory,bytes32)" } }, - "id": 41710, + "id": 41716, "isConstant": false, "isLValue": false, "isPure": false, @@ -3758,7 +3784,7 @@ "src": "5307:33:100", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$", + "typeIdentifier": "t_tuple$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$", "typeString": "tuple(struct Message memory,bytes32)" } }, @@ -3770,18 +3796,18 @@ "arguments": [ { "expression": { - "id": 41713, + "id": 41719, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41705, + "referencedDeclaration": 41711, "src": "5380:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41714, + "id": 41720, "isConstant": false, "isLValue": true, "isPure": false, @@ -3789,7 +3815,7 @@ "memberLocation": "5388:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, + "referencedDeclaration": 42645, "src": "5380:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3804,18 +3830,18 @@ "typeString": "uint32" } ], - "id": 41712, + "id": 41718, "name": "requireLightClientConsistency", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41844, + "referencedDeclaration": 41852, "src": "5350:29:100", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", "typeString": "function (uint32) view" } }, - "id": 41715, + "id": 41721, "isConstant": false, "isLValue": false, "isPure": false, @@ -3831,7 +3857,7 @@ "typeString": "tuple()" } }, - "id": 41716, + "id": 41722, "nodeType": "ExpressionStatement", "src": "5350:52:100" }, @@ -3840,18 +3866,18 @@ "arguments": [ { "expression": { - "id": 41718, + "id": 41724, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41705, + "referencedDeclaration": 41711, "src": "5429:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41719, + "id": 41725, "isConstant": false, "isLValue": true, "isPure": false, @@ -3859,7 +3885,7 @@ "memberLocation": "5437:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, + "referencedDeclaration": 42645, "src": "5429:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3874,18 +3900,18 @@ "typeString": "uint32" } ], - "id": 41717, + "id": 41723, "name": "requireNotFrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41859, + "referencedDeclaration": 41867, "src": "5412:16:100", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", "typeString": "function (uint32) view" } }, - "id": 41720, + "id": 41726, "isConstant": false, "isLValue": false, "isPure": false, @@ -3901,29 +3927,29 @@ "typeString": "tuple()" } }, - "id": 41721, + "id": 41727, "nodeType": "ExpressionStatement", "src": "5412:39:100" }, { - "id": 41778, + "id": 41786, "nodeType": "Block", - "src": "5462:524:100", + "src": "5462:561:100", "statements": [ { "assignments": [ - 41723, - 41725 + 41729, + 41731 ], "declarations": [ { "constant": false, - "id": 41723, + "id": 41729, "mutability": "mutable", "name": "srcSlot", "nameLocation": "5484:7:100", "nodeType": "VariableDeclaration", - "scope": 41778, + "scope": 41786, "src": "5477:14:100", "stateVariable": false, "storageLocation": "default", @@ -3932,7 +3958,7 @@ "typeString": "uint64" }, "typeName": { - "id": 41722, + "id": 41728, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5477:6:100", @@ -3945,12 +3971,12 @@ }, { "constant": false, - "id": 41725, + "id": 41731, "mutability": "mutable", "name": "txSlot", "nameLocation": "5500:6:100", "nodeType": "VariableDeclaration", - "scope": 41778, + "scope": 41786, "src": "5493:13:100", "stateVariable": false, "storageLocation": "default", @@ -3959,7 +3985,7 @@ "typeString": "uint64" }, "typeName": { - "id": 41724, + "id": 41730, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5493:6:100", @@ -3971,15 +3997,15 @@ "visibility": "internal" } ], - "id": 41735, + "id": 41741, "initialValue": { "arguments": [ { - "id": 41728, + "id": 41734, "name": "srcSlotTxSlotPack", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41684, + "referencedDeclaration": 41690, "src": "5521:17:100", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", @@ -3989,7 +4015,7 @@ { "components": [ { - "id": 41730, + "id": 41736, "isConstant": false, "isLValue": false, "isPure": true, @@ -4001,7 +4027,7 @@ "typeString": "type(uint64)" }, "typeName": { - "id": 41729, + "id": 41735, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5541:6:100", @@ -4009,7 +4035,7 @@ } }, { - "id": 41732, + "id": 41738, "isConstant": false, "isLValue": false, "isPure": true, @@ -4021,7 +4047,7 @@ "typeString": "type(uint64)" }, "typeName": { - "id": 41731, + "id": 41737, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5549:6:100", @@ -4029,7 +4055,7 @@ } } ], - "id": 41733, + "id": 41739, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -4055,7 +4081,7 @@ } ], "expression": { - "id": 41726, + "id": 41732, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4066,7 +4092,7 @@ "typeString": "abi" } }, - "id": 41727, + "id": 41733, "isConstant": false, "isLValue": false, "isPure": true, @@ -4080,7 +4106,7 @@ "typeString": "function () pure" } }, - "id": 41734, + "id": 41740, "isConstant": false, "isLValue": false, "isPure": false, @@ -4103,11 +4129,11 @@ "expression": { "arguments": [ { - "id": 41737, + "id": 41743, "name": "srcSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41723, + "referencedDeclaration": 41729, "src": "5595:7:100", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -4116,18 +4142,18 @@ }, { "expression": { - "id": 41738, + "id": 41744, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41705, + "referencedDeclaration": 41711, "src": "5604:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41739, + "id": 41745, "isConstant": false, "isLValue": true, "isPure": false, @@ -4135,7 +4161,7 @@ "memberLocation": "5612:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, + "referencedDeclaration": 42645, "src": "5604:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -4154,18 +4180,18 @@ "typeString": "uint32" } ], - "id": 41736, + "id": 41742, "name": "requireLightClientDelay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41914, + "referencedDeclaration": 41922, "src": "5571:23:100", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint32_$returns$__$", "typeString": "function (uint64,uint32) view" } }, - "id": 41740, + "id": 41746, "isConstant": false, "isLValue": false, "isPure": false, @@ -4181,23 +4207,23 @@ "typeString": "tuple()" } }, - "id": 41741, + "id": 41747, "nodeType": "ExpressionStatement", "src": "5571:55:100" }, { "assignments": [ - 41743 + 41749 ], "declarations": [ { "constant": false, - "id": 41743, + "id": 41749, "mutability": "mutable", "name": "headerRoot", "nameLocation": "5648:10:100", "nodeType": "VariableDeclaration", - "scope": 41778, + "scope": 41786, "src": "5640:18:100", "stateVariable": false, "storageLocation": "default", @@ -4206,7 +4232,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 41742, + "id": 41748, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5640:7:100", @@ -4218,15 +4244,15 @@ "visibility": "internal" } ], - "id": 41751, + "id": 41757, "initialValue": { "arguments": [ { - "id": 41749, + "id": 41755, "name": "srcSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41723, + "referencedDeclaration": 41729, "src": "5705:7:100", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -4243,32 +4269,32 @@ ], "expression": { "baseExpression": { - "id": 41744, + "id": 41750, "name": "lightClients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42595, + "referencedDeclaration": 42603, "src": "5661:12:100", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", "typeString": "mapping(uint32 => contract ILightClient)" } }, - "id": 41747, + "id": 41753, "indexExpression": { "expression": { - "id": 41745, + "id": 41751, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41705, + "referencedDeclaration": 41711, "src": "5674:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41746, + "id": 41752, "isConstant": false, "isLValue": true, "isPure": false, @@ -4276,7 +4302,7 @@ "memberLocation": "5682:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, + "referencedDeclaration": 42645, "src": "5674:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -4290,11 +4316,11 @@ "nodeType": "IndexAccess", "src": "5661:35:100", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, - "id": 41748, + "id": 41754, "isConstant": false, "isLValue": false, "isPure": false, @@ -4302,14 +4328,14 @@ "memberLocation": "5697:7:100", "memberName": "headers", "nodeType": "MemberAccess", - "referencedDeclaration": 47847, + "referencedDeclaration": 47921, "src": "5661:43:100", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view external returns (bytes32)" } }, - "id": 41750, + "id": 41756, "isConstant": false, "isLValue": false, "isPure": false, @@ -4336,17 +4362,17 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 41758, + "id": 41764, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 41753, + "id": 41759, "name": "headerRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41743, + "referencedDeclaration": 41749, "src": "5735:10:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -4359,7 +4385,7 @@ "arguments": [ { "hexValue": "30", - "id": 41756, + "id": 41762, "isConstant": false, "isLValue": false, "isPure": true, @@ -4381,7 +4407,7 @@ "typeString": "int_const 0" } ], - "id": 41755, + "id": 41761, "isConstant": false, "isLValue": false, "isPure": true, @@ -4393,14 +4419,14 @@ "typeString": "type(bytes32)" }, "typeName": { - "id": 41754, + "id": 41760, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5749:7:100", "typeDescriptions": {} } }, - "id": 41757, + "id": 41763, "isConstant": false, "isLValue": false, "isPure": true, @@ -4424,7 +4450,7 @@ }, { "hexValue": "486561646572526f6f74206973206d697373696e67", - "id": 41759, + "id": 41765, "isConstant": false, "isLValue": false, "isPure": true, @@ -4450,7 +4476,7 @@ "typeString": "literal_string \"HeaderRoot is missing\"" } ], - "id": 41752, + "id": 41758, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4464,7 +4490,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 41760, + "id": 41766, "isConstant": false, "isLValue": false, "isPure": false, @@ -4480,23 +4506,23 @@ "typeString": "tuple()" } }, - "id": 41761, + "id": 41767, "nodeType": "ExpressionStatement", "src": "5727:58:100" }, { "assignments": [ - 41763 + 41769 ], "declarations": [ { "constant": false, - "id": 41763, + "id": 41769, "mutability": "mutable", "name": "isValid", "nameLocation": "5804:7:100", "nodeType": "VariableDeclaration", - "scope": 41778, + "scope": 41786, "src": "5799:12:100", "stateVariable": false, "storageLocation": "default", @@ -4505,7 +4531,7 @@ "typeString": "bool" }, "typeName": { - "id": 41762, + "id": 41768, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5799:4:100", @@ -4517,68 +4543,96 @@ "visibility": "internal" } ], - "id": 41772, + "id": 41780, "initialValue": { "arguments": [ { - "id": 41766, + "id": 41772, "name": "receiptsRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41691, - "src": "5853:12:100", + "referencedDeclaration": 41697, + "src": "5854:12:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41767, + "id": 41773, "name": "receiptsRootProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41689, - "src": "5867:17:100", + "referencedDeclaration": 41695, + "src": "5868:17:100", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, { - "id": 41768, + "id": 41774, "name": "headerRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41743, - "src": "5886:10:100", + "referencedDeclaration": 41749, + "src": "5887:10:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41769, + "id": 41775, "name": "srcSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41723, - "src": "5898:7:100", + "referencedDeclaration": 41729, + "src": "5899:7:100", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { - "id": 41770, + "id": 41776, "name": "txSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41725, - "src": "5907:6:100", + "referencedDeclaration": 41731, + "src": "5908:6:100", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } + }, + { + "expression": { + "id": 41777, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41711, + "src": "5916:7:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", + "typeString": "struct Message memory" + } + }, + "id": 41778, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5924:13:100", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 42645, + "src": "5916:21:100", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } } ], "expression": { @@ -4602,36 +4656,40 @@ { "typeIdentifier": "t_uint64", "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" } ], "expression": { - "id": 41764, + "id": 41770, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43867, - "src": "5830:3:100", + "referencedDeclaration": 43941, + "src": "5814:3:100", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", "typeString": "type(library SSZ)" } }, - "id": 41765, + "id": 41771, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5834:18:100", + "memberLocation": "5818:18:100", "memberName": "verifyReceiptsRoot", "nodeType": "MemberAccess", - "referencedDeclaration": 43866, - "src": "5830:22:100", + "referencedDeclaration": 43940, + "src": "5814:22:100", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bool_$", - "typeString": "function (bytes32,bytes32[] memory,bytes32,uint64,uint64) pure returns (bool)" + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes32_$_t_uint64_$_t_uint64_$_t_uint32_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes32[] memory,bytes32,uint64,uint64,uint32) pure returns (bool)" } }, - "id": 41771, + "id": 41779, "isConstant": false, "isLValue": false, "isPure": false, @@ -4640,7 +4698,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5830:84:100", + "src": "5814:137:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4648,18 +4706,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5799:115:100" + "src": "5799:152:100" }, { "expression": { "arguments": [ { - "id": 41774, + "id": 41782, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41763, - "src": "5936:7:100", + "referencedDeclaration": 41769, + "src": "5973:7:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4667,14 +4725,14 @@ }, { "hexValue": "496e76616c696420726563656970747320726f6f742070726f6f66", - "id": 41775, + "id": 41783, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5945:29:100", + "src": "5982:29:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a8a86cc8e698cc54f14148f81c68ad3a36e4a61b0a2af21ecc438884515f4870", "typeString": "literal_string \"Invalid receipts root proof\"" @@ -4693,7 +4751,7 @@ "typeString": "literal_string \"Invalid receipts root proof\"" } ], - "id": 41773, + "id": 41781, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4701,13 +4759,13 @@ -18 ], "referencedDeclaration": -18, - "src": "5928:7:100", + "src": "5965:7:100", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 41776, + "id": 41784, "isConstant": false, "isLValue": false, "isPure": false, @@ -4716,38 +4774,38 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5928:47:100", + "src": "5965:47:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41777, + "id": 41785, "nodeType": "ExpressionStatement", - "src": "5928:47:100" + "src": "5965:47:100" } ] }, { - "id": 41805, + "id": 41813, "nodeType": "Block", - "src": "5996:693:100", + "src": "6033:693:100", "statements": [ { "assignments": [ - 41780 + 41788 ], "declarations": [ { "constant": false, - "id": 41780, + "id": 41788, "mutability": "mutable", "name": "receiptMessageRoot", - "nameLocation": "6217:18:100", + "nameLocation": "6254:18:100", "nodeType": "VariableDeclaration", - "scope": 41805, - "src": "6209:26:100", + "scope": 41813, + "src": "6246:26:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4755,10 +4813,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41779, + "id": 41787, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6209:7:100", + "src": "6246:7:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4767,54 +4825,54 @@ "visibility": "internal" } ], - "id": 41797, + "id": 41805, "initialValue": { "arguments": [ { "arguments": [ { - "id": 41785, + "id": 41793, "name": "receiptProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41694, - "src": "6309:12:100", + "referencedDeclaration": 41700, + "src": "6346:12:100", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" } }, { - "id": 41786, + "id": 41794, "name": "receiptsRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41691, - "src": "6343:12:100", + "referencedDeclaration": 41697, + "src": "6380:12:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41787, + "id": 41795, "name": "txIndexRLPEncoded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41696, - "src": "6377:17:100", + "referencedDeclaration": 41702, + "src": "6414:17:100", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { - "id": 41788, + "id": 41796, "name": "logIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41698, - "src": "6416:8:100", + "referencedDeclaration": 41704, + "src": "6453:8:100", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4822,41 +4880,41 @@ }, { "baseExpression": { - "id": 41789, + "id": 41797, "name": "broadcasters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42600, - "src": "6446:12:100", + "referencedDeclaration": 42608, + "src": "6483:12:100", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", "typeString": "mapping(uint32 => address)" } }, - "id": 41792, + "id": 41800, "indexExpression": { "expression": { - "id": 41790, + "id": 41798, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41705, - "src": "6459:7:100", + "referencedDeclaration": 41711, + "src": "6496:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41791, + "id": 41799, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "6467:13:100", + "memberLocation": "6504:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, - "src": "6459:21:100", + "referencedDeclaration": 42645, + "src": "6496:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -4867,31 +4925,31 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6446:35:100", + "src": "6483:35:100", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 41793, + "id": 41801, "name": "SENT_MESSAGE_EVENT_SIG", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41510, - "src": "6503:22:100", + "referencedDeclaration": 41516, + "src": "6540:22:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41794, + "id": 41802, "name": "MSG_HASH_TOPIC_IDX", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41514, - "src": "6547:18:100", + "referencedDeclaration": 41520, + "src": "6584:18:100", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4930,33 +4988,33 @@ } ], "expression": { - "id": 41783, + "id": 41791, "name": "EventProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44195, - "src": "6263:10:100", + "referencedDeclaration": 44269, + "src": "6300:10:100", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_EventProof_$44195_$", + "typeIdentifier": "t_type$_t_contract$_EventProof_$44269_$", "typeString": "type(library EventProof)" } }, - "id": 41784, + "id": 41792, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6274:13:100", + "memberLocation": "6311:13:100", "memberName": "getEventTopic", "nodeType": "MemberAccess", - "referencedDeclaration": 44194, - "src": "6263:24:100", + "referencedDeclaration": 44268, + "src": "6300:24:100", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (bytes memory[] memory,bytes32,bytes memory,uint256,address,bytes32,uint256) pure returns (bytes32)" } }, - "id": 41795, + "id": 41803, "isConstant": false, "isLValue": false, "isPure": false, @@ -4965,7 +5023,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6263:320:100", + "src": "6300:320:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -4980,26 +5038,26 @@ "typeString": "bytes32" } ], - "id": 41782, + "id": 41790, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6238:7:100", + "src": "6275:7:100", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { - "id": 41781, + "id": 41789, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6238:7:100", + "src": "6275:7:100", "typeDescriptions": {} } }, - "id": 41796, + "id": 41804, "isConstant": false, "isLValue": false, "isPure": false, @@ -5008,7 +5066,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6238:359:100", + "src": "6275:359:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -5016,7 +5074,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "6209:388:100" + "src": "6246:388:100" }, { "expression": { @@ -5026,18 +5084,18 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 41801, + "id": 41809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 41799, + "id": 41807, "name": "receiptMessageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41780, - "src": "6619:18:100", + "referencedDeclaration": 41788, + "src": "6656:18:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5046,18 +5104,18 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 41800, + "id": 41808, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41707, - "src": "6641:11:100", + "referencedDeclaration": 41713, + "src": "6678:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "6619:33:100", + "src": "6656:33:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5065,14 +5123,14 @@ }, { "hexValue": "496e76616c6964206d65737361676520686173682e", - "id": 41802, + "id": 41810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6654:23:100", + "src": "6691:23:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3e91b0734db6a6d2f50f5dc8279b83064cda4a12670ab76573547cfe3c68f73d", "typeString": "literal_string \"Invalid message hash.\"" @@ -5091,7 +5149,7 @@ "typeString": "literal_string \"Invalid message hash.\"" } ], - "id": 41798, + "id": 41806, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -5099,13 +5157,13 @@ -18 ], "referencedDeclaration": -18, - "src": "6611:7:100", + "src": "6648:7:100", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 41803, + "id": 41811, "isConstant": false, "isLValue": false, "isPure": false, @@ -5114,16 +5172,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6611:67:100", + "src": "6648:67:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41804, + "id": 41812, "nodeType": "ExpressionStatement", - "src": "6611:67:100" + "src": "6648:67:100" } ] }, @@ -5131,36 +5189,36 @@ "expression": { "arguments": [ { - "id": 41807, + "id": 41815, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41705, - "src": "6715:7:100", + "referencedDeclaration": 41711, + "src": "6752:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, { - "id": 41808, + "id": 41816, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41707, - "src": "6724:11:100", + "referencedDeclaration": 41713, + "src": "6761:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 41809, + "id": 41817, "name": "messageBytes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41686, - "src": "6737:12:100", + "referencedDeclaration": 41692, + "src": "6774:12:100", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -5170,7 +5228,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" }, { @@ -5182,18 +5240,18 @@ "typeString": "bytes calldata" } ], - "id": 41806, + "id": 41814, "name": "_executeMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42114, - "src": "6699:15:100", + "referencedDeclaration": 42122, + "src": "6736:15:100", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (struct Message memory,bytes32,bytes memory)" } }, - "id": 41810, + "id": 41818, "isConstant": false, "isLValue": false, "isPure": false, @@ -5202,24 +5260,24 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6699:51:100", + "src": "6736:51:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41811, + "id": 41819, "nodeType": "ExpressionStatement", - "src": "6699:51:100" + "src": "6736:51:100" } ] }, "baseFunctions": [ - 42743 + 42751 ], "documentation": { - "id": 41682, + "id": 41688, "nodeType": "StructuredDocumentation", "src": "4220:641:100", "text": "@notice Executes a message given an event proof.\n @param srcSlotTxSlotPack The slot where we want to read the header from and the slot where\n the tx executed, packed as two uint64s.\n @param messageBytes The message we want to execute provided as bytes.\n @param receiptsRootProof A merkle proof proving the receiptsRoot in the block header.\n @param receiptsRoot The receipts root which contains our \"SentMessage\" event.\n @param txIndexRLPEncoded The index of our transaction inside the block RLP encoded.\n @param logIndex The index of the event in our transaction." @@ -5229,10 +5287,10 @@ "kind": "function", "modifiers": [ { - "id": 41701, + "id": 41707, "kind": "modifierInvocation", "modifierName": { - "id": 41700, + "id": 41706, "name": "nonReentrant", "nameLocations": [ "5172:12:100" @@ -5248,17 +5306,17 @@ "name": "executeMessageFromLog", "nameLocation": "4875:21:100", "parameters": { - "id": 41699, + "id": 41705, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41684, + "id": 41690, "mutability": "mutable", "name": "srcSlotTxSlotPack", "nameLocation": "4921:17:100", "nodeType": "VariableDeclaration", - "scope": 41813, + "scope": 41821, "src": "4906:32:100", "stateVariable": false, "storageLocation": "calldata", @@ -5267,7 +5325,7 @@ "typeString": "bytes" }, "typeName": { - "id": 41683, + "id": 41689, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4906:5:100", @@ -5280,12 +5338,12 @@ }, { "constant": false, - "id": 41686, + "id": 41692, "mutability": "mutable", "name": "messageBytes", "nameLocation": "4963:12:100", "nodeType": "VariableDeclaration", - "scope": 41813, + "scope": 41821, "src": "4948:27:100", "stateVariable": false, "storageLocation": "calldata", @@ -5294,7 +5352,7 @@ "typeString": "bytes" }, "typeName": { - "id": 41685, + "id": 41691, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4948:5:100", @@ -5307,12 +5365,12 @@ }, { "constant": false, - "id": 41689, + "id": 41695, "mutability": "mutable", "name": "receiptsRootProof", "nameLocation": "5004:17:100", "nodeType": "VariableDeclaration", - "scope": 41813, + "scope": 41821, "src": "4985:36:100", "stateVariable": false, "storageLocation": "calldata", @@ -5322,7 +5380,7 @@ }, "typeName": { "baseType": { - "id": 41687, + "id": 41693, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4985:7:100", @@ -5331,7 +5389,7 @@ "typeString": "bytes32" } }, - "id": 41688, + "id": 41694, "nodeType": "ArrayTypeName", "src": "4985:9:100", "typeDescriptions": { @@ -5343,12 +5401,12 @@ }, { "constant": false, - "id": 41691, + "id": 41697, "mutability": "mutable", "name": "receiptsRoot", "nameLocation": "5039:12:100", "nodeType": "VariableDeclaration", - "scope": 41813, + "scope": 41821, "src": "5031:20:100", "stateVariable": false, "storageLocation": "default", @@ -5357,7 +5415,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 41690, + "id": 41696, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5031:7:100", @@ -5370,12 +5428,12 @@ }, { "constant": false, - "id": 41694, + "id": 41700, "mutability": "mutable", "name": "receiptProof", "nameLocation": "5078:12:100", "nodeType": "VariableDeclaration", - "scope": 41813, + "scope": 41821, "src": "5061:29:100", "stateVariable": false, "storageLocation": "calldata", @@ -5385,7 +5443,7 @@ }, "typeName": { "baseType": { - "id": 41692, + "id": 41698, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5061:5:100", @@ -5394,7 +5452,7 @@ "typeString": "bytes" } }, - "id": 41693, + "id": 41699, "nodeType": "ArrayTypeName", "src": "5061:7:100", "typeDescriptions": { @@ -5406,12 +5464,12 @@ }, { "constant": false, - "id": 41696, + "id": 41702, "mutability": "mutable", "name": "txIndexRLPEncoded", "nameLocation": "5113:17:100", "nodeType": "VariableDeclaration", - "scope": 41813, + "scope": 41821, "src": "5100:30:100", "stateVariable": false, "storageLocation": "memory", @@ -5420,7 +5478,7 @@ "typeString": "bytes" }, "typeName": { - "id": 41695, + "id": 41701, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5100:5:100", @@ -5433,12 +5491,12 @@ }, { "constant": false, - "id": 41698, + "id": 41704, "mutability": "mutable", "name": "logIndex", "nameLocation": "5148:8:100", "nodeType": "VariableDeclaration", - "scope": 41813, + "scope": 41821, "src": "5140:16:100", "stateVariable": false, "storageLocation": "default", @@ -5447,7 +5505,7 @@ "typeString": "uint256" }, "typeName": { - "id": 41697, + "id": 41703, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5140:7:100", @@ -5462,25 +5520,25 @@ "src": "4896:266:100" }, "returnParameters": { - "id": 41702, + "id": 41708, "nodeType": "ParameterList", "parameters": [], "src": "5185:0:100" }, - "scope": 42115, + "scope": 42123, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 41844, + "id": 41852, "nodeType": "FunctionDefinition", - "src": "6843:253:100", + "src": "6880:253:100", "nodes": [], "body": { - "id": 41843, + "id": 41851, "nodeType": "Block", - "src": "6912:184:100", + "src": "6949:184:100", "nodes": [], "statements": [ { @@ -5491,7 +5549,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 41830, + "id": 41838, "isConstant": false, "isLValue": false, "isPure": false, @@ -5500,25 +5558,25 @@ "arguments": [ { "baseExpression": { - "id": 41822, + "id": 41830, "name": "lightClients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42595, - "src": "6938:12:100", + "referencedDeclaration": 42603, + "src": "6975:12:100", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", "typeString": "mapping(uint32 => contract ILightClient)" } }, - "id": 41824, + "id": 41832, "indexExpression": { - "id": 41823, + "id": 41831, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41816, - "src": "6951:7:100", + "referencedDeclaration": 41824, + "src": "6988:7:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -5529,9 +5587,9 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6938:21:100", + "src": "6975:21:100", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } } @@ -5539,30 +5597,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } ], - "id": 41821, + "id": 41829, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6930:7:100", + "src": "6967:7:100", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 41820, + "id": 41828, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6930:7:100", + "src": "6967:7:100", "typeDescriptions": {} } }, - "id": 41825, + "id": 41833, "isConstant": false, "isLValue": false, "isPure": false, @@ -5571,7 +5629,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6930:30:100", + "src": "6967:30:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5584,14 +5642,14 @@ "arguments": [ { "hexValue": "30", - "id": 41828, + "id": 41836, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6972:1:100", + "src": "7009:1:100", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -5606,26 +5664,26 @@ "typeString": "int_const 0" } ], - "id": 41827, + "id": 41835, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6964:7:100", + "src": "7001:7:100", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 41826, + "id": 41834, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6964:7:100", + "src": "7001:7:100", "typeDescriptions": {} } }, - "id": 41829, + "id": 41837, "isConstant": false, "isLValue": false, "isPure": true, @@ -5634,14 +5692,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6964:10:100", + "src": "7001:10:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "6930:44:100", + "src": "6967:44:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5649,14 +5707,14 @@ }, { "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", - "id": 41831, + "id": 41839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6976:26:100", + "src": "7013:26:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", "typeString": "literal_string \"Light client is not set.\"" @@ -5675,7 +5733,7 @@ "typeString": "literal_string \"Light client is not set.\"" } ], - "id": 41819, + "id": 41827, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -5683,13 +5741,13 @@ -18 ], "referencedDeclaration": -18, - "src": "6922:7:100", + "src": "6959:7:100", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 41832, + "id": 41840, "isConstant": false, "isLValue": false, "isPure": false, @@ -5698,16 +5756,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6922:81:100", + "src": "6959:81:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41833, + "id": 41841, "nodeType": "ExpressionStatement", - "src": "6922:81:100" + "src": "6959:81:100" }, { "expression": { @@ -5718,25 +5776,25 @@ "argumentTypes": [], "expression": { "baseExpression": { - "id": 41835, + "id": 41843, "name": "lightClients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42595, - "src": "7021:12:100", + "referencedDeclaration": 42603, + "src": "7058:12:100", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", "typeString": "mapping(uint32 => contract ILightClient)" } }, - "id": 41837, + "id": 41845, "indexExpression": { - "id": 41836, + "id": 41844, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41816, - "src": "7034:7:100", + "referencedDeclaration": 41824, + "src": "7071:7:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -5747,28 +5805,28 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7021:21:100", + "src": "7058:21:100", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, - "id": 41838, + "id": 41846, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7043:10:100", + "memberLocation": "7080:10:100", "memberName": "consistent", "nodeType": "MemberAccess", - "referencedDeclaration": 47835, - "src": "7021:32:100", + "referencedDeclaration": 47909, + "src": "7058:32:100", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, - "id": 41839, + "id": 41847, "isConstant": false, "isLValue": false, "isPure": false, @@ -5777,7 +5835,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7021:34:100", + "src": "7058:34:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5786,14 +5844,14 @@ }, { "hexValue": "4c6967687420636c69656e7420697320696e636f6e73697374656e742e", - "id": 41840, + "id": 41848, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7057:31:100", + "src": "7094:31:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2e1e9c043617752a0dea84b31d35e61238519932f65eb40cd6ed13f6fd86c420", "typeString": "literal_string \"Light client is inconsistent.\"" @@ -5812,7 +5870,7 @@ "typeString": "literal_string \"Light client is inconsistent.\"" } ], - "id": 41834, + "id": 41842, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -5820,13 +5878,13 @@ -18 ], "referencedDeclaration": -18, - "src": "7013:7:100", + "src": "7050:7:100", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 41841, + "id": 41849, "isConstant": false, "isLValue": false, "isPure": false, @@ -5835,43 +5893,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7013:76:100", + "src": "7050:76:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41842, + "id": 41850, "nodeType": "ExpressionStatement", - "src": "7013:76:100" + "src": "7050:76:100" } ] }, "documentation": { - "id": 41814, + "id": 41822, "nodeType": "StructuredDocumentation", - "src": "6763:75:100", + "src": "6800:75:100", "text": "@notice Checks that the light client for a given chainId is consistent." }, "implemented": true, "kind": "function", "modifiers": [], "name": "requireLightClientConsistency", - "nameLocation": "6852:29:100", + "nameLocation": "6889:29:100", "parameters": { - "id": 41817, + "id": 41825, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41816, + "id": 41824, "mutability": "mutable", "name": "chainId", - "nameLocation": "6889:7:100", + "nameLocation": "6926:7:100", "nodeType": "VariableDeclaration", - "scope": 41844, - "src": "6882:14:100", + "scope": 41852, + "src": "6919:14:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5879,10 +5937,10 @@ "typeString": "uint32" }, "typeName": { - "id": 41815, + "id": 41823, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "6882:6:100", + "src": "6919:6:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -5891,35 +5949,35 @@ "visibility": "internal" } ], - "src": "6881:16:100" + "src": "6918:16:100" }, "returnParameters": { - "id": 41818, + "id": 41826, "nodeType": "ParameterList", "parameters": [], - "src": "6912:0:100" + "src": "6949:0:100" }, - "scope": 42115, + "scope": 42123, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 41859, + "id": 41867, "nodeType": "FunctionDefinition", - "src": "7157:121:100", + "src": "7194:121:100", "nodes": [], "body": { - "id": 41858, + "id": 41866, "nodeType": "Block", - "src": "7213:65:100", + "src": "7250:65:100", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 41854, + "id": 41862, "isConstant": false, "isLValue": false, "isPure": false, @@ -5927,28 +5985,28 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "7231:16:100", + "src": "7268:16:100", "subExpression": { "baseExpression": { - "id": 41851, + "id": 41859, "name": "frozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42605, - "src": "7232:6:100", + "referencedDeclaration": 42613, + "src": "7269:6:100", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_bool_$", "typeString": "mapping(uint32 => bool)" } }, - "id": 41853, + "id": 41861, "indexExpression": { - "id": 41852, + "id": 41860, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41847, - "src": "7239:7:100", + "referencedDeclaration": 41855, + "src": "7276:7:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -5959,7 +6017,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7232:15:100", + "src": "7269:15:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5972,14 +6030,14 @@ }, { "hexValue": "436f6e74726163742069732066726f7a656e2e", - "id": 41855, + "id": 41863, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7249:21:100", + "src": "7286:21:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8a588d987ba140ba8da36da6bed0df68ef46602e008fcb659a3bdc8b60353b80", "typeString": "literal_string \"Contract is frozen.\"" @@ -5998,7 +6056,7 @@ "typeString": "literal_string \"Contract is frozen.\"" } ], - "id": 41850, + "id": 41858, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -6006,13 +6064,13 @@ -18 ], "referencedDeclaration": -18, - "src": "7223:7:100", + "src": "7260:7:100", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 41856, + "id": 41864, "isConstant": false, "isLValue": false, "isPure": false, @@ -6021,43 +6079,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7223:48:100", + "src": "7260:48:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41857, + "id": 41865, "nodeType": "ExpressionStatement", - "src": "7223:48:100" + "src": "7260:48:100" } ] }, "documentation": { - "id": 41845, + "id": 41853, "nodeType": "StructuredDocumentation", - "src": "7102:50:100", + "src": "7139:50:100", "text": "@notice Checks that the chainId is not frozen." }, "implemented": true, "kind": "function", "modifiers": [], "name": "requireNotFrozen", - "nameLocation": "7166:16:100", + "nameLocation": "7203:16:100", "parameters": { - "id": 41848, + "id": 41856, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41847, + "id": 41855, "mutability": "mutable", "name": "chainId", - "nameLocation": "7190:7:100", + "nameLocation": "7227:7:100", "nodeType": "VariableDeclaration", - "scope": 41859, - "src": "7183:14:100", + "scope": 41867, + "src": "7220:14:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6065,10 +6123,10 @@ "typeString": "uint32" }, "typeName": { - "id": 41846, + "id": 41854, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "7183:6:100", + "src": "7220:6:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -6077,28 +6135,28 @@ "visibility": "internal" } ], - "src": "7182:16:100" + "src": "7219:16:100" }, "returnParameters": { - "id": 41849, + "id": 41857, "nodeType": "ParameterList", "parameters": [], - "src": "7213:0:100" + "src": "7250:0:100" }, - "scope": 42115, + "scope": 42123, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 41914, + "id": 41922, "nodeType": "FunctionDefinition", - "src": "7348:452:100", + "src": "7385:452:100", "nodes": [], "body": { - "id": 41913, + "id": 41921, "nodeType": "Block", - "src": "7424:376:100", + "src": "7461:376:100", "nodes": [], "statements": [ { @@ -6109,7 +6167,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 41878, + "id": 41886, "isConstant": false, "isLValue": false, "isPure": false, @@ -6118,25 +6176,25 @@ "arguments": [ { "baseExpression": { - "id": 41870, + "id": 41878, "name": "lightClients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42595, - "src": "7450:12:100", + "referencedDeclaration": 42603, + "src": "7487:12:100", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", "typeString": "mapping(uint32 => contract ILightClient)" } }, - "id": 41872, + "id": 41880, "indexExpression": { - "id": 41871, + "id": 41879, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41864, - "src": "7463:7:100", + "referencedDeclaration": 41872, + "src": "7500:7:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -6147,9 +6205,9 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7450:21:100", + "src": "7487:21:100", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } } @@ -6157,30 +6215,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } ], - "id": 41869, + "id": 41877, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7442:7:100", + "src": "7479:7:100", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 41868, + "id": 41876, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7442:7:100", + "src": "7479:7:100", "typeDescriptions": {} } }, - "id": 41873, + "id": 41881, "isConstant": false, "isLValue": false, "isPure": false, @@ -6189,7 +6247,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7442:30:100", + "src": "7479:30:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6202,14 +6260,14 @@ "arguments": [ { "hexValue": "30", - "id": 41876, + "id": 41884, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7484:1:100", + "src": "7521:1:100", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -6224,26 +6282,26 @@ "typeString": "int_const 0" } ], - "id": 41875, + "id": 41883, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7476:7:100", + "src": "7513:7:100", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 41874, + "id": 41882, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7476:7:100", + "src": "7513:7:100", "typeDescriptions": {} } }, - "id": 41877, + "id": 41885, "isConstant": false, "isLValue": false, "isPure": true, @@ -6252,14 +6310,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7476:10:100", + "src": "7513:10:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "7442:44:100", + "src": "7479:44:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6267,14 +6325,14 @@ }, { "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", - "id": 41879, + "id": 41887, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7488:26:100", + "src": "7525:26:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", "typeString": "literal_string \"Light client is not set.\"" @@ -6293,7 +6351,7 @@ "typeString": "literal_string \"Light client is not set.\"" } ], - "id": 41867, + "id": 41875, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -6301,13 +6359,13 @@ -18 ], "referencedDeclaration": -18, - "src": "7434:7:100", + "src": "7471:7:100", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 41880, + "id": 41888, "isConstant": false, "isLValue": false, "isPure": false, @@ -6316,16 +6374,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7434:81:100", + "src": "7471:81:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41881, + "id": 41889, "nodeType": "ExpressionStatement", - "src": "7434:81:100" + "src": "7471:81:100" }, { "expression": { @@ -6335,7 +6393,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 41890, + "id": 41898, "isConstant": false, "isLValue": false, "isPure": false, @@ -6343,12 +6401,12 @@ "leftExpression": { "arguments": [ { - "id": 41887, + "id": 41895, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41862, - "src": "7566:4:100", + "referencedDeclaration": 41870, + "src": "7603:4:100", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -6364,25 +6422,25 @@ ], "expression": { "baseExpression": { - "id": 41883, + "id": 41891, "name": "lightClients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42595, - "src": "7533:12:100", + "referencedDeclaration": 42603, + "src": "7570:12:100", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", "typeString": "mapping(uint32 => contract ILightClient)" } }, - "id": 41885, + "id": 41893, "indexExpression": { - "id": 41884, + "id": 41892, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41864, - "src": "7546:7:100", + "referencedDeclaration": 41872, + "src": "7583:7:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -6393,28 +6451,28 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7533:21:100", + "src": "7570:21:100", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, - "id": 41886, + "id": 41894, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7555:10:100", + "memberLocation": "7592:10:100", "memberName": "timestamps", "nodeType": "MemberAccess", - "referencedDeclaration": 47861, - "src": "7533:32:100", + "referencedDeclaration": 47935, + "src": "7570:32:100", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, - "id": 41888, + "id": 41896, "isConstant": false, "isLValue": false, "isPure": false, @@ -6423,7 +6481,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7533:38:100", + "src": "7570:38:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6434,21 +6492,21 @@ "operator": "!=", "rightExpression": { "hexValue": "30", - "id": 41889, + "id": 41897, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7575:1:100", + "src": "7612:1:100", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "7533:43:100", + "src": "7570:43:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6456,14 +6514,14 @@ }, { "hexValue": "54696d657374616d70206973206e6f742073657420666f7220736c6f742e", - "id": 41891, + "id": 41899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7578:32:100", + "src": "7615:32:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6d7a45101ad497aef48b2b4cd343588a8ff87c05de216f8c1f25e504e4b18b11", "typeString": "literal_string \"Timestamp is not set for slot.\"" @@ -6482,7 +6540,7 @@ "typeString": "literal_string \"Timestamp is not set for slot.\"" } ], - "id": 41882, + "id": 41890, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -6490,13 +6548,13 @@ -18 ], "referencedDeclaration": -18, - "src": "7525:7:100", + "src": "7562:7:100", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 41892, + "id": 41900, "isConstant": false, "isLValue": false, "isPure": false, @@ -6505,31 +6563,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7525:86:100", + "src": "7562:86:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41893, + "id": 41901, "nodeType": "ExpressionStatement", - "src": "7525:86:100" + "src": "7562:86:100" }, { "assignments": [ - 41895 + 41903 ], "declarations": [ { "constant": false, - "id": 41895, + "id": 41903, "mutability": "mutable", "name": "elapsedTime", - "nameLocation": "7629:11:100", + "nameLocation": "7666:11:100", "nodeType": "VariableDeclaration", - "scope": 41913, - "src": "7621:19:100", + "scope": 41921, + "src": "7658:19:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6537,10 +6595,10 @@ "typeString": "uint256" }, "typeName": { - "id": 41894, + "id": 41902, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7621:7:100", + "src": "7658:7:100", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6549,39 +6607,39 @@ "visibility": "internal" } ], - "id": 41905, + "id": 41913, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 41904, + "id": 41912, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 41896, + "id": 41904, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "7643:5:100", + "src": "7680:5:100", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 41897, + "id": 41905, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7649:9:100", + "memberLocation": "7686:9:100", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "7643:15:100", + "src": "7680:15:100", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6592,12 +6650,12 @@ "rightExpression": { "arguments": [ { - "id": 41902, + "id": 41910, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41862, - "src": "7694:4:100", + "referencedDeclaration": 41870, + "src": "7731:4:100", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -6613,25 +6671,25 @@ ], "expression": { "baseExpression": { - "id": 41898, + "id": 41906, "name": "lightClients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42595, - "src": "7661:12:100", + "referencedDeclaration": 42603, + "src": "7698:12:100", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", "typeString": "mapping(uint32 => contract ILightClient)" } }, - "id": 41900, + "id": 41908, "indexExpression": { - "id": 41899, + "id": 41907, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41864, - "src": "7674:7:100", + "referencedDeclaration": 41872, + "src": "7711:7:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -6642,28 +6700,28 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7661:21:100", + "src": "7698:21:100", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, - "id": 41901, + "id": 41909, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7683:10:100", + "memberLocation": "7720:10:100", "memberName": "timestamps", "nodeType": "MemberAccess", - "referencedDeclaration": 47861, - "src": "7661:32:100", + "referencedDeclaration": 47935, + "src": "7698:32:100", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, - "id": 41903, + "id": 41911, "isConstant": false, "isLValue": false, "isPure": false, @@ -6672,21 +6730,21 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7661:38:100", + "src": "7698:38:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7643:56:100", + "src": "7680:56:100", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "7621:78:100" + "src": "7658:78:100" }, { "expression": { @@ -6696,18 +6754,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 41909, + "id": 41917, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 41907, + "id": 41915, "name": "elapsedTime", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41895, - "src": "7717:11:100", + "referencedDeclaration": 41903, + "src": "7754:11:100", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6716,18 +6774,18 @@ "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { - "id": 41908, + "id": 41916, "name": "MIN_LIGHT_CLIENT_DELAY", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41504, - "src": "7732:22:100", + "referencedDeclaration": 41510, + "src": "7769:22:100", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7717:37:100", + "src": "7754:37:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6735,14 +6793,14 @@ }, { "hexValue": "4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f742e", - "id": 41910, + "id": 41918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7756:36:100", + "src": "7793:36:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5b51feb04d24e293cda4cdf47dbe63ae0b79975ab7f4fafdae4b8602d5cda444", "typeString": "literal_string \"Must wait longer to use this slot.\"" @@ -6761,7 +6819,7 @@ "typeString": "literal_string \"Must wait longer to use this slot.\"" } ], - "id": 41906, + "id": 41914, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -6769,13 +6827,13 @@ -18 ], "referencedDeclaration": -18, - "src": "7709:7:100", + "src": "7746:7:100", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 41911, + "id": 41919, "isConstant": false, "isLValue": false, "isPure": false, @@ -6784,43 +6842,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7709:84:100", + "src": "7746:84:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41912, + "id": 41920, "nodeType": "ExpressionStatement", - "src": "7709:84:100" + "src": "7746:84:100" } ] }, "documentation": { - "id": 41860, + "id": 41868, "nodeType": "StructuredDocumentation", - "src": "7284:59:100", + "src": "7321:59:100", "text": "@notice Checks that the light client delay is adequate." }, "implemented": true, "kind": "function", "modifiers": [], "name": "requireLightClientDelay", - "nameLocation": "7357:23:100", + "nameLocation": "7394:23:100", "parameters": { - "id": 41865, + "id": 41873, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41862, + "id": 41870, "mutability": "mutable", "name": "slot", - "nameLocation": "7388:4:100", + "nameLocation": "7425:4:100", "nodeType": "VariableDeclaration", - "scope": 41914, - "src": "7381:11:100", + "scope": 41922, + "src": "7418:11:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6828,10 +6886,10 @@ "typeString": "uint64" }, "typeName": { - "id": 41861, + "id": 41869, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "7381:6:100", + "src": "7418:6:100", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -6841,13 +6899,13 @@ }, { "constant": false, - "id": 41864, + "id": 41872, "mutability": "mutable", "name": "chainId", - "nameLocation": "7401:7:100", + "nameLocation": "7438:7:100", "nodeType": "VariableDeclaration", - "scope": 41914, - "src": "7394:14:100", + "scope": 41922, + "src": "7431:14:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6855,10 +6913,10 @@ "typeString": "uint32" }, "typeName": { - "id": 41863, + "id": 41871, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "7394:6:100", + "src": "7431:6:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -6867,83 +6925,83 @@ "visibility": "internal" } ], - "src": "7380:29:100" + "src": "7417:29:100" }, "returnParameters": { - "id": 41866, + "id": 41874, "nodeType": "ParameterList", "parameters": [], - "src": "7424:0:100" + "src": "7461:0:100" }, - "scope": 42115, + "scope": 42123, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 42005, + "id": 42013, "nodeType": "FunctionDefinition", - "src": "7985:878:100", + "src": "8022:878:100", "nodes": [], "body": { - "id": 42004, + "id": 42012, "nodeType": "Block", - "src": "8119:744:100", + "src": "8156:744:100", "nodes": [], "statements": [ { "assignments": [ - 41927 + 41935 ], "declarations": [ { "constant": false, - "id": 41927, + "id": 41935, "mutability": "mutable", "name": "message", - "nameLocation": "8144:7:100", + "nameLocation": "8181:7:100", "nodeType": "VariableDeclaration", - "scope": 42004, - "src": "8129:22:100", + "scope": 42012, + "src": "8166:22:100", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message" }, "typeName": { - "id": 41926, + "id": 41934, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 41925, + "id": 41933, "name": "Message", "nameLocations": [ - "8129:7:100" + "8166:7:100" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42646, - "src": "8129:7:100" + "referencedDeclaration": 42654, + "src": "8166:7:100" }, - "referencedDeclaration": 42646, - "src": "8129:7:100", + "referencedDeclaration": 42654, + "src": "8166:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_storage_ptr", + "typeIdentifier": "t_struct$_Message_$42654_storage_ptr", "typeString": "struct Message" } }, "visibility": "internal" } ], - "id": 41932, + "id": 41940, "initialValue": { "arguments": [ { - "id": 41930, + "id": 41938, "name": "messageBytes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41917, - "src": "8177:12:100", + "referencedDeclaration": 41925, + "src": "8214:12:100", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -6958,33 +7016,33 @@ } ], "expression": { - "id": 41928, + "id": 41936, "name": "MessageEncoding", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43343, - "src": "8154:15:100", + "referencedDeclaration": 43383, + "src": "8191:15:100", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MessageEncoding_$43343_$", + "typeIdentifier": "t_type$_t_contract$_MessageEncoding_$43383_$", "typeString": "type(library MessageEncoding)" } }, - "id": 41929, + "id": 41937, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8170:6:100", + "memberLocation": "8207:6:100", "memberName": "decode", "nodeType": "MemberAccess", - "referencedDeclaration": 43342, - "src": "8154:22:100", + "referencedDeclaration": 43382, + "src": "8191:22:100", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Message_$42646_memory_ptr_$", + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Message_$42654_memory_ptr_$", "typeString": "function (bytes memory) pure returns (struct Message memory)" } }, - "id": 41931, + "id": 41939, "isConstant": false, "isLValue": false, "isPure": false, @@ -6993,30 +7051,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8154:36:100", + "src": "8191:36:100", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "8129:61:100" + "src": "8166:61:100" }, { "assignments": [ - 41934 + 41942 ], "declarations": [ { "constant": false, - "id": 41934, + "id": 41942, "mutability": "mutable", "name": "messageRoot", - "nameLocation": "8208:11:100", + "nameLocation": "8245:11:100", "nodeType": "VariableDeclaration", - "scope": 42004, - "src": "8200:19:100", + "scope": 42012, + "src": "8237:19:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7024,10 +7082,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41933, + "id": 41941, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "8200:7:100", + "src": "8237:7:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7036,16 +7094,16 @@ "visibility": "internal" } ], - "id": 41938, + "id": 41946, "initialValue": { "arguments": [ { - "id": 41936, + "id": 41944, "name": "messageBytes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41917, - "src": "8232:12:100", + "referencedDeclaration": 41925, + "src": "8269:12:100", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -7059,18 +7117,18 @@ "typeString": "bytes calldata" } ], - "id": 41935, + "id": 41943, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "8222:9:100", + "src": "8259:9:100", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 41937, + "id": 41945, "isConstant": false, "isLValue": false, "isPure": false, @@ -7079,7 +7137,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8222:23:100", + "src": "8259:23:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -7087,40 +7145,40 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "8200:45:100" + "src": "8237:45:100" }, { "condition": { "commonType": { - "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeIdentifier": "t_enum$_MessageStatus_$42639", "typeString": "enum MessageStatus" }, - "id": 41944, + "id": 41952, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 41939, + "id": 41947, "name": "messageStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42611, - "src": "8260:13:100", + "referencedDeclaration": 42619, + "src": "8297:13:100", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42631_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42639_$", "typeString": "mapping(bytes32 => enum MessageStatus)" } }, - "id": 41941, + "id": 41949, "indexExpression": { - "id": 41940, + "id": 41948, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41934, - "src": "8274:11:100", + "referencedDeclaration": 41942, + "src": "8311:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7131,9 +7189,9 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8260:26:100", + "src": "8297:26:100", "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeIdentifier": "t_enum$_MessageStatus_$42639", "typeString": "enum MessageStatus" } }, @@ -7141,33 +7199,33 @@ "operator": "!=", "rightExpression": { "expression": { - "id": 41942, + "id": 41950, "name": "MessageStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42631, - "src": "8290:13:100", + "referencedDeclaration": 42639, + "src": "8327:13:100", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42631_$", + "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42639_$", "typeString": "type(enum MessageStatus)" } }, - "id": 41943, + "id": 41951, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "8304:12:100", + "memberLocation": "8341:12:100", "memberName": "NOT_EXECUTED", "nodeType": "MemberAccess", - "referencedDeclaration": 42628, - "src": "8290:26:100", + "referencedDeclaration": 42636, + "src": "8327:26:100", "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeIdentifier": "t_enum$_MessageStatus_$42639", "typeString": "enum MessageStatus" } }, - "src": "8260:56:100", + "src": "8297:56:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7179,34 +7237,34 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 41954, + "id": 41962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 41950, + "id": 41958, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41927, - "src": "8388:7:100", + "referencedDeclaration": 41935, + "src": "8425:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41951, + "id": 41959, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "8396:18:100", + "memberLocation": "8433:18:100", "memberName": "destinationChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42641, - "src": "8388:26:100", + "referencedDeclaration": 42649, + "src": "8425:26:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -7216,32 +7274,32 @@ "operator": "!=", "rightExpression": { "expression": { - "id": 41952, + "id": 41960, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "8418:5:100", + "src": "8455:5:100", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 41953, + "id": 41961, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8424:7:100", + "memberLocation": "8461:7:100", "memberName": "chainid", "nodeType": "MemberAccess", - "src": "8418:13:100", + "src": "8455:13:100", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8388:43:100", + "src": "8425:43:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7253,34 +7311,34 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 41963, + "id": 41971, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 41960, + "id": 41968, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41927, - "src": "8490:7:100", + "referencedDeclaration": 41935, + "src": "8527:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41961, + "id": 41969, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "8498:7:100", + "memberLocation": "8535:7:100", "memberName": "version", "nodeType": "MemberAccess", - "referencedDeclaration": 42633, - "src": "8490:15:100", + "referencedDeclaration": 42641, + "src": "8527:15:100", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7289,18 +7347,18 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { - "id": 41962, + "id": 41970, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42614, - "src": "8509:7:100", + "referencedDeclaration": 42622, + "src": "8546:7:100", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "8490:26:100", + "src": "8527:26:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7312,7 +7370,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 41990, + "id": 41998, "isConstant": false, "isLValue": false, "isPure": false, @@ -7322,7 +7380,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 41980, + "id": 41988, "isConstant": false, "isLValue": false, "isPure": false, @@ -7331,41 +7389,41 @@ "arguments": [ { "baseExpression": { - "id": 41971, + "id": 41979, "name": "lightClients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42595, - "src": "8598:12:100", + "referencedDeclaration": 42603, + "src": "8635:12:100", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", "typeString": "mapping(uint32 => contract ILightClient)" } }, - "id": 41974, + "id": 41982, "indexExpression": { "expression": { - "id": 41972, + "id": 41980, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41927, - "src": "8611:7:100", + "referencedDeclaration": 41935, + "src": "8648:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41973, + "id": 41981, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "8619:13:100", + "memberLocation": "8656:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, - "src": "8611:21:100", + "referencedDeclaration": 42645, + "src": "8648:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -7376,9 +7434,9 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8598:35:100", + "src": "8635:35:100", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } } @@ -7386,30 +7444,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } ], - "id": 41970, + "id": 41978, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8590:7:100", + "src": "8627:7:100", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 41969, + "id": 41977, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8590:7:100", + "src": "8627:7:100", "typeDescriptions": {} } }, - "id": 41975, + "id": 41983, "isConstant": false, "isLValue": false, "isPure": false, @@ -7418,7 +7476,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8590:44:100", + "src": "8627:44:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7431,14 +7489,14 @@ "arguments": [ { "hexValue": "30", - "id": 41978, + "id": 41986, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8646:1:100", + "src": "8683:1:100", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -7453,26 +7511,26 @@ "typeString": "int_const 0" } ], - "id": 41977, + "id": 41985, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8638:7:100", + "src": "8675:7:100", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 41976, + "id": 41984, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8638:7:100", + "src": "8675:7:100", "typeDescriptions": {} } }, - "id": 41979, + "id": 41987, "isConstant": false, "isLValue": false, "isPure": true, @@ -7481,14 +7539,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8638:10:100", + "src": "8675:10:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "8590:58:100", + "src": "8627:58:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7501,48 +7559,48 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 41989, + "id": 41997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 41981, + "id": 41989, "name": "broadcasters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42600, - "src": "8668:12:100", + "referencedDeclaration": 42608, + "src": "8705:12:100", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", "typeString": "mapping(uint32 => address)" } }, - "id": 41984, + "id": 41992, "indexExpression": { "expression": { - "id": 41982, + "id": 41990, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41927, - "src": "8681:7:100", + "referencedDeclaration": 41935, + "src": "8718:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 41983, + "id": 41991, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "8689:13:100", + "memberLocation": "8726:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, - "src": "8681:21:100", + "referencedDeclaration": 42645, + "src": "8718:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -7553,7 +7611,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8668:35:100", + "src": "8705:35:100", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7565,14 +7623,14 @@ "arguments": [ { "hexValue": "30", - "id": 41987, + "id": 41995, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8715:1:100", + "src": "8752:1:100", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -7587,26 +7645,26 @@ "typeString": "int_const 0" } ], - "id": 41986, + "id": 41994, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8707:7:100", + "src": "8744:7:100", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 41985, + "id": 41993, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8707:7:100", + "src": "8744:7:100", "typeDescriptions": {} } }, - "id": 41988, + "id": 41996, "isConstant": false, "isLValue": false, "isPure": true, @@ -7615,46 +7673,46 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8707:10:100", + "src": "8744:10:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "8668:49:100", + "src": "8705:49:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "8590:127:100", + "src": "8627:127:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 41996, + "id": 42004, "nodeType": "IfStatement", - "src": "8573:245:100", + "src": "8610:245:100", "trueBody": { - "id": 41995, + "id": 42003, "nodeType": "Block", - "src": "8728:90:100", + "src": "8765:90:100", "statements": [ { "expression": { "arguments": [ { "hexValue": "4c6967687420636c69656e74206f722062726f616463617374657220666f7220736f7572636520636861696e206973206e6f7420736574", - "id": 41992, + "id": 42000, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8749:57:100", + "src": "8786:57:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_cf4337b8a9aeb4dc59df6bfc8659d708bb8a876834333f5d0b08dc1936bd958a", "typeString": "literal_string \"Light client or broadcaster for source chain is not set\"" @@ -7669,7 +7727,7 @@ "typeString": "literal_string \"Light client or broadcaster for source chain is not set\"" } ], - "id": 41991, + "id": 41999, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -7677,13 +7735,13 @@ -19 ], "referencedDeclaration": -19, - "src": "8742:6:100", + "src": "8779:6:100", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 41993, + "id": 42001, "isConstant": false, "isLValue": false, "isPure": false, @@ -7692,41 +7750,41 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8742:65:100", + "src": "8779:65:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41994, + "id": 42002, "nodeType": "ExpressionStatement", - "src": "8742:65:100" + "src": "8779:65:100" } ] } }, - "id": 41997, + "id": 42005, "nodeType": "IfStatement", - "src": "8486:332:100", + "src": "8523:332:100", "trueBody": { - "id": 41968, + "id": 41976, "nodeType": "Block", - "src": "8518:49:100", + "src": "8555:49:100", "statements": [ { "expression": { "arguments": [ { "hexValue": "57726f6e672076657273696f6e2e", - "id": 41965, + "id": 41973, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8539:16:100", + "src": "8576:16:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e7376ceb646972a17b634167aad9262d9eb18b2043d14ff45148f5097f59c6d2", "typeString": "literal_string \"Wrong version.\"" @@ -7741,7 +7799,7 @@ "typeString": "literal_string \"Wrong version.\"" } ], - "id": 41964, + "id": 41972, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -7749,13 +7807,13 @@ -19 ], "referencedDeclaration": -19, - "src": "8532:6:100", + "src": "8569:6:100", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 41966, + "id": 41974, "isConstant": false, "isLValue": false, "isPure": false, @@ -7764,41 +7822,41 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8532:24:100", + "src": "8569:24:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41967, + "id": 41975, "nodeType": "ExpressionStatement", - "src": "8532:24:100" + "src": "8569:24:100" } ] } }, - "id": 41998, + "id": 42006, "nodeType": "IfStatement", - "src": "8384:434:100", + "src": "8421:434:100", "trueBody": { - "id": 41959, + "id": 41967, "nodeType": "Block", - "src": "8433:47:100", + "src": "8470:47:100", "statements": [ { "expression": { "arguments": [ { "hexValue": "57726f6e6720636861696e2e", - "id": 41956, + "id": 41964, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8454:14:100", + "src": "8491:14:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_66ec22ebbfc205b68f0b23655aec8985dbbc1966429655365ba1946190b4daec", "typeString": "literal_string \"Wrong chain.\"" @@ -7813,7 +7871,7 @@ "typeString": "literal_string \"Wrong chain.\"" } ], - "id": 41955, + "id": 41963, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -7821,13 +7879,13 @@ -19 ], "referencedDeclaration": -19, - "src": "8447:6:100", + "src": "8484:6:100", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 41957, + "id": 41965, "isConstant": false, "isLValue": false, "isPure": false, @@ -7836,41 +7894,41 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8447:22:100", + "src": "8484:22:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41958, + "id": 41966, "nodeType": "ExpressionStatement", - "src": "8447:22:100" + "src": "8484:22:100" } ] } }, - "id": 41999, + "id": 42007, "nodeType": "IfStatement", - "src": "8256:562:100", + "src": "8293:562:100", "trueBody": { - "id": 41949, + "id": 41957, "nodeType": "Block", - "src": "8318:60:100", + "src": "8355:60:100", "statements": [ { "expression": { "arguments": [ { "hexValue": "4d65737361676520616c72656164792065786563757465642e", - "id": 41946, + "id": 41954, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8339:27:100", + "src": "8376:27:100", "typeDescriptions": { "typeIdentifier": "t_stringliteral_dc22dc9e42feb4de07feeda5b9f039eb60d7aec2ed0bed57ad163f302257f6e7", "typeString": "literal_string \"Message already executed.\"" @@ -7885,7 +7943,7 @@ "typeString": "literal_string \"Message already executed.\"" } ], - "id": 41945, + "id": 41953, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -7893,13 +7951,13 @@ -19 ], "referencedDeclaration": -19, - "src": "8332:6:100", + "src": "8369:6:100", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 41947, + "id": 41955, "isConstant": false, "isLValue": false, "isPure": false, @@ -7908,16 +7966,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8332:35:100", + "src": "8369:35:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 41948, + "id": 41956, "nodeType": "ExpressionStatement", - "src": "8332:35:100" + "src": "8369:35:100" } ] } @@ -7926,74 +7984,74 @@ "expression": { "components": [ { - "id": 42000, + "id": 42008, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41927, - "src": "8835:7:100", + "referencedDeclaration": 41935, + "src": "8872:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, { - "id": 42001, + "id": 42009, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41934, - "src": "8844:11:100", + "referencedDeclaration": 41942, + "src": "8881:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 42002, + "id": 42010, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "8834:22:100", + "src": "8871:22:100", "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Message_$42646_memory_ptr_$_t_bytes32_$", + "typeIdentifier": "t_tuple$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$", "typeString": "tuple(struct Message memory,bytes32)" } }, - "functionReturnParameters": 41924, - "id": 42003, + "functionReturnParameters": 41932, + "id": 42011, "nodeType": "Return", - "src": "8827:29:100" + "src": "8864:29:100" } ] }, "documentation": { - "id": 41915, + "id": 41923, "nodeType": "StructuredDocumentation", - "src": "7806:174:100", + "src": "7843:174:100", "text": "@notice Decodes the message from messageBytes and checks conditions before message execution\n @param messageBytes The message we want to execute provided as bytes." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkPreconditions", - "nameLocation": "7994:19:100", + "nameLocation": "8031:19:100", "parameters": { - "id": 41918, + "id": 41926, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41917, + "id": 41925, "mutability": "mutable", "name": "messageBytes", - "nameLocation": "8029:12:100", + "nameLocation": "8066:12:100", "nodeType": "VariableDeclaration", - "scope": 42005, - "src": "8014:27:100", + "scope": 42013, + "src": "8051:27:100", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -8001,10 +8059,10 @@ "typeString": "bytes" }, "typeName": { - "id": 41916, + "id": 41924, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "8014:5:100", + "src": "8051:5:100", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8013,44 +8071,44 @@ "visibility": "internal" } ], - "src": "8013:29:100" + "src": "8050:29:100" }, "returnParameters": { - "id": 41924, + "id": 41932, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 41921, + "id": 41929, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 42005, - "src": "8090:14:100", + "scope": 42013, + "src": "8127:14:100", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message" }, "typeName": { - "id": 41920, + "id": 41928, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 41919, + "id": 41927, "name": "Message", "nameLocations": [ - "8090:7:100" + "8127:7:100" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42646, - "src": "8090:7:100" + "referencedDeclaration": 42654, + "src": "8127:7:100" }, - "referencedDeclaration": 42646, - "src": "8090:7:100", + "referencedDeclaration": 42654, + "src": "8127:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_storage_ptr", + "typeIdentifier": "t_struct$_Message_$42654_storage_ptr", "typeString": "struct Message" } }, @@ -8058,13 +8116,13 @@ }, { "constant": false, - "id": 41923, + "id": 41931, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 42005, - "src": "8106:7:100", + "scope": 42013, + "src": "8143:7:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8072,10 +8130,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 41922, + "id": 41930, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "8106:7:100", + "src": "8143:7:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8084,38 +8142,38 @@ "visibility": "internal" } ], - "src": "8089:25:100" + "src": "8126:25:100" }, - "scope": 42115, + "scope": 42123, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 42114, + "id": 42122, "nodeType": "FunctionDefinition", - "src": "9345:1529:100", + "src": "9382:1529:100", "nodes": [], "body": { - "id": 42113, + "id": 42121, "nodeType": "Block", - "src": "9463:1411:100", + "src": "9500:1411:100", "nodes": [], "statements": [ { "assignments": [ - 42017 + 42025 ], "declarations": [ { "constant": false, - "id": 42017, + "id": 42025, "mutability": "mutable", "name": "status", - "nameLocation": "9478:6:100", + "nameLocation": "9515:6:100", "nodeType": "VariableDeclaration", - "scope": 42113, - "src": "9473:11:100", + "scope": 42121, + "src": "9510:11:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8123,10 +8181,10 @@ "typeString": "bool" }, "typeName": { - "id": 42016, + "id": 42024, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "9473:4:100", + "src": "9510:4:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8135,24 +8193,24 @@ "visibility": "internal" } ], - "id": 42018, + "id": 42026, "nodeType": "VariableDeclarationStatement", - "src": "9473:11:100" + "src": "9510:11:100" }, { "assignments": [ - 42020 + 42028 ], "declarations": [ { "constant": false, - "id": 42020, + "id": 42028, "mutability": "mutable", "name": "data", - "nameLocation": "9507:4:100", + "nameLocation": "9544:4:100", "nodeType": "VariableDeclaration", - "scope": 42113, - "src": "9494:17:100", + "scope": 42121, + "src": "9531:17:100", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -8160,10 +8218,10 @@ "typeString": "bytes" }, "typeName": { - "id": 42019, + "id": 42027, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "9494:5:100", + "src": "9531:5:100", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8172,29 +8230,29 @@ "visibility": "internal" } ], - "id": 42021, + "id": 42029, "nodeType": "VariableDeclarationStatement", - "src": "9494:17:100" + "src": "9531:17:100" }, { - "id": 42054, + "id": 42062, "nodeType": "Block", - "src": "9521:399:100", + "src": "9558:399:100", "statements": [ { "assignments": [ - 42023 + 42031 ], "declarations": [ { "constant": false, - "id": 42023, + "id": 42031, "mutability": "mutable", "name": "receiveCall", - "nameLocation": "9548:11:100", + "nameLocation": "9585:11:100", "nodeType": "VariableDeclaration", - "scope": 42054, - "src": "9535:24:100", + "scope": 42062, + "src": "9572:24:100", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -8202,10 +8260,10 @@ "typeString": "bytes" }, "typeName": { - "id": 42022, + "id": 42030, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "9535:5:100", + "src": "9572:5:100", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8214,47 +8272,47 @@ "visibility": "internal" } ], - "id": 42036, + "id": 42044, "initialValue": { "arguments": [ { "expression": { "expression": { - "id": 42026, + "id": 42034, "name": "ITelepathyHandler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42756, - "src": "9602:17:100", + "referencedDeclaration": 42764, + "src": "9639:17:100", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ITelepathyHandler_$42756_$", + "typeIdentifier": "t_type$_t_contract$_ITelepathyHandler_$42764_$", "typeString": "type(contract ITelepathyHandler)" } }, - "id": 42027, + "id": 42035, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "9620:15:100", + "memberLocation": "9657:15:100", "memberName": "handleTelepathy", "nodeType": "MemberAccess", - "referencedDeclaration": 42755, - "src": "9602:33:100", + "referencedDeclaration": 42763, + "src": "9639:33:100", "typeDescriptions": { "typeIdentifier": "t_function_declaration_nonpayable$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function ITelepathyHandler.handleTelepathy(uint32,address,bytes memory) returns (bytes4)" } }, - "id": 42028, + "id": 42036, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "9636:8:100", + "memberLocation": "9673:8:100", "memberName": "selector", "nodeType": "MemberAccess", - "src": "9602:42:100", + "src": "9639:42:100", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -8262,27 +8320,27 @@ }, { "expression": { - "id": 42029, + "id": 42037, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42009, - "src": "9662:7:100", + "referencedDeclaration": 42017, + "src": "9699:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 42030, + "id": 42038, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "9670:13:100", + "memberLocation": "9707:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, - "src": "9662:21:100", + "referencedDeclaration": 42645, + "src": "9699:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -8290,27 +8348,27 @@ }, { "expression": { - "id": 42031, + "id": 42039, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42009, - "src": "9701:7:100", + "referencedDeclaration": 42017, + "src": "9738:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 42032, + "id": 42040, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "9709:13:100", + "memberLocation": "9746:13:100", "memberName": "sourceAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 42639, - "src": "9701:21:100", + "referencedDeclaration": 42647, + "src": "9738:21:100", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8318,27 +8376,27 @@ }, { "expression": { - "id": 42033, + "id": 42041, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42009, - "src": "9740:7:100", + "referencedDeclaration": 42017, + "src": "9777:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 42034, + "id": 42042, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "9748:4:100", + "memberLocation": "9785:4:100", "memberName": "data", "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "9740:12:100", + "referencedDeclaration": 42653, + "src": "9777:12:100", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -8365,32 +8423,32 @@ } ], "expression": { - "id": 42024, + "id": 42032, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "9562:3:100", + "src": "9599:3:100", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 42025, + "id": 42033, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "9566:18:100", + "memberLocation": "9603:18:100", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", - "src": "9562:22:100", + "src": "9599:22:100", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 42035, + "id": 42043, "isConstant": false, "isLValue": false, "isPure": false, @@ -8399,7 +8457,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9562:204:100", + "src": "9599:204:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -8407,22 +8465,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "9535:231:100" + "src": "9572:231:100" }, { "assignments": [ - 42038 + 42046 ], "declarations": [ { "constant": false, - "id": 42038, + "id": 42046, "mutability": "mutable", "name": "destination", - "nameLocation": "9788:11:100", + "nameLocation": "9825:11:100", "nodeType": "VariableDeclaration", - "scope": 42054, - "src": "9780:19:100", + "scope": 42062, + "src": "9817:19:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8430,10 +8488,10 @@ "typeString": "address" }, "typeName": { - "id": 42037, + "id": 42045, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9780:7:100", + "src": "9817:7:100", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8443,32 +8501,32 @@ "visibility": "internal" } ], - "id": 42044, + "id": 42052, "initialValue": { "arguments": [ { "expression": { - "id": 42041, + "id": 42049, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42009, - "src": "9822:7:100", + "referencedDeclaration": 42017, + "src": "9859:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 42042, + "id": 42050, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "9830:18:100", + "memberLocation": "9867:18:100", "memberName": "destinationAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 42643, - "src": "9822:26:100", + "referencedDeclaration": 42651, + "src": "9859:26:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8483,33 +8541,33 @@ } ], "expression": { - "id": 42039, + "id": 42047, "name": "Address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44245, - "src": "9802:7:100", + "referencedDeclaration": 44319, + "src": "9839:7:100", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Address_$44245_$", + "typeIdentifier": "t_type$_t_contract$_Address_$44319_$", "typeString": "type(library Address)" } }, - "id": 42040, + "id": 42048, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9810:11:100", + "memberLocation": "9847:11:100", "memberName": "fromBytes32", "nodeType": "MemberAccess", - "referencedDeclaration": 44244, - "src": "9802:19:100", + "referencedDeclaration": 44318, + "src": "9839:19:100", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) pure returns (address)" } }, - "id": 42043, + "id": 42051, "isConstant": false, "isLValue": false, "isPure": false, @@ -8518,7 +8576,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9802:47:100", + "src": "9839:47:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -8526,11 +8584,11 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "9780:69:100" + "src": "9817:69:100" }, { "expression": { - "id": 42052, + "id": 42060, "isConstant": false, "isLValue": false, "isPure": false, @@ -8538,38 +8596,38 @@ "leftHandSide": { "components": [ { - "id": 42045, + "id": 42053, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42017, - "src": "9864:6:100", + "referencedDeclaration": 42025, + "src": "9901:6:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { - "id": 42046, + "id": 42054, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42020, - "src": "9872:4:100", + "referencedDeclaration": 42028, + "src": "9909:4:100", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], - "id": 42047, + "id": 42055, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", - "src": "9863:14:100", + "src": "9900:14:100", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" @@ -8580,12 +8638,12 @@ "rightHandSide": { "arguments": [ { - "id": 42050, + "id": 42058, "name": "receiveCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42023, - "src": "9897:11:100", + "referencedDeclaration": 42031, + "src": "9934:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -8600,32 +8658,32 @@ } ], "expression": { - "id": 42048, + "id": 42056, "name": "destination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42038, - "src": "9880:11:100", + "referencedDeclaration": 42046, + "src": "9917:11:100", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 42049, + "id": 42057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9892:4:100", + "memberLocation": "9929:4:100", "memberName": "call", "nodeType": "MemberAccess", - "src": "9880:16:100", + "src": "9917:16:100", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 42051, + "id": 42059, "isConstant": false, "isLValue": false, "isPure": false, @@ -8634,39 +8692,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9880:29:100", + "src": "9917:29:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, - "src": "9863:46:100", + "src": "9900:46:100", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 42053, + "id": 42061, "nodeType": "ExpressionStatement", - "src": "9863:46:100" + "src": "9900:46:100" } ] }, { "assignments": [ - 42056 + 42064 ], "declarations": [ { "constant": false, - "id": 42056, + "id": 42064, "mutability": "mutable", "name": "implementsHandler", - "nameLocation": "10311:17:100", + "nameLocation": "10348:17:100", "nodeType": "VariableDeclaration", - "scope": 42113, - "src": "10306:22:100", + "scope": 42121, + "src": "10343:22:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8674,10 +8732,10 @@ "typeString": "bool" }, "typeName": { - "id": 42055, + "id": 42063, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "10306:4:100", + "src": "10343:4:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8686,17 +8744,17 @@ "visibility": "internal" } ], - "id": 42058, + "id": 42066, "initialValue": { "hexValue": "66616c7365", - "id": 42057, + "id": 42065, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "10331:5:100", + "src": "10368:5:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8704,7 +8762,7 @@ "value": "false" }, "nodeType": "VariableDeclarationStatement", - "src": "10306:30:100" + "src": "10343:30:100" }, { "condition": { @@ -8712,33 +8770,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 42062, + "id": 42070, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 42059, + "id": 42067, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42020, - "src": "10350:4:100", + "referencedDeclaration": 42028, + "src": "10387:4:100", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 42060, + "id": 42068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10355:6:100", + "memberLocation": "10392:6:100", "memberName": "length", "nodeType": "MemberAccess", - "src": "10350:11:100", + "src": "10387:11:100", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8748,48 +8806,48 @@ "operator": "==", "rightExpression": { "hexValue": "3332", - "id": 42061, + "id": 42069, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "10365:2:100", + "src": "10402:2:100", "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" }, "value": "32" }, - "src": "10350:17:100", + "src": "10387:17:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 42082, + "id": 42090, "nodeType": "IfStatement", - "src": "10346:176:100", + "src": "10383:176:100", "trueBody": { - "id": 42081, + "id": 42089, "nodeType": "Block", - "src": "10369:153:100", + "src": "10406:153:100", "statements": [ { "assignments": [ - 42064 + 42072 ], "declarations": [ { "constant": false, - "id": 42064, + "id": 42072, "mutability": "mutable", "name": "magic", - "nameLocation": "10391:5:100", + "nameLocation": "10428:5:100", "nodeType": "VariableDeclaration", - "scope": 42081, - "src": "10384:12:100", + "scope": 42089, + "src": "10421:12:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8797,10 +8855,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 42063, + "id": 42071, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "10384:6:100", + "src": "10421:6:100", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -8809,16 +8867,16 @@ "visibility": "internal" } ], - "id": 42072, + "id": 42080, "initialValue": { "arguments": [ { - "id": 42067, + "id": 42075, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42020, - "src": "10411:4:100", + "referencedDeclaration": 42028, + "src": "10448:4:100", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -8827,34 +8885,34 @@ { "components": [ { - "id": 42069, + "id": 42077, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10418:6:100", + "src": "10455:6:100", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes4_$", "typeString": "type(bytes4)" }, "typeName": { - "id": 42068, + "id": 42076, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "10418:6:100", + "src": "10455:6:100", "typeDescriptions": {} } } ], - "id": 42070, + "id": 42078, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "10417:8:100", + "src": "10454:8:100", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes4_$", "typeString": "type(bytes4)" @@ -8873,32 +8931,32 @@ } ], "expression": { - "id": 42065, + "id": 42073, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "10400:3:100", + "src": "10437:3:100", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 42066, + "id": 42074, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "10404:6:100", + "memberLocation": "10441:6:100", "memberName": "decode", "nodeType": "MemberAccess", - "src": "10400:10:100", + "src": "10437:10:100", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 42071, + "id": 42079, "isConstant": false, "isLValue": false, "isPure": false, @@ -8907,7 +8965,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10400:26:100", + "src": "10437:26:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes4", @@ -8915,22 +8973,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "10383:43:100" + "src": "10420:43:100" }, { "expression": { - "id": 42079, + "id": 42087, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 42073, + "id": 42081, "name": "implementsHandler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42056, - "src": "10440:17:100", + "referencedDeclaration": 42064, + "src": "10477:17:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8943,18 +9001,18 @@ "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, - "id": 42078, + "id": 42086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 42074, + "id": 42082, "name": "magic", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42064, - "src": "10460:5:100", + "referencedDeclaration": 42072, + "src": "10497:5:100", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -8965,61 +9023,61 @@ "rightExpression": { "expression": { "expression": { - "id": 42075, + "id": 42083, "name": "ITelepathyHandler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42756, - "src": "10469:17:100", + "referencedDeclaration": 42764, + "src": "10506:17:100", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ITelepathyHandler_$42756_$", + "typeIdentifier": "t_type$_t_contract$_ITelepathyHandler_$42764_$", "typeString": "type(contract ITelepathyHandler)" } }, - "id": 42076, + "id": 42084, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "10487:15:100", + "memberLocation": "10524:15:100", "memberName": "handleTelepathy", "nodeType": "MemberAccess", - "referencedDeclaration": 42755, - "src": "10469:33:100", + "referencedDeclaration": 42763, + "src": "10506:33:100", "typeDescriptions": { "typeIdentifier": "t_function_declaration_nonpayable$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function ITelepathyHandler.handleTelepathy(uint32,address,bytes memory) returns (bytes4)" } }, - "id": 42077, + "id": 42085, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "10503:8:100", + "memberLocation": "10540:8:100", "memberName": "selector", "nodeType": "MemberAccess", - "src": "10469:42:100", + "src": "10506:42:100", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, - "src": "10460:51:100", + "src": "10497:51:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "10440:71:100", + "src": "10477:71:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 42080, + "id": 42088, "nodeType": "ExpressionStatement", - "src": "10440:71:100" + "src": "10477:71:100" } ] } @@ -9030,18 +9088,18 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 42085, + "id": 42093, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 42083, + "id": 42091, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42017, - "src": "10536:6:100", + "referencedDeclaration": 42025, + "src": "10573:6:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9050,56 +9108,56 @@ "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { - "id": 42084, + "id": 42092, "name": "implementsHandler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42056, - "src": "10546:17:100", + "referencedDeclaration": 42064, + "src": "10583:17:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "10536:27:100", + "src": "10573:27:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 42101, + "id": 42109, "nodeType": "Block", - "src": "10658:84:100", + "src": "10695:84:100", "statements": [ { "expression": { - "id": 42099, + "id": 42107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 42094, + "id": 42102, "name": "messageStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42611, - "src": "10672:13:100", + "referencedDeclaration": 42619, + "src": "10709:13:100", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42631_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42639_$", "typeString": "mapping(bytes32 => enum MessageStatus)" } }, - "id": 42096, + "id": 42104, "indexExpression": { - "id": 42095, + "id": 42103, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42011, - "src": "10686:11:100", + "referencedDeclaration": 42019, + "src": "10723:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -9110,9 +9168,9 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "10672:26:100", + "src": "10709:26:100", "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeIdentifier": "t_enum$_MessageStatus_$42639", "typeString": "enum MessageStatus" } }, @@ -9120,80 +9178,80 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 42097, + "id": 42105, "name": "MessageStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42631, - "src": "10701:13:100", + "referencedDeclaration": 42639, + "src": "10738:13:100", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42631_$", + "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42639_$", "typeString": "type(enum MessageStatus)" } }, - "id": 42098, + "id": 42106, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "10715:16:100", + "memberLocation": "10752:16:100", "memberName": "EXECUTION_FAILED", "nodeType": "MemberAccess", - "referencedDeclaration": 42629, - "src": "10701:30:100", + "referencedDeclaration": 42637, + "src": "10738:30:100", "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeIdentifier": "t_enum$_MessageStatus_$42639", "typeString": "enum MessageStatus" } }, - "src": "10672:59:100", + "src": "10709:59:100", "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeIdentifier": "t_enum$_MessageStatus_$42639", "typeString": "enum MessageStatus" } }, - "id": 42100, + "id": 42108, "nodeType": "ExpressionStatement", - "src": "10672:59:100" + "src": "10709:59:100" } ] }, - "id": 42102, + "id": 42110, "nodeType": "IfStatement", - "src": "10532:210:100", + "src": "10569:210:100", "trueBody": { - "id": 42093, + "id": 42101, "nodeType": "Block", - "src": "10565:87:100", + "src": "10602:87:100", "statements": [ { "expression": { - "id": 42091, + "id": 42099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 42086, + "id": 42094, "name": "messageStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42611, - "src": "10579:13:100", + "referencedDeclaration": 42619, + "src": "10616:13:100", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42631_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42639_$", "typeString": "mapping(bytes32 => enum MessageStatus)" } }, - "id": 42088, + "id": 42096, "indexExpression": { - "id": 42087, + "id": 42095, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42011, - "src": "10593:11:100", + "referencedDeclaration": 42019, + "src": "10630:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -9204,9 +9262,9 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "10579:26:100", + "src": "10616:26:100", "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeIdentifier": "t_enum$_MessageStatus_$42639", "typeString": "enum MessageStatus" } }, @@ -9214,41 +9272,41 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 42089, + "id": 42097, "name": "MessageStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42631, - "src": "10608:13:100", + "referencedDeclaration": 42639, + "src": "10645:13:100", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42631_$", + "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42639_$", "typeString": "type(enum MessageStatus)" } }, - "id": 42090, + "id": 42098, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "10622:19:100", + "memberLocation": "10659:19:100", "memberName": "EXECUTION_SUCCEEDED", "nodeType": "MemberAccess", - "referencedDeclaration": 42630, - "src": "10608:33:100", + "referencedDeclaration": 42638, + "src": "10645:33:100", "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeIdentifier": "t_enum$_MessageStatus_$42639", "typeString": "enum MessageStatus" } }, - "src": "10579:62:100", + "src": "10616:62:100", "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42631", + "typeIdentifier": "t_enum$_MessageStatus_$42639", "typeString": "enum MessageStatus" } }, - "id": 42092, + "id": 42100, "nodeType": "ExpressionStatement", - "src": "10579:62:100" + "src": "10616:62:100" } ] } @@ -9258,27 +9316,27 @@ "arguments": [ { "expression": { - "id": 42104, + "id": 42112, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42009, - "src": "10786:7:100", + "referencedDeclaration": 42017, + "src": "10823:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 42105, + "id": 42113, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "10794:13:100", + "memberLocation": "10831:13:100", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 42637, - "src": "10786:21:100", + "referencedDeclaration": 42645, + "src": "10823:21:100", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -9286,63 +9344,63 @@ }, { "expression": { - "id": 42106, + "id": 42114, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42009, - "src": "10809:7:100", + "referencedDeclaration": 42017, + "src": "10846:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message memory" } }, - "id": 42107, + "id": 42115, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "10817:5:100", + "memberLocation": "10854:5:100", "memberName": "nonce", "nodeType": "MemberAccess", - "referencedDeclaration": 42635, - "src": "10809:13:100", + "referencedDeclaration": 42643, + "src": "10846:13:100", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { - "id": 42108, + "id": 42116, "name": "messageRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42011, - "src": "10824:11:100", + "referencedDeclaration": 42019, + "src": "10861:11:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 42109, + "id": 42117, "name": "messageBytes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42013, - "src": "10837:12:100", + "referencedDeclaration": 42021, + "src": "10874:12:100", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { - "id": 42110, + "id": 42118, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42017, - "src": "10851:6:100", + "referencedDeclaration": 42025, + "src": "10888:6:100", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9372,18 +9430,18 @@ "typeString": "bool" } ], - "id": 42103, + "id": 42111, "name": "ExecutedMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42711, - "src": "10757:15:100", + "referencedDeclaration": 42719, + "src": "10794:15:100", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", "typeString": "function (uint32,uint64,bytes32,bytes memory,bool)" } }, - "id": 42111, + "id": 42119, "isConstant": false, "isLValue": false, "isPure": false, @@ -9392,66 +9450,66 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10757:110:100", + "src": "10794:110:100", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 42112, + "id": 42120, "nodeType": "EmitStatement", - "src": "10752:115:100" + "src": "10789:115:100" } ] }, "documentation": { - "id": 42006, + "id": 42014, "nodeType": "StructuredDocumentation", - "src": "8869:471:100", + "src": "8906:471:100", "text": "@notice Executes a message and updates storage with status and emits an event.\n @dev Assumes that the message is valid and has not been already executed.\n @dev Assumes that message, messageRoot and messageBytes have already been validated.\n @param message The message we want to execute.\n @param messageRoot The message root of the message.\n @param messageBytes The message we want to execute provided as bytes for use in the event." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_executeMessage", - "nameLocation": "9354:15:100", + "nameLocation": "9391:15:100", "parameters": { - "id": 42014, + "id": 42022, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 42009, + "id": 42017, "mutability": "mutable", "name": "message", - "nameLocation": "9385:7:100", + "nameLocation": "9422:7:100", "nodeType": "VariableDeclaration", - "scope": 42114, - "src": "9370:22:100", + "scope": 42122, + "src": "9407:22:100", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_memory_ptr", + "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", "typeString": "struct Message" }, "typeName": { - "id": 42008, + "id": 42016, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 42007, + "id": 42015, "name": "Message", "nameLocations": [ - "9370:7:100" + "9407:7:100" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42646, - "src": "9370:7:100" + "referencedDeclaration": 42654, + "src": "9407:7:100" }, - "referencedDeclaration": 42646, - "src": "9370:7:100", + "referencedDeclaration": 42654, + "src": "9407:7:100", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42646_storage_ptr", + "typeIdentifier": "t_struct$_Message_$42654_storage_ptr", "typeString": "struct Message" } }, @@ -9459,13 +9517,13 @@ }, { "constant": false, - "id": 42011, + "id": 42019, "mutability": "mutable", "name": "messageRoot", - "nameLocation": "9402:11:100", + "nameLocation": "9439:11:100", "nodeType": "VariableDeclaration", - "scope": 42114, - "src": "9394:19:100", + "scope": 42122, + "src": "9431:19:100", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9473,10 +9531,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 42010, + "id": 42018, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9394:7:100", + "src": "9431:7:100", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -9486,13 +9544,13 @@ }, { "constant": false, - "id": 42013, + "id": 42021, "mutability": "mutable", "name": "messageBytes", - "nameLocation": "9428:12:100", + "nameLocation": "9465:12:100", "nodeType": "VariableDeclaration", - "scope": 42114, - "src": "9415:25:100", + "scope": 42122, + "src": "9452:25:100", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9500,10 +9558,10 @@ "typeString": "bytes" }, "typeName": { - "id": 42012, + "id": 42020, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "9415:5:100", + "src": "9452:5:100", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -9512,15 +9570,15 @@ "visibility": "internal" } ], - "src": "9369:72:100" + "src": "9406:72:100" }, "returnParameters": { - "id": 42015, + "id": 42023, "nodeType": "ParameterList", "parameters": [], - "src": "9463:0:100" + "src": "9500:0:100" }, - "scope": 42115, + "scope": 42123, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" @@ -9530,22 +9588,22 @@ "baseContracts": [ { "baseName": { - "id": 41495, + "id": 41501, "name": "TelepathyStorage", "nameLocations": [ "770:16:100" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42625, + "referencedDeclaration": 42633, "src": "770:16:100" }, - "id": 41496, + "id": 41502, "nodeType": "InheritanceSpecifier", "src": "770:16:100" }, { "baseName": { - "id": 41497, + "id": 41503, "name": "ReentrancyGuardUpgradeable", "nameLocations": [ "788:26:100" @@ -9554,22 +9612,22 @@ "referencedDeclaration": 29613, "src": "788:26:100" }, - "id": 41498, + "id": 41504, "nodeType": "InheritanceSpecifier", "src": "788:26:100" }, { "baseName": { - "id": 41499, + "id": 41505, "name": "ITelepathyReceiver", "nameLocations": [ "816:18:100" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42744, + "referencedDeclaration": 42752, "src": "816:18:100" }, - "id": 41500, + "id": 41506, "nodeType": "InheritanceSpecifier", "src": "816:18:100" } @@ -9578,22 +9636,22 @@ "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 41494, + "id": 41500, "nodeType": "StructuredDocumentation", "src": "596:152:100", "text": "@title Target Arbitrary Message Bridge\n @author Succinct Labs\n @notice Executes messages sent from the source chain on the destination chain." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 42115, - 42744, + 42123, + 42752, 29613, 29404, - 42625 + 42633 ], "name": "TargetAMB", "nameLocation": "757:9:100", - "scope": 42116, + "scope": 42124, "usedErrors": [] } ] diff --git a/out/TelepathyPubSub.sol/TelepathyPubSub.json b/out/TelepathyPubSub.sol/TelepathyPubSub.json index e75f50a..054837f 100644 --- a/out/TelepathyPubSub.sol/TelepathyPubSub.json +++ b/out/TelepathyPubSub.sol/TelepathyPubSub.json @@ -371,14 +371,32 @@ } ], "bytecode": { - "object": "0x60806040523480156200001157600080fd5b5060405162003a7b38038062003a7b83398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b6139df806200009c6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a610075366004613020565b60016020526000908152604090205460ff1681565b604051610097919061304f565b60405180910390f35b6100b36100ae3660046130ae565b610133565b604051908152602001610097565b6100e46100cf366004613020565b60026020526000908152604090205460ff1681565b604051610097919061311f565b6100b36100ff366004613133565b61029a565b6101176101123660046132cb565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161018491906133ad565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c3613039565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161028691906133ad565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb91906133ad565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff16600181111561032957610329613039565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103919085906133ad565b60405180910390a29150505b9392505050565b6103b96103b460208301836133ef565b6106f1565b6103ce6103c960208301836133ef565b6108d7565b6000816040516020016103e1919061340a565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016104149594939291906134b3565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561045257610452613039565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f613506565b90925090506104c9826104c460208801886133ef565b61098c565b600080546001600160a01b0316637599735c6104e860208901896133ef565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e9190613539565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613556565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b600061064c8c8f8f80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610d4a565b90508061069b5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106cb6106ab8d8f61356f565b8f8d8d8d60200160208101906106c191906135f2565b8e60600135610ef2565b915091506106dd888a8988868661123d565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107649190613539565b6001600160a01b0316036107b55760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610803573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108279190613539565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610864573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610888919061360f565b6108d45760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610949919061360f565b156108d45760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff9190613539565b6001600160a01b031603610a505760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190613539565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b359190613556565b600003610b845760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190613539565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190613556565b610c749042613647565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ceb9190613556565b811015610d455760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b600080826001600160401b0316846001600160401b031603610d885750600b610d758161020061365a565b610d8190610183613679565b9050610edb565b612000610d95848661368c565b6001600160401b031611610df75750600b610db181602061365a565b610dbc906006613679565b9050610dd36120006001600160401b0385166136c2565b610ddf6120008361365a565b610de99190613679565b9050610d758161020061365a565b836001600160401b0316836001600160401b03161015610e895750600b610e1f81602061365a565b610e2a906007613679565b9050610e3781600261365a565b610e42906000613679565b9050610e596120006001600160401b0385166136d6565b610e6763010000008361365a565b610e719190613679565b9050610e7e81600261365a565b610dbc906001613679565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016101e0565b610ee787828888611432565b979650505050505050565b6060806000610f02878a8a61144c565b9050600081600081518110610f1957610f196136ea565b01602001516001600160f81b03191690506000600160f81b821480610f4b5750600160f91b6001600160f81b03198316145b15610f5857506001610fbd565b600360fe1b6001600160f81b0319831610610f7557506000610fbd565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b600060208401905060006040518060400160405280848751610fdf9190613647565b8152602001610fee8585613679565b905290506000610ffd82611cdf565b905080516004146110495760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b600061106e82600381518110611061576110616136ea565b6020026020010151611cdf565b905080518c106110c05760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b60006110d7828e81518110611061576110616136ea565b905060006110fe826000815181106110f1576110f16136ea565b6020026020010151611f04565b90508c6001600160a01b0316816001600160a01b0316146111725760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b600061119261118d84600181518110611061576110616136ea565b611f78565b90508c816000815181106111a8576111a86136ea565b6020026020010151146111fd5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b600061122284600281518110611215576112156136ea565b6020026020010151612028565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961125860208b018b6133ef565b61126860408c0160208d016135f2565b89898960405160240161128096959493929190613700565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506112c49060608a01908a016135f2565b6001600160a01b0316816040516112db919061378f565b6000604051808303816000865af19150503d8060008114611318576040519150601f19603f3d011682016040523d82523d6000602084013e61131d565b606091505b50805191945092506000915060200361135d5760008280602001905181019061134691906137ab565b6001600160e01b031916635160951d60e11b149150505b8280156113675750805b1561138a576000878152600160205260409020805460ff191660021790556113a7565b6000878152600160208190526040909120805460ff191690911790555b6113b76040890160208a016135f2565b6001600160a01b03166113cd60208a018a6133ef565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61140560608d0160408e016135f2565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611440868686612154565b90921495945050505050565b606060008451116114975760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b60006114a2846122ec565b905060006114af866123da565b90506000846040516020016114c691815260200190565b60405160208183030381529060405290506000805b8451811015611c885760008582815181106114f8576114f86136ea565b60200260200101519050845183111561156a5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b8260000361160957805180516020918201206040516115b89261159292910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116045760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6116ff565b80515160201161168f57805180516020918201206040516116339261159292910190815260200190565b6116045760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146116ff5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b61170b60106001613679565b816020015151036118ab578451830361184357600061173a8260200151601081518110611215576112156136ea565b905060008151116117b35760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b600187516117c19190613647565b83146118355760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b6000858481518110611857576118576136ea565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611882576118826136ea565b60200260200101519050611895816124f4565b95506118a2600186613679565b94505050611c75565b600281602001515103611c1c5760006118c382612519565b90506000816000815181106118da576118da6136ea565b016020015160f81c905060006118f16002836137d5565b6118fc9060026137f7565b9050600061190d848360ff1661253d565b9050600061191b8a8961253d565b905060006119298383612573565b9050808351146119a15760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff8516600214806119b6575060ff85166003145b15611b5c5780825114611a315760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611a4d8860200151600181518110611215576112156136ea565b90506000815111611ac65760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611ad49190613647565b8914611b485760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611b6f575060ff85166001145b15611bae57611b9b8760200151600181518110611b8e57611b8e6136ea565b60200260200101516124f4565b9950611ba7818a613679565b9850611c11565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611c75565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611c8081613810565b9150506114db565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611cef856125f2565b919450925090506001816001811115611d0a57611d0a613039565b14611d7d5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611d898385613679565b14611df15760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611e0a5790505090506000845b8751811015611ef857600080611e7d6040518060400160405280858d60000151611e619190613647565b8152602001858d60200151611e769190613679565b90526125f2565b509150915060405180604001604052808383611e999190613679565b8152602001848c60200151611eae9190613679565b815250858581518110611ec357611ec36136ea565b6020908102919091010152611ed9600185613679565b9350611ee58183613679565b611eef9084613679565b92505050611e37565b50815295945050505050565b8051600090600103611f1857506000919050565b8151601514611f695760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b611f7282612cb5565b92915050565b6060600082516001600160401b03811115611f9557611f956131fe565b604051908082528060200260200182016040528015611fbe578160200160208202803683370190505b50905060005b835181101561202157611fef848281518110611fe257611fe26136ea565b6020026020010151612cb5565b60001b828281518110612004576120046136ea565b60209081029190910101528061201981613810565b915050611fc4565b5092915050565b60606000806000612038856125f2565b91945092509050600081600181111561205357612053613039565b146120c65760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b6120d08284613679565b85511461213c5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b61214b85602001518484612cc0565b95945050505050565b600082825160016121659190613679565b61217090600261390d565b1161217a57600080fd5b8360005b846001146122e3576121916002866136c2565b6001036122305760028482815181106121ac576121ac6136ea565b6020026020010151836040516020016121cf929190918252602082015260400190565b60408051601f19818403018152908290526121e99161378f565b602060405180830381855afa158015612206573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122299190613556565b91506122c4565b600282858381518110612245576122456136ea565b6020026020010151604051602001612267929190918252602082015260400190565b60408051601f19818403018152908290526122819161378f565b602060405180830381855afa15801561229e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122c19190613556565b91505b6122cf6002866136d6565b9450806122db81613810565b91505061217e565b50949350505050565b80516060906000816001600160401b0381111561230b5761230b6131fe565b60405190808252806020026020018201604052801561235057816020015b60408051808201909152606080825260208201528152602001906001900390816123295790505b50905060005b828110156123d257604051806040016040528086838151811061237b5761237b6136ea565b602002602001015181526020016123aa87848151811061239d5761239d6136ea565b6020026020010151612d60565b8152508282815181106123bf576123bf6136ea565b6020908102919091010152600101612356565b509392505050565b805160609060006123ec82600261365a565b6001600160401b03811115612403576124036131fe565b6040519080825280601f01601f19166020018201604052801561242d576020820181803683370190505b5090506000805b838110156124ea5785818151811061244e5761244e6136ea565b6020910101516001600160f81b03198116925060041c60ff60f41b168361247683600261365a565b81518110612486576124866136ea565b60200101906001600160f81b031916908160001a905350600f60f81b8216836124b083600261365a565b6124bb906001613679565b815181106124cb576124cb6136ea565b60200101906001600160f81b031916908160001a905350600101612434565b5090949350505050565b606060208260000151106125105761250b82612028565b611f72565b611f7282612d73565b6060611f726125388360200151600081518110611215576112156136ea565b6123da565b60608251821061255c5750604080516020810190915260008152611f72565b61039d838384865161256e9190613647565b612d89565b6000806000835185511061258857835161258b565b84515b90505b80821080156125e257508382815181106125aa576125aa6136ea565b602001015160f81c60f81b6001600160f81b0319168583815181106125d1576125d16136ea565b01602001516001600160f81b031916145b156123d25781600101915061258e565b60008060008084600001511161261a5760405162461bcd60e51b81526004016101e090613919565b6020840151805160001a607f811161263f576000600160009450945094505050612cae565b60b7811161279c576000612654608083613647565b9050808760000151116126d45760405162461bcd60e51b815260206004820152604e602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127015750600160ff1b6001600160f81b0319821610155b6127895760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612cae915050565b60bf81116129dd5760006127b160b783613647565b9050808760000151116128345760405162461bcd60e51b8152602060048201526051602482015260008051602061398a83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b03191660008190036128bb5760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c6037811161293e5760405162461bcd60e51b8152602060048201526048602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b6129488184613679565b8951116129c05760405162461bcd60e51b815260206004820152604c602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b6129cb836001613679565b9750955060009450612cae9350505050565b60f78111612a7f5760006129f260c083613647565b905080876000015111612a6e5760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612cae915050565b6000612a8c60f783613647565b905080876000015111612b0b5760405162461bcd60e51b815260206004820152604d602482015260008051602061398a83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612b905760405162461bcd60e51b8152602060048201526048602482015260008051602061398a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612c115760405162461bcd60e51b8152602060048201526046602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612c1b8184613679565b895111612c915760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612c9c836001613679565b9750955060019450612cae9350505050565b9193909250565b6000611f7282612eca565b60606000826001600160401b03811115612cdc57612cdc6131fe565b6040519080825280601f01601f191660200182016040528015612d06576020820181803683370190505b50905082600003612d1857905061039d565b6000612d248587613679565b90506020820160005b85811015612d45578281015182820152602001612d2d565b85811115612d54576000868301525b50919695505050505050565b6060611f72612d6e83612fcd565b611cdf565b6060611f72826020015160008460000151612cc0565b60608182601f011015612dcf5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612e125760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612e595760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612e7857604051915060008252602082016040526122e3565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612eb1578051835260209283019201612e99565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612f215760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000612f2f856125f2565b919450925090506000816001811115612f4a57612f4a613039565b14612f975760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000838660200151612fa99190613679565b80519091506020841015612fc35760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130025760405162461bcd60e51b81526004016101e090613919565b50604080518082019091528151815260209182019181019190915290565b60006020828403121561303257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061306357613063613039565b91905290565b803563ffffffff8116811461307d57600080fd5b919050565b6001600160a01b03811681146108d457600080fd5b80356001600160401b038116811461307d57600080fd5b60008060008060008060c087890312156130c757600080fd5b6130d087613069565b955060208701356130e081613082565b945060408701356130f081613082565b93506060870135925061310560808801613097565b915061311360a08801613097565b90509295509295509295565b602081016002831061306357613063613039565b60008060006060848603121561314857600080fd5b61315184613069565b9250602084013561316181613082565b929592945050506040919091013590565b60008083601f84011261318457600080fd5b5081356001600160401b0381111561319b57600080fd5b6020830191508360208285010111156131b357600080fd5b9250929050565b60008083601f8401126131cc57600080fd5b5081356001600160401b038111156131e357600080fd5b6020830191508360208260051b85010111156131b357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561323c5761323c6131fe565b604052919050565b600082601f83011261325557600080fd5b81356001600160401b0381111561326e5761326e6131fe565b613281601f8201601f1916602001613214565b81815284602083860101111561329657600080fd5b816020850160208301376000918101602001919091529392505050565b6000608082840312156132c557600080fd5b50919050565b6000806000806000806000806000806101408b8d0312156132eb57600080fd5b8a356001600160401b038082111561330257600080fd5b61330e8e838f01613172565b909c509a5060208d013591508082111561332757600080fd5b6133338e838f016131ba565b909a50985060408d0135975060608d013591508082111561335357600080fd5b61335f8e838f016131ba565b909750955060808d013591508082111561337857600080fd5b506133858d828e01613244565b93505060a08b0135915061339c8c60c08d016132b3565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b60006020828403121561340157600080fd5b61039d82613069565b6080810163ffffffff61341c84613069565b168252602083013561342d81613082565b6001600160a01b03908116602084015260408401359061344c82613082565b166040830152606092830135929091019190915290565b60005b8381101561347e578181015183820152602001613466565b50506000910152565b6000815180845261349f816020860160208601613463565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526134f160a0820187613487565b60408401959095525050606001529392505050565b6000806040838503121561351957600080fd5b61352283613097565b915061353060208401613097565b90509250929050565b60006020828403121561354b57600080fd5b815161039d81613082565b60006020828403121561356857600080fd5b5051919050565b60006001600160401b0380841115613589576135896131fe565b8360051b602061359a818301613214565b8681529185019181810190368411156135b257600080fd5b865b848110156135e6578035868111156135cc5760008081fd5b6135d836828b01613244565b8452509183019183016135b4565b50979650505050505050565b60006020828403121561360457600080fd5b813561039d81613082565b60006020828403121561362157600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611f7257611f72613631565b600081600019048311821515161561367457613674613631565b500290565b80820180821115611f7257611f72613631565b6001600160401b0382811682821603908082111561202157612021613631565b634e487b7160e01b600052601260045260246000fd5b6000826136d1576136d16136ac565b500690565b6000826136e5576136e56136ac565b500490565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561376c57845183529383019391830191600101613750565b505084810360a08601526137808187613487565b9b9a5050505050505050505050565b600082516137a1818460208701613463565b9190910192915050565b6000602082840312156137bd57600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff8316806137e8576137e86136ac565b8060ff84160691505092915050565b60ff8281168282160390811115611f7257611f72613631565b60006001820161382257613822613631565b5060010190565b600181815b8085111561386457816000190482111561384a5761384a613631565b8085161561385757918102915b93841c939080029061382e565b509250929050565b60008261387b57506001611f72565b8161388857506000611f72565b816001811461389e57600281146138a8576138c4565b6001915050611f72565b60ff8411156138b9576138b9613631565b50506001821b611f72565b5060208310610133831016604e8410600b84101617156138e7575081810a611f72565b6138f18383613829565b806000190482111561390557613905613631565b029392505050565b600061039d838361386c565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220602421baf00893da0a1ad83f848fb9ec680486abe80b75375eaf01610b6fd37564736f6c63430008100033", - "sourceMap": "843:386:122:-:0;;;957:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1005:15;:51;;-1:-1:-1;;;;;;1005:51:122;-1:-1:-1;;;;;1005:51:122;;;;;;;;;;843:386;;14:290:145;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:145;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:145:o;:::-;843:386:122;;;;;;", - "linkReferences": {} + "object": "0x60806040523480156200001157600080fd5b5060405162003b4d38038062003b4d83398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b613ab1806200009c6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a610075366004613101565b60016020526000908152604090205460ff1681565b6040516100979190613130565b60405180910390f35b6100b36100ae36600461318f565b610133565b604051908152602001610097565b6100e46100cf366004613101565b60026020526000908152604090205460ff1681565b6040516100979190613200565b6100b36100ff366004613214565b61029a565b6101176101123660046133ac565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b03168152602001868152509050600081604051602001610184919061348e565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c361311a565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb7385604051610286919061348e565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb919061348e565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156103295761032961311a565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c89061039190859061348e565b60405180910390a29150505b9392505050565b6103b96103b460208301836134d0565b6106fe565b6103ce6103c960208301836134d0565b6108e4565b6000816040516020016103e191906134eb565b60405160208183030381529060405280519060200120905060008b8b868685604051602001610414959493929190613594565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff1660028111156104525761045261311a565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f6135e7565b90925090506104c9826104c460208801886134d0565b610999565b600080546001600160a01b0316637599735c6104e860208901896134d0565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e919061361a565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613637565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b60006106598c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061065460208e018e6134d0565b610d57565b9050806106a85760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106d86106b88d8f613650565b8f8d8d8d60200160208101906106ce91906136d3565b8e60600135610fd3565b915091506106ea888a8988868661131e565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561074d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610771919061361a565b6001600160a01b0316036107c25760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610834919061361a565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089591906136f0565b6108e15760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095691906136f0565b156108e15760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c919061361a565b6001600160a01b031603610a5d5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf919061361a565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190613637565b600003610b915760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c04919061361a565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c779190613637565b610c819042613728565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190613637565b811015610d525760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd59190613637565b9050600081856001600160401b031610610df057601b610df3565b60075b60ff169050600082866001600160401b031610610e2f57612000610e20846001600160401b038916613728565b610e2a9190613751565b610e44565b610e446120006001600160401b038816613751565b90506000866001600160401b0316886001600160401b031603610e835750600b610e7081610200613765565b610e7c90610183613784565b9050610fb8565b612000610e90888a613797565b6001600160401b031611610ef25750600b610eac816020613765565b610eb7906006613784565b9050610ece6120006001600160401b0389166137b7565b610eda61200083613765565b610ee49190613784565b9050610e7081610200613765565b876001600160401b0316876001600160401b03161015610f705750600b82610f1b826020613765565b610f259190613784565b9050610f32816002613765565b610f3d906000613784565b905081610f4e630100000083613765565b610f589190613784565b9050610f65816002613765565b610eb7906001613784565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101e0565b610fc48b828c8c611513565b9b9a5050505050505050505050565b6060806000610fe3878a8a61152d565b9050600081600081518110610ffa57610ffa6137cb565b01602001516001600160f81b03191690506000600160f81b82148061102c5750600160f91b6001600160f81b03198316145b156110395750600161109e565b600360fe1b6001600160f81b03198316106110565750600061109e565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b6000602084019050600060405180604001604052808487516110c09190613728565b81526020016110cf8585613784565b9052905060006110de82611dc0565b9050805160041461112a5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b600061114f82600381518110611142576111426137cb565b6020026020010151611dc0565b905080518c106111a15760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b60006111b8828e81518110611142576111426137cb565b905060006111df826000815181106111d2576111d26137cb565b6020026020010151611fe5565b90508c6001600160a01b0316816001600160a01b0316146112535760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b600061127361126e84600181518110611142576111426137cb565b612059565b90508c81600081518110611289576112896137cb565b6020026020010151146112de5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b6000611303846002815181106112f6576112f66137cb565b6020026020010151612109565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961133960208b018b6134d0565b61134960408c0160208d016136d3565b898989604051602401611361969594939291906137e1565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506113a59060608a01908a016136d3565b6001600160a01b0316816040516113bc9190613861565b6000604051808303816000865af19150503d80600081146113f9576040519150601f19603f3d011682016040523d82523d6000602084013e6113fe565b606091505b50805191945092506000915060200361143e57600082806020019051810190611427919061387d565b6001600160e01b031916635160951d60e11b149150505b8280156114485750805b1561146b576000878152600160205260409020805460ff19166002179055611488565b6000878152600160208190526040909120805460ff191690911790555b6114986040890160208a016136d3565b6001600160a01b03166114ae60208a018a6134d0565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed6114e660608d0160408e016136d3565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611521868686612235565b90921495945050505050565b606060008451116115785760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b6000611583846123cd565b90506000611590866124bb565b90506000846040516020016115a791815260200190565b60405160208183030381529060405290506000805b8451811015611d695760008582815181106115d9576115d96137cb565b60200260200101519050845183111561164b5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b826000036116ea57805180516020918201206040516116999261167392910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116e55760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6117e0565b80515160201161177057805180516020918201206040516117149261167392910190815260200190565b6116e55760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146117e05760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b6117ec60106001613784565b8160200151510361198c578451830361192457600061181b82602001516010815181106112f6576112f66137cb565b905060008151116118945760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b600187516118a29190613728565b83146119165760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b6000858481518110611938576119386137cb565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611963576119636137cb565b60200260200101519050611976816125d5565b9550611983600186613784565b94505050611d56565b600281602001515103611cfd5760006119a4826125fa565b90506000816000815181106119bb576119bb6137cb565b016020015160f81c905060006119d26002836138a7565b6119dd9060026138c9565b905060006119ee848360ff1661261e565b905060006119fc8a8961261e565b90506000611a0a8383612654565b905080835114611a825760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff851660021480611a97575060ff85166003145b15611c3d5780825114611b125760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611b2e88602001516001815181106112f6576112f66137cb565b90506000815111611ba75760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611bb59190613728565b8914611c295760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611c50575060ff85166001145b15611c8f57611c7c8760200151600181518110611c6f57611c6f6137cb565b60200260200101516125d5565b9950611c88818a613784565b9850611cf2565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611d56565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611d61816138e2565b9150506115bc565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611dd0856126d3565b919450925090506001816001811115611deb57611deb61311a565b14611e5e5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611e6a8385613784565b14611ed25760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611eeb5790505090506000845b8751811015611fd957600080611f5e6040518060400160405280858d60000151611f429190613728565b8152602001858d60200151611f579190613784565b90526126d3565b509150915060405180604001604052808383611f7a9190613784565b8152602001848c60200151611f8f9190613784565b815250858581518110611fa457611fa46137cb565b6020908102919091010152611fba600185613784565b9350611fc68183613784565b611fd09084613784565b92505050611f18565b50815295945050505050565b8051600090600103611ff957506000919050565b815160151461204a5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b61205382612d96565b92915050565b6060600082516001600160401b03811115612076576120766132df565b60405190808252806020026020018201604052801561209f578160200160208202803683370190505b50905060005b8351811015612102576120d08482815181106120c3576120c36137cb565b6020026020010151612d96565b60001b8282815181106120e5576120e56137cb565b6020908102919091010152806120fa816138e2565b9150506120a5565b5092915050565b60606000806000612119856126d3565b9194509250905060008160018111156121345761213461311a565b146121a75760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b6121b18284613784565b85511461221d5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b61222c85602001518484612da1565b95945050505050565b600082825160016122469190613784565b6122519060026139df565b1161225b57600080fd5b8360005b846001146123c4576122726002866137b7565b60010361231157600284828151811061228d5761228d6137cb565b6020026020010151836040516020016122b0929190918252602082015260400190565b60408051601f19818403018152908290526122ca91613861565b602060405180830381855afa1580156122e7573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061230a9190613637565b91506123a5565b600282858381518110612326576123266137cb565b6020026020010151604051602001612348929190918252602082015260400190565b60408051601f198184030181529082905261236291613861565b602060405180830381855afa15801561237f573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906123a29190613637565b91505b6123b0600286613751565b9450806123bc816138e2565b91505061225f565b50949350505050565b80516060906000816001600160401b038111156123ec576123ec6132df565b60405190808252806020026020018201604052801561243157816020015b604080518082019091526060808252602082015281526020019060019003908161240a5790505b50905060005b828110156124b357604051806040016040528086838151811061245c5761245c6137cb565b6020026020010151815260200161248b87848151811061247e5761247e6137cb565b6020026020010151612e41565b8152508282815181106124a0576124a06137cb565b6020908102919091010152600101612437565b509392505050565b805160609060006124cd826002613765565b6001600160401b038111156124e4576124e46132df565b6040519080825280601f01601f19166020018201604052801561250e576020820181803683370190505b5090506000805b838110156125cb5785818151811061252f5761252f6137cb565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612557836002613765565b81518110612567576125676137cb565b60200101906001600160f81b031916908160001a905350600f60f81b821683612591836002613765565b61259c906001613784565b815181106125ac576125ac6137cb565b60200101906001600160f81b031916908160001a905350600101612515565b5090949350505050565b606060208260000151106125f1576125ec82612109565b612053565b61205382612e54565b606061205361261983602001516000815181106112f6576112f66137cb565b6124bb565b60608251821061263d5750604080516020810190915260008152612053565b61039d838384865161264f9190613728565b612e6a565b6000806000835185511061266957835161266c565b84515b90505b80821080156126c3575083828151811061268b5761268b6137cb565b602001015160f81c60f81b6001600160f81b0319168583815181106126b2576126b26137cb565b01602001516001600160f81b031916145b156124b35781600101915061266f565b6000806000808460000151116126fb5760405162461bcd60e51b81526004016101e0906139eb565b6020840151805160001a607f8111612720576000600160009450945094505050612d8f565b60b7811161287d576000612735608083613728565b9050808760000151116127b55760405162461bcd60e51b815260206004820152604e6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127e25750600160ff1b6001600160f81b0319821610155b61286a5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612d8f915050565b60bf8111612abe57600061289260b783613728565b9050808760000151116129155760405162461bcd60e51b81526020600482015260516024820152600080516020613a5c83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b031916600081900361299c5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c60378111612a1f5760405162461bcd60e51b81526020600482015260486024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b612a298184613784565b895111612aa15760405162461bcd60e51b815260206004820152604c6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b612aac836001613784565b9750955060009450612d8f9350505050565b60f78111612b60576000612ad360c083613728565b905080876000015111612b4f5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612d8f915050565b6000612b6d60f783613728565b905080876000015111612bec5760405162461bcd60e51b815260206004820152604d6024820152600080516020613a5c83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612c715760405162461bcd60e51b81526020600482015260486024820152600080516020613a5c83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612cf25760405162461bcd60e51b81526020600482015260466024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612cfc8184613784565b895111612d725760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612d7d836001613784565b9750955060019450612d8f9350505050565b9193909250565b600061205382612fab565b60606000826001600160401b03811115612dbd57612dbd6132df565b6040519080825280601f01601f191660200182016040528015612de7576020820181803683370190505b50905082600003612df957905061039d565b6000612e058587613784565b90506020820160005b85811015612e26578281015182820152602001612e0e565b85811115612e35576000868301525b50919695505050505050565b6060612053612e4f836130ae565b611dc0565b6060612053826020015160008460000151612da1565b60608182601f011015612eb05760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612ef35760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612f3a5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612f5957604051915060008252602082016040526123c4565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612f92578051835260209283019201612f7a565b5050858452601f01601f19166040525050949350505050565b60006021826000015111156130025760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000613010856126d3565b91945092509050600081600181111561302b5761302b61311a565b146130785760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b600083866020015161308a9190613784565b805190915060208410156130a45760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130e35760405162461bcd60e51b81526004016101e0906139eb565b50604080518082019091528151815260209182019181019190915290565b60006020828403121561311357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106131445761314461311a565b91905290565b803563ffffffff8116811461315e57600080fd5b919050565b6001600160a01b03811681146108e157600080fd5b80356001600160401b038116811461315e57600080fd5b60008060008060008060c087890312156131a857600080fd5b6131b18761314a565b955060208701356131c181613163565b945060408701356131d181613163565b9350606087013592506131e660808801613178565b91506131f460a08801613178565b90509295509295509295565b60208101600283106131445761314461311a565b60008060006060848603121561322957600080fd5b6132328461314a565b9250602084013561324281613163565b929592945050506040919091013590565b60008083601f84011261326557600080fd5b5081356001600160401b0381111561327c57600080fd5b60208301915083602082850101111561329457600080fd5b9250929050565b60008083601f8401126132ad57600080fd5b5081356001600160401b038111156132c457600080fd5b6020830191508360208260051b850101111561329457600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561331d5761331d6132df565b604052919050565b600082601f83011261333657600080fd5b81356001600160401b0381111561334f5761334f6132df565b613362601f8201601f19166020016132f5565b81815284602083860101111561337757600080fd5b816020850160208301376000918101602001919091529392505050565b6000608082840312156133a657600080fd5b50919050565b6000806000806000806000806000806101408b8d0312156133cc57600080fd5b8a356001600160401b03808211156133e357600080fd5b6133ef8e838f01613253565b909c509a5060208d013591508082111561340857600080fd5b6134148e838f0161329b565b909a50985060408d0135975060608d013591508082111561343457600080fd5b6134408e838f0161329b565b909750955060808d013591508082111561345957600080fd5b506134668d828e01613325565b93505060a08b0135915061347d8c60c08d01613394565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b6000602082840312156134e257600080fd5b61039d8261314a565b6080810163ffffffff6134fd8461314a565b168252602083013561350e81613163565b6001600160a01b03908116602084015260408401359061352d82613163565b166040830152606092830135929091019190915290565b60005b8381101561355f578181015183820152602001613547565b50506000910152565b60008151808452613580816020860160208601613544565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526135d260a0820187613568565b60408401959095525050606001529392505050565b600080604083850312156135fa57600080fd5b61360383613178565b915061361160208401613178565b90509250929050565b60006020828403121561362c57600080fd5b815161039d81613163565b60006020828403121561364957600080fd5b5051919050565b60006001600160401b038084111561366a5761366a6132df565b8360051b602061367b8183016132f5565b86815291850191818101903684111561369357600080fd5b865b848110156136c7578035868111156136ad5760008081fd5b6136b936828b01613325565b845250918301918301613695565b50979650505050505050565b6000602082840312156136e557600080fd5b813561039d81613163565b60006020828403121561370257600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561205357612053613712565b634e487b7160e01b600052601260045260246000fd5b6000826137605761376061373b565b500490565b600081600019048311821515161561377f5761377f613712565b500290565b8082018082111561205357612053613712565b6001600160401b0382811682821603908082111561210257612102613712565b6000826137c6576137c661373b565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561384d57845183529383019391830191600101613831565b505084810360a0860152610fc48187613568565b60008251613873818460208701613544565b9190910192915050565b60006020828403121561388f57600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff8316806138ba576138ba61373b565b8060ff84160691505092915050565b60ff828116828216039081111561205357612053613712565b6000600182016138f4576138f4613712565b5060010190565b600181815b8085111561393657816000190482111561391c5761391c613712565b8085161561392957918102915b93841c9390800290613900565b509250929050565b60008261394d57506001612053565b8161395a57506000612053565b8160018114613970576002811461397a57613996565b6001915050612053565b60ff84111561398b5761398b613712565b50506001821b612053565b5060208310610133831016604e8410600b84101617156139b9575081810a612053565b6139c383836138fb565b80600019048211156139d7576139d7613712565b029392505050565b600061039d838361393e565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220df83a8d260f4e49839056b5a66be8b872405fe1e931c685950cb55cf4bf1fceb64736f6c63430008100033", + "sourceMap": "843:386:123:-:0;;;957:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1005:15;:51;;-1:-1:-1;;;;;;1005:51:123;-1:-1:-1;;;;;1005:51:123;;;;;;;;;;843:386;;14:290:146;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:146;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:146:o;:::-;843:386:123;;;;;;", + "linkReferences": { + "src/libraries/BeaconChainForks.sol": { + "BeaconChainForks": [ + { + "start": 3603, + "length": 20 + } + ] + } + } }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a610075366004613020565b60016020526000908152604090205460ff1681565b604051610097919061304f565b60405180910390f35b6100b36100ae3660046130ae565b610133565b604051908152602001610097565b6100e46100cf366004613020565b60026020526000908152604090205460ff1681565b604051610097919061311f565b6100b36100ff366004613133565b61029a565b6101176101123660046132cb565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161018491906133ad565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c3613039565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161028691906133ad565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb91906133ad565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff16600181111561032957610329613039565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103919085906133ad565b60405180910390a29150505b9392505050565b6103b96103b460208301836133ef565b6106f1565b6103ce6103c960208301836133ef565b6108d7565b6000816040516020016103e1919061340a565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016104149594939291906134b3565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561045257610452613039565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f613506565b90925090506104c9826104c460208801886133ef565b61098c565b600080546001600160a01b0316637599735c6104e860208901896133ef565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e9190613539565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613556565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b600061064c8c8f8f80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610d4a565b90508061069b5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106cb6106ab8d8f61356f565b8f8d8d8d60200160208101906106c191906135f2565b8e60600135610ef2565b915091506106dd888a8988868661123d565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107649190613539565b6001600160a01b0316036107b55760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610803573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108279190613539565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610864573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610888919061360f565b6108d45760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610949919061360f565b156108d45760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff9190613539565b6001600160a01b031603610a505760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190613539565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b359190613556565b600003610b845760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190613539565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190613556565b610c749042613647565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ceb9190613556565b811015610d455760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b600080826001600160401b0316846001600160401b031603610d885750600b610d758161020061365a565b610d8190610183613679565b9050610edb565b612000610d95848661368c565b6001600160401b031611610df75750600b610db181602061365a565b610dbc906006613679565b9050610dd36120006001600160401b0385166136c2565b610ddf6120008361365a565b610de99190613679565b9050610d758161020061365a565b836001600160401b0316836001600160401b03161015610e895750600b610e1f81602061365a565b610e2a906007613679565b9050610e3781600261365a565b610e42906000613679565b9050610e596120006001600160401b0385166136d6565b610e6763010000008361365a565b610e719190613679565b9050610e7e81600261365a565b610dbc906001613679565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016101e0565b610ee787828888611432565b979650505050505050565b6060806000610f02878a8a61144c565b9050600081600081518110610f1957610f196136ea565b01602001516001600160f81b03191690506000600160f81b821480610f4b5750600160f91b6001600160f81b03198316145b15610f5857506001610fbd565b600360fe1b6001600160f81b0319831610610f7557506000610fbd565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b600060208401905060006040518060400160405280848751610fdf9190613647565b8152602001610fee8585613679565b905290506000610ffd82611cdf565b905080516004146110495760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b600061106e82600381518110611061576110616136ea565b6020026020010151611cdf565b905080518c106110c05760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b60006110d7828e81518110611061576110616136ea565b905060006110fe826000815181106110f1576110f16136ea565b6020026020010151611f04565b90508c6001600160a01b0316816001600160a01b0316146111725760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b600061119261118d84600181518110611061576110616136ea565b611f78565b90508c816000815181106111a8576111a86136ea565b6020026020010151146111fd5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b600061122284600281518110611215576112156136ea565b6020026020010151612028565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961125860208b018b6133ef565b61126860408c0160208d016135f2565b89898960405160240161128096959493929190613700565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506112c49060608a01908a016135f2565b6001600160a01b0316816040516112db919061378f565b6000604051808303816000865af19150503d8060008114611318576040519150601f19603f3d011682016040523d82523d6000602084013e61131d565b606091505b50805191945092506000915060200361135d5760008280602001905181019061134691906137ab565b6001600160e01b031916635160951d60e11b149150505b8280156113675750805b1561138a576000878152600160205260409020805460ff191660021790556113a7565b6000878152600160208190526040909120805460ff191690911790555b6113b76040890160208a016135f2565b6001600160a01b03166113cd60208a018a6133ef565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61140560608d0160408e016135f2565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611440868686612154565b90921495945050505050565b606060008451116114975760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b60006114a2846122ec565b905060006114af866123da565b90506000846040516020016114c691815260200190565b60405160208183030381529060405290506000805b8451811015611c885760008582815181106114f8576114f86136ea565b60200260200101519050845183111561156a5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b8260000361160957805180516020918201206040516115b89261159292910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116045760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6116ff565b80515160201161168f57805180516020918201206040516116339261159292910190815260200190565b6116045760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146116ff5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b61170b60106001613679565b816020015151036118ab578451830361184357600061173a8260200151601081518110611215576112156136ea565b905060008151116117b35760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b600187516117c19190613647565b83146118355760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b6000858481518110611857576118576136ea565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611882576118826136ea565b60200260200101519050611895816124f4565b95506118a2600186613679565b94505050611c75565b600281602001515103611c1c5760006118c382612519565b90506000816000815181106118da576118da6136ea565b016020015160f81c905060006118f16002836137d5565b6118fc9060026137f7565b9050600061190d848360ff1661253d565b9050600061191b8a8961253d565b905060006119298383612573565b9050808351146119a15760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff8516600214806119b6575060ff85166003145b15611b5c5780825114611a315760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611a4d8860200151600181518110611215576112156136ea565b90506000815111611ac65760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611ad49190613647565b8914611b485760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611b6f575060ff85166001145b15611bae57611b9b8760200151600181518110611b8e57611b8e6136ea565b60200260200101516124f4565b9950611ba7818a613679565b9850611c11565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611c75565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611c8081613810565b9150506114db565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611cef856125f2565b919450925090506001816001811115611d0a57611d0a613039565b14611d7d5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611d898385613679565b14611df15760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611e0a5790505090506000845b8751811015611ef857600080611e7d6040518060400160405280858d60000151611e619190613647565b8152602001858d60200151611e769190613679565b90526125f2565b509150915060405180604001604052808383611e999190613679565b8152602001848c60200151611eae9190613679565b815250858581518110611ec357611ec36136ea565b6020908102919091010152611ed9600185613679565b9350611ee58183613679565b611eef9084613679565b92505050611e37565b50815295945050505050565b8051600090600103611f1857506000919050565b8151601514611f695760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b611f7282612cb5565b92915050565b6060600082516001600160401b03811115611f9557611f956131fe565b604051908082528060200260200182016040528015611fbe578160200160208202803683370190505b50905060005b835181101561202157611fef848281518110611fe257611fe26136ea565b6020026020010151612cb5565b60001b828281518110612004576120046136ea565b60209081029190910101528061201981613810565b915050611fc4565b5092915050565b60606000806000612038856125f2565b91945092509050600081600181111561205357612053613039565b146120c65760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b6120d08284613679565b85511461213c5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b61214b85602001518484612cc0565b95945050505050565b600082825160016121659190613679565b61217090600261390d565b1161217a57600080fd5b8360005b846001146122e3576121916002866136c2565b6001036122305760028482815181106121ac576121ac6136ea565b6020026020010151836040516020016121cf929190918252602082015260400190565b60408051601f19818403018152908290526121e99161378f565b602060405180830381855afa158015612206573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122299190613556565b91506122c4565b600282858381518110612245576122456136ea565b6020026020010151604051602001612267929190918252602082015260400190565b60408051601f19818403018152908290526122819161378f565b602060405180830381855afa15801561229e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122c19190613556565b91505b6122cf6002866136d6565b9450806122db81613810565b91505061217e565b50949350505050565b80516060906000816001600160401b0381111561230b5761230b6131fe565b60405190808252806020026020018201604052801561235057816020015b60408051808201909152606080825260208201528152602001906001900390816123295790505b50905060005b828110156123d257604051806040016040528086838151811061237b5761237b6136ea565b602002602001015181526020016123aa87848151811061239d5761239d6136ea565b6020026020010151612d60565b8152508282815181106123bf576123bf6136ea565b6020908102919091010152600101612356565b509392505050565b805160609060006123ec82600261365a565b6001600160401b03811115612403576124036131fe565b6040519080825280601f01601f19166020018201604052801561242d576020820181803683370190505b5090506000805b838110156124ea5785818151811061244e5761244e6136ea565b6020910101516001600160f81b03198116925060041c60ff60f41b168361247683600261365a565b81518110612486576124866136ea565b60200101906001600160f81b031916908160001a905350600f60f81b8216836124b083600261365a565b6124bb906001613679565b815181106124cb576124cb6136ea565b60200101906001600160f81b031916908160001a905350600101612434565b5090949350505050565b606060208260000151106125105761250b82612028565b611f72565b611f7282612d73565b6060611f726125388360200151600081518110611215576112156136ea565b6123da565b60608251821061255c5750604080516020810190915260008152611f72565b61039d838384865161256e9190613647565b612d89565b6000806000835185511061258857835161258b565b84515b90505b80821080156125e257508382815181106125aa576125aa6136ea565b602001015160f81c60f81b6001600160f81b0319168583815181106125d1576125d16136ea565b01602001516001600160f81b031916145b156123d25781600101915061258e565b60008060008084600001511161261a5760405162461bcd60e51b81526004016101e090613919565b6020840151805160001a607f811161263f576000600160009450945094505050612cae565b60b7811161279c576000612654608083613647565b9050808760000151116126d45760405162461bcd60e51b815260206004820152604e602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127015750600160ff1b6001600160f81b0319821610155b6127895760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612cae915050565b60bf81116129dd5760006127b160b783613647565b9050808760000151116128345760405162461bcd60e51b8152602060048201526051602482015260008051602061398a83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b03191660008190036128bb5760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c6037811161293e5760405162461bcd60e51b8152602060048201526048602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b6129488184613679565b8951116129c05760405162461bcd60e51b815260206004820152604c602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b6129cb836001613679565b9750955060009450612cae9350505050565b60f78111612a7f5760006129f260c083613647565b905080876000015111612a6e5760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612cae915050565b6000612a8c60f783613647565b905080876000015111612b0b5760405162461bcd60e51b815260206004820152604d602482015260008051602061398a83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612b905760405162461bcd60e51b8152602060048201526048602482015260008051602061398a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612c115760405162461bcd60e51b8152602060048201526046602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612c1b8184613679565b895111612c915760405162461bcd60e51b815260206004820152604a602482015260008051602061398a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612c9c836001613679565b9750955060019450612cae9350505050565b9193909250565b6000611f7282612eca565b60606000826001600160401b03811115612cdc57612cdc6131fe565b6040519080825280601f01601f191660200182016040528015612d06576020820181803683370190505b50905082600003612d1857905061039d565b6000612d248587613679565b90506020820160005b85811015612d45578281015182820152602001612d2d565b85811115612d54576000868301525b50919695505050505050565b6060611f72612d6e83612fcd565b611cdf565b6060611f72826020015160008460000151612cc0565b60608182601f011015612dcf5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612e125760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612e595760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612e7857604051915060008252602082016040526122e3565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612eb1578051835260209283019201612e99565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612f215760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000612f2f856125f2565b919450925090506000816001811115612f4a57612f4a613039565b14612f975760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000838660200151612fa99190613679565b80519091506020841015612fc35760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130025760405162461bcd60e51b81526004016101e090613919565b50604080518082019091528151815260209182019181019190915290565b60006020828403121561303257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061306357613063613039565b91905290565b803563ffffffff8116811461307d57600080fd5b919050565b6001600160a01b03811681146108d457600080fd5b80356001600160401b038116811461307d57600080fd5b60008060008060008060c087890312156130c757600080fd5b6130d087613069565b955060208701356130e081613082565b945060408701356130f081613082565b93506060870135925061310560808801613097565b915061311360a08801613097565b90509295509295509295565b602081016002831061306357613063613039565b60008060006060848603121561314857600080fd5b61315184613069565b9250602084013561316181613082565b929592945050506040919091013590565b60008083601f84011261318457600080fd5b5081356001600160401b0381111561319b57600080fd5b6020830191508360208285010111156131b357600080fd5b9250929050565b60008083601f8401126131cc57600080fd5b5081356001600160401b038111156131e357600080fd5b6020830191508360208260051b85010111156131b357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561323c5761323c6131fe565b604052919050565b600082601f83011261325557600080fd5b81356001600160401b0381111561326e5761326e6131fe565b613281601f8201601f1916602001613214565b81815284602083860101111561329657600080fd5b816020850160208301376000918101602001919091529392505050565b6000608082840312156132c557600080fd5b50919050565b6000806000806000806000806000806101408b8d0312156132eb57600080fd5b8a356001600160401b038082111561330257600080fd5b61330e8e838f01613172565b909c509a5060208d013591508082111561332757600080fd5b6133338e838f016131ba565b909a50985060408d0135975060608d013591508082111561335357600080fd5b61335f8e838f016131ba565b909750955060808d013591508082111561337857600080fd5b506133858d828e01613244565b93505060a08b0135915061339c8c60c08d016132b3565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b60006020828403121561340157600080fd5b61039d82613069565b6080810163ffffffff61341c84613069565b168252602083013561342d81613082565b6001600160a01b03908116602084015260408401359061344c82613082565b166040830152606092830135929091019190915290565b60005b8381101561347e578181015183820152602001613466565b50506000910152565b6000815180845261349f816020860160208601613463565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526134f160a0820187613487565b60408401959095525050606001529392505050565b6000806040838503121561351957600080fd5b61352283613097565b915061353060208401613097565b90509250929050565b60006020828403121561354b57600080fd5b815161039d81613082565b60006020828403121561356857600080fd5b5051919050565b60006001600160401b0380841115613589576135896131fe565b8360051b602061359a818301613214565b8681529185019181810190368411156135b257600080fd5b865b848110156135e6578035868111156135cc5760008081fd5b6135d836828b01613244565b8452509183019183016135b4565b50979650505050505050565b60006020828403121561360457600080fd5b813561039d81613082565b60006020828403121561362157600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611f7257611f72613631565b600081600019048311821515161561367457613674613631565b500290565b80820180821115611f7257611f72613631565b6001600160401b0382811682821603908082111561202157612021613631565b634e487b7160e01b600052601260045260246000fd5b6000826136d1576136d16136ac565b500690565b6000826136e5576136e56136ac565b500490565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561376c57845183529383019391830191600101613750565b505084810360a08601526137808187613487565b9b9a5050505050505050505050565b600082516137a1818460208701613463565b9190910192915050565b6000602082840312156137bd57600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff8316806137e8576137e86136ac565b8060ff84160691505092915050565b60ff8281168282160390811115611f7257611f72613631565b60006001820161382257613822613631565b5060010190565b600181815b8085111561386457816000190482111561384a5761384a613631565b8085161561385757918102915b93841c939080029061382e565b509250929050565b60008261387b57506001611f72565b8161388857506000611f72565b816001811461389e57600281146138a8576138c4565b6001915050611f72565b60ff8411156138b9576138b9613631565b50506001821b611f72565b5060208310610133831016604e8410600b84101617156138e7575081810a611f72565b6138f18383613829565b806000190482111561390557613905613631565b029392505050565b600061039d838361386c565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220602421baf00893da0a1ad83f848fb9ec680486abe80b75375eaf01610b6fd37564736f6c63430008100033", - "sourceMap": "843:386:122:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;837:960:124;;;;;;:::i;:::-;;:::i;:::-;;;1892:25:145;;;1880:2;1865:18;837:960:124;1746:177:145;723:59:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1888:644:124:-;;;;;;:::i;:::-;;:::i;1533:1728:123:-;;;;;;:::i;:::-;;:::i;:::-;;917:33:122;;949:1;917:33;;;;;6140:4:145;6128:17;;;6110:36;;6098:2;6083:18;917:33:122;5968:184:145;837:960:124;1056:7;1075:32;1122:73;;;;;;;;1135:14;1122:73;;;;;;1151:14;-1:-1:-1;;;;;1122:73:124;;;;;1167:16;-1:-1:-1;;;;;1122:73:124;;;;;1185:9;1122:73;;;1075:120;;1205:22;1251:12;1240:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1240:24:124;;;;;;;;;1230:35;;1240:24;1230:35;;;;;-1:-1:-1;1313:29:124;1280;;;;:13;:29;;;;;;;;;:62;;;;;;;:::i;:::-;;1276:141;;1365:41;;-1:-1:-1;;;1365:41:124;;;;;1892:25:145;;;1865:18;;1365:41:124;;;;;;;;1276:141;1426:29;;;;:13;:29;;;;;:61;;-1:-1:-1;;1426:61:124;1458:29;1426:61;;;-1:-1:-1;;;;;1589:21:124;;;;;;;1585:97;;;1633:38;;-1:-1:-1;;;1633:38:124;;-1:-1:-1;;;;;6937:15:145;;;1633:38:124;;;6919:34:145;6989:15;;6969:18;;;6962:43;6855:18;;1633:38:124;6712:299:145;1585:97:124;1735:8;-1:-1:-1;;;;;1697:61:124;1723:10;-1:-1:-1;;;;;1697:61:124;1707:14;1697:61;1745:12;1697:61;;;;;;:::i;:::-;;;;;;;;1776:14;837:960;-1:-1:-1;;;;;;;;837:960:124:o;1888:644::-;2009:7;2032:32;2079:67;;;;;;;;2092:14;2079:67;;;;;;2108:14;-1:-1:-1;;;;;2079:67:124;;;;;2124:10;-1:-1:-1;;;;;2079:67:124;;;;;2136:9;2079:67;;;2032:114;;2156:22;2202:12;2191:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2191:24:124;;;;;;;;;2181:35;;2191:24;2181:35;;;;;-1:-1:-1;2264:30:124;2231:29;;;;:13;:29;;;;;;;;;:63;;;;;;;:::i;:::-;;2227:138;;2317:37;;-1:-1:-1;;;2317:37:124;;;;;1892:25:145;;;1865:18;;2317:37:124;1746:177:145;2227:138:124;2406:30;2374:29;;;:13;:29;;;;;;;:62;;-1:-1:-1;;2374:62:124;;;2452:41;2374:29;;2452:41;;;;2480:12;;2452:41;:::i;:::-;;;;;;;;2511:14;-1:-1:-1;;1888:644:124;;;;;;:::o;1533:1728:123:-;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:123;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:123;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:123;;9326:2:145;2243:115:123;;;9308:21:145;9365:2;9345:18;;;9338:30;9404:25;9384:18;;;9377:53;9447:18;;2243:115:123;9124:347:145;2243:115:123;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:123;-1:-1:-1;2460:60:123;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:123;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:123;;;;;;;;9899:23:145;;;;2563:56:123;;;9881:42:145;9854:18;;2563:56:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:123;;-1:-1:-1;;;;;10375:31:145;;2563:73:123;;;10357:50:145;-1:-1:-1;;;;;2563:64:123;;;;;;;10330:18:145;;2563:73:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:123;2646:58;;;;-1:-1:-1;;;2646:58:123;;10809:2:145;2646:58:123;;;10791:21:145;10848:2;10828:18;;;10821:30;-1:-1:-1;;;10867:18:145;;;10860:51;10928:18;;2646:58:123;10607:345:145;2646:58:123;2714:12;2741:84;2764:12;2778:17;;2741:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2797:10:123;;-1:-1:-1;2809:7:123;;-1:-1:-1;2818:6:123;;-1:-1:-1;2741:22:123;:84::i;:::-;2714:111;;2843:7;2835:47;;;;-1:-1:-1;;;2835:47:123;;11159:2:145;2835:47:123;;;11141:21:145;11198:2;11178:18;;;11171:30;11237:29;11217:18;;;11210:57;11284:18;;2835:47:123;10957:351:145;2835:47:123;2894:28;;2950:211;;2985:12;;2950:211;:::i;:::-;3011:12;3037:17;3068:8;3090:12;:26;;;;;;;;;;:::i;:::-;3130:12;:21;;;2950;:211::i;:::-;2893:268;;;;3172:82;3181:14;3197:12;3211:10;3223:6;3231:11;3244:9;3172:8;:82::i;:::-;1837:1424;;;;;;;;1533:1728;;;;;;;;;;:::o;3347:307::-;3505:1;3455:15;;:37;;-1:-1:-1;;;3455:37:123;;9911:10:145;9899:23;;3455:37:123;;;9881:42:145;-1:-1:-1;;;;;3455:15:123;;;;:28;;9854:18:145;;3455:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3447:60:123;;3426:119;;;;-1:-1:-1;;;3426:119:123;;12706:2:145;3426:119:123;;;12688:21:145;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:145;;;12757:54;12828:18;;3426:119:123;12504:348:145;3426:119:123;3563:15;;:37;;-1:-1:-1;;;3563:37:123;;9911:10:145;9899:23;;3563:37:123;;;9881:42:145;-1:-1:-1;;;;;3563:15:123;;;;:28;;9854:18:145;;3563:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:48:123;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3555:92;;;;-1:-1:-1;;;3555:92:123;;13341:2:145;3555:92:123;;;13323:21:145;13380:2;13360:18;;;13353:30;13419:31;13399:18;;;13392:59;13468:18;;3555:92:123;13139:353:145;3555:92:123;3347:307;:::o;3715:137::-;3790:15;;:31;;-1:-1:-1;;;3790:31:123;;9911:10:145;9899:23;;3790:31:123;;;9881:42:145;-1:-1:-1;;;;;3790:15:123;;;;:22;;9854:18:145;;3790:31:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3789:32;3781:64;;;;-1:-1:-1;;;3781:64:123;;13699:2:145;3781:64:123;;;13681:21:145;13738:2;13718:18;;;13711:30;-1:-1:-1;;;13757:18:145;;;13750:49;13816:18;;3781:64:123;13497:343:145;3922:620:123;4087:1;4037:15;;:37;;-1:-1:-1;;;4037:37:123;;9911:10:145;9899:23;;4037:37:123;;;9881:42:145;-1:-1:-1;;;;;4037:15:123;;;;:28;;9854:18:145;;4037:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4029:60:123;;4008:119;;;;-1:-1:-1;;;4008:119:123;;12706:2:145;4008:119:123;;;12688:21:145;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:145;;;12757:54;12828:18;;4008:119:123;12504:348:145;4008:119:123;4158:15;;:37;;-1:-1:-1;;;4158:37:123;;9911:10:145;9899:23;;4158:37:123;;;9881:42:145;-1:-1:-1;;;;;4158:15:123;;;;:28;;9854:18:145;;4158:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4158:54:123;;-1:-1:-1;;;;;10375:31:145;;4158:54:123;;;10357:50:145;-1:-1:-1;;;;;4158:48:123;;;;;;;10330:18:145;;4158:54:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4216:1;4158:59;4137:136;;;;-1:-1:-1;;;4137:136:123;;14236:2:145;4137:136:123;;;14218:21:145;14275:2;14255:18;;;14248:30;14314:32;14294:18;;;14287:60;14364:18;;4137:136:123;14034:354:145;4137:136:123;4283:19;4335:15;;:37;;-1:-1:-1;;;4335:37:123;;9911:10:145;9899:23;;4335:37:123;;;9881:42:145;-1:-1:-1;;;;;4335:15:123;;;;:28;;9854:18:145;;4335:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4335:54:123;;-1:-1:-1;;;;;10375:31:145;;4335:54:123;;;10357:50:145;-1:-1:-1;;;;;4335:48:123;;;;;;;10330:18:145;;4335:54:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4317:72;;:15;:72;:::i;:::-;4283:106;;4435:15;;;;;;;;-1:-1:-1;;;;;4435:15:123;-1:-1:-1;;;;;4435:38:123;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4420:11;:55;;4399:136;;;;-1:-1:-1;;;4399:136:123;;14860:2:145;4399:136:123;;;14842:21:145;14899:2;14879:18;;;14872:30;14938:34;14918:18;;;14911:62;-1:-1:-1;;;14989:18:145;;;14982:32;15031:19;;4399:136:123;14658:398:145;4399:136:123;3998:544;3922:620;;:::o;3024:1184:109:-;3230:4;3246:13;3284:6;-1:-1:-1;;;;;3273:17:109;:7;-1:-1:-1;;;;;3273:17:109;;3269:845;;-1:-1:-1;3314:5:109;3341:14;3314:5;3349:6;3341:14;:::i;:::-;:20;;3358:3;3341:20;:::i;:::-;3333:28;;3269:845;;;304:4;3382:16;3392:6;3382:7;:16;:::i;:::-;-1:-1:-1;;;;;3382:45:109;;3378:736;;-1:-1:-1;3451:5:109;3478:14;3451:5;3486:6;3478:14;:::i;:::-;:18;;3495:1;3478:18;:::i;:::-;3470:26;-1:-1:-1;3554:34:109;304:4;-1:-1:-1;;;;;3554:34:109;;;:::i;:::-;3518:33;304:4;3518:5;:33;:::i;:::-;:70;;;;:::i;:::-;3510:78;-1:-1:-1;3610:14:109;3510:78;3618:6;3610:14;:::i;3378:736::-;3660:7;-1:-1:-1;;;;;3651:16:109;:6;-1:-1:-1;;;;;3651:16:109;;3647:467;;;-1:-1:-1;3691:5:109;3718:14;3691:5;3726:6;3718:14;:::i;:::-;:18;;3735:1;3718:18;:::i;:::-;3710:26;-1:-1:-1;3758:9:109;3710:26;3766:1;3758:9;:::i;:::-;:13;;3770:1;3758:13;:::i;:::-;3750:21;-1:-1:-1;3826:34:109;304:4;-1:-1:-1;;;;;3826:34:109;;;:::i;:::-;3793:30;236:8;3793:5;:30;:::i;:::-;:67;;;;:::i;:::-;3785:75;-1:-1:-1;3882:9:109;3785:75;3890:1;3882:9;:::i;:::-;:13;;3894:1;3882:13;:::i;3647:467::-;4060:43;;-1:-1:-1;;;4060:43:109;;16128:2:145;4060:43:109;;;16110:21:145;16167:2;16147:18;;;16140:30;16206:34;16186:18;;;16179:62;-1:-1:-1;;;16257:18:145;;;16250:31;16298:19;;4060:43:109;15926:397:145;3647:467:109;4130:71;4150:12;4164:5;4171:17;4190:10;4130:19;:71::i;:::-;4123:78;3024:1184;-1:-1:-1;;;;;;;3024:1184:109:o;431:2729:120:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:120;;-1:-1:-1;1486:14:120;-1:-1:-1;;;1514:25:120;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:120;;;1514:54;1510:236;;;-1:-1:-1;1593:1:120;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:120;;;1611:135;;-1:-1:-1;1665:1:120;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:120;;16662:2:145;1697:38:120;;;16644:21:145;16701:2;16681:18;;;16674:30;16740;16720:18;;;16713:58;16788:18;;1697:38:120;16460:352:145;1611:135:120;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:120;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:120;;17019:2:145;2278:58:120;;;17001:21:145;17058:2;17038:18;;;17031:30;-1:-1:-1;;;17077:18:145;;;17070:52;17139:18;;2278:58:120;16817:346:145;2278:58:120;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:120;;17370:2:145;2495:59:120;;;17352:21:145;17409:2;17389:18;;;17382:30;17448:25;17428:18;;;17421:53;17491:18;;2495:59:120;17168:347:145;2495:59:120;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:120;:14;-1:-1:-1;;;;;2777:30:120;;2769:83;;;;-1:-1:-1;;;2769:83:120;;17722:2:145;2769:83:120;;;17704:21:145;17761:2;17741:18;;;17734:30;17800:34;17780:18;;;17773:62;-1:-1:-1;;;17851:18:145;;;17844:38;17899:19;;2769:83:120;17520:404:145;2769:83:120;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:120;;18131:2:145;2990:74:120;;;18113:21:145;18170:2;18150:18;;;18143:30;18209:32;18189:18;;;18182:60;18259:18;;2990:74:120;17929:354:145;2990:74:120;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:120;;-1:-1:-1;;;;;;;;;;;431:2729:120;;;;;;;;;:::o;4667:1397:123:-;4913:12;4935:17;4913:12;-1:-1:-1;;;5105:15:123;5138:27;;;;:13;:27;:::i;:::-;5183;;;;;;;;:::i;:::-;5228:7;5253:12;5283:10;5003:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5003:304:123;;;;;;;;;;;;;;-1:-1:-1;;;;;5003:304:123;-1:-1:-1;;;;;;5003:304:123;;;;;;;;;;;-1:-1:-1;5339:29:123;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5339:34:123;5374:11;5339:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5451:11:123;;5321:65;;-1:-1:-1;5321:65:123;-1:-1:-1;5407:22:123;;-1:-1:-1;5466:2:123;5451:17;5447:178;;5485:12;5512:4;5501:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5561:53:123;-1:-1:-1;;;5561:53:123;;-1:-1:-1;;5447:178:123;5639:7;:28;;;;;5650:17;5639:28;5635:215;;;5683:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5683:64:123;5714:33;5683:64;;;5635:215;;;5778:28;;;;5809:30;5778:28;;;;;;;;:61;;-1:-1:-1;;5778:61:123;;;;;;5635:215;5956:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5865:192:123;5915:27;;;;:13;:27;:::i;:::-;5865:192;;5886:15;5865:192;5997:29;;;;;;;;:::i;:::-;5865:192;;;-1:-1:-1;;;;;20179:32:145;;;20161:51;;20255:14;;20248:22;20243:2;20228:18;;20221:50;20134:18;5865:192:123;;;;;;;4903:1161;;;4667:1397;;;;;;:::o;1770:281:109:-;1914:4;1934:26;1963:38;1981:4;1987:5;1994:6;1963:17;:38::i;:::-;2018:26;;;;1770:281;-1:-1:-1;;;;;1770:281:109:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;20484:2:145;3101:49:77;;;20466:21:145;20523:2;20503:18;;;20496:30;-1:-1:-1;;;20542:18:145;;;20535:51;20603:18;;3101:49:77;20282:345:145;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;20761:19:145;;20805:2;20796:12;;20632:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;21021:2:145;3636:134:77;;;21003:21:145;21060:2;21040:18;;;21033:30;21099:34;21079:18;;;21072:62;-1:-1:-1;;;21150:18:145;;;21143:44;21204:19;;3636:134:77;20819:410:145;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;20761:19:145;;;20805:2;20796:12;;20632:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;21436:2:145;3893:176:77;;;21418:21:145;21475:2;21455:18;;;21448:30;21514:31;21494:18;;;21487:59;21563:18;;3893:176:77;21234:353:145;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;20761:19:145;;;20805:2;20796:12;;20632:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;21794:2:145;4222:186:77;;;21776:21:145;21833:2;21813:18;;;21806:30;21872:34;21852:18;;;21845:62;-1:-1:-1;;;21923:18:145;;;21916:37;21970:19;;4222:186:77;21592:403:145;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;22202:2:145;4509:156:77;;;22184:21:145;22241:2;22221:18;;;22214:30;22280:34;22260:18;;;22253:62;-1:-1:-1;;;22331:18:145;;;22324:36;22377:19;;4509:156:77;22000:402:145;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;22609:2:145;5384:158:77;;;22591:21:145;22648:2;22628:18;;;22621:30;22687:34;22667:18;;;22660:62;22758:29;22738:18;;;22731:57;22805:19;;5384:158:77;22407:423:145;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;23037:2:145;5626:162:77;;;23019:21:145;23076:2;23056:18;;;23049:30;23115:34;23095:18;;;23088:62;23186:28;23166:18;;;23159:56;23232:19;;5626:162:77;22835:422:145;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;23782:2:145;7009:171:77;;;23764:21:145;23821:2;23801:18;;;23794:30;23860:34;23840:18;;;23833:62;23931:28;23911:18;;;23904:56;23977:19;;7009:171:77;23580:422:145;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;24209:2:145;7843:185:77;;;24191:21:145;24248:2;24228:18;;;24221:30;24287:34;24267:18;;;24260:62;24358:31;24338:18;;;24331:59;24407:19;;7843:185:77;24007:425:145;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;24639:2:145;8463:156:77;;;24621:21:145;24678:2;24658:18;;;24651:30;24717:34;24697:18;;;24690:62;24788:27;24768:18;;;24761:55;24833:19;;8463:156:77;24437:421:145;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;25065:2:145;8703:160:77;;;25047:21:145;25104:2;25084:18;;;25077:30;25143:34;25123:18;;;25116:62;25214:26;25194:18;;;25187:54;25258:19;;8703:160:77;24863:420:145;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;25490:2:145;9439:60:77;;;25472:21:145;25529:2;25509:18;;;25502:30;25568:34;25548:18;;;25541:62;-1:-1:-1;;;25619:18:145;;;25612:48;25677:19;;9439:60:77;25288:414:145;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;25909:2:145;9556:50:77;;;25891:21:145;25948:2;25928:18;;;25921:30;25987:34;25967:18;;;25960:62;-1:-1:-1;;;26038:18:145;;;26031:38;26086:19;;9556:50:77;25707:404:145;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;26458:2:145;9641:47:77;;;26440:21:145;26497:2;26477:18;;;26470:30;26536:34;26516:18;;;26509:62;-1:-1:-1;;;26587:18:145;;;26580:35;26632:19;;9641:47:77;26256:401:145;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;26864:2:145;2161:136:75;;;26846:21:145;26903:2;26883:18;;;26876:30;26942:34;26922:18;;;26915:62;27013:26;26993:18;;;26986:54;27057:19;;2161:136:75;26662:420:145;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;27289:2:145;2308:134:75;;;27271:21:145;27328:2;27308:18;;;27301:30;27367:34;27347:18;;;27340:62;-1:-1:-1;;;27418:18:145;;;27411:48;27476:19;;2308:134:75;27087:414:145;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;27708:2:145;12579:55:75;;;27690:21:145;27747:2;27727:18;;;27720:30;27786:28;27766:18;;;27759:56;27832:18;;12579:55:75;27506:350:145;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:120:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:120;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:120;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:120;3166:384;-1:-1:-1;;3166:384:120:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;28063:2:145;4505:137:75;;;28045:21:145;28102:2;28082:18;;;28075:30;28141:34;28121:18;;;28114:62;28212:27;28192:18;;;28185:55;28257:19;;4505:137:75;27861:421:145;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;28489:2:145;4653:136:75;;;28471:21:145;28528:2;28508:18;;;28501:30;28567:34;28547:18;;;28540:62;-1:-1:-1;;;28618:18:145;;;28611:50;28678:19;;4653:136:75;28287:416:145;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1213:551:109:-;1341:7;1399:5;1378:6;:13;1394:1;1378:17;;;;:::i;:::-;1372:24;;:1;:24;:::i;:::-;:32;1364:41;;;;;;1431:4;1415:13;1468:268;1475:5;1484:1;1475:10;1468:268;;1505:9;1513:1;1505:5;:9;:::i;:::-;1518:1;1505:14;1501:184;;1547:38;1567:6;1574:1;1567:9;;;;;;;;:::i;:::-;;;;;;;1578:5;1554:30;;;;;;;;30239:19:145;;;30283:2;30274:12;;30267:28;30320:2;30311:12;;30082:247;1554:30:109;;;;-1:-1:-1;;1554:30:109;;;;;;;;;;1547:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1539:46;;1501:184;;;1632:38;1652:5;1659:6;1666:1;1659:9;;;;;;;;:::i;:::-;;;;;;;1639:30;;;;;;;;30239:19:145;;;30283:2;30274:12;;30267:28;30320:2;30311:12;;30082:247;1639:30:109;;;;-1:-1:-1;;1639:30:109;;;;;;;;;;1632:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1624:46;;1501:184;1698:10;1707:1;1698:10;;:::i;:::-;;-1:-1:-1;1722:3:109;;;;:::i;:::-;;;;1468:268;;;-1:-1:-1;1752:5:109;1213:551;-1:-1:-1;;;;1213:551:109:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;31019:2:145;6699:156:75;;;31001:21:145;31058:2;31038:18;;;31031:30;-1:-1:-1;;;;;;;;;;;31077:18:145;;;31070:62;31168:34;31148:18;;;31141:62;-1:-1:-1;;;31219:19:145;;;31212:45;31274:19;;6699:156:75;30817:482:145;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;31506:2:145;7025:177:75;;;31488:21:145;31545:2;31525:18;;;31518:30;31584:34;31564:18;;;31557:62;31655:34;31635:18;;;31628:62;-1:-1:-1;;;31706:19:145;;;31699:44;31760:19;;7025:177:75;31304:481:145;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;31992:2:145;7387:164:75;;;31974:21:145;32031:2;32011:18;;;32004:30;-1:-1:-1;;;;;;;;;;;32050:18:145;;;32043:62;32141:34;32121:18;;;32114:62;-1:-1:-1;;;32192:19:145;;;32185:48;32250:19;;7387:164:75;31790:485:145;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;32482:2:145;7721:159:75;;;32464:21:145;32521:2;32501:18;;;32494:30;-1:-1:-1;;;;;;;;;;;32540:18:145;;;32533:62;32631:34;32611:18;;;32604:62;-1:-1:-1;;;32682:19:145;;;32675:41;32733:19;;7721:159:75;32280:478:145;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;32965:2:145;8042:142:75;;;32947:21:145;33004:2;32984:18;;;32977:30;-1:-1:-1;;;;;;;;;;;33023:18:145;;;33016:62;33114:34;33094:18;;;33087:62;-1:-1:-1;;;33165:19:145;;;33158:39;33214:19;;8042:142:75;32763:476:145;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;33446:2:145;8199:168:75;;;33428:21:145;33485:2;33465:18;;;33458:30;-1:-1:-1;;;;;;;;;;;33504:18:145;;;33497:62;33595:34;33575:18;;;33568:62;-1:-1:-1;;;33646:19:145;;;33639:43;33699:19;;8199:168:75;33244:480:145;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;33931:2:145;8617:153:75;;;33913:21:145;33970:2;33950:18;;;33943:30;-1:-1:-1;;;;;;;;;;;33989:18:145;;;33982:62;34080:34;34060:18;;;34053:62;-1:-1:-1;;;34131:19:145;;;34124:41;34182:19;;8617:153:75;33729:478:145;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;34414:2:145;8935:161:75;;;34396:21:145;34453:2;34433:18;;;34426:30;-1:-1:-1;;;;;;;;;;;34472:18:145;;;34465:62;34563:34;34543:18;;;34536:62;-1:-1:-1;;;34614:19:145;;;34607:44;34668:19;;8935:161:75;34212:481:145;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;34900:2:145;9266:157:75;;;34882:21:145;34939:2;34919:18;;;34912:30;-1:-1:-1;;;;;;;;;;;34958:18:145;;;34951:62;35049:34;35029:18;;;35022:62;-1:-1:-1;;;35100:19:145;;;35093:39;35149:19;;9266:157:75;34698:476:145;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;35381:2:145;9588:141:75;;;35363:21:145;35420:2;35400:18;;;35393:30;-1:-1:-1;;;;;;;;;;;35439:18:145;;;35432:62;35530:34;35510:18;;;35503:62;-1:-1:-1;;;35581:19:145;;;35574:37;35628:19;;9588:141:75;35179:474:145;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;35860:2:145;9744:168:75;;;35842:21:145;35899:2;35879:18;;;35872:30;-1:-1:-1;;;;;;;;;;;35918:18:145;;;35911:62;36009:34;35989:18;;;35982:62;-1:-1:-1;;;36060:19:145;;;36053:41;36111:19;;9744:168:75;35658:478:145;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;36343:2:145;858:50:74;;;36325:21:145;36382:2;36362:18;;;36355:30;-1:-1:-1;;;36401:18:145;;;36394:44;36455:18;;858:50:74;36141:338:145;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;36343:2:145;922:53:74;;;36325:21:145;36382:2;36362:18;;;36355:30;-1:-1:-1;;;36401:18:145;;;36394:44;36455:18;;922:53:74;36141:338:145;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;36686:2:145;989:63:74;;;36668:21:145;36725:2;36705:18;;;36698:30;-1:-1:-1;;;36744:18:145;;;36737:47;36801:18;;989:63:74;36484:341:145;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;37032:2:145;11438:55:75;;;37014:21:145;37071:2;37051:18;;;37044:30;37110:28;37090:18;;;37083:56;37156:18;;11438:55:75;36830:350:145;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;37032:2:145;11598:72:75;;;37014:21:145;37071:2;37051:18;;;37044:30;37110:28;37090:18;;;37083:56;37156:18;;11598:72:75;36830:350:145;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:145:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:145;;14:180;-1:-1:-1;14:180:145:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:163::-;653:20;;713:10;702:22;;692:33;;682:61;;739:1;736;729:12;682:61;586:163;;;:::o;754:131::-;-1:-1:-1;;;;;829:31:145;;819:42;;809:70;;875:1;872;865:12;890:171;957:20;;-1:-1:-1;;;;;1006:30:145;;996:41;;986:69;;1051:1;1048;1041:12;1066:675;1167:6;1175;1183;1191;1199;1207;1260:3;1248:9;1239:7;1235:23;1231:33;1228:53;;;1277:1;1274;1267:12;1228:53;1300:28;1318:9;1300:28;:::i;:::-;1290:38;;1378:2;1367:9;1363:18;1350:32;1391:31;1416:5;1391:31;:::i;:::-;1441:5;-1:-1:-1;1498:2:145;1483:18;;1470:32;1511:33;1470:32;1511:33;:::i;:::-;1563:7;-1:-1:-1;1617:2:145;1602:18;;1589:32;;-1:-1:-1;1640:38:145;1673:3;1658:19;;1640:38;:::i;:::-;1630:48;;1697:38;1730:3;1719:9;1715:19;1697:38;:::i;:::-;1687:48;;1066:675;;;;;;;;:::o;1928:255::-;2084:2;2069:18;;2117:1;2106:13;;2096:47;;2123:18;;:::i;2188:387::-;2264:6;2272;2280;2333:2;2321:9;2312:7;2308:23;2304:32;2301:52;;;2349:1;2346;2339:12;2301:52;2372:28;2390:9;2372:28;:::i;:::-;2362:38;;2450:2;2439:9;2435:18;2422:32;2463:31;2488:5;2463:31;:::i;:::-;2188:387;;2513:5;;-1:-1:-1;;;2565:2:145;2550:18;;;;2537:32;;2188:387::o;2580:347::-;2631:8;2641:6;2695:3;2688:4;2680:6;2676:17;2672:27;2662:55;;2713:1;2710;2703:12;2662:55;-1:-1:-1;2736:20:145;;-1:-1:-1;;;;;2768:30:145;;2765:50;;;2811:1;2808;2801:12;2765:50;2848:4;2840:6;2836:17;2824:29;;2900:3;2893:4;2884:6;2876;2872:19;2868:30;2865:39;2862:59;;;2917:1;2914;2907:12;2862:59;2580:347;;;;;:::o;2932:367::-;2995:8;3005:6;3059:3;3052:4;3044:6;3040:17;3036:27;3026:55;;3077:1;3074;3067:12;3026:55;-1:-1:-1;3100:20:145;;-1:-1:-1;;;;;3132:30:145;;3129:50;;;3175:1;3172;3165:12;3129:50;3212:4;3204:6;3200:17;3188:29;;3272:3;3265:4;3255:6;3252:1;3248:14;3240:6;3236:27;3232:38;3229:47;3226:67;;;3289:1;3286;3279:12;3304:127;3365:10;3360:3;3356:20;3353:1;3346:31;3396:4;3393:1;3386:15;3420:4;3417:1;3410:15;3436:275;3507:2;3501:9;3572:2;3553:13;;-1:-1:-1;;3549:27:145;3537:40;;-1:-1:-1;;;;;3592:34:145;;3628:22;;;3589:62;3586:88;;;3654:18;;:::i;:::-;3690:2;3683:22;3436:275;;-1:-1:-1;3436:275:145:o;3716:530::-;3758:5;3811:3;3804:4;3796:6;3792:17;3788:27;3778:55;;3829:1;3826;3819:12;3778:55;3865:6;3852:20;-1:-1:-1;;;;;3887:2:145;3884:26;3881:52;;;3913:18;;:::i;:::-;3957:55;4000:2;3981:13;;-1:-1:-1;;3977:27:145;4006:4;3973:38;3957:55;:::i;:::-;4037:2;4028:7;4021:19;4083:3;4076:4;4071:2;4063:6;4059:15;4055:26;4052:35;4049:55;;;4100:1;4097;4090:12;4049:55;4165:2;4158:4;4150:6;4146:17;4139:4;4130:7;4126:18;4113:55;4213:1;4188:16;;;4206:4;4184:27;4177:38;;;;4192:7;3716:530;-1:-1:-1;;;3716:530:145:o;4251:161::-;4316:5;4361:3;4352:6;4347:3;4343:16;4339:26;4336:46;;;4378:1;4375;4368:12;4336:46;-1:-1:-1;4400:6:145;4251:161;-1:-1:-1;4251:161:145:o;4417:1546::-;4648:6;4656;4664;4672;4680;4688;4696;4704;4712;4720;4773:3;4761:9;4752:7;4748:23;4744:33;4741:53;;;4790:1;4787;4780:12;4741:53;4830:9;4817:23;-1:-1:-1;;;;;4900:2:145;4892:6;4889:14;4886:34;;;4916:1;4913;4906:12;4886:34;4955:58;5005:7;4996:6;4985:9;4981:22;4955:58;:::i;:::-;5032:8;;-1:-1:-1;4929:84:145;-1:-1:-1;5120:2:145;5105:18;;5092:32;;-1:-1:-1;5136:16:145;;;5133:36;;;5165:1;5162;5155:12;5133:36;5204:72;5268:7;5257:8;5246:9;5242:24;5204:72;:::i;:::-;5295:8;;-1:-1:-1;5178:98:145;-1:-1:-1;5377:2:145;5362:18;;5349:32;;-1:-1:-1;5434:2:145;5419:18;;5406:32;;-1:-1:-1;5450:16:145;;;5447:36;;;5479:1;5476;5469:12;5447:36;5518:72;5582:7;5571:8;5560:9;5556:24;5518:72;:::i;:::-;5609:8;;-1:-1:-1;5492:98:145;-1:-1:-1;5697:3:145;5682:19;;5669:33;;-1:-1:-1;5714:16:145;;;5711:36;;;5743:1;5740;5733:12;5711:36;;5766:51;5809:7;5798:8;5787:9;5783:24;5766:51;:::i;:::-;5756:61;;;5864:3;5853:9;5849:19;5836:33;5826:43;;5888:69;5949:7;5943:3;5932:9;5928:19;5888:69;:::i;:::-;5878:79;;4417:1546;;;;;;;;;;;;;:::o;6157:550::-;6388:13;;6403:10;6384:30;6366:49;;6462:4;6450:17;;;6444:24;-1:-1:-1;;;;;6544:21:145;;;6522:20;;;6515:51;;;;6626:4;6614:17;;;6608:24;6604:33;;;6582:20;;;6575:63;6694:4;6682:17;;;6676:24;6654:20;;;6647:54;;;;6353:3;6338:19;;6157:550::o;7016:184::-;7074:6;7127:2;7115:9;7106:7;7102:23;7098:32;7095:52;;;7143:1;7140;7133:12;7095:52;7166:28;7184:9;7166:28;:::i;7205:684::-;7403:3;7388:19;;7465:10;7438:25;7456:6;7438:25;:::i;:::-;7434:42;7423:9;7416:61;7524:4;7516:6;7512:17;7499:31;7539;7564:5;7539:31;:::i;:::-;-1:-1:-1;;;;;7646:14:145;;;7639:4;7624:20;;7617:44;7710:4;7698:17;;7685:31;;7725:33;7685:31;7725:33;:::i;:::-;7796:16;7789:4;7774:20;;7767:46;7876:4;7864:17;;;7851:31;7829:20;;;;7822:61;;;;7205:684;:::o;7894:250::-;7979:1;7989:113;8003:6;8000:1;7997:13;7989:113;;;8079:11;;;8073:18;8060:11;;;8053:39;8025:2;8018:10;7989:113;;;-1:-1:-1;;8136:1:145;8118:16;;8111:27;7894:250::o;8149:270::-;8190:3;8228:5;8222:12;8255:6;8250:3;8243:19;8271:76;8340:6;8333:4;8328:3;8324:14;8317:4;8310:5;8306:16;8271:76;:::i;:::-;8401:2;8380:15;-1:-1:-1;;8376:29:145;8367:39;;;;8408:4;8363:50;;8149:270;-1:-1:-1;;8149:270:145:o;8424:695::-;8683:3;8672:9;8665:22;8724:6;8718:3;8707:9;8703:19;8696:35;8782:6;8774;8768:3;8757:9;8753:19;8740:49;8839:1;8833:3;8824:6;8813:9;8809:22;8805:32;8798:43;8646:4;8900:2;8896:7;8891:2;8883:6;8879:15;8875:29;8864:9;8860:45;8967:3;8955:9;8951:2;8947:18;8943:28;8936:4;8925:9;8921:20;8914:58;8989:38;9022:3;9018:2;9014:12;9006:6;8989:38;:::i;:::-;9058:2;9043:18;;9036:34;;;;-1:-1:-1;;9101:2:145;9086:18;9079:34;8981:46;8424:695;-1:-1:-1;;;8424:695:145:o;9476:256::-;9542:6;9550;9603:2;9591:9;9582:7;9578:23;9574:32;9571:52;;;9619:1;9616;9609:12;9571:52;9642:28;9660:9;9642:28;:::i;:::-;9632:38;;9689:37;9722:2;9711:9;9707:18;9689:37;:::i;:::-;9679:47;;9476:256;;;;;:::o;9934:273::-;10026:6;10079:2;10067:9;10058:7;10054:23;10050:32;10047:52;;;10095:1;10092;10085:12;10047:52;10127:9;10121:16;10146:31;10171:5;10146:31;:::i;10418:184::-;10488:6;10541:2;10529:9;10520:7;10516:23;10512:32;10509:52;;;10557:1;10554;10547:12;10509:52;-1:-1:-1;10580:16:145;;10418:184;-1:-1:-1;10418:184:145:o;11313:934::-;11449:9;-1:-1:-1;;;;;11524:2:145;11516:6;11513:14;11510:40;;;11530:18;;:::i;:::-;11576:6;11573:1;11569:14;11602:4;11626:28;11650:2;11646;11642:11;11626:28;:::i;:::-;11688:19;;;11758:14;;;;11723:12;;;;11795:14;11784:26;;11781:46;;;11823:1;11820;11813:12;11781:46;11847:5;11861:353;11877:6;11872:3;11869:15;11861:353;;;11963:3;11950:17;11999:2;11986:11;11983:19;11980:109;;;12043:1;12072:2;12068;12061:14;11980:109;12114:57;12156:14;12142:11;12135:5;12131:23;12114:57;:::i;:::-;12102:70;;-1:-1:-1;12192:12:145;;;;11894;;11861:353;;;-1:-1:-1;12236:5:145;11313:934;-1:-1:-1;;;;;;;11313:934:145:o;12252:247::-;12311:6;12364:2;12352:9;12343:7;12339:23;12335:32;12332:52;;;12380:1;12377;12370:12;12332:52;12419:9;12406:23;12438:31;12463:5;12438:31;:::i;12857:277::-;12924:6;12977:2;12965:9;12956:7;12952:23;12948:32;12945:52;;;12993:1;12990;12983:12;12945:52;13025:9;13019:16;13078:5;13071:13;13064:21;13057:5;13054:32;13044:60;;13100:1;13097;13090:12;14393:127;14454:10;14449:3;14445:20;14442:1;14435:31;14485:4;14482:1;14475:15;14509:4;14506:1;14499:15;14525:128;14592:9;;;14613:11;;;14610:37;;;14627:18;;:::i;15061:168::-;15101:7;15167:1;15163;15159:6;15155:14;15152:1;15149:21;15144:1;15137:9;15130:17;15126:45;15123:71;;;15174:18;;:::i;:::-;-1:-1:-1;15214:9:145;;15061:168::o;15234:125::-;15299:9;;;15320:10;;;15317:36;;;15333:18;;:::i;15364:183::-;-1:-1:-1;;;;;15483:10:145;;;15471;;;15467:27;;15506:12;;;15503:38;;;15521:18;;:::i;15552:127::-;15613:10;15608:3;15604:20;15601:1;15594:31;15644:4;15641:1;15634:15;15668:4;15665:1;15658:15;15684:112;15716:1;15742;15732:35;;15747:18;;:::i;:::-;-1:-1:-1;15781:9:145;;15684:112::o;15801:120::-;15841:1;15867;15857:35;;15872:18;;:::i;:::-;-1:-1:-1;15906:9:145;;15801:120::o;16328:127::-;16389:10;16384:3;16380:20;16377:1;16370:31;16420:4;16417:1;16410:15;16444:4;16441:1;16434:15;18288:1113;18645:25;;;18739:10;18727:23;;18689:2;18707:18;;;18700:51;;;;-1:-1:-1;;;;;18787:32:145;;18782:2;18767:18;;18760:60;-1:-1:-1;;;;;18856:31:145;;18851:2;18836:18;;18829:59;18632:3;18919;18904:19;;18897:32;;;18978:13;;18617:19;;;19000:22;;;18584:4;;19080:15;;;;19053:3;19038:19;;;18584:4;19123:169;19137:6;19134:1;19131:13;19123:169;;;19198:13;;19186:26;;19267:15;;;;19232:12;;;;19159:1;19152:9;19123:169;;;19127:3;;19338:9;19333:3;19329:19;19323:3;19312:9;19308:19;19301:48;19366:29;19391:3;19383:6;19366:29;:::i;:::-;19358:37;18288:1113;-1:-1:-1;;;;;;;;;;;18288:1113:145:o;19406:287::-;19535:3;19573:6;19567:13;19589:66;19648:6;19643:3;19636:4;19628:6;19624:17;19589:66;:::i;:::-;19671:16;;;;;19406:287;-1:-1:-1;;19406:287:145:o;19698:290::-;19767:6;19820:2;19808:9;19799:7;19795:23;19791:32;19788:52;;;19836:1;19833;19826:12;19788:52;19862:16;;-1:-1:-1;;;;;;19907:32:145;;19897:43;;19887:71;;19954:1;19951;19944:12;23262:157;23292:1;23326:4;23323:1;23319:12;23350:3;23340:37;;23357:18;;:::i;:::-;23409:3;23402:4;23399:1;23395:12;23391:22;23386:27;;;23262:157;;;;:::o;23424:151::-;23514:4;23507:12;;;23493;;;23489:31;;23532:14;;23529:40;;;23549:18;;:::i;26116:135::-;26155:3;26176:17;;;26173:43;;26196:18;;:::i;:::-;-1:-1:-1;26243:1:145;26232:13;;26116:135::o;28708:422::-;28797:1;28840:5;28797:1;28854:270;28875:7;28865:8;28862:21;28854:270;;;28934:4;28930:1;28926:6;28922:17;28916:4;28913:27;28910:53;;;28943:18;;:::i;:::-;28993:7;28983:8;28979:22;28976:55;;;29013:16;;;;28976:55;29092:22;;;;29052:15;;;;28854:270;;;28858:3;28708:422;;;;;:::o;29135:806::-;29184:5;29214:8;29204:80;;-1:-1:-1;29255:1:145;29269:5;;29204:80;29303:4;29293:76;;-1:-1:-1;29340:1:145;29354:5;;29293:76;29385:4;29403:1;29398:59;;;;29471:1;29466:130;;;;29378:218;;29398:59;29428:1;29419:10;;29442:5;;;29466:130;29503:3;29493:8;29490:17;29487:43;;;29510:18;;:::i;:::-;-1:-1:-1;;29566:1:145;29552:16;;29581:5;;29378:218;;29680:2;29670:8;29667:16;29661:3;29655:4;29652:13;29648:36;29642:2;29632:8;29629:16;29624:2;29618:4;29615:12;29611:35;29608:77;29605:159;;;-1:-1:-1;29717:19:145;;;29749:5;;29605:159;29796:34;29821:8;29815:4;29796:34;:::i;:::-;29866:6;29862:1;29858:6;29854:19;29845:7;29842:32;29839:58;;;29877:18;;:::i;:::-;29915:20;;29135:806;-1:-1:-1;;;29135:806:145:o;29946:131::-;30006:5;30035:36;30062:8;30056:4;30035:36;:::i;30334:478::-;30536:2;30518:21;;;30575:2;30555:18;;;30548:30;30614:34;30609:2;30594:18;;30587:62;30685:34;30680:2;30665:18;;30658:62;-1:-1:-1;;;30751:3:145;30736:19;;30729:41;30802:3;30787:19;;30334:478::o", - "linkReferences": {} + "object": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a610075366004613101565b60016020526000908152604090205460ff1681565b6040516100979190613130565b60405180910390f35b6100b36100ae36600461318f565b610133565b604051908152602001610097565b6100e46100cf366004613101565b60026020526000908152604090205460ff1681565b6040516100979190613200565b6100b36100ff366004613214565b61029a565b6101176101123660046133ac565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b03168152602001868152509050600081604051602001610184919061348e565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c361311a565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb7385604051610286919061348e565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb919061348e565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156103295761032961311a565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c89061039190859061348e565b60405180910390a29150505b9392505050565b6103b96103b460208301836134d0565b6106fe565b6103ce6103c960208301836134d0565b6108e4565b6000816040516020016103e191906134eb565b60405160208183030381529060405280519060200120905060008b8b868685604051602001610414959493929190613594565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff1660028111156104525761045261311a565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f6135e7565b90925090506104c9826104c460208801886134d0565b610999565b600080546001600160a01b0316637599735c6104e860208901896134d0565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e919061361a565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613637565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b60006106598c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061065460208e018e6134d0565b610d57565b9050806106a85760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106d86106b88d8f613650565b8f8d8d8d60200160208101906106ce91906136d3565b8e60600135610fd3565b915091506106ea888a8988868661131e565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561074d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610771919061361a565b6001600160a01b0316036107c25760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610834919061361a565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089591906136f0565b6108e15760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095691906136f0565b156108e15760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c919061361a565b6001600160a01b031603610a5d5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf919061361a565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190613637565b600003610b915760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c04919061361a565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c779190613637565b610c819042613728565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190613637565b811015610d525760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd59190613637565b9050600081856001600160401b031610610df057601b610df3565b60075b60ff169050600082866001600160401b031610610e2f57612000610e20846001600160401b038916613728565b610e2a9190613751565b610e44565b610e446120006001600160401b038816613751565b90506000866001600160401b0316886001600160401b031603610e835750600b610e7081610200613765565b610e7c90610183613784565b9050610fb8565b612000610e90888a613797565b6001600160401b031611610ef25750600b610eac816020613765565b610eb7906006613784565b9050610ece6120006001600160401b0389166137b7565b610eda61200083613765565b610ee49190613784565b9050610e7081610200613765565b876001600160401b0316876001600160401b03161015610f705750600b82610f1b826020613765565b610f259190613784565b9050610f32816002613765565b610f3d906000613784565b905081610f4e630100000083613765565b610f589190613784565b9050610f65816002613765565b610eb7906001613784565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101e0565b610fc48b828c8c611513565b9b9a5050505050505050505050565b6060806000610fe3878a8a61152d565b9050600081600081518110610ffa57610ffa6137cb565b01602001516001600160f81b03191690506000600160f81b82148061102c5750600160f91b6001600160f81b03198316145b156110395750600161109e565b600360fe1b6001600160f81b03198316106110565750600061109e565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b6000602084019050600060405180604001604052808487516110c09190613728565b81526020016110cf8585613784565b9052905060006110de82611dc0565b9050805160041461112a5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b600061114f82600381518110611142576111426137cb565b6020026020010151611dc0565b905080518c106111a15760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b60006111b8828e81518110611142576111426137cb565b905060006111df826000815181106111d2576111d26137cb565b6020026020010151611fe5565b90508c6001600160a01b0316816001600160a01b0316146112535760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b600061127361126e84600181518110611142576111426137cb565b612059565b90508c81600081518110611289576112896137cb565b6020026020010151146112de5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b6000611303846002815181106112f6576112f66137cb565b6020026020010151612109565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961133960208b018b6134d0565b61134960408c0160208d016136d3565b898989604051602401611361969594939291906137e1565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506113a59060608a01908a016136d3565b6001600160a01b0316816040516113bc9190613861565b6000604051808303816000865af19150503d80600081146113f9576040519150601f19603f3d011682016040523d82523d6000602084013e6113fe565b606091505b50805191945092506000915060200361143e57600082806020019051810190611427919061387d565b6001600160e01b031916635160951d60e11b149150505b8280156114485750805b1561146b576000878152600160205260409020805460ff19166002179055611488565b6000878152600160208190526040909120805460ff191690911790555b6114986040890160208a016136d3565b6001600160a01b03166114ae60208a018a6134d0565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed6114e660608d0160408e016136d3565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611521868686612235565b90921495945050505050565b606060008451116115785760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b6000611583846123cd565b90506000611590866124bb565b90506000846040516020016115a791815260200190565b60405160208183030381529060405290506000805b8451811015611d695760008582815181106115d9576115d96137cb565b60200260200101519050845183111561164b5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b826000036116ea57805180516020918201206040516116999261167392910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116e55760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6117e0565b80515160201161177057805180516020918201206040516117149261167392910190815260200190565b6116e55760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146117e05760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b6117ec60106001613784565b8160200151510361198c578451830361192457600061181b82602001516010815181106112f6576112f66137cb565b905060008151116118945760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b600187516118a29190613728565b83146119165760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b6000858481518110611938576119386137cb565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611963576119636137cb565b60200260200101519050611976816125d5565b9550611983600186613784565b94505050611d56565b600281602001515103611cfd5760006119a4826125fa565b90506000816000815181106119bb576119bb6137cb565b016020015160f81c905060006119d26002836138a7565b6119dd9060026138c9565b905060006119ee848360ff1661261e565b905060006119fc8a8961261e565b90506000611a0a8383612654565b905080835114611a825760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff851660021480611a97575060ff85166003145b15611c3d5780825114611b125760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611b2e88602001516001815181106112f6576112f66137cb565b90506000815111611ba75760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611bb59190613728565b8914611c295760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611c50575060ff85166001145b15611c8f57611c7c8760200151600181518110611c6f57611c6f6137cb565b60200260200101516125d5565b9950611c88818a613784565b9850611cf2565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611d56565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611d61816138e2565b9150506115bc565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611dd0856126d3565b919450925090506001816001811115611deb57611deb61311a565b14611e5e5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611e6a8385613784565b14611ed25760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611eeb5790505090506000845b8751811015611fd957600080611f5e6040518060400160405280858d60000151611f429190613728565b8152602001858d60200151611f579190613784565b90526126d3565b509150915060405180604001604052808383611f7a9190613784565b8152602001848c60200151611f8f9190613784565b815250858581518110611fa457611fa46137cb565b6020908102919091010152611fba600185613784565b9350611fc68183613784565b611fd09084613784565b92505050611f18565b50815295945050505050565b8051600090600103611ff957506000919050565b815160151461204a5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b61205382612d96565b92915050565b6060600082516001600160401b03811115612076576120766132df565b60405190808252806020026020018201604052801561209f578160200160208202803683370190505b50905060005b8351811015612102576120d08482815181106120c3576120c36137cb565b6020026020010151612d96565b60001b8282815181106120e5576120e56137cb565b6020908102919091010152806120fa816138e2565b9150506120a5565b5092915050565b60606000806000612119856126d3565b9194509250905060008160018111156121345761213461311a565b146121a75760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b6121b18284613784565b85511461221d5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b61222c85602001518484612da1565b95945050505050565b600082825160016122469190613784565b6122519060026139df565b1161225b57600080fd5b8360005b846001146123c4576122726002866137b7565b60010361231157600284828151811061228d5761228d6137cb565b6020026020010151836040516020016122b0929190918252602082015260400190565b60408051601f19818403018152908290526122ca91613861565b602060405180830381855afa1580156122e7573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061230a9190613637565b91506123a5565b600282858381518110612326576123266137cb565b6020026020010151604051602001612348929190918252602082015260400190565b60408051601f198184030181529082905261236291613861565b602060405180830381855afa15801561237f573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906123a29190613637565b91505b6123b0600286613751565b9450806123bc816138e2565b91505061225f565b50949350505050565b80516060906000816001600160401b038111156123ec576123ec6132df565b60405190808252806020026020018201604052801561243157816020015b604080518082019091526060808252602082015281526020019060019003908161240a5790505b50905060005b828110156124b357604051806040016040528086838151811061245c5761245c6137cb565b6020026020010151815260200161248b87848151811061247e5761247e6137cb565b6020026020010151612e41565b8152508282815181106124a0576124a06137cb565b6020908102919091010152600101612437565b509392505050565b805160609060006124cd826002613765565b6001600160401b038111156124e4576124e46132df565b6040519080825280601f01601f19166020018201604052801561250e576020820181803683370190505b5090506000805b838110156125cb5785818151811061252f5761252f6137cb565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612557836002613765565b81518110612567576125676137cb565b60200101906001600160f81b031916908160001a905350600f60f81b821683612591836002613765565b61259c906001613784565b815181106125ac576125ac6137cb565b60200101906001600160f81b031916908160001a905350600101612515565b5090949350505050565b606060208260000151106125f1576125ec82612109565b612053565b61205382612e54565b606061205361261983602001516000815181106112f6576112f66137cb565b6124bb565b60608251821061263d5750604080516020810190915260008152612053565b61039d838384865161264f9190613728565b612e6a565b6000806000835185511061266957835161266c565b84515b90505b80821080156126c3575083828151811061268b5761268b6137cb565b602001015160f81c60f81b6001600160f81b0319168583815181106126b2576126b26137cb565b01602001516001600160f81b031916145b156124b35781600101915061266f565b6000806000808460000151116126fb5760405162461bcd60e51b81526004016101e0906139eb565b6020840151805160001a607f8111612720576000600160009450945094505050612d8f565b60b7811161287d576000612735608083613728565b9050808760000151116127b55760405162461bcd60e51b815260206004820152604e6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127e25750600160ff1b6001600160f81b0319821610155b61286a5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612d8f915050565b60bf8111612abe57600061289260b783613728565b9050808760000151116129155760405162461bcd60e51b81526020600482015260516024820152600080516020613a5c83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b031916600081900361299c5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c60378111612a1f5760405162461bcd60e51b81526020600482015260486024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b612a298184613784565b895111612aa15760405162461bcd60e51b815260206004820152604c6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b612aac836001613784565b9750955060009450612d8f9350505050565b60f78111612b60576000612ad360c083613728565b905080876000015111612b4f5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612d8f915050565b6000612b6d60f783613728565b905080876000015111612bec5760405162461bcd60e51b815260206004820152604d6024820152600080516020613a5c83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612c715760405162461bcd60e51b81526020600482015260486024820152600080516020613a5c83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612cf25760405162461bcd60e51b81526020600482015260466024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612cfc8184613784565b895111612d725760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612d7d836001613784565b9750955060019450612d8f9350505050565b9193909250565b600061205382612fab565b60606000826001600160401b03811115612dbd57612dbd6132df565b6040519080825280601f01601f191660200182016040528015612de7576020820181803683370190505b50905082600003612df957905061039d565b6000612e058587613784565b90506020820160005b85811015612e26578281015182820152602001612e0e565b85811115612e35576000868301525b50919695505050505050565b6060612053612e4f836130ae565b611dc0565b6060612053826020015160008460000151612da1565b60608182601f011015612eb05760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612ef35760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612f3a5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612f5957604051915060008252602082016040526123c4565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612f92578051835260209283019201612f7a565b5050858452601f01601f19166040525050949350505050565b60006021826000015111156130025760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000613010856126d3565b91945092509050600081600181111561302b5761302b61311a565b146130785760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b600083866020015161308a9190613784565b805190915060208410156130a45760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130e35760405162461bcd60e51b81526004016101e0906139eb565b50604080518082019091528151815260209182019181019190915290565b60006020828403121561311357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106131445761314461311a565b91905290565b803563ffffffff8116811461315e57600080fd5b919050565b6001600160a01b03811681146108e157600080fd5b80356001600160401b038116811461315e57600080fd5b60008060008060008060c087890312156131a857600080fd5b6131b18761314a565b955060208701356131c181613163565b945060408701356131d181613163565b9350606087013592506131e660808801613178565b91506131f460a08801613178565b90509295509295509295565b60208101600283106131445761314461311a565b60008060006060848603121561322957600080fd5b6132328461314a565b9250602084013561324281613163565b929592945050506040919091013590565b60008083601f84011261326557600080fd5b5081356001600160401b0381111561327c57600080fd5b60208301915083602082850101111561329457600080fd5b9250929050565b60008083601f8401126132ad57600080fd5b5081356001600160401b038111156132c457600080fd5b6020830191508360208260051b850101111561329457600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561331d5761331d6132df565b604052919050565b600082601f83011261333657600080fd5b81356001600160401b0381111561334f5761334f6132df565b613362601f8201601f19166020016132f5565b81815284602083860101111561337757600080fd5b816020850160208301376000918101602001919091529392505050565b6000608082840312156133a657600080fd5b50919050565b6000806000806000806000806000806101408b8d0312156133cc57600080fd5b8a356001600160401b03808211156133e357600080fd5b6133ef8e838f01613253565b909c509a5060208d013591508082111561340857600080fd5b6134148e838f0161329b565b909a50985060408d0135975060608d013591508082111561343457600080fd5b6134408e838f0161329b565b909750955060808d013591508082111561345957600080fd5b506134668d828e01613325565b93505060a08b0135915061347d8c60c08d01613394565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b6000602082840312156134e257600080fd5b61039d8261314a565b6080810163ffffffff6134fd8461314a565b168252602083013561350e81613163565b6001600160a01b03908116602084015260408401359061352d82613163565b166040830152606092830135929091019190915290565b60005b8381101561355f578181015183820152602001613547565b50506000910152565b60008151808452613580816020860160208601613544565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526135d260a0820187613568565b60408401959095525050606001529392505050565b600080604083850312156135fa57600080fd5b61360383613178565b915061361160208401613178565b90509250929050565b60006020828403121561362c57600080fd5b815161039d81613163565b60006020828403121561364957600080fd5b5051919050565b60006001600160401b038084111561366a5761366a6132df565b8360051b602061367b8183016132f5565b86815291850191818101903684111561369357600080fd5b865b848110156136c7578035868111156136ad5760008081fd5b6136b936828b01613325565b845250918301918301613695565b50979650505050505050565b6000602082840312156136e557600080fd5b813561039d81613163565b60006020828403121561370257600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561205357612053613712565b634e487b7160e01b600052601260045260246000fd5b6000826137605761376061373b565b500490565b600081600019048311821515161561377f5761377f613712565b500290565b8082018082111561205357612053613712565b6001600160401b0382811682821603908082111561210257612102613712565b6000826137c6576137c661373b565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561384d57845183529383019391830191600101613831565b505084810360a0860152610fc48187613568565b60008251613873818460208701613544565b9190910192915050565b60006020828403121561388f57600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff8316806138ba576138ba61373b565b8060ff84160691505092915050565b60ff828116828216039081111561205357612053613712565b6000600182016138f4576138f4613712565b5060010190565b600181815b8085111561393657816000190482111561391c5761391c613712565b8085161561392957918102915b93841c9390800290613900565b509250929050565b60008261394d57506001612053565b8161395a57506000612053565b8160018114613970576002811461397a57613996565b6001915050612053565b60ff84111561398b5761398b613712565b50506001821b612053565b5060208310610133831016604e8410600b84101617156139b9575081810a612053565b6139c383836138fb565b80600019048211156139d7576139d7613712565b029392505050565b600061039d838361393e565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220df83a8d260f4e49839056b5a66be8b872405fe1e931c685950cb55cf4bf1fceb64736f6c63430008100033", + "sourceMap": "843:386:123:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;837:960:125;;;;;;:::i;:::-;;:::i;:::-;;;1892:25:146;;;1880:2;1865:18;837:960:125;1746:177:146;723:59:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1888:644:125:-;;;;;;:::i;:::-;;:::i;1533:1766:124:-;;;;;;:::i;:::-;;:::i;:::-;;917:33:123;;949:1;917:33;;;;;6140:4:146;6128:17;;;6110:36;;6098:2;6083:18;917:33:123;5968:184:146;837:960:125;1056:7;1075:32;1122:73;;;;;;;;1135:14;1122:73;;;;;;1151:14;-1:-1:-1;;;;;1122:73:125;;;;;1167:16;-1:-1:-1;;;;;1122:73:125;;;;;1185:9;1122:73;;;1075:120;;1205:22;1251:12;1240:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1240:24:125;;;;;;;;;1230:35;;1240:24;1230:35;;;;;-1:-1:-1;1313:29:125;1280;;;;:13;:29;;;;;;;;;:62;;;;;;;:::i;:::-;;1276:141;;1365:41;;-1:-1:-1;;;1365:41:125;;;;;1892:25:146;;;1865:18;;1365:41:125;;;;;;;;1276:141;1426:29;;;;:13;:29;;;;;:61;;-1:-1:-1;;1426:61:125;1458:29;1426:61;;;-1:-1:-1;;;;;1589:21:125;;;;;;;1585:97;;;1633:38;;-1:-1:-1;;;1633:38:125;;-1:-1:-1;;;;;6937:15:146;;;1633:38:125;;;6919:34:146;6989:15;;6969:18;;;6962:43;6855:18;;1633:38:125;6712:299:146;1585:97:125;1735:8;-1:-1:-1;;;;;1697:61:125;1723:10;-1:-1:-1;;;;;1697:61:125;1707:14;1697:61;1745:12;1697:61;;;;;;:::i;:::-;;;;;;;;1776:14;837:960;-1:-1:-1;;;;;;;;837:960:125:o;1888:644::-;2009:7;2032:32;2079:67;;;;;;;;2092:14;2079:67;;;;;;2108:14;-1:-1:-1;;;;;2079:67:125;;;;;2124:10;-1:-1:-1;;;;;2079:67:125;;;;;2136:9;2079:67;;;2032:114;;2156:22;2202:12;2191:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2191:24:125;;;;;;;;;2181:35;;2191:24;2181:35;;;;;-1:-1:-1;2264:30:125;2231:29;;;;:13;:29;;;;;;;;;:63;;;;;;;:::i;:::-;;2227:138;;2317:37;;-1:-1:-1;;;2317:37:125;;;;;1892:25:146;;;1865:18;;2317:37:125;1746:177:146;2227:138:125;2406:30;2374:29;;;:13;:29;;;;;;;:62;;-1:-1:-1;;2374:62:125;;;2452:41;2374:29;;2452:41;;;;2480:12;;2452:41;:::i;:::-;;;;;;;;2511:14;-1:-1:-1;;1888:644:125;;;;;;:::o;1533:1766:124:-;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:124;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:124;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:124;;9326:2:146;2243:115:124;;;9308:21:146;9365:2;9345:18;;;9338:30;9404:25;9384:18;;;9377:53;9447:18;;2243:115:124;9124:347:146;2243:115:124;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:124;-1:-1:-1;2460:60:124;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:124;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:124;;;;;;;;9899:23:146;;;;2563:56:124;;;9881:42:146;9854:18;;2563:56:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:124;;-1:-1:-1;;;;;10375:31:146;;2563:73:124;;;10357:50:146;-1:-1:-1;;;;;2563:64:124;;;;;;;10330:18:146;;2563:73:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:124;2646:58;;;;-1:-1:-1;;;2646:58:124;;10809:2:146;2646:58:124;;;10791:21:146;10848:2;10828:18;;;10821:30;-1:-1:-1;;;10867:18:146;;;10860:51;10928:18;;2646:58:124;10607:345:146;2646:58:124;2714:12;2729:134;2765:12;2779:17;;2729:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2798:10:124;;-1:-1:-1;2810:7:124;;-1:-1:-1;2819:6:124;;-1:-1:-1;2827:26:124;;;;:12;:26;:::i;:::-;2729:22;:134::i;:::-;2714:149;;2881:7;2873:47;;;;-1:-1:-1;;;2873:47:124;;11159:2:146;2873:47:124;;;11141:21:146;11198:2;11178:18;;;11171:30;11237:29;11217:18;;;11210:57;11284:18;;2873:47:124;10957:351:146;2873:47:124;2932:28;;2988:211;;3023:12;;2988:211;:::i;:::-;3049:12;3075:17;3106:8;3128:12;:26;;;;;;;;;;:::i;:::-;3168:12;:21;;;2988;:211::i;:::-;2931:268;;;;3210:82;3219:14;3235:12;3249:10;3261:6;3269:11;3282:9;3210:8;:82::i;:::-;1837:1462;;;;;;;;1533:1766;;;;;;;;;;:::o;3385:307::-;3543:1;3493:15;;:37;;-1:-1:-1;;;3493:37:124;;9911:10:146;9899:23;;3493:37:124;;;9881:42:146;-1:-1:-1;;;;;3493:15:124;;;;:28;;9854:18:146;;3493:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3485:60:124;;3464:119;;;;-1:-1:-1;;;3464:119:124;;12706:2:146;3464:119:124;;;12688:21:146;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:146;;;12757:54;12828:18;;3464:119:124;12504:348:146;3464:119:124;3601:15;;:37;;-1:-1:-1;;;3601:37:124;;9911:10:146;9899:23;;3601:37:124;;;9881:42:146;-1:-1:-1;;;;;3601:15:124;;;;:28;;9854:18:146;;3601:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3601:48:124;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3593:92;;;;-1:-1:-1;;;3593:92:124;;13341:2:146;3593:92:124;;;13323:21:146;13380:2;13360:18;;;13353:30;13419:31;13399:18;;;13392:59;13468:18;;3593:92:124;13139:353:146;3593:92:124;3385:307;:::o;3753:137::-;3828:15;;:31;;-1:-1:-1;;;3828:31:124;;9911:10:146;9899:23;;3828:31:124;;;9881:42:146;-1:-1:-1;;;;;3828:15:124;;;;:22;;9854:18:146;;3828:31:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3827:32;3819:64;;;;-1:-1:-1;;;3819:64:124;;13699:2:146;3819:64:124;;;13681:21:146;13738:2;13718:18;;;13711:30;-1:-1:-1;;;13757:18:146;;;13750:49;13816:18;;3819:64:124;13497:343:146;3960:620:124;4125:1;4075:15;;:37;;-1:-1:-1;;;4075:37:124;;9911:10:146;9899:23;;4075:37:124;;;9881:42:146;-1:-1:-1;;;;;4075:15:124;;;;:28;;9854:18:146;;4075:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4067:60:124;;4046:119;;;;-1:-1:-1;;;4046:119:124;;12706:2:146;4046:119:124;;;12688:21:146;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:146;;;12757:54;12828:18;;4046:119:124;12504:348:146;4046:119:124;4196:15;;:37;;-1:-1:-1;;;4196:37:124;;9911:10:146;9899:23;;4196:37:124;;;9881:42:146;-1:-1:-1;;;;;4196:15:124;;;;:28;;9854:18:146;;4196:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4196:54:124;;-1:-1:-1;;;;;10375:31:146;;4196:54:124;;;10357:50:146;-1:-1:-1;;;;;4196:48:124;;;;;;;10330:18:146;;4196:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4254:1;4196:59;4175:136;;;;-1:-1:-1;;;4175:136:124;;14236:2:146;4175:136:124;;;14218:21:146;14275:2;14255:18;;;14248:30;14314:32;14294:18;;;14287:60;14364:18;;4175:136:124;14034:354:146;4175:136:124;4321:19;4373:15;;:37;;-1:-1:-1;;;4373:37:124;;9911:10:146;9899:23;;4373:37:124;;;9881:42:146;-1:-1:-1;;;;;4373:15:124;;;;:28;;9854:18:146;;4373:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4373:54:124;;-1:-1:-1;;;;;10375:31:146;;4373:54:124;;;10357:50:146;-1:-1:-1;;;;;4373:48:124;;;;;;;10330:18:146;;4373:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4355:72;;:15;:72;:::i;:::-;4321:106;;4473:15;;;;;;;;-1:-1:-1;;;;;4473:15:124;-1:-1:-1;;;;;4473:38:124;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4458:11;:55;;4437:136;;;;-1:-1:-1;;;4437:136:124;;14860:2:146;4437:136:124;;;14842:21:146;14899:2;14879:18;;;14872:30;14938:34;14918:18;;;14911:62;-1:-1:-1;;;14989:18:146;;;14982:32;15031:19;;4437:136:124;14658:398:146;4437:136:124;4036:544;3960:620;;:::o;3094:1947:110:-;3372:46;;-1:-1:-1;;;3372:46:110;;;9899:23:146;;3372:46:110;;;9881:42:146;3330:4:110;;;;3372:16;;:31;;9854:18:146;;3372:46:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;16333:2:146;4896:40:110;;;16315:21:146;16372:2;16352:18;;;16345:30;16411:32;16391:18;;;16384:60;16461:18;;4896:40:110;16131:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;431:2729:121:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:121;;-1:-1:-1;1486:14:121;-1:-1:-1;;;1514:25:121;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:121;;;1514:54;1510:236;;;-1:-1:-1;1593:1:121;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:121;;;1611:135;;-1:-1:-1;1665:1:121;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:121;;16824:2:146;1697:38:121;;;16806:21:146;16863:2;16843:18;;;16836:30;16902;16882:18;;;16875:58;16950:18;;1697:38:121;16622:352:146;1611:135:121;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:121;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:121;;17181:2:146;2278:58:121;;;17163:21:146;17220:2;17200:18;;;17193:30;-1:-1:-1;;;17239:18:146;;;17232:52;17301:18;;2278:58:121;16979:346:146;2278:58:121;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:121;;17532:2:146;2495:59:121;;;17514:21:146;17571:2;17551:18;;;17544:30;17610:25;17590:18;;;17583:53;17653:18;;2495:59:121;17330:347:146;2495:59:121;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:121;:14;-1:-1:-1;;;;;2777:30:121;;2769:83;;;;-1:-1:-1;;;2769:83:121;;17884:2:146;2769:83:121;;;17866:21:146;17923:2;17903:18;;;17896:30;17962:34;17942:18;;;17935:62;-1:-1:-1;;;18013:18:146;;;18006:38;18061:19;;2769:83:121;17682:404:146;2769:83:121;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:121;;18293:2:146;2990:74:121;;;18275:21:146;18332:2;18312:18;;;18305:30;18371:32;18351:18;;;18344:60;18421:18;;2990:74:121;18091:354:146;2990:74:121;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:121;;-1:-1:-1;;;;;;;;;;;431:2729:121;;;;;;;;;:::o;4705:1397:124:-;4951:12;4973:17;4951:12;-1:-1:-1;;;5143:15:124;5176:27;;;;:13;:27;:::i;:::-;5221;;;;;;;;:::i;:::-;5266:7;5291:12;5321:10;5041:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5041:304:124;;;;;;;;;;;;;;-1:-1:-1;;;;;5041:304:124;-1:-1:-1;;;;;;5041:304:124;;;;;;;;;;;-1:-1:-1;5377:29:124;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5377:34:124;5412:11;5377:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5489:11:124;;5359:65;;-1:-1:-1;5359:65:124;-1:-1:-1;5445:22:124;;-1:-1:-1;5504:2:124;5489:17;5485:178;;5523:12;5550:4;5539:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5599:53:124;-1:-1:-1;;;5599:53:124;;-1:-1:-1;;5485:178:124;5677:7;:28;;;;;5688:17;5677:28;5673:215;;;5721:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5721:64:124;5752:33;5721:64;;;5673:215;;;5816:28;;;;5847:30;5816:28;;;;;;;;:61;;-1:-1:-1;;5816:61:124;;;;;;5673:215;5994:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5903:192:124;5953:27;;;;:13;:27;:::i;:::-;5903:192;;5924:15;5903:192;6035:29;;;;;;;;:::i;:::-;5903:192;;;-1:-1:-1;;;;;20341:32:146;;;20323:51;;20417:14;;20410:22;20405:2;20390:18;;20383:50;20296:18;5903:192:124;;;;;;;4941:1161;;;4705:1397;;;;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;20646:2:146;3101:49:77;;;20628:21:146;20685:2;20665:18;;;20658:30;-1:-1:-1;;;20704:18:146;;;20697:51;20765:18;;3101:49:77;20444:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;20923:19:146;;20967:2;20958:12;;20794:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;21183:2:146;3636:134:77;;;21165:21:146;21222:2;21202:18;;;21195:30;21261:34;21241:18;;;21234:62;-1:-1:-1;;;21312:18:146;;;21305:44;21366:19;;3636:134:77;20981:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;20923:19:146;;;20967:2;20958:12;;20794:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;21598:2:146;3893:176:77;;;21580:21:146;21637:2;21617:18;;;21610:30;21676:31;21656:18;;;21649:59;21725:18;;3893:176:77;21396:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;20923:19:146;;;20967:2;20958:12;;20794:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;21956:2:146;4222:186:77;;;21938:21:146;21995:2;21975:18;;;21968:30;22034:34;22014:18;;;22007:62;-1:-1:-1;;;22085:18:146;;;22078:37;22132:19;;4222:186:77;21754:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;22364:2:146;4509:156:77;;;22346:21:146;22403:2;22383:18;;;22376:30;22442:34;22422:18;;;22415:62;-1:-1:-1;;;22493:18:146;;;22486:36;22539:19;;4509:156:77;22162:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;22771:2:146;5384:158:77;;;22753:21:146;22810:2;22790:18;;;22783:30;22849:34;22829:18;;;22822:62;22920:29;22900:18;;;22893:57;22967:19;;5384:158:77;22569:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;23199:2:146;5626:162:77;;;23181:21:146;23238:2;23218:18;;;23211:30;23277:34;23257:18;;;23250:62;23348:28;23328:18;;;23321:56;23394:19;;5626:162:77;22997:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;23944:2:146;7009:171:77;;;23926:21:146;23983:2;23963:18;;;23956:30;24022:34;24002:18;;;23995:62;24093:28;24073:18;;;24066:56;24139:19;;7009:171:77;23742:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;24371:2:146;7843:185:77;;;24353:21:146;24410:2;24390:18;;;24383:30;24449:34;24429:18;;;24422:62;24520:31;24500:18;;;24493:59;24569:19;;7843:185:77;24169:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;24801:2:146;8463:156:77;;;24783:21:146;24840:2;24820:18;;;24813:30;24879:34;24859:18;;;24852:62;24950:27;24930:18;;;24923:55;24995:19;;8463:156:77;24599:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;25227:2:146;8703:160:77;;;25209:21:146;25266:2;25246:18;;;25239:30;25305:34;25285:18;;;25278:62;25376:26;25356:18;;;25349:54;25420:19;;8703:160:77;25025:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;25652:2:146;9439:60:77;;;25634:21:146;25691:2;25671:18;;;25664:30;25730:34;25710:18;;;25703:62;-1:-1:-1;;;25781:18:146;;;25774:48;25839:19;;9439:60:77;25450:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;26071:2:146;9556:50:77;;;26053:21:146;26110:2;26090:18;;;26083:30;26149:34;26129:18;;;26122:62;-1:-1:-1;;;26200:18:146;;;26193:38;26248:19;;9556:50:77;25869:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;26620:2:146;9641:47:77;;;26602:21:146;26659:2;26639:18;;;26632:30;26698:34;26678:18;;;26671:62;-1:-1:-1;;;26749:18:146;;;26742:35;26794:19;;9641:47:77;26418:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;27026:2:146;2161:136:75;;;27008:21:146;27065:2;27045:18;;;27038:30;27104:34;27084:18;;;27077:62;27175:26;27155:18;;;27148:54;27219:19;;2161:136:75;26824:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;27451:2:146;2308:134:75;;;27433:21:146;27490:2;27470:18;;;27463:30;27529:34;27509:18;;;27502:62;-1:-1:-1;;;27580:18:146;;;27573:48;27638:19;;2308:134:75;27249:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;27870:2:146;12579:55:75;;;27852:21:146;27909:2;27889:18;;;27882:30;27948:28;27928:18;;;27921:56;27994:18;;12579:55:75;27668:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:121:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:121;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:121;3166:384;-1:-1:-1;;3166:384:121:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;28225:2:146;4505:137:75;;;28207:21:146;28264:2;28244:18;;;28237:30;28303:34;28283:18;;;28276:62;28374:27;28354:18;;;28347:55;28419:19;;4505:137:75;28023:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;28651:2:146;4653:136:75;;;28633:21:146;28690:2;28670:18;;;28663:30;28729:34;28709:18;;;28702:62;-1:-1:-1;;;28780:18:146;;;28773:50;28840:19;;4653:136:75;28449:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;30401:19:146;;;30445:2;30436:12;;30429:28;30482:2;30473:12;;30244:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;30401:19:146;;;30445:2;30436:12;;30429:28;30482:2;30473:12;;30244:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;;-1:-1:-1;1822:5:110;1283:551;-1:-1:-1;;;;1283:551:110:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;31181:2:146;6699:156:75;;;31163:21:146;31220:2;31200:18;;;31193:30;-1:-1:-1;;;;;;;;;;;31239:18:146;;;31232:62;31330:34;31310:18;;;31303:62;-1:-1:-1;;;31381:19:146;;;31374:45;31436:19;;6699:156:75;30979:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;31668:2:146;7025:177:75;;;31650:21:146;31707:2;31687:18;;;31680:30;31746:34;31726:18;;;31719:62;31817:34;31797:18;;;31790:62;-1:-1:-1;;;31868:19:146;;;31861:44;31922:19;;7025:177:75;31466:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;32154:2:146;7387:164:75;;;32136:21:146;32193:2;32173:18;;;32166:30;-1:-1:-1;;;;;;;;;;;32212:18:146;;;32205:62;32303:34;32283:18;;;32276:62;-1:-1:-1;;;32354:19:146;;;32347:48;32412:19;;7387:164:75;31952:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;32644:2:146;7721:159:75;;;32626:21:146;32683:2;32663:18;;;32656:30;-1:-1:-1;;;;;;;;;;;32702:18:146;;;32695:62;32793:34;32773:18;;;32766:62;-1:-1:-1;;;32844:19:146;;;32837:41;32895:19;;7721:159:75;32442:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;33127:2:146;8042:142:75;;;33109:21:146;33166:2;33146:18;;;33139:30;-1:-1:-1;;;;;;;;;;;33185:18:146;;;33178:62;33276:34;33256:18;;;33249:62;-1:-1:-1;;;33327:19:146;;;33320:39;33376:19;;8042:142:75;32925:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;33608:2:146;8199:168:75;;;33590:21:146;33647:2;33627:18;;;33620:30;-1:-1:-1;;;;;;;;;;;33666:18:146;;;33659:62;33757:34;33737:18;;;33730:62;-1:-1:-1;;;33808:19:146;;;33801:43;33861:19;;8199:168:75;33406:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;34093:2:146;8617:153:75;;;34075:21:146;34132:2;34112:18;;;34105:30;-1:-1:-1;;;;;;;;;;;34151:18:146;;;34144:62;34242:34;34222:18;;;34215:62;-1:-1:-1;;;34293:19:146;;;34286:41;34344:19;;8617:153:75;33891:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;34576:2:146;8935:161:75;;;34558:21:146;34615:2;34595:18;;;34588:30;-1:-1:-1;;;;;;;;;;;34634:18:146;;;34627:62;34725:34;34705:18;;;34698:62;-1:-1:-1;;;34776:19:146;;;34769:44;34830:19;;8935:161:75;34374:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;35062:2:146;9266:157:75;;;35044:21:146;35101:2;35081:18;;;35074:30;-1:-1:-1;;;;;;;;;;;35120:18:146;;;35113:62;35211:34;35191:18;;;35184:62;-1:-1:-1;;;35262:19:146;;;35255:39;35311:19;;9266:157:75;34860:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;35543:2:146;9588:141:75;;;35525:21:146;35582:2;35562:18;;;35555:30;-1:-1:-1;;;;;;;;;;;35601:18:146;;;35594:62;35692:34;35672:18;;;35665:62;-1:-1:-1;;;35743:19:146;;;35736:37;35790:19;;9588:141:75;35341:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;36022:2:146;9744:168:75;;;36004:21:146;36061:2;36041:18;;;36034:30;-1:-1:-1;;;;;;;;;;;36080:18:146;;;36073:62;36171:34;36151:18;;;36144:62;-1:-1:-1;;;36222:19:146;;;36215:41;36273:19;;9744:168:75;35820:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;36505:2:146;858:50:74;;;36487:21:146;36544:2;36524:18;;;36517:30;-1:-1:-1;;;36563:18:146;;;36556:44;36617:18;;858:50:74;36303:338:146;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;36505:2:146;922:53:74;;;36487:21:146;36544:2;36524:18;;;36517:30;-1:-1:-1;;;36563:18:146;;;36556:44;36617:18;;922:53:74;36303:338:146;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;36848:2:146;989:63:74;;;36830:21:146;36887:2;36867:18;;;36860:30;-1:-1:-1;;;36906:18:146;;;36899:47;36963:18;;989:63:74;36646:341:146;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;37194:2:146;11438:55:75;;;37176:21:146;37233:2;37213:18;;;37206:30;37272:28;37252:18;;;37245:56;37318:18;;11438:55:75;36992:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;37194:2:146;11598:72:75;;;37176:21:146;37233:2;37213:18;;;37206:30;37272:28;37252:18;;;37245:56;37318:18;;11598:72:75;36992:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:146:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:146;;14:180;-1:-1:-1;14:180:146:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:163::-;653:20;;713:10;702:22;;692:33;;682:61;;739:1;736;729:12;682:61;586:163;;;:::o;754:131::-;-1:-1:-1;;;;;829:31:146;;819:42;;809:70;;875:1;872;865:12;890:171;957:20;;-1:-1:-1;;;;;1006:30:146;;996:41;;986:69;;1051:1;1048;1041:12;1066:675;1167:6;1175;1183;1191;1199;1207;1260:3;1248:9;1239:7;1235:23;1231:33;1228:53;;;1277:1;1274;1267:12;1228:53;1300:28;1318:9;1300:28;:::i;:::-;1290:38;;1378:2;1367:9;1363:18;1350:32;1391:31;1416:5;1391:31;:::i;:::-;1441:5;-1:-1:-1;1498:2:146;1483:18;;1470:32;1511:33;1470:32;1511:33;:::i;:::-;1563:7;-1:-1:-1;1617:2:146;1602:18;;1589:32;;-1:-1:-1;1640:38:146;1673:3;1658:19;;1640:38;:::i;:::-;1630:48;;1697:38;1730:3;1719:9;1715:19;1697:38;:::i;:::-;1687:48;;1066:675;;;;;;;;:::o;1928:255::-;2084:2;2069:18;;2117:1;2106:13;;2096:47;;2123:18;;:::i;2188:387::-;2264:6;2272;2280;2333:2;2321:9;2312:7;2308:23;2304:32;2301:52;;;2349:1;2346;2339:12;2301:52;2372:28;2390:9;2372:28;:::i;:::-;2362:38;;2450:2;2439:9;2435:18;2422:32;2463:31;2488:5;2463:31;:::i;:::-;2188:387;;2513:5;;-1:-1:-1;;;2565:2:146;2550:18;;;;2537:32;;2188:387::o;2580:347::-;2631:8;2641:6;2695:3;2688:4;2680:6;2676:17;2672:27;2662:55;;2713:1;2710;2703:12;2662:55;-1:-1:-1;2736:20:146;;-1:-1:-1;;;;;2768:30:146;;2765:50;;;2811:1;2808;2801:12;2765:50;2848:4;2840:6;2836:17;2824:29;;2900:3;2893:4;2884:6;2876;2872:19;2868:30;2865:39;2862:59;;;2917:1;2914;2907:12;2862:59;2580:347;;;;;:::o;2932:367::-;2995:8;3005:6;3059:3;3052:4;3044:6;3040:17;3036:27;3026:55;;3077:1;3074;3067:12;3026:55;-1:-1:-1;3100:20:146;;-1:-1:-1;;;;;3132:30:146;;3129:50;;;3175:1;3172;3165:12;3129:50;3212:4;3204:6;3200:17;3188:29;;3272:3;3265:4;3255:6;3252:1;3248:14;3240:6;3236:27;3232:38;3229:47;3226:67;;;3289:1;3286;3279:12;3304:127;3365:10;3360:3;3356:20;3353:1;3346:31;3396:4;3393:1;3386:15;3420:4;3417:1;3410:15;3436:275;3507:2;3501:9;3572:2;3553:13;;-1:-1:-1;;3549:27:146;3537:40;;-1:-1:-1;;;;;3592:34:146;;3628:22;;;3589:62;3586:88;;;3654:18;;:::i;:::-;3690:2;3683:22;3436:275;;-1:-1:-1;3436:275:146:o;3716:530::-;3758:5;3811:3;3804:4;3796:6;3792:17;3788:27;3778:55;;3829:1;3826;3819:12;3778:55;3865:6;3852:20;-1:-1:-1;;;;;3887:2:146;3884:26;3881:52;;;3913:18;;:::i;:::-;3957:55;4000:2;3981:13;;-1:-1:-1;;3977:27:146;4006:4;3973:38;3957:55;:::i;:::-;4037:2;4028:7;4021:19;4083:3;4076:4;4071:2;4063:6;4059:15;4055:26;4052:35;4049:55;;;4100:1;4097;4090:12;4049:55;4165:2;4158:4;4150:6;4146:17;4139:4;4130:7;4126:18;4113:55;4213:1;4188:16;;;4206:4;4184:27;4177:38;;;;4192:7;3716:530;-1:-1:-1;;;3716:530:146:o;4251:161::-;4316:5;4361:3;4352:6;4347:3;4343:16;4339:26;4336:46;;;4378:1;4375;4368:12;4336:46;-1:-1:-1;4400:6:146;4251:161;-1:-1:-1;4251:161:146:o;4417:1546::-;4648:6;4656;4664;4672;4680;4688;4696;4704;4712;4720;4773:3;4761:9;4752:7;4748:23;4744:33;4741:53;;;4790:1;4787;4780:12;4741:53;4830:9;4817:23;-1:-1:-1;;;;;4900:2:146;4892:6;4889:14;4886:34;;;4916:1;4913;4906:12;4886:34;4955:58;5005:7;4996:6;4985:9;4981:22;4955:58;:::i;:::-;5032:8;;-1:-1:-1;4929:84:146;-1:-1:-1;5120:2:146;5105:18;;5092:32;;-1:-1:-1;5136:16:146;;;5133:36;;;5165:1;5162;5155:12;5133:36;5204:72;5268:7;5257:8;5246:9;5242:24;5204:72;:::i;:::-;5295:8;;-1:-1:-1;5178:98:146;-1:-1:-1;5377:2:146;5362:18;;5349:32;;-1:-1:-1;5434:2:146;5419:18;;5406:32;;-1:-1:-1;5450:16:146;;;5447:36;;;5479:1;5476;5469:12;5447:36;5518:72;5582:7;5571:8;5560:9;5556:24;5518:72;:::i;:::-;5609:8;;-1:-1:-1;5492:98:146;-1:-1:-1;5697:3:146;5682:19;;5669:33;;-1:-1:-1;5714:16:146;;;5711:36;;;5743:1;5740;5733:12;5711:36;;5766:51;5809:7;5798:8;5787:9;5783:24;5766:51;:::i;:::-;5756:61;;;5864:3;5853:9;5849:19;5836:33;5826:43;;5888:69;5949:7;5943:3;5932:9;5928:19;5888:69;:::i;:::-;5878:79;;4417:1546;;;;;;;;;;;;;:::o;6157:550::-;6388:13;;6403:10;6384:30;6366:49;;6462:4;6450:17;;;6444:24;-1:-1:-1;;;;;6544:21:146;;;6522:20;;;6515:51;;;;6626:4;6614:17;;;6608:24;6604:33;;;6582:20;;;6575:63;6694:4;6682:17;;;6676:24;6654:20;;;6647:54;;;;6353:3;6338:19;;6157:550::o;7016:184::-;7074:6;7127:2;7115:9;7106:7;7102:23;7098:32;7095:52;;;7143:1;7140;7133:12;7095:52;7166:28;7184:9;7166:28;:::i;7205:684::-;7403:3;7388:19;;7465:10;7438:25;7456:6;7438:25;:::i;:::-;7434:42;7423:9;7416:61;7524:4;7516:6;7512:17;7499:31;7539;7564:5;7539:31;:::i;:::-;-1:-1:-1;;;;;7646:14:146;;;7639:4;7624:20;;7617:44;7710:4;7698:17;;7685:31;;7725:33;7685:31;7725:33;:::i;:::-;7796:16;7789:4;7774:20;;7767:46;7876:4;7864:17;;;7851:31;7829:20;;;;7822:61;;;;7205:684;:::o;7894:250::-;7979:1;7989:113;8003:6;8000:1;7997:13;7989:113;;;8079:11;;;8073:18;8060:11;;;8053:39;8025:2;8018:10;7989:113;;;-1:-1:-1;;8136:1:146;8118:16;;8111:27;7894:250::o;8149:270::-;8190:3;8228:5;8222:12;8255:6;8250:3;8243:19;8271:76;8340:6;8333:4;8328:3;8324:14;8317:4;8310:5;8306:16;8271:76;:::i;:::-;8401:2;8380:15;-1:-1:-1;;8376:29:146;8367:39;;;;8408:4;8363:50;;8149:270;-1:-1:-1;;8149:270:146:o;8424:695::-;8683:3;8672:9;8665:22;8724:6;8718:3;8707:9;8703:19;8696:35;8782:6;8774;8768:3;8757:9;8753:19;8740:49;8839:1;8833:3;8824:6;8813:9;8809:22;8805:32;8798:43;8646:4;8900:2;8896:7;8891:2;8883:6;8879:15;8875:29;8864:9;8860:45;8967:3;8955:9;8951:2;8947:18;8943:28;8936:4;8925:9;8921:20;8914:58;8989:38;9022:3;9018:2;9014:12;9006:6;8989:38;:::i;:::-;9058:2;9043:18;;9036:34;;;;-1:-1:-1;;9101:2:146;9086:18;9079:34;8981:46;8424:695;-1:-1:-1;;;8424:695:146:o;9476:256::-;9542:6;9550;9603:2;9591:9;9582:7;9578:23;9574:32;9571:52;;;9619:1;9616;9609:12;9571:52;9642:28;9660:9;9642:28;:::i;:::-;9632:38;;9689:37;9722:2;9711:9;9707:18;9689:37;:::i;:::-;9679:47;;9476:256;;;;;:::o;9934:273::-;10026:6;10079:2;10067:9;10058:7;10054:23;10050:32;10047:52;;;10095:1;10092;10085:12;10047:52;10127:9;10121:16;10146:31;10171:5;10146:31;:::i;10418:184::-;10488:6;10541:2;10529:9;10520:7;10516:23;10512:32;10509:52;;;10557:1;10554;10547:12;10509:52;-1:-1:-1;10580:16:146;;10418:184;-1:-1:-1;10418:184:146:o;11313:934::-;11449:9;-1:-1:-1;;;;;11524:2:146;11516:6;11513:14;11510:40;;;11530:18;;:::i;:::-;11576:6;11573:1;11569:14;11602:4;11626:28;11650:2;11646;11642:11;11626:28;:::i;:::-;11688:19;;;11758:14;;;;11723:12;;;;11795:14;11784:26;;11781:46;;;11823:1;11820;11813:12;11781:46;11847:5;11861:353;11877:6;11872:3;11869:15;11861:353;;;11963:3;11950:17;11999:2;11986:11;11983:19;11980:109;;;12043:1;12072:2;12068;12061:14;11980:109;12114:57;12156:14;12142:11;12135:5;12131:23;12114:57;:::i;:::-;12102:70;;-1:-1:-1;12192:12:146;;;;11894;;11861:353;;;-1:-1:-1;12236:5:146;11313:934;-1:-1:-1;;;;;;;11313:934:146:o;12252:247::-;12311:6;12364:2;12352:9;12343:7;12339:23;12335:32;12332:52;;;12380:1;12377;12370:12;12332:52;12419:9;12406:23;12438:31;12463:5;12438:31;:::i;12857:277::-;12924:6;12977:2;12965:9;12956:7;12952:23;12948:32;12945:52;;;12993:1;12990;12983:12;12945:52;13025:9;13019:16;13078:5;13071:13;13064:21;13057:5;13054:32;13044:60;;13100:1;13097;13090:12;14393:127;14454:10;14449:3;14445:20;14442:1;14435:31;14485:4;14482:1;14475:15;14509:4;14506:1;14499:15;14525:128;14592:9;;;14613:11;;;14610:37;;;14627:18;;:::i;15266:127::-;15327:10;15322:3;15318:20;15315:1;15308:31;15358:4;15355:1;15348:15;15382:4;15379:1;15372:15;15398:120;15438:1;15464;15454:35;;15469:18;;:::i;:::-;-1:-1:-1;15503:9:146;;15398:120::o;15523:168::-;15563:7;15629:1;15625;15621:6;15617:14;15614:1;15611:21;15606:1;15599:9;15592:17;15588:45;15585:71;;;15636:18;;:::i;:::-;-1:-1:-1;15676:9:146;;15523:168::o;15696:125::-;15761:9;;;15782:10;;;15779:36;;;15795:18;;:::i;15826:183::-;-1:-1:-1;;;;;15945:10:146;;;15933;;;15929:27;;15968:12;;;15965:38;;;15983:18;;:::i;16014:112::-;16046:1;16072;16062:35;;16077:18;;:::i;:::-;-1:-1:-1;16111:9:146;;16014:112::o;16490:127::-;16551:10;16546:3;16542:20;16539:1;16532:31;16582:4;16579:1;16572:15;16606:4;16603:1;16596:15;18450:1113;18807:25;;;18901:10;18889:23;;18851:2;18869:18;;;18862:51;;;;-1:-1:-1;;;;;18949:32:146;;18944:2;18929:18;;18922:60;-1:-1:-1;;;;;19018:31:146;;19013:2;18998:18;;18991:59;18794:3;19081;19066:19;;19059:32;;;19140:13;;18779:19;;;19162:22;;;18746:4;;19242:15;;;;19215:3;19200:19;;;18746:4;19285:169;19299:6;19296:1;19293:13;19285:169;;;19360:13;;19348:26;;19429:15;;;;19394:12;;;;19321:1;19314:9;19285:169;;;19289:3;;19500:9;19495:3;19491:19;19485:3;19474:9;19470:19;19463:48;19528:29;19553:3;19545:6;19528:29;:::i;19568:287::-;19697:3;19735:6;19729:13;19751:66;19810:6;19805:3;19798:4;19790:6;19786:17;19751:66;:::i;:::-;19833:16;;;;;19568:287;-1:-1:-1;;19568:287:146:o;19860:290::-;19929:6;19982:2;19970:9;19961:7;19957:23;19953:32;19950:52;;;19998:1;19995;19988:12;19950:52;20024:16;;-1:-1:-1;;;;;;20069:32:146;;20059:43;;20049:71;;20116:1;20113;20106:12;23424:157;23454:1;23488:4;23485:1;23481:12;23512:3;23502:37;;23519:18;;:::i;:::-;23571:3;23564:4;23561:1;23557:12;23553:22;23548:27;;;23424:157;;;;:::o;23586:151::-;23676:4;23669:12;;;23655;;;23651:31;;23694:14;;23691:40;;;23711:18;;:::i;26278:135::-;26317:3;26338:17;;;26335:43;;26358:18;;:::i;:::-;-1:-1:-1;26405:1:146;26394:13;;26278:135::o;28870:422::-;28959:1;29002:5;28959:1;29016:270;29037:7;29027:8;29024:21;29016:270;;;29096:4;29092:1;29088:6;29084:17;29078:4;29075:27;29072:53;;;29105:18;;:::i;:::-;29155:7;29145:8;29141:22;29138:55;;;29175:16;;;;29138:55;29254:22;;;;29214:15;;;;29016:270;;;29020:3;28870:422;;;;;:::o;29297:806::-;29346:5;29376:8;29366:80;;-1:-1:-1;29417:1:146;29431:5;;29366:80;29465:4;29455:76;;-1:-1:-1;29502:1:146;29516:5;;29455:76;29547:4;29565:1;29560:59;;;;29633:1;29628:130;;;;29540:218;;29560:59;29590:1;29581:10;;29604:5;;;29628:130;29665:3;29655:8;29652:17;29649:43;;;29672:18;;:::i;:::-;-1:-1:-1;;29728:1:146;29714:16;;29743:5;;29540:218;;29842:2;29832:8;29829:16;29823:3;29817:4;29814:13;29810:36;29804:2;29794:8;29791:16;29786:2;29780:4;29777:12;29773:35;29770:77;29767:159;;;-1:-1:-1;29879:19:146;;;29911:5;;29767:159;29958:34;29983:8;29977:4;29958:34;:::i;:::-;30028:6;30024:1;30020:6;30016:19;30007:7;30004:32;30001:58;;;30039:18;;:::i;:::-;30077:20;;29297:806;-1:-1:-1;;;29297:806:146:o;30108:131::-;30168:5;30197:36;30224:8;30218:4;30197:36;:::i;30496:478::-;30698:2;30680:21;;;30737:2;30717:18;;;30710:30;30776:34;30771:2;30756:18;;30749:62;30847:34;30842:2;30827:18;;30820:62;-1:-1:-1;;;30913:3:146;30898:19;;30891:41;30964:3;30949:19;;30496:478::o", + "linkReferences": { + "src/libraries/BeaconChainForks.sol": { + "BeaconChainForks": [ + { + "start": 3447, + "length": 20 + } + ] + } + } }, "methodIdentifiers": { "VERSION()": "ffa1ad74", @@ -388,7 +406,7 @@ "subscriptions(bytes32)": "94259c6c", "unsubscribe(uint32,address,bytes32)": "97229719" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyRouter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathyPubSub\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"},\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"This allows an on-chain Publisher-Suscriber model to be used for events. Contracts can subscribe to events emitted from a source contract, and it will be relayed these events through the publisher. Before the events are relayed, they are verified using the Telepathy Light Client for proof of consensus on the source chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPubSub.sol\":\"TelepathyPubSub\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c\",\"urls\":[\"bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde\",\"dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyRouter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathyPubSub\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"},\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"This allows an on-chain Publisher-Suscriber model to be used for events. Contracts can subscribe to events emitted from a source contract, and it will be relayed these events through the publisher. Before the events are relayed, they are verified using the Telepathy Light Client for proof of consensus on the source chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPubSub.sol\":\"TelepathyPubSub\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -986,18 +1004,18 @@ "license": "MIT" }, "src/amb/SourceAMB.sol": { - "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", "urls": [ - "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", - "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", + "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" ], "license": null }, "src/amb/TargetAMB.sol": { - "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", "urls": [ - "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", - "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", + "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" ], "license": null }, @@ -1033,6 +1051,14 @@ ], "license": null }, + "src/libraries/BeaconChainForks.sol": { + "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "urls": [ + "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", + "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + ], + "license": null + }, "src/libraries/MessageEncoding.sol": { "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", "urls": [ @@ -1042,10 +1068,10 @@ "license": null }, "src/libraries/SimpleSerialize.sol": { - "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", "urls": [ - "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", - "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", + "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" ], "license": null }, @@ -1098,10 +1124,10 @@ "license": null }, "src/pubsub/TelepathyPublisher.sol": { - "keccak256": "0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c", + "keccak256": "0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521", "urls": [ - "bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde", - "dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk" + "bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f", + "dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe" ], "license": null }, @@ -1134,31 +1160,31 @@ }, "ast": { "absolutePath": "src/pubsub/TelepathyPubSub.sol", - "id": 48510, + "id": 48584, "exportedSymbols": { "PubSubStorage": [ - 48478 + 48552 ], "TelepathyPubSub": [ - 48509 + 48583 ], "TelepathyPublisher": [ - 48903 + 48979 ], "TelepathyRouter": [ - 42568 + 42576 ], "TelepathySubscriber": [ - 49066 + 49142 ] }, "nodeType": "SourceUnit", - "src": "0:1230:122", + "src": "0:1230:123", "nodes": [ { - "id": 48480, + "id": 48554, "nodeType": "PragmaDirective", - "src": "0:24:122", + "src": "0:24:123", "nodes": [], "literals": [ "solidity", @@ -1168,24 +1194,24 @@ ] }, { - "id": 48482, + "id": 48556, "nodeType": "ImportDirective", - "src": "26:69:122", + "src": "26:69:123", "nodes": [], "absolutePath": "src/pubsub/TelepathyPublisher.sol", "file": "src/pubsub/TelepathyPublisher.sol", "nameLocation": "-1:-1:-1", - "scope": 48510, - "sourceUnit": 48904, + "scope": 48584, + "sourceUnit": 48980, "symbolAliases": [ { "foreign": { - "id": 48481, + "id": 48555, "name": "TelepathyPublisher", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48903, - "src": "34:18:122", + "referencedDeclaration": 48979, + "src": "34:18:123", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1194,24 +1220,24 @@ "unitAlias": "" }, { - "id": 48484, + "id": 48558, "nodeType": "ImportDirective", - "src": "97:71:122", + "src": "97:71:123", "nodes": [], "absolutePath": "src/pubsub/TelepathySubscriber.sol", "file": "src/pubsub/TelepathySubscriber.sol", "nameLocation": "-1:-1:-1", - "scope": 48510, - "sourceUnit": 49067, + "scope": 48584, + "sourceUnit": 49143, "symbolAliases": [ { "foreign": { - "id": 48483, + "id": 48557, "name": "TelepathySubscriber", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49066, - "src": "105:19:122", + "referencedDeclaration": 49142, + "src": "105:19:123", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1220,24 +1246,24 @@ "unitAlias": "" }, { - "id": 48486, + "id": 48560, "nodeType": "ImportDirective", - "src": "170:59:122", + "src": "170:59:123", "nodes": [], "absolutePath": "src/pubsub/PubSubStorage.sol", "file": "src/pubsub/PubSubStorage.sol", "nameLocation": "-1:-1:-1", - "scope": 48510, - "sourceUnit": 48479, + "scope": 48584, + "sourceUnit": 48553, "symbolAliases": [ { "foreign": { - "id": 48485, + "id": 48559, "name": "PubSubStorage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48478, - "src": "178:13:122", + "referencedDeclaration": 48552, + "src": "178:13:123", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1246,24 +1272,24 @@ "unitAlias": "" }, { - "id": 48488, + "id": 48562, "nodeType": "ImportDirective", - "src": "231:60:122", + "src": "231:60:123", "nodes": [], "absolutePath": "src/amb/TelepathyRouter.sol", "file": "src/amb/TelepathyRouter.sol", "nameLocation": "-1:-1:-1", - "scope": 48510, - "sourceUnit": 42569, + "scope": 48584, + "sourceUnit": 42577, "symbolAliases": [ { "foreign": { - "id": 48487, + "id": 48561, "name": "TelepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42568, - "src": "239:15:122", + "referencedDeclaration": 42576, + "src": "239:15:123", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1272,21 +1298,21 @@ "unitAlias": "" }, { - "id": 48509, + "id": 48583, "nodeType": "ContractDefinition", - "src": "843:386:122", + "src": "843:386:123", "nodes": [ { - "id": 48496, + "id": 48570, "nodeType": "VariableDeclaration", - "src": "917:33:122", + "src": "917:33:123", "nodes": [], "constant": true, "functionSelector": "ffa1ad74", "mutability": "constant", "name": "VERSION", - "nameLocation": "939:7:122", - "scope": 48509, + "nameLocation": "939:7:123", + "scope": 48583, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1294,10 +1320,10 @@ "typeString": "uint8" }, "typeName": { - "id": 48494, + "id": 48568, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "917:5:122", + "src": "917:5:123", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1305,14 +1331,14 @@ }, "value": { "hexValue": "31", - "id": 48495, + "id": 48569, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "949:1:122", + "src": "949:1:123", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -1322,32 +1348,32 @@ "visibility": "public" }, { - "id": 48508, + "id": 48582, "nodeType": "FunctionDefinition", - "src": "957:106:122", + "src": "957:106:123", "nodes": [], "body": { - "id": 48507, + "id": 48581, "nodeType": "Block", - "src": "995:68:122", + "src": "995:68:123", "nodes": [], "statements": [ { "expression": { - "id": 48505, + "id": 48579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48501, + "id": 48575, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48462, - "src": "1005:15:122", + "referencedDeclaration": 48536, + "src": "1005:15:123", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeIdentifier": "t_contract$_TelepathyRouter_$42576", "typeString": "contract TelepathyRouter" } }, @@ -1356,12 +1382,12 @@ "rightHandSide": { "arguments": [ { - "id": 48503, + "id": 48577, "name": "_telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48498, - "src": "1039:16:122", + "referencedDeclaration": 48572, + "src": "1039:16:123", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1375,18 +1401,18 @@ "typeString": "address" } ], - "id": 48502, + "id": 48576, "name": "TelepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42568, - "src": "1023:15:122", + "referencedDeclaration": 42576, + "src": "1023:15:123", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TelepathyRouter_$42568_$", + "typeIdentifier": "t_type$_t_contract$_TelepathyRouter_$42576_$", "typeString": "type(contract TelepathyRouter)" } }, - "id": 48504, + "id": 48578, "isConstant": false, "isLValue": false, "isPure": false, @@ -1395,22 +1421,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1023:33:122", + "src": "1023:33:123", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeIdentifier": "t_contract$_TelepathyRouter_$42576", "typeString": "contract TelepathyRouter" } }, - "src": "1005:51:122", + "src": "1005:51:123", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeIdentifier": "t_contract$_TelepathyRouter_$42576", "typeString": "contract TelepathyRouter" } }, - "id": 48506, + "id": 48580, "nodeType": "ExpressionStatement", - "src": "1005:51:122" + "src": "1005:51:123" } ] }, @@ -1420,18 +1446,18 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 48499, + "id": 48573, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48498, + "id": 48572, "mutability": "mutable", "name": "_telepathyRouter", - "nameLocation": "977:16:122", + "nameLocation": "977:16:123", "nodeType": "VariableDeclaration", - "scope": 48508, - "src": "969:24:122", + "scope": 48582, + "src": "969:24:123", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1439,10 +1465,10 @@ "typeString": "address" }, "typeName": { - "id": 48497, + "id": 48571, "name": "address", "nodeType": "ElementaryTypeName", - "src": "969:7:122", + "src": "969:7:123", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1452,15 +1478,15 @@ "visibility": "internal" } ], - "src": "968:26:122" + "src": "968:26:123" }, "returnParameters": { - "id": 48500, + "id": 48574, "nodeType": "ParameterList", "parameters": [], - "src": "995:0:122" + "src": "995:0:123" }, - "scope": 48509, + "scope": 48583, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -1470,63 +1496,63 @@ "baseContracts": [ { "baseName": { - "id": 48490, + "id": 48564, "name": "TelepathyPublisher", "nameLocations": [ - "871:18:122" + "871:18:123" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48903, - "src": "871:18:122" + "referencedDeclaration": 48979, + "src": "871:18:123" }, - "id": 48491, + "id": 48565, "nodeType": "InheritanceSpecifier", - "src": "871:18:122" + "src": "871:18:123" }, { "baseName": { - "id": 48492, + "id": 48566, "name": "TelepathySubscriber", "nameLocations": [ - "891:19:122" + "891:19:123" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49066, - "src": "891:19:122" + "referencedDeclaration": 49142, + "src": "891:19:123" }, - "id": 48493, + "id": 48567, "nodeType": "InheritanceSpecifier", - "src": "891:19:122" + "src": "891:19:123" } ], "canonicalName": "TelepathyPubSub", "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 48489, + "id": 48563, "nodeType": "StructuredDocumentation", - "src": "418:425:122", + "src": "418:425:123", "text": "@title TelepathyPubSub\n @author Succinct Labs\n @notice This allows an on-chain Publisher-Suscriber model to be used for events. Contracts can subscribe to\n events emitted from a source contract, and it will be relayed these events through the publisher. Before\n the events are relayed, they are verified using the Telepathy Light Client for proof of consensus on the\n source chain." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 48509, - 49066, - 48903, - 48478, - 49129, - 49167 + 48583, + 49142, + 48979, + 48552, + 49205, + 49243 ], "name": "TelepathyPubSub", - "nameLocation": "852:15:122", - "scope": 48510, + "nameLocation": "852:15:123", + "scope": 48584, "usedErrors": [ - 48920, - 48924, - 48930 + 48996, + 49000, + 49006 ] } ] }, - "id": 122 + "id": 123 } \ No newline at end of file diff --git a/out/TelepathyPublisher.sol/TelepathyPublisher.json b/out/TelepathyPublisher.sol/TelepathyPublisher.json index a374052..4ba91fb 100644 --- a/out/TelepathyPublisher.sol/TelepathyPublisher.json +++ b/out/TelepathyPublisher.sol/TelepathyPublisher.json @@ -142,21 +142,39 @@ } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b50613619806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612d4c565b60016020526000908152604090205460ff1681565b6040516100769190612d7b565b60405180910390f35b6100a261008d366004612d4c565b60026020526000908152604090205460ff1681565b6040516100769190612d95565b6100c26100bd366004612f02565b6100c4565b005b6100d96100d46020830183612ffd565b610416565b6100ee6100e96020830183612ffd565b6105fc565b600081604051602001610101919061302d565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016101349594939291906130d6565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612d65565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f613140565b90925090506101ee826101e96020880188612ffd565b6106b1565b600080546001600160a01b0316637599735c61020d6020890189612ffd565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102739190613173565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e69190613190565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b60006103718c8f8f80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610a6f565b9050806103c05760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103f06103d08d8f6131a9565b8f8d8d8d60200160208101906103e6919061322c565b8e60600135610c17565b91509150610402888a89888686610f62565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104899190613173565b6001600160a01b0316036104da5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054c9190613173565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ad9190613249565b6105f95760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e9190613249565b156105f95760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190613173565b6001600160a01b0316036107755760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613173565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085a9190613190565b6000036108a95760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190613173565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa15801561096b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098f9190613190565b6109999042613281565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190613190565b811015610a6a5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b600080826001600160401b0316846001600160401b031603610aad5750600b610a9a81610200613294565b610aa6906101836132b3565b9050610c00565b612000610aba84866132c6565b6001600160401b031611610b1c5750600b610ad6816020613294565b610ae19060066132b3565b9050610af86120006001600160401b0385166132fc565b610b0461200083613294565b610b0e91906132b3565b9050610a9a81610200613294565b836001600160401b0316836001600160401b03161015610bae5750600b610b44816020613294565b610b4f9060076132b3565b9050610b5c816002613294565b610b679060006132b3565b9050610b7e6120006001600160401b038516613310565b610b8c630100000083613294565b610b9691906132b3565b9050610ba3816002613294565b610ae19060016132b3565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016101bb565b610c0c87828888611157565b979650505050505050565b6060806000610c27878a8a611171565b9050600081600081518110610c3e57610c3e613324565b01602001516001600160f81b03191690506000600160f81b821480610c705750600160f91b6001600160f81b03198316145b15610c7d57506001610ce2565b600360fe1b6001600160f81b0319831610610c9a57506000610ce2565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610d049190613281565b8152602001610d1385856132b3565b905290506000610d2282611a0b565b90508051600414610d6e5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610d9382600381518110610d8657610d86613324565b6020026020010151611a0b565b905080518c10610de55760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610dfc828e81518110610d8657610d86613324565b90506000610e2382600081518110610e1657610e16613324565b6020026020010151611c30565b90508c6001600160a01b0316816001600160a01b031614610e975760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610eb7610eb284600181518110610d8657610d86613324565b611ca4565b90508c81600081518110610ecd57610ecd613324565b602002602001015114610f225760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b6000610f4784600281518110610f3a57610f3a613324565b6020026020010151611d54565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b89610f7d60208b018b612ffd565b610f8d60408c0160208d0161322c565b898989604051602401610fa59695949392919061333a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529150610fe99060608a01908a0161322c565b6001600160a01b03168160405161100091906133c9565b6000604051808303816000865af19150503d806000811461103d576040519150601f19603f3d011682016040523d82523d6000602084013e611042565b606091505b5080519194509250600091506020036110825760008280602001905181019061106b91906133e5565b6001600160e01b031916635160951d60e11b149150505b82801561108c5750805b156110af576000878152600160205260409020805460ff191660021790556110cc565b6000878152600160208190526040909120805460ff191690911790555b6110dc6040890160208a0161322c565b6001600160a01b03166110f260208a018a612ffd565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61112a60608d0160408e0161322c565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611165868686611e80565b90921495945050505050565b606060008451116111bc5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b60006111c784612018565b905060006111d486612106565b90506000846040516020016111eb91815260200190565b60405160208183030381529060405290506000805b84518110156119ad57600085828151811061121d5761121d613324565b60200260200101519050845183111561128f5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b8260000361132e57805180516020918201206040516112dd926112b792910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6113295760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b611424565b8051516020116113b45780518051602091820120604051611358926112b792910190815260200190565b6113295760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146114245760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b611430601060016132b3565b816020015151036115d0578451830361156857600061145f8260200151601081518110610f3a57610f3a613324565b905060008151116114d85760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b600187516114e69190613281565b831461155a5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611a0495505050505050565b600085848151811061157c5761157c613324565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106115a7576115a7613324565b602002602001015190506115ba81612220565b95506115c76001866132b3565b9450505061199a565b6002816020015151036119415760006115e882612245565b90506000816000815181106115ff576115ff613324565b016020015160f81c9050600061161660028361340f565b611621906002613431565b90506000611632848360ff16612269565b905060006116408a89612269565b9050600061164e838361229f565b9050808351146116c65760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff8516600214806116db575060ff85166003145b1561188157808251146117565760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b60006117728860200151600181518110610f3a57610f3a613324565b905060008151116117eb5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516117f99190613281565b891461186d5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611a049b505050505050505050505050565b60ff85161580611894575060ff85166001145b156118d3576118c087602001516001815181106118b3576118b3613324565b6020026020010151612220565b99506118cc818a6132b3565b9850611936565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b50505050505061199a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b50806119a58161344a565b915050611200565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611a1b8561231e565b919450925090506001816001811115611a3657611a36612d65565b14611aa95760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611ab583856132b3565b14611b1d5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611b365790505090506000845b8751811015611c2457600080611ba96040518060400160405280858d60000151611b8d9190613281565b8152602001858d60200151611ba291906132b3565b905261231e565b509150915060405180604001604052808383611bc591906132b3565b8152602001848c60200151611bda91906132b3565b815250858581518110611bef57611bef613324565b6020908102919091010152611c056001856132b3565b9350611c1181836132b3565b611c1b90846132b3565b92505050611b63565b50815295945050505050565b8051600090600103611c4457506000919050565b8151601514611c955760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611c9e826129e1565b92915050565b6060600082516001600160401b03811115611cc157611cc1612e35565b604051908082528060200260200182016040528015611cea578160200160208202803683370190505b50905060005b8351811015611d4d57611d1b848281518110611d0e57611d0e613324565b60200260200101516129e1565b60001b828281518110611d3057611d30613324565b602090810291909101015280611d458161344a565b915050611cf0565b5092915050565b60606000806000611d648561231e565b919450925090506000816001811115611d7f57611d7f612d65565b14611df25760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611dfc82846132b3565b855114611e685760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611e77856020015184846129ec565b95945050505050565b60008282516001611e9191906132b3565b611e9c906002613547565b11611ea657600080fd5b8360005b8460011461200f57611ebd6002866132fc565b600103611f5c576002848281518110611ed857611ed8613324565b602002602001015183604051602001611efb929190918252602082015260400190565b60408051601f1981840301815290829052611f15916133c9565b602060405180830381855afa158015611f32573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611f559190613190565b9150611ff0565b600282858381518110611f7157611f71613324565b6020026020010151604051602001611f93929190918252602082015260400190565b60408051601f1981840301815290829052611fad916133c9565b602060405180830381855afa158015611fca573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611fed9190613190565b91505b611ffb600286613310565b9450806120078161344a565b915050611eaa565b50949350505050565b80516060906000816001600160401b0381111561203757612037612e35565b60405190808252806020026020018201604052801561207c57816020015b60408051808201909152606080825260208201528152602001906001900390816120555790505b50905060005b828110156120fe5760405180604001604052808683815181106120a7576120a7613324565b602002602001015181526020016120d68784815181106120c9576120c9613324565b6020026020010151612a8c565b8152508282815181106120eb576120eb613324565b6020908102919091010152600101612082565b509392505050565b80516060906000612118826002613294565b6001600160401b0381111561212f5761212f612e35565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b5090506000805b838110156122165785818151811061217a5761217a613324565b6020910101516001600160f81b03198116925060041c60ff60f41b16836121a2836002613294565b815181106121b2576121b2613324565b60200101906001600160f81b031916908160001a905350600f60f81b8216836121dc836002613294565b6121e79060016132b3565b815181106121f7576121f7613324565b60200101906001600160f81b031916908160001a905350600101612160565b5090949350505050565b6060602082600001511061223c5761223782611d54565b611c9e565b611c9e82612a9f565b6060611c9e6122648360200151600081518110610f3a57610f3a613324565b612106565b6060825182106122885750604080516020810190915260008152611c9e565b611a04838384865161229a9190613281565b612ab5565b600080600083518551106122b45783516122b7565b84515b90505b808210801561230e57508382815181106122d6576122d6613324565b602001015160f81c60f81b6001600160f81b0319168583815181106122fd576122fd613324565b01602001516001600160f81b031916145b156120fe578160010191506122ba565b6000806000808460000151116123465760405162461bcd60e51b81526004016101bb90613553565b6020840151805160001a607f811161236b5760006001600094509450945050506129da565b60b781116124c8576000612380608083613281565b9050808760000151116124005760405162461bcd60e51b815260206004820152604e60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b031916908214158061242d5750600160ff1b6001600160f81b0319821610155b6124b55760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b50600195509350600092506129da915050565b60bf81116127095760006124dd60b783613281565b9050808760000151116125605760405162461bcd60e51b815260206004820152605160248201526000805160206135c483398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036125e75760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c6037811161266a5760405162461bcd60e51b815260206004820152604860248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b61267481846132b3565b8951116126ec5760405162461bcd60e51b815260206004820152604c60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6126f78360016132b3565b97509550600094506129da9350505050565b60f781116127ab57600061271e60c083613281565b90508087600001511161279a5760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b6001955093508492506129da915050565b60006127b860f783613281565b9050808760000151116128375760405162461bcd60e51b815260206004820152604d60248201526000805160206135c483398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b03191660008190036128bc5760405162461bcd60e51b815260206004820152604860248201526000805160206135c483398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c6037811161293d5760405162461bcd60e51b815260206004820152604660248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b61294781846132b3565b8951116129bd5760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b6129c88360016132b3565b97509550600194506129da9350505050565b9193909250565b6000611c9e82612bf6565b60606000826001600160401b03811115612a0857612a08612e35565b6040519080825280601f01601f191660200182016040528015612a32576020820181803683370190505b50905082600003612a44579050611a04565b6000612a5085876132b3565b90506020820160005b85811015612a71578281015182820152602001612a59565b85811115612a80576000868301525b50919695505050505050565b6060611c9e612a9a83612cf9565b611a0b565b6060611c9e8260200151600084600001516129ec565b60608182601f011015612afb5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612b3e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612b855760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612ba4576040519150600082526020820160405261200f565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612bdd578051835260209283019201612bc5565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612c4d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612c5b8561231e565b919450925090506000816001811115612c7657612c76612d65565b14612cc35760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612cd591906132b3565b80519091506020841015612cef5760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612d2e5760405162461bcd60e51b81526004016101bb90613553565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612d5e57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612d8f57612d8f612d65565b91905290565b6020810160028310612d8f57612d8f612d65565b60008083601f840112612dbb57600080fd5b5081356001600160401b03811115612dd257600080fd5b602083019150836020828501011115612dea57600080fd5b9250929050565b60008083601f840112612e0357600080fd5b5081356001600160401b03811115612e1a57600080fd5b6020830191508360208260051b8501011115612dea57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612e7357612e73612e35565b604052919050565b600082601f830112612e8c57600080fd5b81356001600160401b03811115612ea557612ea5612e35565b612eb8601f8201601f1916602001612e4b565b818152846020838601011115612ecd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612efc57600080fd5b50919050565b6000806000806000806000806000806101408b8d031215612f2257600080fd5b8a356001600160401b0380821115612f3957600080fd5b612f458e838f01612da9565b909c509a5060208d0135915080821115612f5e57600080fd5b612f6a8e838f01612df1565b909a50985060408d0135975060608d0135915080821115612f8a57600080fd5b612f968e838f01612df1565b909750955060808d0135915080821115612faf57600080fd5b50612fbc8d828e01612e7b565b93505060a08b01359150612fd38c60c08d01612eea565b90509295989b9194979a5092959850565b803563ffffffff81168114612ff857600080fd5b919050565b60006020828403121561300f57600080fd5b611a0482612fe4565b6001600160a01b03811681146105f957600080fd5b6080810163ffffffff61303f84612fe4565b168252602083013561305081613018565b6001600160a01b03908116602084015260408401359061306f82613018565b166040830152606092830135929091019190915290565b60005b838110156130a1578181015183820152602001613089565b50506000910152565b600081518084526130c2816020860160208601613086565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a083820301602084015261311460a08201876130aa565b60408401959095525050606001529392505050565b80356001600160401b0381168114612ff857600080fd5b6000806040838503121561315357600080fd5b61315c83613129565b915061316a60208401613129565b90509250929050565b60006020828403121561318557600080fd5b8151611a0481613018565b6000602082840312156131a257600080fd5b5051919050565b60006001600160401b03808411156131c3576131c3612e35565b8360051b60206131d4818301612e4b565b8681529185019181810190368411156131ec57600080fd5b865b84811015613220578035868111156132065760008081fd5b61321236828b01612e7b565b8452509183019183016131ee565b50979650505050505050565b60006020828403121561323e57600080fd5b8135611a0481613018565b60006020828403121561325b57600080fd5b81518015158114611a0457600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611c9e57611c9e61326b565b60008160001904831182151516156132ae576132ae61326b565b500290565b80820180821115611c9e57611c9e61326b565b6001600160401b03828116828216039080821115611d4d57611d4d61326b565b634e487b7160e01b600052601260045260246000fd5b60008261330b5761330b6132e6565b500690565b60008261331f5761331f6132e6565b500490565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b818110156133a65784518352938301939183019160010161338a565b505084810360a08601526133ba81876130aa565b9b9a5050505050505050505050565b600082516133db818460208701613086565b9190910192915050565b6000602082840312156133f757600080fd5b81516001600160e01b031981168114611a0457600080fd5b600060ff831680613422576134226132e6565b8060ff84160691505092915050565b60ff8281168282160390811115611c9e57611c9e61326b565b60006001820161345c5761345c61326b565b5060010190565b600181815b8085111561349e5781600019048211156134845761348461326b565b8085161561349157918102915b93841c9390800290613468565b509250929050565b6000826134b557506001611c9e565b816134c257506000611c9e565b81600181146134d857600281146134e2576134fe565b6001915050611c9e565b60ff8411156134f3576134f361326b565b50506001821b611c9e565b5060208310610133831016604e8410600b8410161715613521575081810a611c9e565b61352b8383613463565b806000190482111561353f5761353f61326b565b029392505050565b6000611a0483836134a6565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220bf4c477f9604417bba514c2e7432344a579165ab7c6cd02b3c3660704bb20b2864736f6c63430008100033", - "sourceMap": "678:5388:123:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} + "object": "0x608060405234801561001057600080fd5b506136eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612e2d565b60016020526000908152604090205460ff1681565b6040516100769190612e5c565b60405180910390f35b6100a261008d366004612e2d565b60026020526000908152604090205460ff1681565b6040516100769190612e76565b6100c26100bd366004612fe3565b6100c4565b005b6100d96100d460208301836130de565b610423565b6100ee6100e960208301836130de565b610609565b600081604051602001610101919061310e565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016101349594939291906131b7565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612e46565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f613221565b90925090506101ee826101e960208801886130de565b6106be565b600080546001600160a01b0316637599735c61020d60208901896130de565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102739190613254565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e69190613271565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b600061037e8c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061037960208e018e6130de565b610a7c565b9050806103cd5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103fd6103dd8d8f61328a565b8f8d8d8d60200160208101906103f3919061330d565b8e60600135610cf8565b9150915061040f888a89888686611043565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104969190613254565b6001600160a01b0316036104e75760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105599190613254565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba919061332a565b6106065760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b919061332a565b156106065760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107319190613254565b6001600160a01b0316036107825760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190613254565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108679190613271565b6000036108b65760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109299190613254565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190613271565b6109a69042613362565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190613271565b811015610a775760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afa9190613271565b9050600081856001600160401b031610610b1557601b610b18565b60075b60ff169050600082866001600160401b031610610b5457612000610b45846001600160401b038916613362565b610b4f919061338b565b610b69565b610b696120006001600160401b03881661338b565b90506000866001600160401b0316886001600160401b031603610ba85750600b610b958161020061339f565b610ba1906101836133be565b9050610cdd565b612000610bb5888a6133d1565b6001600160401b031611610c175750600b610bd181602061339f565b610bdc9060066133be565b9050610bf36120006001600160401b0389166133f1565b610bff6120008361339f565b610c0991906133be565b9050610b958161020061339f565b876001600160401b0316876001600160401b03161015610c955750600b82610c4082602061339f565b610c4a91906133be565b9050610c5781600261339f565b610c629060006133be565b905081610c7363010000008361339f565b610c7d91906133be565b9050610c8a81600261339f565b610bdc9060016133be565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101bb565b610ce98b828c8c611238565b9b9a5050505050505050505050565b6060806000610d08878a8a611252565b9050600081600081518110610d1f57610d1f613405565b01602001516001600160f81b03191690506000600160f81b821480610d515750600160f91b6001600160f81b03198316145b15610d5e57506001610dc3565b600360fe1b6001600160f81b0319831610610d7b57506000610dc3565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610de59190613362565b8152602001610df485856133be565b905290506000610e0382611aec565b90508051600414610e4f5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610e7482600381518110610e6757610e67613405565b6020026020010151611aec565b905080518c10610ec65760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610edd828e81518110610e6757610e67613405565b90506000610f0482600081518110610ef757610ef7613405565b6020026020010151611d11565b90508c6001600160a01b0316816001600160a01b031614610f785760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610f98610f9384600181518110610e6757610e67613405565b611d85565b90508c81600081518110610fae57610fae613405565b6020026020010151146110035760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b60006110288460028151811061101b5761101b613405565b6020026020010151611e35565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961105e60208b018b6130de565b61106e60408c0160208d0161330d565b8989896040516024016110869695949392919061341b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506110ca9060608a01908a0161330d565b6001600160a01b0316816040516110e1919061349b565b6000604051808303816000865af19150503d806000811461111e576040519150601f19603f3d011682016040523d82523d6000602084013e611123565b606091505b5080519194509250600091506020036111635760008280602001905181019061114c91906134b7565b6001600160e01b031916635160951d60e11b149150505b82801561116d5750805b15611190576000878152600160205260409020805460ff191660021790556111ad565b6000878152600160208190526040909120805460ff191690911790555b6111bd6040890160208a0161330d565b6001600160a01b03166111d360208a018a6130de565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61120b60608d0160408e0161330d565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611246868686611f61565b90921495945050505050565b6060600084511161129d5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b60006112a8846120f9565b905060006112b5866121e7565b90506000846040516020016112cc91815260200190565b60405160208183030381529060405290506000805b8451811015611a8e5760008582815181106112fe576112fe613405565b6020026020010151905084518311156113705760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b8260000361140f57805180516020918201206040516113be9261139892910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61140a5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b611505565b80515160201161149557805180516020918201206040516114399261139892910190815260200190565b61140a5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146115055760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b611511601060016133be565b816020015151036116b15784518303611649576000611540826020015160108151811061101b5761101b613405565b905060008151116115b95760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b600187516115c79190613362565b831461163b5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611ae595505050505050565b600085848151811061165d5761165d613405565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061168857611688613405565b6020026020010151905061169b81612301565b95506116a86001866133be565b94505050611a7b565b600281602001515103611a225760006116c982612326565b90506000816000815181106116e0576116e0613405565b016020015160f81c905060006116f76002836134e1565b611702906002613503565b90506000611713848360ff1661234a565b905060006117218a8961234a565b9050600061172f8383612380565b9050808351146117a75760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff8516600214806117bc575060ff85166003145b1561196257808251146118375760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b6000611853886020015160018151811061101b5761101b613405565b905060008151116118cc5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516118da9190613362565b891461194e5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611ae59b505050505050505050505050565b60ff85161580611975575060ff85166001145b156119b4576119a1876020015160018151811061199457611994613405565b6020026020010151612301565b99506119ad818a6133be565b9850611a17565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b505050505050611a7b565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b5080611a868161351c565b9150506112e1565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611afc856123ff565b919450925090506001816001811115611b1757611b17612e46565b14611b8a5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611b9683856133be565b14611bfe5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611c175790505090506000845b8751811015611d0557600080611c8a6040518060400160405280858d60000151611c6e9190613362565b8152602001858d60200151611c8391906133be565b90526123ff565b509150915060405180604001604052808383611ca691906133be565b8152602001848c60200151611cbb91906133be565b815250858581518110611cd057611cd0613405565b6020908102919091010152611ce66001856133be565b9350611cf281836133be565b611cfc90846133be565b92505050611c44565b50815295945050505050565b8051600090600103611d2557506000919050565b8151601514611d765760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611d7f82612ac2565b92915050565b6060600082516001600160401b03811115611da257611da2612f16565b604051908082528060200260200182016040528015611dcb578160200160208202803683370190505b50905060005b8351811015611e2e57611dfc848281518110611def57611def613405565b6020026020010151612ac2565b60001b828281518110611e1157611e11613405565b602090810291909101015280611e268161351c565b915050611dd1565b5092915050565b60606000806000611e45856123ff565b919450925090506000816001811115611e6057611e60612e46565b14611ed35760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611edd82846133be565b855114611f495760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611f5885602001518484612acd565b95945050505050565b60008282516001611f7291906133be565b611f7d906002613619565b11611f8757600080fd5b8360005b846001146120f057611f9e6002866133f1565b60010361203d576002848281518110611fb957611fb9613405565b602002602001015183604051602001611fdc929190918252602082015260400190565b60408051601f1981840301815290829052611ff69161349b565b602060405180830381855afa158015612013573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906120369190613271565b91506120d1565b60028285838151811061205257612052613405565b6020026020010151604051602001612074929190918252602082015260400190565b60408051601f198184030181529082905261208e9161349b565b602060405180830381855afa1580156120ab573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906120ce9190613271565b91505b6120dc60028661338b565b9450806120e88161351c565b915050611f8b565b50949350505050565b80516060906000816001600160401b0381111561211857612118612f16565b60405190808252806020026020018201604052801561215d57816020015b60408051808201909152606080825260208201528152602001906001900390816121365790505b50905060005b828110156121df57604051806040016040528086838151811061218857612188613405565b602002602001015181526020016121b78784815181106121aa576121aa613405565b6020026020010151612b6d565b8152508282815181106121cc576121cc613405565b6020908102919091010152600101612163565b509392505050565b805160609060006121f982600261339f565b6001600160401b0381111561221057612210612f16565b6040519080825280601f01601f19166020018201604052801561223a576020820181803683370190505b5090506000805b838110156122f75785818151811061225b5761225b613405565b6020910101516001600160f81b03198116925060041c60ff60f41b168361228383600261339f565b8151811061229357612293613405565b60200101906001600160f81b031916908160001a905350600f60f81b8216836122bd83600261339f565b6122c89060016133be565b815181106122d8576122d8613405565b60200101906001600160f81b031916908160001a905350600101612241565b5090949350505050565b6060602082600001511061231d5761231882611e35565b611d7f565b611d7f82612b80565b6060611d7f612345836020015160008151811061101b5761101b613405565b6121e7565b6060825182106123695750604080516020810190915260008152611d7f565b611ae5838384865161237b9190613362565b612b96565b60008060008351855110612395578351612398565b84515b90505b80821080156123ef57508382815181106123b7576123b7613405565b602001015160f81c60f81b6001600160f81b0319168583815181106123de576123de613405565b01602001516001600160f81b031916145b156121df5781600101915061239b565b6000806000808460000151116124275760405162461bcd60e51b81526004016101bb90613625565b6020840151805160001a607f811161244c576000600160009450945094505050612abb565b60b781116125a9576000612461608083613362565b9050808760000151116124e15760405162461bcd60e51b815260206004820152604e602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b031916908214158061250e5750600160ff1b6001600160f81b0319821610155b6125965760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b5060019550935060009250612abb915050565b60bf81116127ea5760006125be60b783613362565b9050808760000151116126415760405162461bcd60e51b8152602060048201526051602482015260008051602061369683398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036126c85760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c6037811161274b5760405162461bcd60e51b8152602060048201526048602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b61275581846133be565b8951116127cd5760405162461bcd60e51b815260206004820152604c602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6127d88360016133be565b9750955060009450612abb9350505050565b60f7811161288c5760006127ff60c083613362565b90508087600001511161287b5760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b600195509350849250612abb915050565b600061289960f783613362565b9050808760000151116129185760405162461bcd60e51b815260206004820152604d602482015260008051602061369683398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b031916600081900361299d5760405162461bcd60e51b8152602060048201526048602482015260008051602061369683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c60378111612a1e5760405162461bcd60e51b8152602060048201526046602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b612a2881846133be565b895111612a9e5760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b612aa98360016133be565b9750955060019450612abb9350505050565b9193909250565b6000611d7f82612cd7565b60606000826001600160401b03811115612ae957612ae9612f16565b6040519080825280601f01601f191660200182016040528015612b13576020820181803683370190505b50905082600003612b25579050611ae5565b6000612b3185876133be565b90506020820160005b85811015612b52578281015182820152602001612b3a565b85811115612b61576000868301525b50919695505050505050565b6060611d7f612b7b83612dda565b611aec565b6060611d7f826020015160008460000151612acd565b60608182601f011015612bdc5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612c1f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612c665760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612c8557604051915060008252602082016040526120f0565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612cbe578051835260209283019201612ca6565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612d2e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612d3c856123ff565b919450925090506000816001811115612d5757612d57612e46565b14612da45760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612db691906133be565b80519091506020841015612dd05760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612e0f5760405162461bcd60e51b81526004016101bb90613625565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612e3f57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612e7057612e70612e46565b91905290565b6020810160028310612e7057612e70612e46565b60008083601f840112612e9c57600080fd5b5081356001600160401b03811115612eb357600080fd5b602083019150836020828501011115612ecb57600080fd5b9250929050565b60008083601f840112612ee457600080fd5b5081356001600160401b03811115612efb57600080fd5b6020830191508360208260051b8501011115612ecb57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612f5457612f54612f16565b604052919050565b600082601f830112612f6d57600080fd5b81356001600160401b03811115612f8657612f86612f16565b612f99601f8201601f1916602001612f2c565b818152846020838601011115612fae57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612fdd57600080fd5b50919050565b6000806000806000806000806000806101408b8d03121561300357600080fd5b8a356001600160401b038082111561301a57600080fd5b6130268e838f01612e8a565b909c509a5060208d013591508082111561303f57600080fd5b61304b8e838f01612ed2565b909a50985060408d0135975060608d013591508082111561306b57600080fd5b6130778e838f01612ed2565b909750955060808d013591508082111561309057600080fd5b5061309d8d828e01612f5c565b93505060a08b013591506130b48c60c08d01612fcb565b90509295989b9194979a5092959850565b803563ffffffff811681146130d957600080fd5b919050565b6000602082840312156130f057600080fd5b611ae5826130c5565b6001600160a01b038116811461060657600080fd5b6080810163ffffffff613120846130c5565b1682526020830135613131816130f9565b6001600160a01b039081166020840152604084013590613150826130f9565b166040830152606092830135929091019190915290565b60005b8381101561318257818101518382015260200161316a565b50506000910152565b600081518084526131a3816020860160208601613167565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526131f560a082018761318b565b60408401959095525050606001529392505050565b80356001600160401b03811681146130d957600080fd5b6000806040838503121561323457600080fd5b61323d8361320a565b915061324b6020840161320a565b90509250929050565b60006020828403121561326657600080fd5b8151611ae5816130f9565b60006020828403121561328357600080fd5b5051919050565b60006001600160401b03808411156132a4576132a4612f16565b8360051b60206132b5818301612f2c565b8681529185019181810190368411156132cd57600080fd5b865b84811015613301578035868111156132e75760008081fd5b6132f336828b01612f5c565b8452509183019183016132cf565b50979650505050505050565b60006020828403121561331f57600080fd5b8135611ae5816130f9565b60006020828403121561333c57600080fd5b81518015158114611ae557600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611d7f57611d7f61334c565b634e487b7160e01b600052601260045260246000fd5b60008261339a5761339a613375565b500490565b60008160001904831182151516156133b9576133b961334c565b500290565b80820180821115611d7f57611d7f61334c565b6001600160401b03828116828216039080821115611e2e57611e2e61334c565b60008261340057613400613375565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b818110156134875784518352938301939183019160010161346b565b505084810360a0860152610ce9818761318b565b600082516134ad818460208701613167565b9190910192915050565b6000602082840312156134c957600080fd5b81516001600160e01b031981168114611ae557600080fd5b600060ff8316806134f4576134f4613375565b8060ff84160691505092915050565b60ff8281168282160390811115611d7f57611d7f61334c565b60006001820161352e5761352e61334c565b5060010190565b600181815b808511156135705781600019048211156135565761355661334c565b8085161561356357918102915b93841c939080029061353a565b509250929050565b60008261358757506001611d7f565b8161359457506000611d7f565b81600181146135aa57600281146135b4576135d0565b6001915050611d7f565b60ff8411156135c5576135c561334c565b50506001821b611d7f565b5060208310610133831016604e8410600b84101617156135f3575081810a611d7f565b6135fd8383613535565b80600019048211156136115761361161334c565b029392505050565b6000611ae58383613578565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a264697066735822122094dab27a8a6e78e85044dd92ccb31d89b6b0659dad83111a1dfc623c4daa0d8e64736f6c63430008100033", + "sourceMap": "678:5426:124:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": { + "src/libraries/BeaconChainForks.sol": { + "BeaconChainForks": [ + { + "start": 2748, + "length": 20 + } + ] + } + } }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612d4c565b60016020526000908152604090205460ff1681565b6040516100769190612d7b565b60405180910390f35b6100a261008d366004612d4c565b60026020526000908152604090205460ff1681565b6040516100769190612d95565b6100c26100bd366004612f02565b6100c4565b005b6100d96100d46020830183612ffd565b610416565b6100ee6100e96020830183612ffd565b6105fc565b600081604051602001610101919061302d565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016101349594939291906130d6565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612d65565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f613140565b90925090506101ee826101e96020880188612ffd565b6106b1565b600080546001600160a01b0316637599735c61020d6020890189612ffd565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102739190613173565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e69190613190565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b60006103718c8f8f80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250899150889050610a6f565b9050806103c05760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103f06103d08d8f6131a9565b8f8d8d8d60200160208101906103e6919061322c565b8e60600135610c17565b91509150610402888a89888686610f62565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104899190613173565b6001600160a01b0316036104da5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054c9190613173565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ad9190613249565b6105f95760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e9190613249565b156105f95760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190613173565b6001600160a01b0316036107755760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613173565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085a9190613190565b6000036108a95760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190613173565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa15801561096b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098f9190613190565b6109999042613281565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190613190565b811015610a6a5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b600080826001600160401b0316846001600160401b031603610aad5750600b610a9a81610200613294565b610aa6906101836132b3565b9050610c00565b612000610aba84866132c6565b6001600160401b031611610b1c5750600b610ad6816020613294565b610ae19060066132b3565b9050610af86120006001600160401b0385166132fc565b610b0461200083613294565b610b0e91906132b3565b9050610a9a81610200613294565b836001600160401b0316836001600160401b03161015610bae5750600b610b44816020613294565b610b4f9060076132b3565b9050610b5c816002613294565b610b679060006132b3565b9050610b7e6120006001600160401b038516613310565b610b8c630100000083613294565b610b9691906132b3565b9050610ba3816002613294565b610ae19060016132b3565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016101bb565b610c0c87828888611157565b979650505050505050565b6060806000610c27878a8a611171565b9050600081600081518110610c3e57610c3e613324565b01602001516001600160f81b03191690506000600160f81b821480610c705750600160f91b6001600160f81b03198316145b15610c7d57506001610ce2565b600360fe1b6001600160f81b0319831610610c9a57506000610ce2565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610d049190613281565b8152602001610d1385856132b3565b905290506000610d2282611a0b565b90508051600414610d6e5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610d9382600381518110610d8657610d86613324565b6020026020010151611a0b565b905080518c10610de55760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610dfc828e81518110610d8657610d86613324565b90506000610e2382600081518110610e1657610e16613324565b6020026020010151611c30565b90508c6001600160a01b0316816001600160a01b031614610e975760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610eb7610eb284600181518110610d8657610d86613324565b611ca4565b90508c81600081518110610ecd57610ecd613324565b602002602001015114610f225760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b6000610f4784600281518110610f3a57610f3a613324565b6020026020010151611d54565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b89610f7d60208b018b612ffd565b610f8d60408c0160208d0161322c565b898989604051602401610fa59695949392919061333a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529150610fe99060608a01908a0161322c565b6001600160a01b03168160405161100091906133c9565b6000604051808303816000865af19150503d806000811461103d576040519150601f19603f3d011682016040523d82523d6000602084013e611042565b606091505b5080519194509250600091506020036110825760008280602001905181019061106b91906133e5565b6001600160e01b031916635160951d60e11b149150505b82801561108c5750805b156110af576000878152600160205260409020805460ff191660021790556110cc565b6000878152600160208190526040909120805460ff191690911790555b6110dc6040890160208a0161322c565b6001600160a01b03166110f260208a018a612ffd565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61112a60608d0160408e0161322c565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611165868686611e80565b90921495945050505050565b606060008451116111bc5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b60006111c784612018565b905060006111d486612106565b90506000846040516020016111eb91815260200190565b60405160208183030381529060405290506000805b84518110156119ad57600085828151811061121d5761121d613324565b60200260200101519050845183111561128f5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b8260000361132e57805180516020918201206040516112dd926112b792910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6113295760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b611424565b8051516020116113b45780518051602091820120604051611358926112b792910190815260200190565b6113295760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146114245760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b611430601060016132b3565b816020015151036115d0578451830361156857600061145f8260200151601081518110610f3a57610f3a613324565b905060008151116114d85760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b600187516114e69190613281565b831461155a5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611a0495505050505050565b600085848151811061157c5761157c613324565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106115a7576115a7613324565b602002602001015190506115ba81612220565b95506115c76001866132b3565b9450505061199a565b6002816020015151036119415760006115e882612245565b90506000816000815181106115ff576115ff613324565b016020015160f81c9050600061161660028361340f565b611621906002613431565b90506000611632848360ff16612269565b905060006116408a89612269565b9050600061164e838361229f565b9050808351146116c65760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff8516600214806116db575060ff85166003145b1561188157808251146117565760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b60006117728860200151600181518110610f3a57610f3a613324565b905060008151116117eb5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516117f99190613281565b891461186d5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611a049b505050505050505050505050565b60ff85161580611894575060ff85166001145b156118d3576118c087602001516001815181106118b3576118b3613324565b6020026020010151612220565b99506118cc818a6132b3565b9850611936565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b50505050505061199a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b50806119a58161344a565b915050611200565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611a1b8561231e565b919450925090506001816001811115611a3657611a36612d65565b14611aa95760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611ab583856132b3565b14611b1d5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611b365790505090506000845b8751811015611c2457600080611ba96040518060400160405280858d60000151611b8d9190613281565b8152602001858d60200151611ba291906132b3565b905261231e565b509150915060405180604001604052808383611bc591906132b3565b8152602001848c60200151611bda91906132b3565b815250858581518110611bef57611bef613324565b6020908102919091010152611c056001856132b3565b9350611c1181836132b3565b611c1b90846132b3565b92505050611b63565b50815295945050505050565b8051600090600103611c4457506000919050565b8151601514611c955760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611c9e826129e1565b92915050565b6060600082516001600160401b03811115611cc157611cc1612e35565b604051908082528060200260200182016040528015611cea578160200160208202803683370190505b50905060005b8351811015611d4d57611d1b848281518110611d0e57611d0e613324565b60200260200101516129e1565b60001b828281518110611d3057611d30613324565b602090810291909101015280611d458161344a565b915050611cf0565b5092915050565b60606000806000611d648561231e565b919450925090506000816001811115611d7f57611d7f612d65565b14611df25760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611dfc82846132b3565b855114611e685760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611e77856020015184846129ec565b95945050505050565b60008282516001611e9191906132b3565b611e9c906002613547565b11611ea657600080fd5b8360005b8460011461200f57611ebd6002866132fc565b600103611f5c576002848281518110611ed857611ed8613324565b602002602001015183604051602001611efb929190918252602082015260400190565b60408051601f1981840301815290829052611f15916133c9565b602060405180830381855afa158015611f32573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611f559190613190565b9150611ff0565b600282858381518110611f7157611f71613324565b6020026020010151604051602001611f93929190918252602082015260400190565b60408051601f1981840301815290829052611fad916133c9565b602060405180830381855afa158015611fca573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611fed9190613190565b91505b611ffb600286613310565b9450806120078161344a565b915050611eaa565b50949350505050565b80516060906000816001600160401b0381111561203757612037612e35565b60405190808252806020026020018201604052801561207c57816020015b60408051808201909152606080825260208201528152602001906001900390816120555790505b50905060005b828110156120fe5760405180604001604052808683815181106120a7576120a7613324565b602002602001015181526020016120d68784815181106120c9576120c9613324565b6020026020010151612a8c565b8152508282815181106120eb576120eb613324565b6020908102919091010152600101612082565b509392505050565b80516060906000612118826002613294565b6001600160401b0381111561212f5761212f612e35565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b5090506000805b838110156122165785818151811061217a5761217a613324565b6020910101516001600160f81b03198116925060041c60ff60f41b16836121a2836002613294565b815181106121b2576121b2613324565b60200101906001600160f81b031916908160001a905350600f60f81b8216836121dc836002613294565b6121e79060016132b3565b815181106121f7576121f7613324565b60200101906001600160f81b031916908160001a905350600101612160565b5090949350505050565b6060602082600001511061223c5761223782611d54565b611c9e565b611c9e82612a9f565b6060611c9e6122648360200151600081518110610f3a57610f3a613324565b612106565b6060825182106122885750604080516020810190915260008152611c9e565b611a04838384865161229a9190613281565b612ab5565b600080600083518551106122b45783516122b7565b84515b90505b808210801561230e57508382815181106122d6576122d6613324565b602001015160f81c60f81b6001600160f81b0319168583815181106122fd576122fd613324565b01602001516001600160f81b031916145b156120fe578160010191506122ba565b6000806000808460000151116123465760405162461bcd60e51b81526004016101bb90613553565b6020840151805160001a607f811161236b5760006001600094509450945050506129da565b60b781116124c8576000612380608083613281565b9050808760000151116124005760405162461bcd60e51b815260206004820152604e60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b031916908214158061242d5750600160ff1b6001600160f81b0319821610155b6124b55760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b50600195509350600092506129da915050565b60bf81116127095760006124dd60b783613281565b9050808760000151116125605760405162461bcd60e51b815260206004820152605160248201526000805160206135c483398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036125e75760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c6037811161266a5760405162461bcd60e51b815260206004820152604860248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b61267481846132b3565b8951116126ec5760405162461bcd60e51b815260206004820152604c60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6126f78360016132b3565b97509550600094506129da9350505050565b60f781116127ab57600061271e60c083613281565b90508087600001511161279a5760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b6001955093508492506129da915050565b60006127b860f783613281565b9050808760000151116128375760405162461bcd60e51b815260206004820152604d60248201526000805160206135c483398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b03191660008190036128bc5760405162461bcd60e51b815260206004820152604860248201526000805160206135c483398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c6037811161293d5760405162461bcd60e51b815260206004820152604660248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b61294781846132b3565b8951116129bd5760405162461bcd60e51b815260206004820152604a60248201526000805160206135c483398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b6129c88360016132b3565b97509550600194506129da9350505050565b9193909250565b6000611c9e82612bf6565b60606000826001600160401b03811115612a0857612a08612e35565b6040519080825280601f01601f191660200182016040528015612a32576020820181803683370190505b50905082600003612a44579050611a04565b6000612a5085876132b3565b90506020820160005b85811015612a71578281015182820152602001612a59565b85811115612a80576000868301525b50919695505050505050565b6060611c9e612a9a83612cf9565b611a0b565b6060611c9e8260200151600084600001516129ec565b60608182601f011015612afb5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612b3e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612b855760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612ba4576040519150600082526020820160405261200f565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612bdd578051835260209283019201612bc5565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612c4d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612c5b8561231e565b919450925090506000816001811115612c7657612c76612d65565b14612cc35760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612cd591906132b3565b80519091506020841015612cef5760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612d2e5760405162461bcd60e51b81526004016101bb90613553565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612d5e57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612d8f57612d8f612d65565b91905290565b6020810160028310612d8f57612d8f612d65565b60008083601f840112612dbb57600080fd5b5081356001600160401b03811115612dd257600080fd5b602083019150836020828501011115612dea57600080fd5b9250929050565b60008083601f840112612e0357600080fd5b5081356001600160401b03811115612e1a57600080fd5b6020830191508360208260051b8501011115612dea57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612e7357612e73612e35565b604052919050565b600082601f830112612e8c57600080fd5b81356001600160401b03811115612ea557612ea5612e35565b612eb8601f8201601f1916602001612e4b565b818152846020838601011115612ecd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612efc57600080fd5b50919050565b6000806000806000806000806000806101408b8d031215612f2257600080fd5b8a356001600160401b0380821115612f3957600080fd5b612f458e838f01612da9565b909c509a5060208d0135915080821115612f5e57600080fd5b612f6a8e838f01612df1565b909a50985060408d0135975060608d0135915080821115612f8a57600080fd5b612f968e838f01612df1565b909750955060808d0135915080821115612faf57600080fd5b50612fbc8d828e01612e7b565b93505060a08b01359150612fd38c60c08d01612eea565b90509295989b9194979a5092959850565b803563ffffffff81168114612ff857600080fd5b919050565b60006020828403121561300f57600080fd5b611a0482612fe4565b6001600160a01b03811681146105f957600080fd5b6080810163ffffffff61303f84612fe4565b168252602083013561305081613018565b6001600160a01b03908116602084015260408401359061306f82613018565b166040830152606092830135929091019190915290565b60005b838110156130a1578181015183820152602001613089565b50506000910152565b600081518084526130c2816020860160208601613086565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a083820301602084015261311460a08201876130aa565b60408401959095525050606001529392505050565b80356001600160401b0381168114612ff857600080fd5b6000806040838503121561315357600080fd5b61315c83613129565b915061316a60208401613129565b90509250929050565b60006020828403121561318557600080fd5b8151611a0481613018565b6000602082840312156131a257600080fd5b5051919050565b60006001600160401b03808411156131c3576131c3612e35565b8360051b60206131d4818301612e4b565b8681529185019181810190368411156131ec57600080fd5b865b84811015613220578035868111156132065760008081fd5b61321236828b01612e7b565b8452509183019183016131ee565b50979650505050505050565b60006020828403121561323e57600080fd5b8135611a0481613018565b60006020828403121561325b57600080fd5b81518015158114611a0457600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611c9e57611c9e61326b565b60008160001904831182151516156132ae576132ae61326b565b500290565b80820180821115611c9e57611c9e61326b565b6001600160401b03828116828216039080821115611d4d57611d4d61326b565b634e487b7160e01b600052601260045260246000fd5b60008261330b5761330b6132e6565b500690565b60008261331f5761331f6132e6565b500490565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b818110156133a65784518352938301939183019160010161338a565b505084810360a08601526133ba81876130aa565b9b9a5050505050505050505050565b600082516133db818460208701613086565b9190910192915050565b6000602082840312156133f757600080fd5b81516001600160e01b031981168114611a0457600080fd5b600060ff831680613422576134226132e6565b8060ff84160691505092915050565b60ff8281168282160390811115611c9e57611c9e61326b565b60006001820161345c5761345c61326b565b5060010190565b600181815b8085111561349e5781600019048211156134845761348461326b565b8085161561349157918102915b93841c9390800290613468565b509250929050565b6000826134b557506001611c9e565b816134c257506000611c9e565b81600181146134d857600281146134e2576134fe565b6001915050611c9e565b60ff8411156134f3576134f361326b565b50506001821b611c9e565b5060208310610133831016604e8410600b8410161715613521575081810a611c9e565b61352b8383613463565b806000190482111561353f5761353f61326b565b029392505050565b6000611a0483836134a6565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220bf4c477f9604417bba514c2e7432344a579165ab7c6cd02b3c3660704bb20b2864736f6c63430008100033", - "sourceMap": "678:5388:123:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;723:59;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1533:1728:123:-;;;;;;:::i;:::-;;:::i;:::-;;;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:123;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:123;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:123;;6848:2:145;2243:115:123;;;6830:21:145;6887:2;6867:18;;;6860:30;6926:25;6906:18;;;6899:53;6969:18;;2243:115:123;;;;;;;;;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:123;-1:-1:-1;2460:60:123;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:123;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:123;;;;;;;;7597:23:145;;;;2563:56:123;;;7579:42:145;7552:18;;2563:56:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:123;;-1:-1:-1;;;;;8073:31:145;;2563:73:123;;;8055:50:145;-1:-1:-1;;;;;2563:64:123;;;;;;;8028:18:145;;2563:73:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:123;2646:58;;;;-1:-1:-1;;;2646:58:123;;8507:2:145;2646:58:123;;;8489:21:145;8546:2;8526:18;;;8519:30;-1:-1:-1;;;8565:18:145;;;8558:51;8626:18;;2646:58:123;8305:345:145;2646:58:123;2714:12;2741:84;2764:12;2778:17;;2741:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2797:10:123;;-1:-1:-1;2809:7:123;;-1:-1:-1;2818:6:123;;-1:-1:-1;2741:22:123;:84::i;:::-;2714:111;;2843:7;2835:47;;;;-1:-1:-1;;;2835:47:123;;8857:2:145;2835:47:123;;;8839:21:145;8896:2;8876:18;;;8869:30;8935:29;8915:18;;;8908:57;8982:18;;2835:47:123;8655:351:145;2835:47:123;2894:28;;2950:211;;2985:12;;2950:211;:::i;:::-;3011:12;3037:17;3068:8;3090:12;:26;;;;;;;;;;:::i;:::-;3130:12;:21;;;2950;:211::i;:::-;2893:268;;;;3172:82;3181:14;3197:12;3211:10;3223:6;3231:11;3244:9;3172:8;:82::i;:::-;1837:1424;;;;;;;;1533:1728;;;;;;;;;;:::o;3347:307::-;3505:1;3455:15;;:37;;-1:-1:-1;;;3455:37:123;;7609:10:145;7597:23;;3455:37:123;;;7579:42:145;-1:-1:-1;;;;;3455:15:123;;;;:28;;7552:18:145;;3455:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3447:60:123;;3426:119;;;;-1:-1:-1;;;3426:119:123;;10404:2:145;3426:119:123;;;10386:21:145;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:145;;;10455:54;10526:18;;3426:119:123;10202:348:145;3426:119:123;3563:15;;:37;;-1:-1:-1;;;3563:37:123;;7609:10:145;7597:23;;3563:37:123;;;7579:42:145;-1:-1:-1;;;;;3563:15:123;;;;:28;;7552:18:145;;3563:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:48:123;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3555:92;;;;-1:-1:-1;;;3555:92:123;;11039:2:145;3555:92:123;;;11021:21:145;11078:2;11058:18;;;11051:30;11117:31;11097:18;;;11090:59;11166:18;;3555:92:123;10837:353:145;3555:92:123;3347:307;:::o;3715:137::-;3790:15;;:31;;-1:-1:-1;;;3790:31:123;;7609:10:145;7597:23;;3790:31:123;;;7579:42:145;-1:-1:-1;;;;;3790:15:123;;;;:22;;7552:18:145;;3790:31:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3789:32;3781:64;;;;-1:-1:-1;;;3781:64:123;;11397:2:145;3781:64:123;;;11379:21:145;11436:2;11416:18;;;11409:30;-1:-1:-1;;;11455:18:145;;;11448:49;11514:18;;3781:64:123;11195:343:145;3922:620:123;4087:1;4037:15;;:37;;-1:-1:-1;;;4037:37:123;;7609:10:145;7597:23;;4037:37:123;;;7579:42:145;-1:-1:-1;;;;;4037:15:123;;;;:28;;7552:18:145;;4037:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4029:60:123;;4008:119;;;;-1:-1:-1;;;4008:119:123;;10404:2:145;4008:119:123;;;10386:21:145;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:145;;;10455:54;10526:18;;4008:119:123;10202:348:145;4008:119:123;4158:15;;:37;;-1:-1:-1;;;4158:37:123;;7609:10:145;7597:23;;4158:37:123;;;7579:42:145;-1:-1:-1;;;;;4158:15:123;;;;:28;;7552:18:145;;4158:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4158:54:123;;-1:-1:-1;;;;;8073:31:145;;4158:54:123;;;8055:50:145;-1:-1:-1;;;;;4158:48:123;;;;;;;8028:18:145;;4158:54:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4216:1;4158:59;4137:136;;;;-1:-1:-1;;;4137:136:123;;11934:2:145;4137:136:123;;;11916:21:145;11973:2;11953:18;;;11946:30;12012:32;11992:18;;;11985:60;12062:18;;4137:136:123;11732:354:145;4137:136:123;4283:19;4335:15;;:37;;-1:-1:-1;;;4335:37:123;;7609:10:145;7597:23;;4335:37:123;;;7579:42:145;-1:-1:-1;;;;;4335:15:123;;;;:28;;7552:18:145;;4335:37:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4335:54:123;;-1:-1:-1;;;;;8073:31:145;;4335:54:123;;;8055:50:145;-1:-1:-1;;;;;4335:48:123;;;;;;;8028:18:145;;4335:54:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4317:72;;:15;:72;:::i;:::-;4283:106;;4435:15;;;;;;;;-1:-1:-1;;;;;4435:15:123;-1:-1:-1;;;;;4435:38:123;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4420:11;:55;;4399:136;;;;-1:-1:-1;;;4399:136:123;;12558:2:145;4399:136:123;;;12540:21:145;12597:2;12577:18;;;12570:30;12636:34;12616:18;;;12609:62;-1:-1:-1;;;12687:18:145;;;12680:32;12729:19;;4399:136:123;12356:398:145;4399:136:123;3998:544;3922:620;;:::o;3024:1184:109:-;3230:4;3246:13;3284:6;-1:-1:-1;;;;;3273:17:109;:7;-1:-1:-1;;;;;3273:17:109;;3269:845;;-1:-1:-1;3314:5:109;3341:14;3314:5;3349:6;3341:14;:::i;:::-;:20;;3358:3;3341:20;:::i;:::-;3333:28;;3269:845;;;304:4;3382:16;3392:6;3382:7;:16;:::i;:::-;-1:-1:-1;;;;;3382:45:109;;3378:736;;-1:-1:-1;3451:5:109;3478:14;3451:5;3486:6;3478:14;:::i;:::-;:18;;3495:1;3478:18;:::i;:::-;3470:26;-1:-1:-1;3554:34:109;304:4;-1:-1:-1;;;;;3554:34:109;;;:::i;:::-;3518:33;304:4;3518:5;:33;:::i;:::-;:70;;;;:::i;:::-;3510:78;-1:-1:-1;3610:14:109;3510:78;3618:6;3610:14;:::i;3378:736::-;3660:7;-1:-1:-1;;;;;3651:16:109;:6;-1:-1:-1;;;;;3651:16:109;;3647:467;;;-1:-1:-1;3691:5:109;3718:14;3691:5;3726:6;3718:14;:::i;:::-;:18;;3735:1;3718:18;:::i;:::-;3710:26;-1:-1:-1;3758:9:109;3710:26;3766:1;3758:9;:::i;:::-;:13;;3770:1;3758:13;:::i;:::-;3750:21;-1:-1:-1;3826:34:109;304:4;-1:-1:-1;;;;;3826:34:109;;;:::i;:::-;3793:30;236:8;3793:5;:30;:::i;:::-;:67;;;;:::i;:::-;3785:75;-1:-1:-1;3882:9:109;3785:75;3890:1;3882:9;:::i;:::-;:13;;3894:1;3882:13;:::i;3647:467::-;4060:43;;-1:-1:-1;;;4060:43:109;;13826:2:145;4060:43:109;;;13808:21:145;13865:2;13845:18;;;13838:30;13904:34;13884:18;;;13877:62;-1:-1:-1;;;13955:18:145;;;13948:31;13996:19;;4060:43:109;13624:397:145;3647:467:109;4130:71;4150:12;4164:5;4171:17;4190:10;4130:19;:71::i;:::-;4123:78;3024:1184;-1:-1:-1;;;;;;;3024:1184:109:o;431:2729:120:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:120;;-1:-1:-1;1486:14:120;-1:-1:-1;;;1514:25:120;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:120;;;1514:54;1510:236;;;-1:-1:-1;1593:1:120;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:120;;;1611:135;;-1:-1:-1;1665:1:120;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:120;;14360:2:145;1697:38:120;;;14342:21:145;14399:2;14379:18;;;14372:30;14438;14418:18;;;14411:58;14486:18;;1697:38:120;14158:352:145;1611:135:120;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:120;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:120;;14717:2:145;2278:58:120;;;14699:21:145;14756:2;14736:18;;;14729:30;-1:-1:-1;;;14775:18:145;;;14768:52;14837:18;;2278:58:120;14515:346:145;2278:58:120;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:120;;15068:2:145;2495:59:120;;;15050:21:145;15107:2;15087:18;;;15080:30;15146:25;15126:18;;;15119:53;15189:18;;2495:59:120;14866:347:145;2495:59:120;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:120;:14;-1:-1:-1;;;;;2777:30:120;;2769:83;;;;-1:-1:-1;;;2769:83:120;;15420:2:145;2769:83:120;;;15402:21:145;15459:2;15439:18;;;15432:30;15498:34;15478:18;;;15471:62;-1:-1:-1;;;15549:18:145;;;15542:38;15597:19;;2769:83:120;15218:404:145;2769:83:120;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:120;;15829:2:145;2990:74:120;;;15811:21:145;15868:2;15848:18;;;15841:30;15907:32;15887:18;;;15880:60;15957:18;;2990:74:120;15627:354:145;2990:74:120;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:120;;-1:-1:-1;;;;;;;;;;;431:2729:120;;;;;;;;;:::o;4667:1397:123:-;4913:12;4935:17;4913:12;-1:-1:-1;;;5105:15:123;5138:27;;;;:13;:27;:::i;:::-;5183;;;;;;;;:::i;:::-;5228:7;5253:12;5283:10;5003:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5003:304:123;;;;;;;;;;;;;;-1:-1:-1;;;;;5003:304:123;-1:-1:-1;;;;;;5003:304:123;;;;;;;;;;;-1:-1:-1;5339:29:123;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5339:34:123;5374:11;5339:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5451:11:123;;5321:65;;-1:-1:-1;5321:65:123;-1:-1:-1;5407:22:123;;-1:-1:-1;5466:2:123;5451:17;5447:178;;5485:12;5512:4;5501:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5561:53:123;-1:-1:-1;;;5561:53:123;;-1:-1:-1;;5447:178:123;5639:7;:28;;;;;5650:17;5639:28;5635:215;;;5683:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5683:64:123;5714:33;5683:64;;;5635:215;;;5778:28;;;;5809:30;5778:28;;;;;;;;:61;;-1:-1:-1;;5778:61:123;;;;;;5635:215;5956:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5865:192:123;5915:27;;;;:13;:27;:::i;:::-;5865:192;;5886:15;5865:192;5997:29;;;;;;;;:::i;:::-;5865:192;;;-1:-1:-1;;;;;17877:32:145;;;17859:51;;17953:14;;17946:22;17941:2;17926:18;;17919:50;17832:18;5865:192:123;;;;;;;4903:1161;;;4667:1397;;;;;;:::o;1770:281:109:-;1914:4;1934:26;1963:38;1981:4;1987:5;1994:6;1963:17;:38::i;:::-;2018:26;;;;1770:281;-1:-1:-1;;;;;1770:281:109:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;18182:2:145;3101:49:77;;;18164:21:145;18221:2;18201:18;;;18194:30;-1:-1:-1;;;18240:18:145;;;18233:51;18301:18;;3101:49:77;17980:345:145;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;18459:19:145;;18503:2;18494:12;;18330:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;18719:2:145;3636:134:77;;;18701:21:145;18758:2;18738:18;;;18731:30;18797:34;18777:18;;;18770:62;-1:-1:-1;;;18848:18:145;;;18841:44;18902:19;;3636:134:77;18517:410:145;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;18459:19:145;;;18503:2;18494:12;;18330:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;19134:2:145;3893:176:77;;;19116:21:145;19173:2;19153:18;;;19146:30;19212:31;19192:18;;;19185:59;19261:18;;3893:176:77;18932:353:145;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;18459:19:145;;;18503:2;18494:12;;18330:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;19492:2:145;4222:186:77;;;19474:21:145;19531:2;19511:18;;;19504:30;19570:34;19550:18;;;19543:62;-1:-1:-1;;;19621:18:145;;;19614:37;19668:19;;4222:186:77;19290:403:145;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;19900:2:145;4509:156:77;;;19882:21:145;19939:2;19919:18;;;19912:30;19978:34;19958:18;;;19951:62;-1:-1:-1;;;20029:18:145;;;20022:36;20075:19;;4509:156:77;19698:402:145;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;20307:2:145;5384:158:77;;;20289:21:145;20346:2;20326:18;;;20319:30;20385:34;20365:18;;;20358:62;20456:29;20436:18;;;20429:57;20503:19;;5384:158:77;20105:423:145;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;20735:2:145;5626:162:77;;;20717:21:145;20774:2;20754:18;;;20747:30;20813:34;20793:18;;;20786:62;20884:28;20864:18;;;20857:56;20930:19;;5626:162:77;20533:422:145;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;21480:2:145;7009:171:77;;;21462:21:145;21519:2;21499:18;;;21492:30;21558:34;21538:18;;;21531:62;21629:28;21609:18;;;21602:56;21675:19;;7009:171:77;21278:422:145;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;21907:2:145;7843:185:77;;;21889:21:145;21946:2;21926:18;;;21919:30;21985:34;21965:18;;;21958:62;22056:31;22036:18;;;22029:59;22105:19;;7843:185:77;21705:425:145;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;22337:2:145;8463:156:77;;;22319:21:145;22376:2;22356:18;;;22349:30;22415:34;22395:18;;;22388:62;22486:27;22466:18;;;22459:55;22531:19;;8463:156:77;22135:421:145;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;22763:2:145;8703:160:77;;;22745:21:145;22802:2;22782:18;;;22775:30;22841:34;22821:18;;;22814:62;22912:26;22892:18;;;22885:54;22956:19;;8703:160:77;22561:420:145;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;23188:2:145;9439:60:77;;;23170:21:145;23227:2;23207:18;;;23200:30;23266:34;23246:18;;;23239:62;-1:-1:-1;;;23317:18:145;;;23310:48;23375:19;;9439:60:77;22986:414:145;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;23607:2:145;9556:50:77;;;23589:21:145;23646:2;23626:18;;;23619:30;23685:34;23665:18;;;23658:62;-1:-1:-1;;;23736:18:145;;;23729:38;23784:19;;9556:50:77;23405:404:145;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;24156:2:145;9641:47:77;;;24138:21:145;24195:2;24175:18;;;24168:30;24234:34;24214:18;;;24207:62;-1:-1:-1;;;24285:18:145;;;24278:35;24330:19;;9641:47:77;23954:401:145;2954:6741:77;;;;;;:::o;1978:1895:75:-;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;24562:2:145;2161:136:75;;;24544:21:145;24601:2;24581:18;;;24574:30;24640:34;24620:18;;;24613:62;24711:26;24691:18;;;24684:54;24755:19;;2161:136:75;24360:420:145;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;24987:2:145;2308:134:75;;;24969:21:145;25026:2;25006:18;;;24999:30;25065:34;25045:18;;;25038:62;-1:-1:-1;;;25116:18:145;;;25109:48;25174:19;;2308:134:75;24785:414:145;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;25406:2:145;12579:55:75;;;25388:21:145;25445:2;25425:18;;;25418:30;25484:28;25464:18;;;25457:56;25530:18;;12579:55:75;25204:350:145;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:120:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:120;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:120;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:120;3166:384;-1:-1:-1;;3166:384:120:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;25761:2:145;4505:137:75;;;25743:21:145;25800:2;25780:18;;;25773:30;25839:34;25819:18;;;25812:62;25910:27;25890:18;;;25883:55;25955:19;;4505:137:75;25559:421:145;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;26187:2:145;4653:136:75;;;26169:21:145;26226:2;26206:18;;;26199:30;26265:34;26245:18;;;26238:62;-1:-1:-1;;;26316:18:145;;;26309:50;26376:19;;4653:136:75;25985:416:145;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1213:551:109:-;1341:7;1399:5;1378:6;:13;1394:1;1378:17;;;;:::i;:::-;1372:24;;:1;:24;:::i;:::-;:32;1364:41;;;;;;1431:4;1415:13;1468:268;1475:5;1484:1;1475:10;1468:268;;1505:9;1513:1;1505:5;:9;:::i;:::-;1518:1;1505:14;1501:184;;1547:38;1567:6;1574:1;1567:9;;;;;;;;:::i;:::-;;;;;;;1578:5;1554:30;;;;;;;;27937:19:145;;;27981:2;27972:12;;27965:28;28018:2;28009:12;;27780:247;1554:30:109;;;;-1:-1:-1;;1554:30:109;;;;;;;;;;1547:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1539:46;;1501:184;;;1632:38;1652:5;1659:6;1666:1;1659:9;;;;;;;;:::i;:::-;;;;;;;1639:30;;;;;;;;27937:19:145;;;27981:2;27972:12;;27965:28;28018:2;28009:12;;27780:247;1639:30:109;;;;-1:-1:-1;;1639:30:109;;;;;;;;;;1632:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1624:46;;1501:184;1698:10;1707:1;1698:10;;:::i;:::-;;-1:-1:-1;1722:3:109;;;;:::i;:::-;;;;1468:268;;;-1:-1:-1;1752:5:109;1213:551;-1:-1:-1;;;;1213:551:109:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;28717:2:145;6699:156:75;;;28699:21:145;28756:2;28736:18;;;28729:30;-1:-1:-1;;;;;;;;;;;28775:18:145;;;28768:62;28866:34;28846:18;;;28839:62;-1:-1:-1;;;28917:19:145;;;28910:45;28972:19;;6699:156:75;28515:482:145;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;29204:2:145;7025:177:75;;;29186:21:145;29243:2;29223:18;;;29216:30;29282:34;29262:18;;;29255:62;29353:34;29333:18;;;29326:62;-1:-1:-1;;;29404:19:145;;;29397:44;29458:19;;7025:177:75;29002:481:145;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;29690:2:145;7387:164:75;;;29672:21:145;29729:2;29709:18;;;29702:30;-1:-1:-1;;;;;;;;;;;29748:18:145;;;29741:62;29839:34;29819:18;;;29812:62;-1:-1:-1;;;29890:19:145;;;29883:48;29948:19;;7387:164:75;29488:485:145;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;30180:2:145;7721:159:75;;;30162:21:145;30219:2;30199:18;;;30192:30;-1:-1:-1;;;;;;;;;;;30238:18:145;;;30231:62;30329:34;30309:18;;;30302:62;-1:-1:-1;;;30380:19:145;;;30373:41;30431:19;;7721:159:75;29978:478:145;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;30663:2:145;8042:142:75;;;30645:21:145;30702:2;30682:18;;;30675:30;-1:-1:-1;;;;;;;;;;;30721:18:145;;;30714:62;30812:34;30792:18;;;30785:62;-1:-1:-1;;;30863:19:145;;;30856:39;30912:19;;8042:142:75;30461:476:145;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;31144:2:145;8199:168:75;;;31126:21:145;31183:2;31163:18;;;31156:30;-1:-1:-1;;;;;;;;;;;31202:18:145;;;31195:62;31293:34;31273:18;;;31266:62;-1:-1:-1;;;31344:19:145;;;31337:43;31397:19;;8199:168:75;30942:480:145;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;31629:2:145;8617:153:75;;;31611:21:145;31668:2;31648:18;;;31641:30;-1:-1:-1;;;;;;;;;;;31687:18:145;;;31680:62;31778:34;31758:18;;;31751:62;-1:-1:-1;;;31829:19:145;;;31822:41;31880:19;;8617:153:75;31427:478:145;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;32112:2:145;8935:161:75;;;32094:21:145;32151:2;32131:18;;;32124:30;-1:-1:-1;;;;;;;;;;;32170:18:145;;;32163:62;32261:34;32241:18;;;32234:62;-1:-1:-1;;;32312:19:145;;;32305:44;32366:19;;8935:161:75;31910:481:145;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;32598:2:145;9266:157:75;;;32580:21:145;32637:2;32617:18;;;32610:30;-1:-1:-1;;;;;;;;;;;32656:18:145;;;32649:62;32747:34;32727:18;;;32720:62;-1:-1:-1;;;32798:19:145;;;32791:39;32847:19;;9266:157:75;32396:476:145;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;33079:2:145;9588:141:75;;;33061:21:145;33118:2;33098:18;;;33091:30;-1:-1:-1;;;;;;;;;;;33137:18:145;;;33130:62;33228:34;33208:18;;;33201:62;-1:-1:-1;;;33279:19:145;;;33272:37;33326:19;;9588:141:75;32877:474:145;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;33558:2:145;9744:168:75;;;33540:21:145;33597:2;33577:18;;;33570:30;-1:-1:-1;;;;;;;;;;;33616:18:145;;;33609:62;33707:34;33687:18;;;33680:62;-1:-1:-1;;;33758:19:145;;;33751:41;33809:19;;9744:168:75;33356:478:145;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;34041:2:145;858:50:74;;;34023:21:145;34080:2;34060:18;;;34053:30;-1:-1:-1;;;34099:18:145;;;34092:44;34153:18;;858:50:74;33839:338:145;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;34041:2:145;922:53:74;;;34023:21:145;34080:2;34060:18;;;34053:30;-1:-1:-1;;;34099:18:145;;;34092:44;34153:18;;922:53:74;33839:338:145;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;34384:2:145;989:63:74;;;34366:21:145;34423:2;34403:18;;;34396:30;-1:-1:-1;;;34442:18:145;;;34435:47;34499:18;;989:63:74;34182:341:145;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;34730:2:145;11438:55:75;;;34712:21:145;34769:2;34749:18;;;34742:30;34808:28;34788:18;;;34781:56;34854:18;;11438:55:75;34528:350:145;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;34730:2:145;11598:72:75;;;34712:21:145;34769:2;34749:18;;;34742:30;34808:28;34788:18;;;34781:56;34854:18;;11598:72:75;34528:350:145;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:145:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:145;;14:180;-1:-1:-1;14:180:145:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:255::-;742:2;727:18;;775:1;764:13;;754:47;;781:18;;:::i;846:347::-;897:8;907:6;961:3;954:4;946:6;942:17;938:27;928:55;;979:1;976;969:12;928:55;-1:-1:-1;1002:20:145;;-1:-1:-1;;;;;1034:30:145;;1031:50;;;1077:1;1074;1067:12;1031:50;1114:4;1106:6;1102:17;1090:29;;1166:3;1159:4;1150:6;1142;1138:19;1134:30;1131:39;1128:59;;;1183:1;1180;1173:12;1128:59;846:347;;;;;:::o;1198:367::-;1261:8;1271:6;1325:3;1318:4;1310:6;1306:17;1302:27;1292:55;;1343:1;1340;1333:12;1292:55;-1:-1:-1;1366:20:145;;-1:-1:-1;;;;;1398:30:145;;1395:50;;;1441:1;1438;1431:12;1395:50;1478:4;1470:6;1466:17;1454:29;;1538:3;1531:4;1521:6;1518:1;1514:14;1506:6;1502:27;1498:38;1495:47;1492:67;;;1555:1;1552;1545:12;1570:127;1631:10;1626:3;1622:20;1619:1;1612:31;1662:4;1659:1;1652:15;1686:4;1683:1;1676:15;1702:275;1773:2;1767:9;1838:2;1819:13;;-1:-1:-1;;1815:27:145;1803:40;;-1:-1:-1;;;;;1858:34:145;;1894:22;;;1855:62;1852:88;;;1920:18;;:::i;:::-;1956:2;1949:22;1702:275;;-1:-1:-1;1702:275:145:o;1982:530::-;2024:5;2077:3;2070:4;2062:6;2058:17;2054:27;2044:55;;2095:1;2092;2085:12;2044:55;2131:6;2118:20;-1:-1:-1;;;;;2153:2:145;2150:26;2147:52;;;2179:18;;:::i;:::-;2223:55;2266:2;2247:13;;-1:-1:-1;;2243:27:145;2272:4;2239:38;2223:55;:::i;:::-;2303:2;2294:7;2287:19;2349:3;2342:4;2337:2;2329:6;2325:15;2321:26;2318:35;2315:55;;;2366:1;2363;2356:12;2315:55;2431:2;2424:4;2416:6;2412:17;2405:4;2396:7;2392:18;2379:55;2479:1;2454:16;;;2472:4;2450:27;2443:38;;;;2458:7;1982:530;-1:-1:-1;;;1982:530:145:o;2517:161::-;2582:5;2627:3;2618:6;2613:3;2609:16;2605:26;2602:46;;;2644:1;2641;2634:12;2602:46;-1:-1:-1;2666:6:145;2517:161;-1:-1:-1;2517:161:145:o;2683:1546::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;3039:3;3027:9;3018:7;3014:23;3010:33;3007:53;;;3056:1;3053;3046:12;3007:53;3096:9;3083:23;-1:-1:-1;;;;;3166:2:145;3158:6;3155:14;3152:34;;;3182:1;3179;3172:12;3152:34;3221:58;3271:7;3262:6;3251:9;3247:22;3221:58;:::i;:::-;3298:8;;-1:-1:-1;3195:84:145;-1:-1:-1;3386:2:145;3371:18;;3358:32;;-1:-1:-1;3402:16:145;;;3399:36;;;3431:1;3428;3421:12;3399:36;3470:72;3534:7;3523:8;3512:9;3508:24;3470:72;:::i;:::-;3561:8;;-1:-1:-1;3444:98:145;-1:-1:-1;3643:2:145;3628:18;;3615:32;;-1:-1:-1;3700:2:145;3685:18;;3672:32;;-1:-1:-1;3716:16:145;;;3713:36;;;3745:1;3742;3735:12;3713:36;3784:72;3848:7;3837:8;3826:9;3822:24;3784:72;:::i;:::-;3875:8;;-1:-1:-1;3758:98:145;-1:-1:-1;3963:3:145;3948:19;;3935:33;;-1:-1:-1;3980:16:145;;;3977:36;;;4009:1;4006;3999:12;3977:36;;4032:51;4075:7;4064:8;4053:9;4049:24;4032:51;:::i;:::-;4022:61;;;4130:3;4119:9;4115:19;4102:33;4092:43;;4154:69;4215:7;4209:3;4198:9;4194:19;4154:69;:::i;:::-;4144:79;;2683:1546;;;;;;;;;;;;;:::o;4234:163::-;4301:20;;4361:10;4350:22;;4340:33;;4330:61;;4387:1;4384;4377:12;4330:61;4234:163;;;:::o;4402:184::-;4460:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:52;;;4529:1;4526;4519:12;4481:52;4552:28;4570:9;4552:28;:::i;4591:131::-;-1:-1:-1;;;;;4666:31:145;;4656:42;;4646:70;;4712:1;4709;4702:12;4727:684;4925:3;4910:19;;4987:10;4960:25;4978:6;4960:25;:::i;:::-;4956:42;4945:9;4938:61;5046:4;5038:6;5034:17;5021:31;5061;5086:5;5061:31;:::i;:::-;-1:-1:-1;;;;;5168:14:145;;;5161:4;5146:20;;5139:44;5232:4;5220:17;;5207:31;;5247:33;5207:31;5247:33;:::i;:::-;5318:16;5311:4;5296:20;;5289:46;5398:4;5386:17;;;5373:31;5351:20;;;;5344:61;;;;4727:684;:::o;5416:250::-;5501:1;5511:113;5525:6;5522:1;5519:13;5511:113;;;5601:11;;;5595:18;5582:11;;;5575:39;5547:2;5540:10;5511:113;;;-1:-1:-1;;5658:1:145;5640:16;;5633:27;5416:250::o;5671:270::-;5712:3;5750:5;5744:12;5777:6;5772:3;5765:19;5793:76;5862:6;5855:4;5850:3;5846:14;5839:4;5832:5;5828:16;5793:76;:::i;:::-;5923:2;5902:15;-1:-1:-1;;5898:29:145;5889:39;;;;5930:4;5885:50;;5671:270;-1:-1:-1;;5671:270:145:o;5946:695::-;6205:3;6194:9;6187:22;6246:6;6240:3;6229:9;6225:19;6218:35;6304:6;6296;6290:3;6279:9;6275:19;6262:49;6361:1;6355:3;6346:6;6335:9;6331:22;6327:32;6320:43;6168:4;6422:2;6418:7;6413:2;6405:6;6401:15;6397:29;6386:9;6382:45;6489:3;6477:9;6473:2;6469:18;6465:28;6458:4;6447:9;6443:20;6436:58;6511:38;6544:3;6540:2;6536:12;6528:6;6511:38;:::i;:::-;6580:2;6565:18;;6558:34;;;;-1:-1:-1;;6623:2:145;6608:18;6601:34;6503:46;5946:695;-1:-1:-1;;;5946:695:145:o;6998:171::-;7065:20;;-1:-1:-1;;;;;7114:30:145;;7104:41;;7094:69;;7159:1;7156;7149:12;7174:256;7240:6;7248;7301:2;7289:9;7280:7;7276:23;7272:32;7269:52;;;7317:1;7314;7307:12;7269:52;7340:28;7358:9;7340:28;:::i;:::-;7330:38;;7387:37;7420:2;7409:9;7405:18;7387:37;:::i;:::-;7377:47;;7174:256;;;;;:::o;7632:273::-;7724:6;7777:2;7765:9;7756:7;7752:23;7748:32;7745:52;;;7793:1;7790;7783:12;7745:52;7825:9;7819:16;7844:31;7869:5;7844:31;:::i;8116:184::-;8186:6;8239:2;8227:9;8218:7;8214:23;8210:32;8207:52;;;8255:1;8252;8245:12;8207:52;-1:-1:-1;8278:16:145;;8116:184;-1:-1:-1;8116:184:145:o;9011:934::-;9147:9;-1:-1:-1;;;;;9222:2:145;9214:6;9211:14;9208:40;;;9228:18;;:::i;:::-;9274:6;9271:1;9267:14;9300:4;9324:28;9348:2;9344;9340:11;9324:28;:::i;:::-;9386:19;;;9456:14;;;;9421:12;;;;9493:14;9482:26;;9479:46;;;9521:1;9518;9511:12;9479:46;9545:5;9559:353;9575:6;9570:3;9567:15;9559:353;;;9661:3;9648:17;9697:2;9684:11;9681:19;9678:109;;;9741:1;9770:2;9766;9759:14;9678:109;9812:57;9854:14;9840:11;9833:5;9829:23;9812:57;:::i;:::-;9800:70;;-1:-1:-1;9890:12:145;;;;9592;;9559:353;;;-1:-1:-1;9934:5:145;9011:934;-1:-1:-1;;;;;;;9011:934:145:o;9950:247::-;10009:6;10062:2;10050:9;10041:7;10037:23;10033:32;10030:52;;;10078:1;10075;10068:12;10030:52;10117:9;10104:23;10136:31;10161:5;10136:31;:::i;10555:277::-;10622:6;10675:2;10663:9;10654:7;10650:23;10646:32;10643:52;;;10691:1;10688;10681:12;10643:52;10723:9;10717:16;10776:5;10769:13;10762:21;10755:5;10752:32;10742:60;;10798:1;10795;10788:12;12091:127;12152:10;12147:3;12143:20;12140:1;12133:31;12183:4;12180:1;12173:15;12207:4;12204:1;12197:15;12223:128;12290:9;;;12311:11;;;12308:37;;;12325:18;;:::i;12759:168::-;12799:7;12865:1;12861;12857:6;12853:14;12850:1;12847:21;12842:1;12835:9;12828:17;12824:45;12821:71;;;12872:18;;:::i;:::-;-1:-1:-1;12912:9:145;;12759:168::o;12932:125::-;12997:9;;;13018:10;;;13015:36;;;13031:18;;:::i;13062:183::-;-1:-1:-1;;;;;13181:10:145;;;13169;;;13165:27;;13204:12;;;13201:38;;;13219:18;;:::i;13250:127::-;13311:10;13306:3;13302:20;13299:1;13292:31;13342:4;13339:1;13332:15;13366:4;13363:1;13356:15;13382:112;13414:1;13440;13430:35;;13445:18;;:::i;:::-;-1:-1:-1;13479:9:145;;13382:112::o;13499:120::-;13539:1;13565;13555:35;;13570:18;;:::i;:::-;-1:-1:-1;13604:9:145;;13499:120::o;14026:127::-;14087:10;14082:3;14078:20;14075:1;14068:31;14118:4;14115:1;14108:15;14142:4;14139:1;14132:15;15986:1113;16343:25;;;16437:10;16425:23;;16387:2;16405:18;;;16398:51;;;;-1:-1:-1;;;;;16485:32:145;;16480:2;16465:18;;16458:60;-1:-1:-1;;;;;16554:31:145;;16549:2;16534:18;;16527:59;16330:3;16617;16602:19;;16595:32;;;16676:13;;16315:19;;;16698:22;;;16282:4;;16778:15;;;;16751:3;16736:19;;;16282:4;16821:169;16835:6;16832:1;16829:13;16821:169;;;16896:13;;16884:26;;16965:15;;;;16930:12;;;;16857:1;16850:9;16821:169;;;16825:3;;17036:9;17031:3;17027:19;17021:3;17010:9;17006:19;16999:48;17064:29;17089:3;17081:6;17064:29;:::i;:::-;17056:37;15986:1113;-1:-1:-1;;;;;;;;;;;15986:1113:145:o;17104:287::-;17233:3;17271:6;17265:13;17287:66;17346:6;17341:3;17334:4;17326:6;17322:17;17287:66;:::i;:::-;17369:16;;;;;17104:287;-1:-1:-1;;17104:287:145:o;17396:290::-;17465:6;17518:2;17506:9;17497:7;17493:23;17489:32;17486:52;;;17534:1;17531;17524:12;17486:52;17560:16;;-1:-1:-1;;;;;;17605:32:145;;17595:43;;17585:71;;17652:1;17649;17642:12;20960:157;20990:1;21024:4;21021:1;21017:12;21048:3;21038:37;;21055:18;;:::i;:::-;21107:3;21100:4;21097:1;21093:12;21089:22;21084:27;;;20960:157;;;;:::o;21122:151::-;21212:4;21205:12;;;21191;;;21187:31;;21230:14;;21227:40;;;21247:18;;:::i;23814:135::-;23853:3;23874:17;;;23871:43;;23894:18;;:::i;:::-;-1:-1:-1;23941:1:145;23930:13;;23814:135::o;26406:422::-;26495:1;26538:5;26495:1;26552:270;26573:7;26563:8;26560:21;26552:270;;;26632:4;26628:1;26624:6;26620:17;26614:4;26611:27;26608:53;;;26641:18;;:::i;:::-;26691:7;26681:8;26677:22;26674:55;;;26711:16;;;;26674:55;26790:22;;;;26750:15;;;;26552:270;;;26556:3;26406:422;;;;;:::o;26833:806::-;26882:5;26912:8;26902:80;;-1:-1:-1;26953:1:145;26967:5;;26902:80;27001:4;26991:76;;-1:-1:-1;27038:1:145;27052:5;;26991:76;27083:4;27101:1;27096:59;;;;27169:1;27164:130;;;;27076:218;;27096:59;27126:1;27117:10;;27140:5;;;27164:130;27201:3;27191:8;27188:17;27185:43;;;27208:18;;:::i;:::-;-1:-1:-1;;27264:1:145;27250:16;;27279:5;;27076:218;;27378:2;27368:8;27365:16;27359:3;27353:4;27350:13;27346:36;27340:2;27330:8;27327:16;27322:2;27316:4;27313:12;27309:35;27306:77;27303:159;;;-1:-1:-1;27415:19:145;;;27447:5;;27303:159;27494:34;27519:8;27513:4;27494:34;:::i;:::-;27564:6;27560:1;27556:6;27552:19;27543:7;27540:32;27537:58;;;27575:18;;:::i;:::-;27613:20;;26833:806;-1:-1:-1;;;26833:806:145:o;27644:131::-;27704:5;27733:36;27760:8;27754:4;27733:36;:::i;28032:478::-;28234:2;28216:21;;;28273:2;28253:18;;;28246:30;28312:34;28307:2;28292:18;;28285:62;28383:34;28378:2;28363:18;;28356:62;-1:-1:-1;;;28449:3:145;28434:19;;28427:41;28500:3;28485:19;;28032:478::o", - "linkReferences": {} + "object": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612e2d565b60016020526000908152604090205460ff1681565b6040516100769190612e5c565b60405180910390f35b6100a261008d366004612e2d565b60026020526000908152604090205460ff1681565b6040516100769190612e76565b6100c26100bd366004612fe3565b6100c4565b005b6100d96100d460208301836130de565b610423565b6100ee6100e960208301836130de565b610609565b600081604051602001610101919061310e565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016101349594939291906131b7565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612e46565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f613221565b90925090506101ee826101e960208801886130de565b6106be565b600080546001600160a01b0316637599735c61020d60208901896130de565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102739190613254565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e69190613271565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b600061037e8c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061037960208e018e6130de565b610a7c565b9050806103cd5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103fd6103dd8d8f61328a565b8f8d8d8d60200160208101906103f3919061330d565b8e60600135610cf8565b9150915061040f888a89888686611043565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104969190613254565b6001600160a01b0316036104e75760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105599190613254565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba919061332a565b6106065760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b919061332a565b156106065760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107319190613254565b6001600160a01b0316036107825760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190613254565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108679190613271565b6000036108b65760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109299190613254565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190613271565b6109a69042613362565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190613271565b811015610a775760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afa9190613271565b9050600081856001600160401b031610610b1557601b610b18565b60075b60ff169050600082866001600160401b031610610b5457612000610b45846001600160401b038916613362565b610b4f919061338b565b610b69565b610b696120006001600160401b03881661338b565b90506000866001600160401b0316886001600160401b031603610ba85750600b610b958161020061339f565b610ba1906101836133be565b9050610cdd565b612000610bb5888a6133d1565b6001600160401b031611610c175750600b610bd181602061339f565b610bdc9060066133be565b9050610bf36120006001600160401b0389166133f1565b610bff6120008361339f565b610c0991906133be565b9050610b958161020061339f565b876001600160401b0316876001600160401b03161015610c955750600b82610c4082602061339f565b610c4a91906133be565b9050610c5781600261339f565b610c629060006133be565b905081610c7363010000008361339f565b610c7d91906133be565b9050610c8a81600261339f565b610bdc9060016133be565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101bb565b610ce98b828c8c611238565b9b9a5050505050505050505050565b6060806000610d08878a8a611252565b9050600081600081518110610d1f57610d1f613405565b01602001516001600160f81b03191690506000600160f81b821480610d515750600160f91b6001600160f81b03198316145b15610d5e57506001610dc3565b600360fe1b6001600160f81b0319831610610d7b57506000610dc3565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610de59190613362565b8152602001610df485856133be565b905290506000610e0382611aec565b90508051600414610e4f5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610e7482600381518110610e6757610e67613405565b6020026020010151611aec565b905080518c10610ec65760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610edd828e81518110610e6757610e67613405565b90506000610f0482600081518110610ef757610ef7613405565b6020026020010151611d11565b90508c6001600160a01b0316816001600160a01b031614610f785760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610f98610f9384600181518110610e6757610e67613405565b611d85565b90508c81600081518110610fae57610fae613405565b6020026020010151146110035760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b60006110288460028151811061101b5761101b613405565b6020026020010151611e35565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961105e60208b018b6130de565b61106e60408c0160208d0161330d565b8989896040516024016110869695949392919061341b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506110ca9060608a01908a0161330d565b6001600160a01b0316816040516110e1919061349b565b6000604051808303816000865af19150503d806000811461111e576040519150601f19603f3d011682016040523d82523d6000602084013e611123565b606091505b5080519194509250600091506020036111635760008280602001905181019061114c91906134b7565b6001600160e01b031916635160951d60e11b149150505b82801561116d5750805b15611190576000878152600160205260409020805460ff191660021790556111ad565b6000878152600160208190526040909120805460ff191690911790555b6111bd6040890160208a0161330d565b6001600160a01b03166111d360208a018a6130de565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61120b60608d0160408e0161330d565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611246868686611f61565b90921495945050505050565b6060600084511161129d5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b60006112a8846120f9565b905060006112b5866121e7565b90506000846040516020016112cc91815260200190565b60405160208183030381529060405290506000805b8451811015611a8e5760008582815181106112fe576112fe613405565b6020026020010151905084518311156113705760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b8260000361140f57805180516020918201206040516113be9261139892910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61140a5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b611505565b80515160201161149557805180516020918201206040516114399261139892910190815260200190565b61140a5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146115055760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b611511601060016133be565b816020015151036116b15784518303611649576000611540826020015160108151811061101b5761101b613405565b905060008151116115b95760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b600187516115c79190613362565b831461163b5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611ae595505050505050565b600085848151811061165d5761165d613405565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061168857611688613405565b6020026020010151905061169b81612301565b95506116a86001866133be565b94505050611a7b565b600281602001515103611a225760006116c982612326565b90506000816000815181106116e0576116e0613405565b016020015160f81c905060006116f76002836134e1565b611702906002613503565b90506000611713848360ff1661234a565b905060006117218a8961234a565b9050600061172f8383612380565b9050808351146117a75760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff8516600214806117bc575060ff85166003145b1561196257808251146118375760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b6000611853886020015160018151811061101b5761101b613405565b905060008151116118cc5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516118da9190613362565b891461194e5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611ae59b505050505050505050505050565b60ff85161580611975575060ff85166001145b156119b4576119a1876020015160018151811061199457611994613405565b6020026020010151612301565b99506119ad818a6133be565b9850611a17565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b505050505050611a7b565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b5080611a868161351c565b9150506112e1565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611afc856123ff565b919450925090506001816001811115611b1757611b17612e46565b14611b8a5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611b9683856133be565b14611bfe5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611c175790505090506000845b8751811015611d0557600080611c8a6040518060400160405280858d60000151611c6e9190613362565b8152602001858d60200151611c8391906133be565b90526123ff565b509150915060405180604001604052808383611ca691906133be565b8152602001848c60200151611cbb91906133be565b815250858581518110611cd057611cd0613405565b6020908102919091010152611ce66001856133be565b9350611cf281836133be565b611cfc90846133be565b92505050611c44565b50815295945050505050565b8051600090600103611d2557506000919050565b8151601514611d765760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611d7f82612ac2565b92915050565b6060600082516001600160401b03811115611da257611da2612f16565b604051908082528060200260200182016040528015611dcb578160200160208202803683370190505b50905060005b8351811015611e2e57611dfc848281518110611def57611def613405565b6020026020010151612ac2565b60001b828281518110611e1157611e11613405565b602090810291909101015280611e268161351c565b915050611dd1565b5092915050565b60606000806000611e45856123ff565b919450925090506000816001811115611e6057611e60612e46565b14611ed35760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611edd82846133be565b855114611f495760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611f5885602001518484612acd565b95945050505050565b60008282516001611f7291906133be565b611f7d906002613619565b11611f8757600080fd5b8360005b846001146120f057611f9e6002866133f1565b60010361203d576002848281518110611fb957611fb9613405565b602002602001015183604051602001611fdc929190918252602082015260400190565b60408051601f1981840301815290829052611ff69161349b565b602060405180830381855afa158015612013573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906120369190613271565b91506120d1565b60028285838151811061205257612052613405565b6020026020010151604051602001612074929190918252602082015260400190565b60408051601f198184030181529082905261208e9161349b565b602060405180830381855afa1580156120ab573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906120ce9190613271565b91505b6120dc60028661338b565b9450806120e88161351c565b915050611f8b565b50949350505050565b80516060906000816001600160401b0381111561211857612118612f16565b60405190808252806020026020018201604052801561215d57816020015b60408051808201909152606080825260208201528152602001906001900390816121365790505b50905060005b828110156121df57604051806040016040528086838151811061218857612188613405565b602002602001015181526020016121b78784815181106121aa576121aa613405565b6020026020010151612b6d565b8152508282815181106121cc576121cc613405565b6020908102919091010152600101612163565b509392505050565b805160609060006121f982600261339f565b6001600160401b0381111561221057612210612f16565b6040519080825280601f01601f19166020018201604052801561223a576020820181803683370190505b5090506000805b838110156122f75785818151811061225b5761225b613405565b6020910101516001600160f81b03198116925060041c60ff60f41b168361228383600261339f565b8151811061229357612293613405565b60200101906001600160f81b031916908160001a905350600f60f81b8216836122bd83600261339f565b6122c89060016133be565b815181106122d8576122d8613405565b60200101906001600160f81b031916908160001a905350600101612241565b5090949350505050565b6060602082600001511061231d5761231882611e35565b611d7f565b611d7f82612b80565b6060611d7f612345836020015160008151811061101b5761101b613405565b6121e7565b6060825182106123695750604080516020810190915260008152611d7f565b611ae5838384865161237b9190613362565b612b96565b60008060008351855110612395578351612398565b84515b90505b80821080156123ef57508382815181106123b7576123b7613405565b602001015160f81c60f81b6001600160f81b0319168583815181106123de576123de613405565b01602001516001600160f81b031916145b156121df5781600101915061239b565b6000806000808460000151116124275760405162461bcd60e51b81526004016101bb90613625565b6020840151805160001a607f811161244c576000600160009450945094505050612abb565b60b781116125a9576000612461608083613362565b9050808760000151116124e15760405162461bcd60e51b815260206004820152604e602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b031916908214158061250e5750600160ff1b6001600160f81b0319821610155b6125965760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b5060019550935060009250612abb915050565b60bf81116127ea5760006125be60b783613362565b9050808760000151116126415760405162461bcd60e51b8152602060048201526051602482015260008051602061369683398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036126c85760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c6037811161274b5760405162461bcd60e51b8152602060048201526048602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b61275581846133be565b8951116127cd5760405162461bcd60e51b815260206004820152604c602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6127d88360016133be565b9750955060009450612abb9350505050565b60f7811161288c5760006127ff60c083613362565b90508087600001511161287b5760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b600195509350849250612abb915050565b600061289960f783613362565b9050808760000151116129185760405162461bcd60e51b815260206004820152604d602482015260008051602061369683398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b031916600081900361299d5760405162461bcd60e51b8152602060048201526048602482015260008051602061369683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c60378111612a1e5760405162461bcd60e51b8152602060048201526046602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b612a2881846133be565b895111612a9e5760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b612aa98360016133be565b9750955060019450612abb9350505050565b9193909250565b6000611d7f82612cd7565b60606000826001600160401b03811115612ae957612ae9612f16565b6040519080825280601f01601f191660200182016040528015612b13576020820181803683370190505b50905082600003612b25579050611ae5565b6000612b3185876133be565b90506020820160005b85811015612b52578281015182820152602001612b3a565b85811115612b61576000868301525b50919695505050505050565b6060611d7f612b7b83612dda565b611aec565b6060611d7f826020015160008460000151612acd565b60608182601f011015612bdc5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612c1f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612c665760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612c8557604051915060008252602082016040526120f0565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612cbe578051835260209283019201612ca6565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612d2e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612d3c856123ff565b919450925090506000816001811115612d5757612d57612e46565b14612da45760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612db691906133be565b80519091506020841015612dd05760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612e0f5760405162461bcd60e51b81526004016101bb90613625565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612e3f57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612e7057612e70612e46565b91905290565b6020810160028310612e7057612e70612e46565b60008083601f840112612e9c57600080fd5b5081356001600160401b03811115612eb357600080fd5b602083019150836020828501011115612ecb57600080fd5b9250929050565b60008083601f840112612ee457600080fd5b5081356001600160401b03811115612efb57600080fd5b6020830191508360208260051b8501011115612ecb57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612f5457612f54612f16565b604052919050565b600082601f830112612f6d57600080fd5b81356001600160401b03811115612f8657612f86612f16565b612f99601f8201601f1916602001612f2c565b818152846020838601011115612fae57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612fdd57600080fd5b50919050565b6000806000806000806000806000806101408b8d03121561300357600080fd5b8a356001600160401b038082111561301a57600080fd5b6130268e838f01612e8a565b909c509a5060208d013591508082111561303f57600080fd5b61304b8e838f01612ed2565b909a50985060408d0135975060608d013591508082111561306b57600080fd5b6130778e838f01612ed2565b909750955060808d013591508082111561309057600080fd5b5061309d8d828e01612f5c565b93505060a08b013591506130b48c60c08d01612fcb565b90509295989b9194979a5092959850565b803563ffffffff811681146130d957600080fd5b919050565b6000602082840312156130f057600080fd5b611ae5826130c5565b6001600160a01b038116811461060657600080fd5b6080810163ffffffff613120846130c5565b1682526020830135613131816130f9565b6001600160a01b039081166020840152604084013590613150826130f9565b166040830152606092830135929091019190915290565b60005b8381101561318257818101518382015260200161316a565b50506000910152565b600081518084526131a3816020860160208601613167565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526131f560a082018761318b565b60408401959095525050606001529392505050565b80356001600160401b03811681146130d957600080fd5b6000806040838503121561323457600080fd5b61323d8361320a565b915061324b6020840161320a565b90509250929050565b60006020828403121561326657600080fd5b8151611ae5816130f9565b60006020828403121561328357600080fd5b5051919050565b60006001600160401b03808411156132a4576132a4612f16565b8360051b60206132b5818301612f2c565b8681529185019181810190368411156132cd57600080fd5b865b84811015613301578035868111156132e75760008081fd5b6132f336828b01612f5c565b8452509183019183016132cf565b50979650505050505050565b60006020828403121561331f57600080fd5b8135611ae5816130f9565b60006020828403121561333c57600080fd5b81518015158114611ae557600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611d7f57611d7f61334c565b634e487b7160e01b600052601260045260246000fd5b60008261339a5761339a613375565b500490565b60008160001904831182151516156133b9576133b961334c565b500290565b80820180821115611d7f57611d7f61334c565b6001600160401b03828116828216039080821115611e2e57611e2e61334c565b60008261340057613400613375565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b818110156134875784518352938301939183019160010161346b565b505084810360a0860152610ce9818761318b565b600082516134ad818460208701613167565b9190910192915050565b6000602082840312156134c957600080fd5b81516001600160e01b031981168114611ae557600080fd5b600060ff8316806134f4576134f4613375565b8060ff84160691505092915050565b60ff8281168282160390811115611d7f57611d7f61334c565b60006001820161352e5761352e61334c565b5060010190565b600181815b808511156135705781600019048211156135565761355661334c565b8085161561356357918102915b93841c939080029061353a565b509250929050565b60008261358757506001611d7f565b8161359457506000611d7f565b81600181146135aa57600281146135b4576135d0565b6001915050611d7f565b60ff8411156135c5576135c561334c565b50506001821b611d7f565b5060208310610133831016604e8410600b84101617156135f3575081810a611d7f565b6135fd8383613535565b80600019048211156136115761361161334c565b029392505050565b6000611ae58383613578565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a264697066735822122094dab27a8a6e78e85044dd92ccb31d89b6b0659dad83111a1dfc623c4daa0d8e64736f6c63430008100033", + "sourceMap": "678:5426:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;723:59;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1533:1766:124:-;;;;;;:::i;:::-;;:::i;:::-;;;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:124;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:124;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:124;;6848:2:146;2243:115:124;;;6830:21:146;6887:2;6867:18;;;6860:30;6926:25;6906:18;;;6899:53;6969:18;;2243:115:124;;;;;;;;;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:124;-1:-1:-1;2460:60:124;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:124;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:124;;;;;;;;7597:23:146;;;;2563:56:124;;;7579:42:146;7552:18;;2563:56:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:124;;-1:-1:-1;;;;;8073:31:146;;2563:73:124;;;8055:50:146;-1:-1:-1;;;;;2563:64:124;;;;;;;8028:18:146;;2563:73:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:124;2646:58;;;;-1:-1:-1;;;2646:58:124;;8507:2:146;2646:58:124;;;8489:21:146;8546:2;8526:18;;;8519:30;-1:-1:-1;;;8565:18:146;;;8558:51;8626:18;;2646:58:124;8305:345:146;2646:58:124;2714:12;2729:134;2765:12;2779:17;;2729:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2798:10:124;;-1:-1:-1;2810:7:124;;-1:-1:-1;2819:6:124;;-1:-1:-1;2827:26:124;;;;:12;:26;:::i;:::-;2729:22;:134::i;:::-;2714:149;;2881:7;2873:47;;;;-1:-1:-1;;;2873:47:124;;8857:2:146;2873:47:124;;;8839:21:146;8896:2;8876:18;;;8869:30;8935:29;8915:18;;;8908:57;8982:18;;2873:47:124;8655:351:146;2873:47:124;2932:28;;2988:211;;3023:12;;2988:211;:::i;:::-;3049:12;3075:17;3106:8;3128:12;:26;;;;;;;;;;:::i;:::-;3168:12;:21;;;2988;:211::i;:::-;2931:268;;;;3210:82;3219:14;3235:12;3249:10;3261:6;3269:11;3282:9;3210:8;:82::i;:::-;1837:1462;;;;;;;;1533:1766;;;;;;;;;;:::o;3385:307::-;3543:1;3493:15;;:37;;-1:-1:-1;;;3493:37:124;;7609:10:146;7597:23;;3493:37:124;;;7579:42:146;-1:-1:-1;;;;;3493:15:124;;;;:28;;7552:18:146;;3493:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3485:60:124;;3464:119;;;;-1:-1:-1;;;3464:119:124;;10404:2:146;3464:119:124;;;10386:21:146;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:146;;;10455:54;10526:18;;3464:119:124;10202:348:146;3464:119:124;3601:15;;:37;;-1:-1:-1;;;3601:37:124;;7609:10:146;7597:23;;3601:37:124;;;7579:42:146;-1:-1:-1;;;;;3601:15:124;;;;:28;;7552:18:146;;3601:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3601:48:124;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3593:92;;;;-1:-1:-1;;;3593:92:124;;11039:2:146;3593:92:124;;;11021:21:146;11078:2;11058:18;;;11051:30;11117:31;11097:18;;;11090:59;11166:18;;3593:92:124;10837:353:146;3593:92:124;3385:307;:::o;3753:137::-;3828:15;;:31;;-1:-1:-1;;;3828:31:124;;7609:10:146;7597:23;;3828:31:124;;;7579:42:146;-1:-1:-1;;;;;3828:15:124;;;;:22;;7552:18:146;;3828:31:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3827:32;3819:64;;;;-1:-1:-1;;;3819:64:124;;11397:2:146;3819:64:124;;;11379:21:146;11436:2;11416:18;;;11409:30;-1:-1:-1;;;11455:18:146;;;11448:49;11514:18;;3819:64:124;11195:343:146;3960:620:124;4125:1;4075:15;;:37;;-1:-1:-1;;;4075:37:124;;7609:10:146;7597:23;;4075:37:124;;;7579:42:146;-1:-1:-1;;;;;4075:15:124;;;;:28;;7552:18:146;;4075:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4067:60:124;;4046:119;;;;-1:-1:-1;;;4046:119:124;;10404:2:146;4046:119:124;;;10386:21:146;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:146;;;10455:54;10526:18;;4046:119:124;10202:348:146;4046:119:124;4196:15;;:37;;-1:-1:-1;;;4196:37:124;;7609:10:146;7597:23;;4196:37:124;;;7579:42:146;-1:-1:-1;;;;;4196:15:124;;;;:28;;7552:18:146;;4196:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4196:54:124;;-1:-1:-1;;;;;8073:31:146;;4196:54:124;;;8055:50:146;-1:-1:-1;;;;;4196:48:124;;;;;;;8028:18:146;;4196:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4254:1;4196:59;4175:136;;;;-1:-1:-1;;;4175:136:124;;11934:2:146;4175:136:124;;;11916:21:146;11973:2;11953:18;;;11946:30;12012:32;11992:18;;;11985:60;12062:18;;4175:136:124;11732:354:146;4175:136:124;4321:19;4373:15;;:37;;-1:-1:-1;;;4373:37:124;;7609:10:146;7597:23;;4373:37:124;;;7579:42:146;-1:-1:-1;;;;;4373:15:124;;;;:28;;7552:18:146;;4373:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4373:54:124;;-1:-1:-1;;;;;8073:31:146;;4373:54:124;;;8055:50:146;-1:-1:-1;;;;;4373:48:124;;;;;;;8028:18:146;;4373:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4355:72;;:15;:72;:::i;:::-;4321:106;;4473:15;;;;;;;;-1:-1:-1;;;;;4473:15:124;-1:-1:-1;;;;;4473:38:124;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4458:11;:55;;4437:136;;;;-1:-1:-1;;;4437:136:124;;12558:2:146;4437:136:124;;;12540:21:146;12597:2;12577:18;;;12570:30;12636:34;12616:18;;;12609:62;-1:-1:-1;;;12687:18:146;;;12680:32;12729:19;;4437:136:124;12356:398:146;4437:136:124;4036:544;3960:620;;:::o;3094:1947:110:-;3372:46;;-1:-1:-1;;;3372:46:110;;;7597:23:146;;3372:46:110;;;7579:42:146;3330:4:110;;;;3372:16;;:31;;7552:18:146;;3372:46:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;14031:2:146;4896:40:110;;;14013:21:146;14070:2;14050:18;;;14043:30;14109:32;14089:18;;;14082:60;14159:18;;4896:40:110;13829:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;431:2729:121:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:121;;-1:-1:-1;1486:14:121;-1:-1:-1;;;1514:25:121;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:121;;;1514:54;1510:236;;;-1:-1:-1;1593:1:121;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:121;;;1611:135;;-1:-1:-1;1665:1:121;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:121;;14522:2:146;1697:38:121;;;14504:21:146;14561:2;14541:18;;;14534:30;14600;14580:18;;;14573:58;14648:18;;1697:38:121;14320:352:146;1611:135:121;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:121;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:121;;14879:2:146;2278:58:121;;;14861:21:146;14918:2;14898:18;;;14891:30;-1:-1:-1;;;14937:18:146;;;14930:52;14999:18;;2278:58:121;14677:346:146;2278:58:121;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:121;;15230:2:146;2495:59:121;;;15212:21:146;15269:2;15249:18;;;15242:30;15308:25;15288:18;;;15281:53;15351:18;;2495:59:121;15028:347:146;2495:59:121;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:121;:14;-1:-1:-1;;;;;2777:30:121;;2769:83;;;;-1:-1:-1;;;2769:83:121;;15582:2:146;2769:83:121;;;15564:21:146;15621:2;15601:18;;;15594:30;15660:34;15640:18;;;15633:62;-1:-1:-1;;;15711:18:146;;;15704:38;15759:19;;2769:83:121;15380:404:146;2769:83:121;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:121;;15991:2:146;2990:74:121;;;15973:21:146;16030:2;16010:18;;;16003:30;16069:32;16049:18;;;16042:60;16119:18;;2990:74:121;15789:354:146;2990:74:121;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:121;;-1:-1:-1;;;;;;;;;;;431:2729:121;;;;;;;;;:::o;4705:1397:124:-;4951:12;4973:17;4951:12;-1:-1:-1;;;5143:15:124;5176:27;;;;:13;:27;:::i;:::-;5221;;;;;;;;:::i;:::-;5266:7;5291:12;5321:10;5041:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5041:304:124;;;;;;;;;;;;;;-1:-1:-1;;;;;5041:304:124;-1:-1:-1;;;;;;5041:304:124;;;;;;;;;;;-1:-1:-1;5377:29:124;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5377:34:124;5412:11;5377:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5489:11:124;;5359:65;;-1:-1:-1;5359:65:124;-1:-1:-1;5445:22:124;;-1:-1:-1;5504:2:124;5489:17;5485:178;;5523:12;5550:4;5539:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5599:53:124;-1:-1:-1;;;5599:53:124;;-1:-1:-1;;5485:178:124;5677:7;:28;;;;;5688:17;5677:28;5673:215;;;5721:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5721:64:124;5752:33;5721:64;;;5673:215;;;5816:28;;;;5847:30;5816:28;;;;;;;;:61;;-1:-1:-1;;5816:61:124;;;;;;5673:215;5994:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5903:192:124;5953:27;;;;:13;:27;:::i;:::-;5903:192;;5924:15;5903:192;6035:29;;;;;;;;:::i;:::-;5903:192;;;-1:-1:-1;;;;;18039:32:146;;;18021:51;;18115:14;;18108:22;18103:2;18088:18;;18081:50;17994:18;5903:192:124;;;;;;;4941:1161;;;4705:1397;;;;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;18344:2:146;3101:49:77;;;18326:21:146;18383:2;18363:18;;;18356:30;-1:-1:-1;;;18402:18:146;;;18395:51;18463:18;;3101:49:77;18142:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;18621:19:146;;18665:2;18656:12;;18492:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;18881:2:146;3636:134:77;;;18863:21:146;18920:2;18900:18;;;18893:30;18959:34;18939:18;;;18932:62;-1:-1:-1;;;19010:18:146;;;19003:44;19064:19;;3636:134:77;18679:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;18621:19:146;;;18665:2;18656:12;;18492:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;19296:2:146;3893:176:77;;;19278:21:146;19335:2;19315:18;;;19308:30;19374:31;19354:18;;;19347:59;19423:18;;3893:176:77;19094:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;18621:19:146;;;18665:2;18656:12;;18492:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;19654:2:146;4222:186:77;;;19636:21:146;19693:2;19673:18;;;19666:30;19732:34;19712:18;;;19705:62;-1:-1:-1;;;19783:18:146;;;19776:37;19830:19;;4222:186:77;19452:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;20062:2:146;4509:156:77;;;20044:21:146;20101:2;20081:18;;;20074:30;20140:34;20120:18;;;20113:62;-1:-1:-1;;;20191:18:146;;;20184:36;20237:19;;4509:156:77;19860:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;20469:2:146;5384:158:77;;;20451:21:146;20508:2;20488:18;;;20481:30;20547:34;20527:18;;;20520:62;20618:29;20598:18;;;20591:57;20665:19;;5384:158:77;20267:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;20897:2:146;5626:162:77;;;20879:21:146;20936:2;20916:18;;;20909:30;20975:34;20955:18;;;20948:62;21046:28;21026:18;;;21019:56;21092:19;;5626:162:77;20695:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;21642:2:146;7009:171:77;;;21624:21:146;21681:2;21661:18;;;21654:30;21720:34;21700:18;;;21693:62;21791:28;21771:18;;;21764:56;21837:19;;7009:171:77;21440:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;22069:2:146;7843:185:77;;;22051:21:146;22108:2;22088:18;;;22081:30;22147:34;22127:18;;;22120:62;22218:31;22198:18;;;22191:59;22267:19;;7843:185:77;21867:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;22499:2:146;8463:156:77;;;22481:21:146;22538:2;22518:18;;;22511:30;22577:34;22557:18;;;22550:62;22648:27;22628:18;;;22621:55;22693:19;;8463:156:77;22297:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;22925:2:146;8703:160:77;;;22907:21:146;22964:2;22944:18;;;22937:30;23003:34;22983:18;;;22976:62;23074:26;23054:18;;;23047:54;23118:19;;8703:160:77;22723:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;23350:2:146;9439:60:77;;;23332:21:146;23389:2;23369:18;;;23362:30;23428:34;23408:18;;;23401:62;-1:-1:-1;;;23479:18:146;;;23472:48;23537:19;;9439:60:77;23148:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;23769:2:146;9556:50:77;;;23751:21:146;23808:2;23788:18;;;23781:30;23847:34;23827:18;;;23820:62;-1:-1:-1;;;23898:18:146;;;23891:38;23946:19;;9556:50:77;23567:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;24318:2:146;9641:47:77;;;24300:21:146;24357:2;24337:18;;;24330:30;24396:34;24376:18;;;24369:62;-1:-1:-1;;;24447:18:146;;;24440:35;24492:19;;9641:47:77;24116:401:146;2954:6741:77;;;;;;:::o;1978:1895:75:-;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;24724:2:146;2161:136:75;;;24706:21:146;24763:2;24743:18;;;24736:30;24802:34;24782:18;;;24775:62;24873:26;24853:18;;;24846:54;24917:19;;2161:136:75;24522:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;25149:2:146;2308:134:75;;;25131:21:146;25188:2;25168:18;;;25161:30;25227:34;25207:18;;;25200:62;-1:-1:-1;;;25278:18:146;;;25271:48;25336:19;;2308:134:75;24947:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;25568:2:146;12579:55:75;;;25550:21:146;25607:2;25587:18;;;25580:30;25646:28;25626:18;;;25619:56;25692:18;;12579:55:75;25366:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:121:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:121;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:121;3166:384;-1:-1:-1;;3166:384:121:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;25923:2:146;4505:137:75;;;25905:21:146;25962:2;25942:18;;;25935:30;26001:34;25981:18;;;25974:62;26072:27;26052:18;;;26045:55;26117:19;;4505:137:75;25721:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;26349:2:146;4653:136:75;;;26331:21:146;26388:2;26368:18;;;26361:30;26427:34;26407:18;;;26400:62;-1:-1:-1;;;26478:18:146;;;26471:50;26538:19;;4653:136:75;26147:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;28099:19:146;;;28143:2;28134:12;;28127:28;28180:2;28171:12;;27942:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;28099:19:146;;;28143:2;28134:12;;28127:28;28180:2;28171:12;;27942:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;;-1:-1:-1;1822:5:110;1283:551;-1:-1:-1;;;;1283:551:110:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;28879:2:146;6699:156:75;;;28861:21:146;28918:2;28898:18;;;28891:30;-1:-1:-1;;;;;;;;;;;28937:18:146;;;28930:62;29028:34;29008:18;;;29001:62;-1:-1:-1;;;29079:19:146;;;29072:45;29134:19;;6699:156:75;28677:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;29366:2:146;7025:177:75;;;29348:21:146;29405:2;29385:18;;;29378:30;29444:34;29424:18;;;29417:62;29515:34;29495:18;;;29488:62;-1:-1:-1;;;29566:19:146;;;29559:44;29620:19;;7025:177:75;29164:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;29852:2:146;7387:164:75;;;29834:21:146;29891:2;29871:18;;;29864:30;-1:-1:-1;;;;;;;;;;;29910:18:146;;;29903:62;30001:34;29981:18;;;29974:62;-1:-1:-1;;;30052:19:146;;;30045:48;30110:19;;7387:164:75;29650:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;30342:2:146;7721:159:75;;;30324:21:146;30381:2;30361:18;;;30354:30;-1:-1:-1;;;;;;;;;;;30400:18:146;;;30393:62;30491:34;30471:18;;;30464:62;-1:-1:-1;;;30542:19:146;;;30535:41;30593:19;;7721:159:75;30140:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;30825:2:146;8042:142:75;;;30807:21:146;30864:2;30844:18;;;30837:30;-1:-1:-1;;;;;;;;;;;30883:18:146;;;30876:62;30974:34;30954:18;;;30947:62;-1:-1:-1;;;31025:19:146;;;31018:39;31074:19;;8042:142:75;30623:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;31306:2:146;8199:168:75;;;31288:21:146;31345:2;31325:18;;;31318:30;-1:-1:-1;;;;;;;;;;;31364:18:146;;;31357:62;31455:34;31435:18;;;31428:62;-1:-1:-1;;;31506:19:146;;;31499:43;31559:19;;8199:168:75;31104:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;31791:2:146;8617:153:75;;;31773:21:146;31830:2;31810:18;;;31803:30;-1:-1:-1;;;;;;;;;;;31849:18:146;;;31842:62;31940:34;31920:18;;;31913:62;-1:-1:-1;;;31991:19:146;;;31984:41;32042:19;;8617:153:75;31589:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;32274:2:146;8935:161:75;;;32256:21:146;32313:2;32293:18;;;32286:30;-1:-1:-1;;;;;;;;;;;32332:18:146;;;32325:62;32423:34;32403:18;;;32396:62;-1:-1:-1;;;32474:19:146;;;32467:44;32528:19;;8935:161:75;32072:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;32760:2:146;9266:157:75;;;32742:21:146;32799:2;32779:18;;;32772:30;-1:-1:-1;;;;;;;;;;;32818:18:146;;;32811:62;32909:34;32889:18;;;32882:62;-1:-1:-1;;;32960:19:146;;;32953:39;33009:19;;9266:157:75;32558:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;33241:2:146;9588:141:75;;;33223:21:146;33280:2;33260:18;;;33253:30;-1:-1:-1;;;;;;;;;;;33299:18:146;;;33292:62;33390:34;33370:18;;;33363:62;-1:-1:-1;;;33441:19:146;;;33434:37;33488:19;;9588:141:75;33039:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;33720:2:146;9744:168:75;;;33702:21:146;33759:2;33739:18;;;33732:30;-1:-1:-1;;;;;;;;;;;33778:18:146;;;33771:62;33869:34;33849:18;;;33842:62;-1:-1:-1;;;33920:19:146;;;33913:41;33971:19;;9744:168:75;33518:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;34203:2:146;858:50:74;;;34185:21:146;34242:2;34222:18;;;34215:30;-1:-1:-1;;;34261:18:146;;;34254:44;34315:18;;858:50:74;34001:338:146;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;34203:2:146;922:53:74;;;34185:21:146;34242:2;34222:18;;;34215:30;-1:-1:-1;;;34261:18:146;;;34254:44;34315:18;;922:53:74;34001:338:146;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;34546:2:146;989:63:74;;;34528:21:146;34585:2;34565:18;;;34558:30;-1:-1:-1;;;34604:18:146;;;34597:47;34661:18;;989:63:74;34344:341:146;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;34892:2:146;11438:55:75;;;34874:21:146;34931:2;34911:18;;;34904:30;34970:28;34950:18;;;34943:56;35016:18;;11438:55:75;34690:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;34892:2:146;11598:72:75;;;34874:21:146;34931:2;34911:18;;;34904:30;34970:28;34950:18;;;34943:56;35016:18;;11598:72:75;34690:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:146:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:146;;14:180;-1:-1:-1;14:180:146:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:255::-;742:2;727:18;;775:1;764:13;;754:47;;781:18;;:::i;846:347::-;897:8;907:6;961:3;954:4;946:6;942:17;938:27;928:55;;979:1;976;969:12;928:55;-1:-1:-1;1002:20:146;;-1:-1:-1;;;;;1034:30:146;;1031:50;;;1077:1;1074;1067:12;1031:50;1114:4;1106:6;1102:17;1090:29;;1166:3;1159:4;1150:6;1142;1138:19;1134:30;1131:39;1128:59;;;1183:1;1180;1173:12;1128:59;846:347;;;;;:::o;1198:367::-;1261:8;1271:6;1325:3;1318:4;1310:6;1306:17;1302:27;1292:55;;1343:1;1340;1333:12;1292:55;-1:-1:-1;1366:20:146;;-1:-1:-1;;;;;1398:30:146;;1395:50;;;1441:1;1438;1431:12;1395:50;1478:4;1470:6;1466:17;1454:29;;1538:3;1531:4;1521:6;1518:1;1514:14;1506:6;1502:27;1498:38;1495:47;1492:67;;;1555:1;1552;1545:12;1570:127;1631:10;1626:3;1622:20;1619:1;1612:31;1662:4;1659:1;1652:15;1686:4;1683:1;1676:15;1702:275;1773:2;1767:9;1838:2;1819:13;;-1:-1:-1;;1815:27:146;1803:40;;-1:-1:-1;;;;;1858:34:146;;1894:22;;;1855:62;1852:88;;;1920:18;;:::i;:::-;1956:2;1949:22;1702:275;;-1:-1:-1;1702:275:146:o;1982:530::-;2024:5;2077:3;2070:4;2062:6;2058:17;2054:27;2044:55;;2095:1;2092;2085:12;2044:55;2131:6;2118:20;-1:-1:-1;;;;;2153:2:146;2150:26;2147:52;;;2179:18;;:::i;:::-;2223:55;2266:2;2247:13;;-1:-1:-1;;2243:27:146;2272:4;2239:38;2223:55;:::i;:::-;2303:2;2294:7;2287:19;2349:3;2342:4;2337:2;2329:6;2325:15;2321:26;2318:35;2315:55;;;2366:1;2363;2356:12;2315:55;2431:2;2424:4;2416:6;2412:17;2405:4;2396:7;2392:18;2379:55;2479:1;2454:16;;;2472:4;2450:27;2443:38;;;;2458:7;1982:530;-1:-1:-1;;;1982:530:146:o;2517:161::-;2582:5;2627:3;2618:6;2613:3;2609:16;2605:26;2602:46;;;2644:1;2641;2634:12;2602:46;-1:-1:-1;2666:6:146;2517:161;-1:-1:-1;2517:161:146:o;2683:1546::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;3039:3;3027:9;3018:7;3014:23;3010:33;3007:53;;;3056:1;3053;3046:12;3007:53;3096:9;3083:23;-1:-1:-1;;;;;3166:2:146;3158:6;3155:14;3152:34;;;3182:1;3179;3172:12;3152:34;3221:58;3271:7;3262:6;3251:9;3247:22;3221:58;:::i;:::-;3298:8;;-1:-1:-1;3195:84:146;-1:-1:-1;3386:2:146;3371:18;;3358:32;;-1:-1:-1;3402:16:146;;;3399:36;;;3431:1;3428;3421:12;3399:36;3470:72;3534:7;3523:8;3512:9;3508:24;3470:72;:::i;:::-;3561:8;;-1:-1:-1;3444:98:146;-1:-1:-1;3643:2:146;3628:18;;3615:32;;-1:-1:-1;3700:2:146;3685:18;;3672:32;;-1:-1:-1;3716:16:146;;;3713:36;;;3745:1;3742;3735:12;3713:36;3784:72;3848:7;3837:8;3826:9;3822:24;3784:72;:::i;:::-;3875:8;;-1:-1:-1;3758:98:146;-1:-1:-1;3963:3:146;3948:19;;3935:33;;-1:-1:-1;3980:16:146;;;3977:36;;;4009:1;4006;3999:12;3977:36;;4032:51;4075:7;4064:8;4053:9;4049:24;4032:51;:::i;:::-;4022:61;;;4130:3;4119:9;4115:19;4102:33;4092:43;;4154:69;4215:7;4209:3;4198:9;4194:19;4154:69;:::i;:::-;4144:79;;2683:1546;;;;;;;;;;;;;:::o;4234:163::-;4301:20;;4361:10;4350:22;;4340:33;;4330:61;;4387:1;4384;4377:12;4330:61;4234:163;;;:::o;4402:184::-;4460:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:52;;;4529:1;4526;4519:12;4481:52;4552:28;4570:9;4552:28;:::i;4591:131::-;-1:-1:-1;;;;;4666:31:146;;4656:42;;4646:70;;4712:1;4709;4702:12;4727:684;4925:3;4910:19;;4987:10;4960:25;4978:6;4960:25;:::i;:::-;4956:42;4945:9;4938:61;5046:4;5038:6;5034:17;5021:31;5061;5086:5;5061:31;:::i;:::-;-1:-1:-1;;;;;5168:14:146;;;5161:4;5146:20;;5139:44;5232:4;5220:17;;5207:31;;5247:33;5207:31;5247:33;:::i;:::-;5318:16;5311:4;5296:20;;5289:46;5398:4;5386:17;;;5373:31;5351:20;;;;5344:61;;;;4727:684;:::o;5416:250::-;5501:1;5511:113;5525:6;5522:1;5519:13;5511:113;;;5601:11;;;5595:18;5582:11;;;5575:39;5547:2;5540:10;5511:113;;;-1:-1:-1;;5658:1:146;5640:16;;5633:27;5416:250::o;5671:270::-;5712:3;5750:5;5744:12;5777:6;5772:3;5765:19;5793:76;5862:6;5855:4;5850:3;5846:14;5839:4;5832:5;5828:16;5793:76;:::i;:::-;5923:2;5902:15;-1:-1:-1;;5898:29:146;5889:39;;;;5930:4;5885:50;;5671:270;-1:-1:-1;;5671:270:146:o;5946:695::-;6205:3;6194:9;6187:22;6246:6;6240:3;6229:9;6225:19;6218:35;6304:6;6296;6290:3;6279:9;6275:19;6262:49;6361:1;6355:3;6346:6;6335:9;6331:22;6327:32;6320:43;6168:4;6422:2;6418:7;6413:2;6405:6;6401:15;6397:29;6386:9;6382:45;6489:3;6477:9;6473:2;6469:18;6465:28;6458:4;6447:9;6443:20;6436:58;6511:38;6544:3;6540:2;6536:12;6528:6;6511:38;:::i;:::-;6580:2;6565:18;;6558:34;;;;-1:-1:-1;;6623:2:146;6608:18;6601:34;6503:46;5946:695;-1:-1:-1;;;5946:695:146:o;6998:171::-;7065:20;;-1:-1:-1;;;;;7114:30:146;;7104:41;;7094:69;;7159:1;7156;7149:12;7174:256;7240:6;7248;7301:2;7289:9;7280:7;7276:23;7272:32;7269:52;;;7317:1;7314;7307:12;7269:52;7340:28;7358:9;7340:28;:::i;:::-;7330:38;;7387:37;7420:2;7409:9;7405:18;7387:37;:::i;:::-;7377:47;;7174:256;;;;;:::o;7632:273::-;7724:6;7777:2;7765:9;7756:7;7752:23;7748:32;7745:52;;;7793:1;7790;7783:12;7745:52;7825:9;7819:16;7844:31;7869:5;7844:31;:::i;8116:184::-;8186:6;8239:2;8227:9;8218:7;8214:23;8210:32;8207:52;;;8255:1;8252;8245:12;8207:52;-1:-1:-1;8278:16:146;;8116:184;-1:-1:-1;8116:184:146:o;9011:934::-;9147:9;-1:-1:-1;;;;;9222:2:146;9214:6;9211:14;9208:40;;;9228:18;;:::i;:::-;9274:6;9271:1;9267:14;9300:4;9324:28;9348:2;9344;9340:11;9324:28;:::i;:::-;9386:19;;;9456:14;;;;9421:12;;;;9493:14;9482:26;;9479:46;;;9521:1;9518;9511:12;9479:46;9545:5;9559:353;9575:6;9570:3;9567:15;9559:353;;;9661:3;9648:17;9697:2;9684:11;9681:19;9678:109;;;9741:1;9770:2;9766;9759:14;9678:109;9812:57;9854:14;9840:11;9833:5;9829:23;9812:57;:::i;:::-;9800:70;;-1:-1:-1;9890:12:146;;;;9592;;9559:353;;;-1:-1:-1;9934:5:146;9011:934;-1:-1:-1;;;;;;;9011:934:146:o;9950:247::-;10009:6;10062:2;10050:9;10041:7;10037:23;10033:32;10030:52;;;10078:1;10075;10068:12;10030:52;10117:9;10104:23;10136:31;10161:5;10136:31;:::i;10555:277::-;10622:6;10675:2;10663:9;10654:7;10650:23;10646:32;10643:52;;;10691:1;10688;10681:12;10643:52;10723:9;10717:16;10776:5;10769:13;10762:21;10755:5;10752:32;10742:60;;10798:1;10795;10788:12;12091:127;12152:10;12147:3;12143:20;12140:1;12133:31;12183:4;12180:1;12173:15;12207:4;12204:1;12197:15;12223:128;12290:9;;;12311:11;;;12308:37;;;12325:18;;:::i;12964:127::-;13025:10;13020:3;13016:20;13013:1;13006:31;13056:4;13053:1;13046:15;13080:4;13077:1;13070:15;13096:120;13136:1;13162;13152:35;;13167:18;;:::i;:::-;-1:-1:-1;13201:9:146;;13096:120::o;13221:168::-;13261:7;13327:1;13323;13319:6;13315:14;13312:1;13309:21;13304:1;13297:9;13290:17;13286:45;13283:71;;;13334:18;;:::i;:::-;-1:-1:-1;13374:9:146;;13221:168::o;13394:125::-;13459:9;;;13480:10;;;13477:36;;;13493:18;;:::i;13524:183::-;-1:-1:-1;;;;;13643:10:146;;;13631;;;13627:27;;13666:12;;;13663:38;;;13681:18;;:::i;13712:112::-;13744:1;13770;13760:35;;13775:18;;:::i;:::-;-1:-1:-1;13809:9:146;;13712:112::o;14188:127::-;14249:10;14244:3;14240:20;14237:1;14230:31;14280:4;14277:1;14270:15;14304:4;14301:1;14294:15;16148:1113;16505:25;;;16599:10;16587:23;;16549:2;16567:18;;;16560:51;;;;-1:-1:-1;;;;;16647:32:146;;16642:2;16627:18;;16620:60;-1:-1:-1;;;;;16716:31:146;;16711:2;16696:18;;16689:59;16492:3;16779;16764:19;;16757:32;;;16838:13;;16477:19;;;16860:22;;;16444:4;;16940:15;;;;16913:3;16898:19;;;16444:4;16983:169;16997:6;16994:1;16991:13;16983:169;;;17058:13;;17046:26;;17127:15;;;;17092:12;;;;17019:1;17012:9;16983:169;;;16987:3;;17198:9;17193:3;17189:19;17183:3;17172:9;17168:19;17161:48;17226:29;17251:3;17243:6;17226:29;:::i;17266:287::-;17395:3;17433:6;17427:13;17449:66;17508:6;17503:3;17496:4;17488:6;17484:17;17449:66;:::i;:::-;17531:16;;;;;17266:287;-1:-1:-1;;17266:287:146:o;17558:290::-;17627:6;17680:2;17668:9;17659:7;17655:23;17651:32;17648:52;;;17696:1;17693;17686:12;17648:52;17722:16;;-1:-1:-1;;;;;;17767:32:146;;17757:43;;17747:71;;17814:1;17811;17804:12;21122:157;21152:1;21186:4;21183:1;21179:12;21210:3;21200:37;;21217:18;;:::i;:::-;21269:3;21262:4;21259:1;21255:12;21251:22;21246:27;;;21122:157;;;;:::o;21284:151::-;21374:4;21367:12;;;21353;;;21349:31;;21392:14;;21389:40;;;21409:18;;:::i;23976:135::-;24015:3;24036:17;;;24033:43;;24056:18;;:::i;:::-;-1:-1:-1;24103:1:146;24092:13;;23976:135::o;26568:422::-;26657:1;26700:5;26657:1;26714:270;26735:7;26725:8;26722:21;26714:270;;;26794:4;26790:1;26786:6;26782:17;26776:4;26773:27;26770:53;;;26803:18;;:::i;:::-;26853:7;26843:8;26839:22;26836:55;;;26873:16;;;;26836:55;26952:22;;;;26912:15;;;;26714:270;;;26718:3;26568:422;;;;;:::o;26995:806::-;27044:5;27074:8;27064:80;;-1:-1:-1;27115:1:146;27129:5;;27064:80;27163:4;27153:76;;-1:-1:-1;27200:1:146;27214:5;;27153:76;27245:4;27263:1;27258:59;;;;27331:1;27326:130;;;;27238:218;;27258:59;27288:1;27279:10;;27302:5;;;27326:130;27363:3;27353:8;27350:17;27347:43;;;27370:18;;:::i;:::-;-1:-1:-1;;27426:1:146;27412:16;;27441:5;;27238:218;;27540:2;27530:8;27527:16;27521:3;27515:4;27512:13;27508:36;27502:2;27492:8;27489:16;27484:2;27478:4;27475:12;27471:35;27468:77;27465:159;;;-1:-1:-1;27577:19:146;;;27609:5;;27465:159;27656:34;27681:8;27675:4;27656:34;:::i;:::-;27726:6;27722:1;27718:6;27714:19;27705:7;27702:32;27699:58;;;27737:18;;:::i;:::-;27775:20;;26995:806;-1:-1:-1;;;26995:806:146:o;27806:131::-;27866:5;27895:36;27922:8;27916:4;27895:36;:::i;28194:478::-;28396:2;28378:21;;;28435:2;28415:18;;;28408:30;28474:34;28469:2;28454:18;;28447:62;28545:34;28540:2;28525:18;;28518:62;-1:-1:-1;;;28611:3:146;28596:19;;28589:41;28662:3;28647:19;;28194:478::o", + "linkReferences": { + "src/libraries/BeaconChainForks.sol": { + "BeaconChainForks": [ + { + "start": 2716, + "length": 20 + } + ] + } + } }, "methodIdentifiers": { "eventsPublished(bytes32)": "3cca331c", "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": "bbe6d642", "subscriptions(bytes32)": "94259c6c" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}}},\"title\":\"TelepathyPublisher\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"A contract that can publish events to a ISubscriptionReceiver contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPublisher.sol\":\"TelepathyPublisher\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c\",\"urls\":[\"bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde\",\"dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}}},\"title\":\"TelepathyPublisher\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"A contract that can publish events to a ISubscriptionReceiver contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPublisher.sol\":\"TelepathyPublisher\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -519,18 +537,18 @@ "license": "MIT" }, "src/amb/SourceAMB.sol": { - "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", "urls": [ - "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", - "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", + "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" ], "license": null }, "src/amb/TargetAMB.sol": { - "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", "urls": [ - "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", - "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", + "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" ], "license": null }, @@ -566,6 +584,14 @@ ], "license": null }, + "src/libraries/BeaconChainForks.sol": { + "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "urls": [ + "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", + "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + ], + "license": null + }, "src/libraries/MessageEncoding.sol": { "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", "urls": [ @@ -575,10 +601,10 @@ "license": null }, "src/libraries/SimpleSerialize.sol": { - "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", "urls": [ - "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", - "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", + "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" ], "license": null }, @@ -623,10 +649,10 @@ "license": null }, "src/pubsub/TelepathyPublisher.sol": { - "keccak256": "0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c", + "keccak256": "0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521", "urls": [ - "bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde", - "dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk" + "bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f", + "dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe" ], "license": null }, @@ -651,46 +677,46 @@ }, "ast": { "absolutePath": "src/pubsub/TelepathyPublisher.sol", - "id": 48904, + "id": 48980, "exportedSymbols": { "Address": [ - 44245 + 44319 ], "EventProof": [ - 48451 + 48525 ], "IPublisher": [ - 49167 + 49243 ], "ISubscriptionReceiver": [ - 49188 + 49264 ], "PubSubStorage": [ - 48478 + 48552 ], "PublishStatus": [ - 49133 + 49209 ], "SSZ": [ - 43867 + 43941 ], "Subscription": [ - 49080 + 49156 ], "TelepathyPublisher": [ - 48903 + 48979 ], "TelepathyRouter": [ - 42568 + 42576 ] }, "nodeType": "SourceUnit", - "src": "0:6067:123", + "src": "0:6105:124", "nodes": [ { - "id": 48511, + "id": 48585, "nodeType": "PragmaDirective", - "src": "0:24:123", + "src": "0:24:124", "nodes": [], "literals": [ "solidity", @@ -700,36 +726,36 @@ ] }, { - "id": 48514, + "id": 48588, "nodeType": "ImportDirective", - "src": "26:75:123", + "src": "26:75:124", "nodes": [], "absolutePath": "src/pubsub/interfaces/IPubSub.sol", "file": "src/pubsub/interfaces/IPubSub.sol", "nameLocation": "-1:-1:-1", - "scope": 48904, - "sourceUnit": 49168, + "scope": 48980, + "sourceUnit": 49244, "symbolAliases": [ { "foreign": { - "id": 48512, + "id": 48586, "name": "Subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49080, - "src": "34:12:123", + "referencedDeclaration": 49156, + "src": "34:12:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 48513, + "id": 48587, "name": "IPublisher", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49167, - "src": "48:10:123", + "referencedDeclaration": 49243, + "src": "48:10:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -738,24 +764,24 @@ "unitAlias": "" }, { - "id": 48516, + "id": 48590, "nodeType": "ImportDirective", - "src": "102:53:123", + "src": "102:53:124", "nodes": [], "absolutePath": "src/pubsub/EventProof.sol", "file": "src/pubsub/EventProof.sol", "nameLocation": "-1:-1:-1", - "scope": 48904, - "sourceUnit": 48452, + "scope": 48980, + "sourceUnit": 48526, "symbolAliases": [ { "foreign": { - "id": 48515, + "id": 48589, "name": "EventProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48451, - "src": "110:10:123", + "referencedDeclaration": 48525, + "src": "110:10:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -764,24 +790,24 @@ "unitAlias": "" }, { - "id": 48518, + "id": 48592, "nodeType": "ImportDirective", - "src": "156:86:123", + "src": "156:86:124", "nodes": [], "absolutePath": "src/pubsub/interfaces/ISubscriptionReceiver.sol", "file": "src/pubsub/interfaces/ISubscriptionReceiver.sol", "nameLocation": "-1:-1:-1", - "scope": 48904, - "sourceUnit": 49189, + "scope": 48980, + "sourceUnit": 49265, "symbolAliases": [ { "foreign": { - "id": 48517, + "id": 48591, "name": "ISubscriptionReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49188, - "src": "164:21:123", + "referencedDeclaration": 49264, + "src": "164:21:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -790,24 +816,24 @@ "unitAlias": "" }, { - "id": 48520, + "id": 48594, "nodeType": "ImportDirective", - "src": "243:60:123", + "src": "243:60:124", "nodes": [], "absolutePath": "src/amb/TelepathyRouter.sol", "file": "src/amb/TelepathyRouter.sol", "nameLocation": "-1:-1:-1", - "scope": 48904, - "sourceUnit": 42569, + "scope": 48980, + "sourceUnit": 42577, "symbolAliases": [ { "foreign": { - "id": 48519, + "id": 48593, "name": "TelepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42568, - "src": "251:15:123", + "referencedDeclaration": 42576, + "src": "251:15:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -816,24 +842,24 @@ "unitAlias": "" }, { - "id": 48522, + "id": 48596, "nodeType": "ImportDirective", - "src": "304:54:123", + "src": "304:54:124", "nodes": [], "absolutePath": "src/libraries/SimpleSerialize.sol", "file": "src/libraries/SimpleSerialize.sol", "nameLocation": "-1:-1:-1", - "scope": 48904, - "sourceUnit": 43868, + "scope": 48980, + "sourceUnit": 43942, "symbolAliases": [ { "foreign": { - "id": 48521, + "id": 48595, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43867, - "src": "312:3:123", + "referencedDeclaration": 43941, + "src": "312:3:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -842,24 +868,24 @@ "unitAlias": "" }, { - "id": 48524, + "id": 48598, "nodeType": "ImportDirective", - "src": "359:51:123", + "src": "359:51:124", "nodes": [], "absolutePath": "src/libraries/Typecast.sol", "file": "src/libraries/Typecast.sol", "nameLocation": "-1:-1:-1", - "scope": 48904, - "sourceUnit": 44266, + "scope": 48980, + "sourceUnit": 44340, "symbolAliases": [ { "foreign": { - "id": 48523, + "id": 48597, "name": "Address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44245, - "src": "367:7:123", + "referencedDeclaration": 44319, + "src": "367:7:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -868,24 +894,24 @@ "unitAlias": "" }, { - "id": 48526, + "id": 48600, "nodeType": "ImportDirective", - "src": "411:59:123", + "src": "411:59:124", "nodes": [], "absolutePath": "src/pubsub/PubSubStorage.sol", "file": "src/pubsub/PubSubStorage.sol", "nameLocation": "-1:-1:-1", - "scope": 48904, - "sourceUnit": 48479, + "scope": 48980, + "sourceUnit": 48553, "symbolAliases": [ { "foreign": { - "id": 48525, + "id": 48599, "name": "PubSubStorage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48478, - "src": "419:13:123", + "referencedDeclaration": 48552, + "src": "419:13:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -894,24 +920,24 @@ "unitAlias": "" }, { - "id": 48528, + "id": 48602, "nodeType": "ImportDirective", - "src": "472:64:123", + "src": "472:64:124", "nodes": [], "absolutePath": "src/pubsub/interfaces/IPubSub.sol", "file": "src/pubsub/interfaces/IPubSub.sol", "nameLocation": "-1:-1:-1", - "scope": 48904, - "sourceUnit": 49168, + "scope": 48980, + "sourceUnit": 49244, "symbolAliases": [ { "foreign": { - "id": 48527, + "id": 48601, "name": "PublishStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49133, - "src": "480:13:123", + "referencedDeclaration": 49209, + "src": "480:13:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -920,19 +946,19 @@ "unitAlias": "" }, { - "id": 48903, + "id": 48979, "nodeType": "ContractDefinition", - "src": "678:5388:123", + "src": "678:5426:124", "nodes": [ { - "id": 48681, + "id": 48757, "nodeType": "FunctionDefinition", - "src": "1533:1728:123", + "src": "1533:1766:124", "nodes": [], "body": { - "id": 48680, + "id": 48756, "nodeType": "Block", - "src": "1837:1424:123", + "src": "1837:1462:124", "nodes": [], "statements": [ { @@ -940,27 +966,27 @@ "arguments": [ { "expression": { - "id": 48555, + "id": 48629, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48551, - "src": "1877:12:123", + "referencedDeclaration": 48625, + "src": "1877:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48556, + "id": 48630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1890:13:123", + "memberLocation": "1890:13:124", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49073, - "src": "1877:26:123", + "referencedDeclaration": 49149, + "src": "1877:26:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -974,18 +1000,18 @@ "typeString": "uint32" } ], - "id": 48554, + "id": 48628, "name": "requireLightClientConsistency", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48714, - "src": "1847:29:123", + "referencedDeclaration": 48790, + "src": "1847:29:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", "typeString": "function (uint32) view" } }, - "id": 48557, + "id": 48631, "isConstant": false, "isLValue": false, "isPure": false, @@ -994,43 +1020,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1847:57:123", + "src": "1847:57:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48558, + "id": 48632, "nodeType": "ExpressionStatement", - "src": "1847:57:123" + "src": "1847:57:124" }, { "expression": { "arguments": [ { "expression": { - "id": 48560, + "id": 48634, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48551, - "src": "1931:12:123", + "referencedDeclaration": 48625, + "src": "1931:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48561, + "id": 48635, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1944:13:123", + "memberLocation": "1944:13:124", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49073, - "src": "1931:26:123", + "referencedDeclaration": 49149, + "src": "1931:26:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1044,18 +1070,18 @@ "typeString": "uint32" } ], - "id": 48559, + "id": 48633, "name": "requireNotFrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48730, - "src": "1914:16:123", + "referencedDeclaration": 48806, + "src": "1914:16:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", "typeString": "function (uint32) view" } }, - "id": 48562, + "id": 48636, "isConstant": false, "isLValue": false, "isPure": false, @@ -1064,31 +1090,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1914:44:123", + "src": "1914:44:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48563, + "id": 48637, "nodeType": "ExpressionStatement", - "src": "1914:44:123" + "src": "1914:44:124" }, { "assignments": [ - 48565 + 48639 ], "declarations": [ { "constant": false, - "id": 48565, + "id": 48639, "mutability": "mutable", "name": "subscriptionId", - "nameLocation": "2053:14:123", + "nameLocation": "2053:14:124", "nodeType": "VariableDeclaration", - "scope": 48680, - "src": "2045:22:123", + "scope": 48756, + "src": "2045:22:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1096,10 +1122,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 48564, + "id": 48638, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2045:7:123", + "src": "2045:7:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1108,20 +1134,20 @@ "visibility": "internal" } ], - "id": 48572, + "id": 48646, "initialValue": { "arguments": [ { "arguments": [ { - "id": 48569, + "id": 48643, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48551, - "src": "2091:12:123", + "referencedDeclaration": 48625, + "src": "2091:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } } @@ -1129,37 +1155,37 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } ], "expression": { - "id": 48567, + "id": 48641, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "2080:3:123", + "src": "2080:3:124", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 48568, + "id": 48642, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2084:6:123", + "memberLocation": "2084:6:124", "memberName": "encode", "nodeType": "MemberAccess", - "src": "2080:10:123", + "src": "2080:10:124", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 48570, + "id": 48644, "isConstant": false, "isLValue": false, "isPure": false, @@ -1168,7 +1194,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2080:24:123", + "src": "2080:24:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -1183,18 +1209,18 @@ "typeString": "bytes memory" } ], - "id": 48566, + "id": 48640, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "2070:9:123", + "src": "2070:9:124", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 48571, + "id": 48645, "isConstant": false, "isLValue": false, "isPure": false, @@ -1203,7 +1229,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2070:35:123", + "src": "2070:35:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1211,22 +1237,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2045:60:123" + "src": "2045:60:124" }, { "assignments": [ - 48574 + 48648 ], "declarations": [ { "constant": false, - "id": 48574, + "id": 48648, "mutability": "mutable", "name": "publishKey", - "nameLocation": "2123:10:123", + "nameLocation": "2123:10:124", "nodeType": "VariableDeclaration", - "scope": 48680, - "src": "2115:18:123", + "scope": 48756, + "src": "2115:18:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1234,10 +1260,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 48573, + "id": 48647, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2115:7:123", + "src": "2115:7:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1246,54 +1272,54 @@ "visibility": "internal" } ], - "id": 48584, + "id": 48658, "initialValue": { "arguments": [ { "arguments": [ { - "id": 48578, + "id": 48652, "name": "srcSlotTxSlotPack", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48536, - "src": "2169:17:123", + "referencedDeclaration": 48610, + "src": "2169:17:124", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, { - "id": 48579, + "id": 48653, "name": "txIndexRLPEncoded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48546, - "src": "2188:17:123", + "referencedDeclaration": 48620, + "src": "2188:17:124", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { - "id": 48580, + "id": 48654, "name": "logIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48548, - "src": "2207:8:123", + "referencedDeclaration": 48622, + "src": "2207:8:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 48581, + "id": 48655, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48565, - "src": "2217:14:123", + "referencedDeclaration": 48639, + "src": "2217:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1320,32 +1346,32 @@ } ], "expression": { - "id": 48576, + "id": 48650, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "2158:3:123", + "src": "2158:3:124", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 48577, + "id": 48651, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2162:6:123", + "memberLocation": "2162:6:124", "memberName": "encode", "nodeType": "MemberAccess", - "src": "2158:10:123", + "src": "2158:10:124", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 48582, + "id": 48656, "isConstant": false, "isLValue": false, "isPure": false, @@ -1354,7 +1380,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2158:74:123", + "src": "2158:74:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -1369,18 +1395,18 @@ "typeString": "bytes memory" } ], - "id": 48575, + "id": 48649, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "2148:9:123", + "src": "2148:9:124", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 48583, + "id": 48657, "isConstant": false, "isLValue": false, "isPure": false, @@ -1389,7 +1415,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2148:85:123", + "src": "2148:85:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1397,42 +1423,42 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2115:118:123" + "src": "2115:118:124" }, { "expression": { "arguments": [ { "commonType": { - "typeIdentifier": "t_enum$_PublishStatus_$49133", + "typeIdentifier": "t_enum$_PublishStatus_$49209", "typeString": "enum PublishStatus" }, - "id": 48591, + "id": 48665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 48586, + "id": 48660, "name": "eventsPublished", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48467, - "src": "2264:15:123", + "referencedDeclaration": 48541, + "src": "2264:15:124", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49133_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49209_$", "typeString": "mapping(bytes32 => enum PublishStatus)" } }, - "id": 48588, + "id": 48662, "indexExpression": { - "id": 48587, + "id": 48661, "name": "publishKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48574, - "src": "2280:10:123", + "referencedDeclaration": 48648, + "src": "2280:10:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1443,9 +1469,9 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2264:27:123", + "src": "2264:27:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49133", + "typeIdentifier": "t_enum$_PublishStatus_$49209", "typeString": "enum PublishStatus" } }, @@ -1453,33 +1479,33 @@ "operator": "==", "rightExpression": { "expression": { - "id": 48589, + "id": 48663, "name": "PublishStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49133, - "src": "2295:13:123", + "referencedDeclaration": 49209, + "src": "2295:13:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49133_$", + "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49209_$", "typeString": "type(enum PublishStatus)" } }, - "id": 48590, + "id": 48664, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2309:12:123", + "memberLocation": "2309:12:124", "memberName": "NOT_EXECUTED", "nodeType": "MemberAccess", - "referencedDeclaration": 49130, - "src": "2295:26:123", + "referencedDeclaration": 49206, + "src": "2295:26:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49133", + "typeIdentifier": "t_enum$_PublishStatus_$49209", "typeString": "enum PublishStatus" } }, - "src": "2264:57:123", + "src": "2264:57:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1487,14 +1513,14 @@ }, { "hexValue": "4576656e7420616c7265616479207075626c6973686564", - "id": 48592, + "id": 48666, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2323:25:123", + "src": "2323:25:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_38898c42571d1d09f1b6fd17083a50dddf3e70a43104a0c556295d55517f3eb3", "typeString": "literal_string \"Event already published\"" @@ -1513,7 +1539,7 @@ "typeString": "literal_string \"Event already published\"" } ], - "id": 48585, + "id": 48659, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -1521,13 +1547,13 @@ -18 ], "referencedDeclaration": -18, - "src": "2243:7:123", + "src": "2243:7:124", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 48593, + "id": 48667, "isConstant": false, "isLValue": false, "isPure": false, @@ -1536,32 +1562,32 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2243:115:123", + "src": "2243:115:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48594, + "id": 48668, "nodeType": "ExpressionStatement", - "src": "2243:115:123" + "src": "2243:115:124" }, { "assignments": [ - 48596, - 48598 + 48670, + 48672 ], "declarations": [ { "constant": false, - "id": 48596, + "id": 48670, "mutability": "mutable", "name": "srcSlot", - "nameLocation": "2377:7:123", + "nameLocation": "2377:7:124", "nodeType": "VariableDeclaration", - "scope": 48680, - "src": "2370:14:123", + "scope": 48756, + "src": "2370:14:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1569,10 +1595,10 @@ "typeString": "uint64" }, "typeName": { - "id": 48595, + "id": 48669, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "2370:6:123", + "src": "2370:6:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -1582,13 +1608,13 @@ }, { "constant": false, - "id": 48598, + "id": 48672, "mutability": "mutable", "name": "txSlot", - "nameLocation": "2393:6:123", + "nameLocation": "2393:6:124", "nodeType": "VariableDeclaration", - "scope": 48680, - "src": "2386:13:123", + "scope": 48756, + "src": "2386:13:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1596,10 +1622,10 @@ "typeString": "uint64" }, "typeName": { - "id": 48597, + "id": 48671, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "2386:6:123", + "src": "2386:6:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -1608,16 +1634,16 @@ "visibility": "internal" } ], - "id": 48608, + "id": 48682, "initialValue": { "arguments": [ { - "id": 48601, + "id": 48675, "name": "srcSlotTxSlotPack", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48536, - "src": "2414:17:123", + "referencedDeclaration": 48610, + "src": "2414:17:124", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -1626,54 +1652,54 @@ { "components": [ { - "id": 48603, + "id": 48677, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2434:6:123", + "src": "2434:6:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)" }, "typeName": { - "id": 48602, + "id": 48676, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "2434:6:123", + "src": "2434:6:124", "typeDescriptions": {} } }, { - "id": 48605, + "id": 48679, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2442:6:123", + "src": "2442:6:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)" }, "typeName": { - "id": 48604, + "id": 48678, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "2442:6:123", + "src": "2442:6:124", "typeDescriptions": {} } } ], - "id": 48606, + "id": 48680, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2433:16:123", + "src": "2433:16:124", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_type$_t_uint64_$_$_t_type$_t_uint64_$_$", "typeString": "tuple(type(uint64),type(uint64))" @@ -1692,32 +1718,32 @@ } ], "expression": { - "id": 48599, + "id": 48673, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "2403:3:123", + "src": "2403:3:124", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 48600, + "id": 48674, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2407:6:123", + "memberLocation": "2407:6:124", "memberName": "decode", "nodeType": "MemberAccess", - "src": "2403:10:123", + "src": "2403:10:124", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 48607, + "id": 48681, "isConstant": false, "isLValue": false, "isPure": false, @@ -1726,7 +1752,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2403:47:123", + "src": "2403:47:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", @@ -1734,18 +1760,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2369:81:123" + "src": "2369:81:124" }, { "expression": { "arguments": [ { - "id": 48610, + "id": 48684, "name": "srcSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48596, - "src": "2484:7:123", + "referencedDeclaration": 48670, + "src": "2484:7:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -1753,27 +1779,27 @@ }, { "expression": { - "id": 48611, + "id": 48685, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48551, - "src": "2493:12:123", + "referencedDeclaration": 48625, + "src": "2493:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48612, + "id": 48686, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2506:13:123", + "memberLocation": "2506:13:124", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49073, - "src": "2493:26:123", + "referencedDeclaration": 49149, + "src": "2493:26:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1791,18 +1817,18 @@ "typeString": "uint32" } ], - "id": 48609, + "id": 48683, "name": "requireLightClientDelay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48790, - "src": "2460:23:123", + "referencedDeclaration": 48866, + "src": "2460:23:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint32_$returns$__$", "typeString": "function (uint64,uint32) view" } }, - "id": 48613, + "id": 48687, "isConstant": false, "isLValue": false, "isPure": false, @@ -1811,31 +1837,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2460:60:123", + "src": "2460:60:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48614, + "id": 48688, "nodeType": "ExpressionStatement", - "src": "2460:60:123" + "src": "2460:60:124" }, { "assignments": [ - 48616 + 48690 ], "declarations": [ { "constant": false, - "id": 48616, + "id": 48690, "mutability": "mutable", "name": "headerRoot", - "nameLocation": "2538:10:123", + "nameLocation": "2538:10:124", "nodeType": "VariableDeclaration", - "scope": 48680, - "src": "2530:18:123", + "scope": 48756, + "src": "2530:18:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1843,10 +1869,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 48615, + "id": 48689, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2530:7:123", + "src": "2530:7:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1855,16 +1881,16 @@ "visibility": "internal" } ], - "id": 48625, + "id": 48699, "initialValue": { "arguments": [ { - "id": 48623, + "id": 48697, "name": "srcSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48596, - "src": "2628:7:123", + "referencedDeclaration": 48670, + "src": "2628:7:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -1882,27 +1908,27 @@ "arguments": [ { "expression": { - "id": 48619, + "id": 48693, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48551, - "src": "2592:12:123", + "referencedDeclaration": 48625, + "src": "2592:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48620, + "id": 48694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2605:13:123", + "memberLocation": "2605:13:124", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49073, - "src": "2592:26:123", + "referencedDeclaration": 49149, + "src": "2592:26:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1917,33 +1943,33 @@ } ], "expression": { - "id": 48617, + "id": 48691, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48462, - "src": "2563:15:123", + "referencedDeclaration": 48536, + "src": "2563:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeIdentifier": "t_contract$_TelepathyRouter_$42576", "typeString": "contract TelepathyRouter" } }, - "id": 48618, + "id": 48692, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2579:12:123", + "memberLocation": "2579:12:124", "memberName": "lightClients", "nodeType": "MemberAccess", - "referencedDeclaration": 42595, - "src": "2563:28:123", + "referencedDeclaration": 42603, + "src": "2563:28:124", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48621, + "id": 48695, "isConstant": false, "isLValue": false, "isPure": false, @@ -1952,29 +1978,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2563:56:123", + "src": "2563:56:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, - "id": 48622, + "id": 48696, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2620:7:123", + "memberLocation": "2620:7:124", "memberName": "headers", "nodeType": "MemberAccess", - "referencedDeclaration": 47847, - "src": "2563:64:123", + "referencedDeclaration": 47921, + "src": "2563:64:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view external returns (bytes32)" } }, - "id": 48624, + "id": 48698, "isConstant": false, "isLValue": false, "isPure": false, @@ -1983,7 +2009,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2563:73:123", + "src": "2563:73:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1991,7 +2017,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2530:106:123" + "src": "2530:106:124" }, { "expression": { @@ -2001,18 +2027,18 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 48632, + "id": 48706, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48627, + "id": 48701, "name": "headerRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48616, - "src": "2654:10:123", + "referencedDeclaration": 48690, + "src": "2654:10:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2024,14 +2050,14 @@ "arguments": [ { "hexValue": "30", - "id": 48630, + "id": 48704, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2676:1:123", + "src": "2676:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -2046,26 +2072,26 @@ "typeString": "int_const 0" } ], - "id": 48629, + "id": 48703, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2668:7:123", + "src": "2668:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { - "id": 48628, + "id": 48702, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2668:7:123", + "src": "2668:7:124", "typeDescriptions": {} } }, - "id": 48631, + "id": 48705, "isConstant": false, "isLValue": false, "isPure": true, @@ -2074,14 +2100,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2668:10:123", + "src": "2668:10:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "2654:24:123", + "src": "2654:24:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2089,14 +2115,14 @@ }, { "hexValue": "486561646572526f6f74206973206d697373696e67", - "id": 48633, + "id": 48707, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2680:23:123", + "src": "2680:23:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_02a1349704ffa751bbc14e2e3da5665267eb20d6db37ee32898d996c4fc87c26", "typeString": "literal_string \"HeaderRoot is missing\"" @@ -2115,7 +2141,7 @@ "typeString": "literal_string \"HeaderRoot is missing\"" } ], - "id": 48626, + "id": 48700, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2123,13 +2149,13 @@ -18 ], "referencedDeclaration": -18, - "src": "2646:7:123", + "src": "2646:7:124", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 48634, + "id": 48708, "isConstant": false, "isLValue": false, "isPure": false, @@ -2138,31 +2164,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2646:58:123", + "src": "2646:58:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48635, + "id": 48709, "nodeType": "ExpressionStatement", - "src": "2646:58:123" + "src": "2646:58:124" }, { "assignments": [ - 48637 + 48711 ], "declarations": [ { "constant": false, - "id": 48637, + "id": 48711, "mutability": "mutable", "name": "isValid", - "nameLocation": "2719:7:123", + "nameLocation": "2719:7:124", "nodeType": "VariableDeclaration", - "scope": 48680, - "src": "2714:12:123", + "scope": 48756, + "src": "2714:12:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2170,10 +2196,10 @@ "typeString": "bool" }, "typeName": { - "id": 48636, + "id": 48710, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2714:4:123", + "src": "2714:4:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2182,68 +2208,96 @@ "visibility": "internal" } ], - "id": 48646, + "id": 48722, "initialValue": { "arguments": [ { - "id": 48640, + "id": 48714, "name": "receiptsRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48541, - "src": "2764:12:123", + "referencedDeclaration": 48615, + "src": "2765:12:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 48641, + "id": 48715, "name": "receiptsRootProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48539, - "src": "2778:17:123", + "referencedDeclaration": 48613, + "src": "2779:17:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, { - "id": 48642, + "id": 48716, "name": "headerRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48616, - "src": "2797:10:123", + "referencedDeclaration": 48690, + "src": "2798:10:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 48643, + "id": 48717, "name": "srcSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48596, - "src": "2809:7:123", + "referencedDeclaration": 48670, + "src": "2810:7:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { - "id": 48644, + "id": 48718, "name": "txSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48598, - "src": "2818:6:123", + "referencedDeclaration": 48672, + "src": "2819:6:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } + }, + { + "expression": { + "id": 48719, + "name": "subscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48625, + "src": "2827:12:124", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", + "typeString": "struct Subscription calldata" + } + }, + "id": 48720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2840:13:124", + "memberName": "sourceChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 49149, + "src": "2827:26:124", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } } ], "expression": { @@ -2267,36 +2321,40 @@ { "typeIdentifier": "t_uint64", "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" } ], "expression": { - "id": 48638, + "id": 48712, "name": "SSZ", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43867, - "src": "2741:3:123", + "referencedDeclaration": 43941, + "src": "2729:3:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43867_$", + "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", "typeString": "type(library SSZ)" } }, - "id": 48639, + "id": 48713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2745:18:123", + "memberLocation": "2733:18:124", "memberName": "verifyReceiptsRoot", "nodeType": "MemberAccess", - "referencedDeclaration": 43866, - "src": "2741:22:123", + "referencedDeclaration": 43940, + "src": "2729:22:124", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bool_$", - "typeString": "function (bytes32,bytes32[] memory,bytes32,uint64,uint64) pure returns (bool)" + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes32_$_t_uint64_$_t_uint64_$_t_uint32_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes32[] memory,bytes32,uint64,uint64,uint32) pure returns (bool)" } }, - "id": 48645, + "id": 48721, "isConstant": false, "isLValue": false, "isPure": false, @@ -2305,7 +2363,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2741:84:123", + "src": "2729:134:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2313,18 +2371,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2714:111:123" + "src": "2714:149:124" }, { "expression": { "arguments": [ { - "id": 48648, + "id": 48724, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48637, - "src": "2843:7:123", + "referencedDeclaration": 48711, + "src": "2881:7:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2332,14 +2390,14 @@ }, { "hexValue": "496e76616c696420726563656970747320726f6f742070726f6f66", - "id": 48649, + "id": 48725, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2852:29:123", + "src": "2890:29:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a8a86cc8e698cc54f14148f81c68ad3a36e4a61b0a2af21ecc438884515f4870", "typeString": "literal_string \"Invalid receipts root proof\"" @@ -2358,7 +2416,7 @@ "typeString": "literal_string \"Invalid receipts root proof\"" } ], - "id": 48647, + "id": 48723, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2366,13 +2424,13 @@ -18 ], "referencedDeclaration": -18, - "src": "2835:7:123", + "src": "2873:7:124", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 48650, + "id": 48726, "isConstant": false, "isLValue": false, "isPure": false, @@ -2381,32 +2439,32 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2835:47:123", + "src": "2873:47:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48651, + "id": 48727, "nodeType": "ExpressionStatement", - "src": "2835:47:123" + "src": "2873:47:124" }, { "assignments": [ - 48656, - 48658 + 48732, + 48734 ], "declarations": [ { "constant": false, - "id": 48656, + "id": 48732, "mutability": "mutable", "name": "eventTopics", - "nameLocation": "2911:11:123", + "nameLocation": "2949:11:124", "nodeType": "VariableDeclaration", - "scope": 48680, - "src": "2894:28:123", + "scope": 48756, + "src": "2932:28:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2415,18 +2473,18 @@ }, "typeName": { "baseType": { - "id": 48654, + "id": 48730, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2894:7:123", + "src": "2932:7:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 48655, + "id": 48731, "nodeType": "ArrayTypeName", - "src": "2894:9:123", + "src": "2932:9:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2436,13 +2494,13 @@ }, { "constant": false, - "id": 48658, + "id": 48734, "mutability": "mutable", "name": "eventData", - "nameLocation": "2937:9:123", + "nameLocation": "2975:9:124", "nodeType": "VariableDeclaration", - "scope": 48680, - "src": "2924:22:123", + "scope": 48756, + "src": "2962:22:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2450,10 +2508,10 @@ "typeString": "bytes" }, "typeName": { - "id": 48657, + "id": 48733, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2924:5:123", + "src": "2962:5:124", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2462,52 +2520,52 @@ "visibility": "internal" } ], - "id": 48670, + "id": 48746, "initialValue": { "arguments": [ { - "id": 48661, + "id": 48737, "name": "receiptProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48544, - "src": "2985:12:123", + "referencedDeclaration": 48618, + "src": "3023:12:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" } }, { - "id": 48662, + "id": 48738, "name": "receiptsRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48541, - "src": "3011:12:123", + "referencedDeclaration": 48615, + "src": "3049:12:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 48663, + "id": 48739, "name": "txIndexRLPEncoded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48546, - "src": "3037:17:123", + "referencedDeclaration": 48620, + "src": "3075:17:124", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { - "id": 48664, + "id": 48740, "name": "logIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48548, - "src": "3068:8:123", + "referencedDeclaration": 48622, + "src": "3106:8:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2515,27 +2573,27 @@ }, { "expression": { - "id": 48665, + "id": 48741, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48551, - "src": "3090:12:123", + "referencedDeclaration": 48625, + "src": "3128:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48666, + "id": 48742, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3103:13:123", + "memberLocation": "3141:13:124", "memberName": "sourceAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 49075, - "src": "3090:26:123", + "referencedDeclaration": 49151, + "src": "3128:26:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2543,27 +2601,27 @@ }, { "expression": { - "id": 48667, + "id": 48743, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48551, - "src": "3130:12:123", + "referencedDeclaration": 48625, + "src": "3168:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48668, + "id": 48744, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3143:8:123", + "memberLocation": "3181:8:124", "memberName": "eventSig", "nodeType": "MemberAccess", - "referencedDeclaration": 49079, - "src": "3130:21:123", + "referencedDeclaration": 49155, + "src": "3168:21:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2598,33 +2656,33 @@ } ], "expression": { - "id": 48659, + "id": 48735, "name": "EventProof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48451, - "src": "2950:10:123", + "referencedDeclaration": 48525, + "src": "2988:10:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_EventProof_$48451_$", + "typeIdentifier": "t_type$_t_contract$_EventProof_$48525_$", "typeString": "type(library EventProof)" } }, - "id": 48660, + "id": 48736, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2961:10:123", + "memberLocation": "2999:10:124", "memberName": "parseEvent", "nodeType": "MemberAccess", - "referencedDeclaration": 48399, - "src": "2950:21:123", + "referencedDeclaration": 48473, + "src": "2988:21:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory[] memory,bytes32,bytes memory,uint256,address,bytes32) pure returns (bytes32[] memory,bytes memory)" } }, - "id": 48669, + "id": 48745, "isConstant": false, "isLValue": false, "isPure": false, @@ -2633,7 +2691,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2950:211:123", + "src": "2988:211:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$", @@ -2641,78 +2699,78 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2893:268:123" + "src": "2931:268:124" }, { "expression": { "arguments": [ { - "id": 48672, + "id": 48748, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48565, - "src": "3181:14:123", + "referencedDeclaration": 48639, + "src": "3219:14:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 48673, + "id": 48749, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48551, - "src": "3197:12:123", + "referencedDeclaration": 48625, + "src": "3235:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, { - "id": 48674, + "id": 48750, "name": "publishKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48574, - "src": "3211:10:123", + "referencedDeclaration": 48648, + "src": "3249:10:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 48675, + "id": 48751, "name": "txSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48598, - "src": "3223:6:123", + "referencedDeclaration": 48672, + "src": "3261:6:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { - "id": 48676, + "id": 48752, "name": "eventTopics", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48656, - "src": "3231:11:123", + "referencedDeclaration": 48732, + "src": "3269:11:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, { - "id": 48677, + "id": 48753, "name": "eventData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48658, - "src": "3244:9:123", + "referencedDeclaration": 48734, + "src": "3282:9:124", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2726,7 +2784,7 @@ "typeString": "bytes32" }, { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" }, { @@ -2746,18 +2804,18 @@ "typeString": "bytes memory" } ], - "id": 48671, + "id": 48747, "name": "_publish", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48902, - "src": "3172:8:123", + "referencedDeclaration": 48978, + "src": "3210:8:124", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49080_calldata_ptr_$_t_bytes32_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49156_calldata_ptr_$_t_bytes32_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes32,struct Subscription calldata,bytes32,uint64,bytes32[] memory,bytes memory)" } }, - "id": 48678, + "id": 48754, "isConstant": false, "isLValue": false, "isPure": false, @@ -2766,26 +2824,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3172:82:123", + "src": "3210:82:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48679, + "id": 48755, "nodeType": "ExpressionStatement", - "src": "3172:82:123" + "src": "3210:82:124" } ] }, "baseFunctions": [ - 49166 + 49242 ], "documentation": { - "id": 48534, + "id": 48608, "nodeType": "StructuredDocumentation", - "src": "741:787:123", + "src": "741:787:124", "text": "@notice Publishes an event emit to a callback Subscriber, given an event proof.\n @param srcSlotTxSlotPack The slot where we want to read the header from and the slot where\n the tx executed, packed as two uint64s.\n @param receiptsRootProof A merkle proof proving the receiptsRoot in the block header.\n @param receiptsRoot The receipts root which contains the event.\n @param txIndexRLPEncoded The index of our transaction inside the block RLP encoded.\n @param logIndex The index of the event in our transaction.\n @param subscription The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\n @dev This function should be called for every subscriber that is subscribed to the event." }, "functionSelector": "bbe6d642", @@ -2793,20 +2851,20 @@ "kind": "function", "modifiers": [], "name": "publishEvent", - "nameLocation": "1542:12:123", + "nameLocation": "1542:12:124", "parameters": { - "id": 48552, + "id": 48626, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48536, + "id": 48610, "mutability": "mutable", "name": "srcSlotTxSlotPack", - "nameLocation": "1579:17:123", + "nameLocation": "1579:17:124", "nodeType": "VariableDeclaration", - "scope": 48681, - "src": "1564:32:123", + "scope": 48757, + "src": "1564:32:124", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -2814,10 +2872,10 @@ "typeString": "bytes" }, "typeName": { - "id": 48535, + "id": 48609, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1564:5:123", + "src": "1564:5:124", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2827,13 +2885,13 @@ }, { "constant": false, - "id": 48539, + "id": 48613, "mutability": "mutable", "name": "receiptsRootProof", - "nameLocation": "1625:17:123", + "nameLocation": "1625:17:124", "nodeType": "VariableDeclaration", - "scope": 48681, - "src": "1606:36:123", + "scope": 48757, + "src": "1606:36:124", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -2842,18 +2900,18 @@ }, "typeName": { "baseType": { - "id": 48537, + "id": 48611, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1606:7:123", + "src": "1606:7:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 48538, + "id": 48612, "nodeType": "ArrayTypeName", - "src": "1606:9:123", + "src": "1606:9:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2863,13 +2921,13 @@ }, { "constant": false, - "id": 48541, + "id": 48615, "mutability": "mutable", "name": "receiptsRoot", - "nameLocation": "1660:12:123", + "nameLocation": "1660:12:124", "nodeType": "VariableDeclaration", - "scope": 48681, - "src": "1652:20:123", + "scope": 48757, + "src": "1652:20:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2877,10 +2935,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 48540, + "id": 48614, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1652:7:123", + "src": "1652:7:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2890,13 +2948,13 @@ }, { "constant": false, - "id": 48544, + "id": 48618, "mutability": "mutable", "name": "receiptProof", - "nameLocation": "1699:12:123", + "nameLocation": "1699:12:124", "nodeType": "VariableDeclaration", - "scope": 48681, - "src": "1682:29:123", + "scope": 48757, + "src": "1682:29:124", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -2905,18 +2963,18 @@ }, "typeName": { "baseType": { - "id": 48542, + "id": 48616, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1682:5:123", + "src": "1682:5:124", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, - "id": 48543, + "id": 48617, "nodeType": "ArrayTypeName", - "src": "1682:7:123", + "src": "1682:7:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]" @@ -2926,13 +2984,13 @@ }, { "constant": false, - "id": 48546, + "id": 48620, "mutability": "mutable", "name": "txIndexRLPEncoded", - "nameLocation": "1734:17:123", + "nameLocation": "1734:17:124", "nodeType": "VariableDeclaration", - "scope": 48681, - "src": "1721:30:123", + "scope": 48757, + "src": "1721:30:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2940,10 +2998,10 @@ "typeString": "bytes" }, "typeName": { - "id": 48545, + "id": 48619, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1721:5:123", + "src": "1721:5:124", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2953,13 +3011,13 @@ }, { "constant": false, - "id": 48548, + "id": 48622, "mutability": "mutable", "name": "logIndex", - "nameLocation": "1769:8:123", + "nameLocation": "1769:8:124", "nodeType": "VariableDeclaration", - "scope": 48681, - "src": "1761:16:123", + "scope": 48757, + "src": "1761:16:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2967,10 +3025,10 @@ "typeString": "uint256" }, "typeName": { - "id": 48547, + "id": 48621, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1761:7:123", + "src": "1761:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2980,64 +3038,64 @@ }, { "constant": false, - "id": 48551, + "id": 48625, "mutability": "mutable", "name": "subscription", - "nameLocation": "1809:12:123", + "nameLocation": "1809:12:124", "nodeType": "VariableDeclaration", - "scope": 48681, - "src": "1787:34:123", + "scope": 48757, + "src": "1787:34:124", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription" }, "typeName": { - "id": 48550, + "id": 48624, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48549, + "id": 48623, "name": "Subscription", "nameLocations": [ - "1787:12:123" + "1787:12:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49080, - "src": "1787:12:123" + "referencedDeclaration": 49156, + "src": "1787:12:124" }, - "referencedDeclaration": 49080, - "src": "1787:12:123", + "referencedDeclaration": 49156, + "src": "1787:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_storage_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_storage_ptr", "typeString": "struct Subscription" } }, "visibility": "internal" } ], - "src": "1554:273:123" + "src": "1554:273:124" }, "returnParameters": { - "id": 48553, + "id": 48627, "nodeType": "ParameterList", "parameters": [], - "src": "1837:0:123" + "src": "1837:0:124" }, - "scope": 48903, + "scope": 48979, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 48714, + "id": 48790, "nodeType": "FunctionDefinition", - "src": "3347:307:123", + "src": "3385:307:124", "nodes": [], "body": { - "id": 48713, + "id": 48789, "nodeType": "Block", - "src": "3416:238:123", + "src": "3454:238:124", "nodes": [], "statements": [ { @@ -3048,7 +3106,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 48699, + "id": 48775, "isConstant": false, "isLValue": false, "isPure": false, @@ -3058,12 +3116,12 @@ { "arguments": [ { - "id": 48692, + "id": 48768, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48684, - "src": "3484:7:123", + "referencedDeclaration": 48760, + "src": "3522:7:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -3078,33 +3136,33 @@ } ], "expression": { - "id": 48690, + "id": 48766, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48462, - "src": "3455:15:123", + "referencedDeclaration": 48536, + "src": "3493:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeIdentifier": "t_contract$_TelepathyRouter_$42576", "typeString": "contract TelepathyRouter" } }, - "id": 48691, + "id": 48767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3471:12:123", + "memberLocation": "3509:12:124", "memberName": "lightClients", "nodeType": "MemberAccess", - "referencedDeclaration": 42595, - "src": "3455:28:123", + "referencedDeclaration": 42603, + "src": "3493:28:124", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48693, + "id": 48769, "isConstant": false, "isLValue": false, "isPure": false, @@ -3113,10 +3171,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3455:37:123", + "src": "3493:37:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } } @@ -3124,30 +3182,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } ], - "id": 48689, + "id": 48765, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3447:7:123", + "src": "3485:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 48688, + "id": 48764, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3447:7:123", + "src": "3485:7:124", "typeDescriptions": {} } }, - "id": 48694, + "id": 48770, "isConstant": false, "isLValue": false, "isPure": false, @@ -3156,7 +3214,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3447:46:123", + "src": "3485:46:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3169,14 +3227,14 @@ "arguments": [ { "hexValue": "30", - "id": 48697, + "id": 48773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3505:1:123", + "src": "3543:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -3191,26 +3249,26 @@ "typeString": "int_const 0" } ], - "id": 48696, + "id": 48772, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3497:7:123", + "src": "3535:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 48695, + "id": 48771, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3497:7:123", + "src": "3535:7:124", "typeDescriptions": {} } }, - "id": 48698, + "id": 48774, "isConstant": false, "isLValue": false, "isPure": true, @@ -3219,14 +3277,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3497:10:123", + "src": "3535:10:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3447:60:123", + "src": "3485:60:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3234,14 +3292,14 @@ }, { "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", - "id": 48700, + "id": 48776, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3509:26:123", + "src": "3547:26:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", "typeString": "literal_string \"Light client is not set.\"" @@ -3260,7 +3318,7 @@ "typeString": "literal_string \"Light client is not set.\"" } ], - "id": 48687, + "id": 48763, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3268,13 +3326,13 @@ -18 ], "referencedDeclaration": -18, - "src": "3426:7:123", + "src": "3464:7:124", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 48701, + "id": 48777, "isConstant": false, "isLValue": false, "isPure": false, @@ -3283,16 +3341,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3426:119:123", + "src": "3464:119:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48702, + "id": 48778, "nodeType": "ExpressionStatement", - "src": "3426:119:123" + "src": "3464:119:124" }, { "expression": { @@ -3304,12 +3362,12 @@ "expression": { "arguments": [ { - "id": 48706, + "id": 48782, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48684, - "src": "3592:7:123", + "referencedDeclaration": 48760, + "src": "3630:7:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -3324,33 +3382,33 @@ } ], "expression": { - "id": 48704, + "id": 48780, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48462, - "src": "3563:15:123", + "referencedDeclaration": 48536, + "src": "3601:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeIdentifier": "t_contract$_TelepathyRouter_$42576", "typeString": "contract TelepathyRouter" } }, - "id": 48705, + "id": 48781, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3579:12:123", + "memberLocation": "3617:12:124", "memberName": "lightClients", "nodeType": "MemberAccess", - "referencedDeclaration": 42595, - "src": "3563:28:123", + "referencedDeclaration": 42603, + "src": "3601:28:124", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48707, + "id": 48783, "isConstant": false, "isLValue": false, "isPure": false, @@ -3359,29 +3417,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3563:37:123", + "src": "3601:37:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, - "id": 48708, + "id": 48784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3601:10:123", + "memberLocation": "3639:10:124", "memberName": "consistent", "nodeType": "MemberAccess", - "referencedDeclaration": 47835, - "src": "3563:48:123", + "referencedDeclaration": 47909, + "src": "3601:48:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, - "id": 48709, + "id": 48785, "isConstant": false, "isLValue": false, "isPure": false, @@ -3390,7 +3448,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3563:50:123", + "src": "3601:50:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3399,14 +3457,14 @@ }, { "hexValue": "4c6967687420636c69656e7420697320696e636f6e73697374656e742e", - "id": 48710, + "id": 48786, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3615:31:123", + "src": "3653:31:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2e1e9c043617752a0dea84b31d35e61238519932f65eb40cd6ed13f6fd86c420", "typeString": "literal_string \"Light client is inconsistent.\"" @@ -3425,7 +3483,7 @@ "typeString": "literal_string \"Light client is inconsistent.\"" } ], - "id": 48703, + "id": 48779, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3433,13 +3491,13 @@ -18 ], "referencedDeclaration": -18, - "src": "3555:7:123", + "src": "3593:7:124", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 48711, + "id": 48787, "isConstant": false, "isLValue": false, "isPure": false, @@ -3448,43 +3506,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3555:92:123", + "src": "3593:92:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48712, + "id": 48788, "nodeType": "ExpressionStatement", - "src": "3555:92:123" + "src": "3593:92:124" } ] }, "documentation": { - "id": 48682, + "id": 48758, "nodeType": "StructuredDocumentation", - "src": "3267:75:123", + "src": "3305:75:124", "text": "@notice Checks that the light client for a given chainId is consistent." }, "implemented": true, "kind": "function", "modifiers": [], "name": "requireLightClientConsistency", - "nameLocation": "3356:29:123", + "nameLocation": "3394:29:124", "parameters": { - "id": 48685, + "id": 48761, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48684, + "id": 48760, "mutability": "mutable", "name": "chainId", - "nameLocation": "3393:7:123", + "nameLocation": "3431:7:124", "nodeType": "VariableDeclaration", - "scope": 48714, - "src": "3386:14:123", + "scope": 48790, + "src": "3424:14:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3492,10 +3550,10 @@ "typeString": "uint32" }, "typeName": { - "id": 48683, + "id": 48759, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "3386:6:123", + "src": "3424:6:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -3504,35 +3562,35 @@ "visibility": "internal" } ], - "src": "3385:16:123" + "src": "3423:16:124" }, "returnParameters": { - "id": 48686, + "id": 48762, "nodeType": "ParameterList", "parameters": [], - "src": "3416:0:123" + "src": "3454:0:124" }, - "scope": 48903, + "scope": 48979, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 48730, + "id": 48806, "nodeType": "FunctionDefinition", - "src": "3715:137:123", + "src": "3753:137:124", "nodes": [], "body": { - "id": 48729, + "id": 48805, "nodeType": "Block", - "src": "3771:81:123", + "src": "3809:81:124", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 48725, + "id": 48801, "isConstant": false, "isLValue": false, "isPure": false, @@ -3540,16 +3598,16 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3789:32:123", + "src": "3827:32:124", "subExpression": { "arguments": [ { - "id": 48723, + "id": 48799, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48717, - "src": "3813:7:123", + "referencedDeclaration": 48793, + "src": "3851:7:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -3564,33 +3622,33 @@ } ], "expression": { - "id": 48721, + "id": 48797, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48462, - "src": "3790:15:123", + "referencedDeclaration": 48536, + "src": "3828:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeIdentifier": "t_contract$_TelepathyRouter_$42576", "typeString": "contract TelepathyRouter" } }, - "id": 48722, + "id": 48798, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3806:6:123", + "memberLocation": "3844:6:124", "memberName": "frozen", "nodeType": "MemberAccess", - "referencedDeclaration": 42605, - "src": "3790:22:123", + "referencedDeclaration": 42613, + "src": "3828:22:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_bool_$", "typeString": "function (uint32) view external returns (bool)" } }, - "id": 48724, + "id": 48800, "isConstant": false, "isLValue": false, "isPure": false, @@ -3599,7 +3657,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3790:31:123", + "src": "3828:31:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3613,14 +3671,14 @@ }, { "hexValue": "436f6e74726163742069732066726f7a656e2e", - "id": 48726, + "id": 48802, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3823:21:123", + "src": "3861:21:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8a588d987ba140ba8da36da6bed0df68ef46602e008fcb659a3bdc8b60353b80", "typeString": "literal_string \"Contract is frozen.\"" @@ -3639,7 +3697,7 @@ "typeString": "literal_string \"Contract is frozen.\"" } ], - "id": 48720, + "id": 48796, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3647,13 +3705,13 @@ -18 ], "referencedDeclaration": -18, - "src": "3781:7:123", + "src": "3819:7:124", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 48727, + "id": 48803, "isConstant": false, "isLValue": false, "isPure": false, @@ -3662,43 +3720,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3781:64:123", + "src": "3819:64:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48728, + "id": 48804, "nodeType": "ExpressionStatement", - "src": "3781:64:123" + "src": "3819:64:124" } ] }, "documentation": { - "id": 48715, + "id": 48791, "nodeType": "StructuredDocumentation", - "src": "3660:50:123", + "src": "3698:50:124", "text": "@notice Checks that the chainId is not frozen." }, "implemented": true, "kind": "function", "modifiers": [], "name": "requireNotFrozen", - "nameLocation": "3724:16:123", + "nameLocation": "3762:16:124", "parameters": { - "id": 48718, + "id": 48794, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48717, + "id": 48793, "mutability": "mutable", "name": "chainId", - "nameLocation": "3748:7:123", + "nameLocation": "3786:7:124", "nodeType": "VariableDeclaration", - "scope": 48730, - "src": "3741:14:123", + "scope": 48806, + "src": "3779:14:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3706,10 +3764,10 @@ "typeString": "uint32" }, "typeName": { - "id": 48716, + "id": 48792, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "3741:6:123", + "src": "3779:6:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -3718,28 +3776,28 @@ "visibility": "internal" } ], - "src": "3740:16:123" + "src": "3778:16:124" }, "returnParameters": { - "id": 48719, + "id": 48795, "nodeType": "ParameterList", "parameters": [], - "src": "3771:0:123" + "src": "3809:0:124" }, - "scope": 48903, + "scope": 48979, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 48790, + "id": 48866, "nodeType": "FunctionDefinition", - "src": "3922:620:123", + "src": "3960:620:124", "nodes": [], "body": { - "id": 48789, + "id": 48865, "nodeType": "Block", - "src": "3998:544:123", + "src": "4036:544:124", "nodes": [], "statements": [ { @@ -3750,7 +3808,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 48750, + "id": 48826, "isConstant": false, "isLValue": false, "isPure": false, @@ -3760,12 +3818,12 @@ { "arguments": [ { - "id": 48743, + "id": 48819, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48735, - "src": "4066:7:123", + "referencedDeclaration": 48811, + "src": "4104:7:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -3780,33 +3838,33 @@ } ], "expression": { - "id": 48741, + "id": 48817, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48462, - "src": "4037:15:123", + "referencedDeclaration": 48536, + "src": "4075:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeIdentifier": "t_contract$_TelepathyRouter_$42576", "typeString": "contract TelepathyRouter" } }, - "id": 48742, + "id": 48818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4053:12:123", + "memberLocation": "4091:12:124", "memberName": "lightClients", "nodeType": "MemberAccess", - "referencedDeclaration": 42595, - "src": "4037:28:123", + "referencedDeclaration": 42603, + "src": "4075:28:124", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48744, + "id": 48820, "isConstant": false, "isLValue": false, "isPure": false, @@ -3815,10 +3873,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4037:37:123", + "src": "4075:37:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } } @@ -3826,30 +3884,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } ], - "id": 48740, + "id": 48816, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4029:7:123", + "src": "4067:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 48739, + "id": 48815, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4029:7:123", + "src": "4067:7:124", "typeDescriptions": {} } }, - "id": 48745, + "id": 48821, "isConstant": false, "isLValue": false, "isPure": false, @@ -3858,7 +3916,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4029:46:123", + "src": "4067:46:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3871,14 +3929,14 @@ "arguments": [ { "hexValue": "30", - "id": 48748, + "id": 48824, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4087:1:123", + "src": "4125:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -3893,26 +3951,26 @@ "typeString": "int_const 0" } ], - "id": 48747, + "id": 48823, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4079:7:123", + "src": "4117:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 48746, + "id": 48822, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4079:7:123", + "src": "4117:7:124", "typeDescriptions": {} } }, - "id": 48749, + "id": 48825, "isConstant": false, "isLValue": false, "isPure": true, @@ -3921,14 +3979,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4079:10:123", + "src": "4117:10:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4029:60:123", + "src": "4067:60:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3936,14 +3994,14 @@ }, { "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", - "id": 48751, + "id": 48827, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4091:26:123", + "src": "4129:26:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", "typeString": "literal_string \"Light client is not set.\"" @@ -3962,7 +4020,7 @@ "typeString": "literal_string \"Light client is not set.\"" } ], - "id": 48738, + "id": 48814, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3970,13 +4028,13 @@ -18 ], "referencedDeclaration": -18, - "src": "4008:7:123", + "src": "4046:7:124", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 48752, + "id": 48828, "isConstant": false, "isLValue": false, "isPure": false, @@ -3985,16 +4043,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4008:119:123", + "src": "4046:119:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48753, + "id": 48829, "nodeType": "ExpressionStatement", - "src": "4008:119:123" + "src": "4046:119:124" }, { "expression": { @@ -4004,7 +4062,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48763, + "id": 48839, "isConstant": false, "isLValue": false, "isPure": false, @@ -4012,12 +4070,12 @@ "leftExpression": { "arguments": [ { - "id": 48760, + "id": 48836, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48733, - "src": "4207:4:123", + "referencedDeclaration": 48809, + "src": "4245:4:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -4034,12 +4092,12 @@ "expression": { "arguments": [ { - "id": 48757, + "id": 48833, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48735, - "src": "4187:7:123", + "referencedDeclaration": 48811, + "src": "4225:7:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -4054,33 +4112,33 @@ } ], "expression": { - "id": 48755, + "id": 48831, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48462, - "src": "4158:15:123", + "referencedDeclaration": 48536, + "src": "4196:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeIdentifier": "t_contract$_TelepathyRouter_$42576", "typeString": "contract TelepathyRouter" } }, - "id": 48756, + "id": 48832, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4174:12:123", + "memberLocation": "4212:12:124", "memberName": "lightClients", "nodeType": "MemberAccess", - "referencedDeclaration": 42595, - "src": "4158:28:123", + "referencedDeclaration": 42603, + "src": "4196:28:124", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48758, + "id": 48834, "isConstant": false, "isLValue": false, "isPure": false, @@ -4089,29 +4147,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4158:37:123", + "src": "4196:37:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, - "id": 48759, + "id": 48835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4196:10:123", + "memberLocation": "4234:10:124", "memberName": "timestamps", "nodeType": "MemberAccess", - "referencedDeclaration": 47861, - "src": "4158:48:123", + "referencedDeclaration": 47935, + "src": "4196:48:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, - "id": 48761, + "id": 48837, "isConstant": false, "isLValue": false, "isPure": false, @@ -4120,7 +4178,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4158:54:123", + "src": "4196:54:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4131,21 +4189,21 @@ "operator": "!=", "rightExpression": { "hexValue": "30", - "id": 48762, + "id": 48838, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4216:1:123", + "src": "4254:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "4158:59:123", + "src": "4196:59:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4153,14 +4211,14 @@ }, { "hexValue": "54696d657374616d70206973206e6f742073657420666f7220736c6f742e", - "id": 48764, + "id": 48840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4231:32:123", + "src": "4269:32:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6d7a45101ad497aef48b2b4cd343588a8ff87c05de216f8c1f25e504e4b18b11", "typeString": "literal_string \"Timestamp is not set for slot.\"" @@ -4179,7 +4237,7 @@ "typeString": "literal_string \"Timestamp is not set for slot.\"" } ], - "id": 48754, + "id": 48830, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4187,13 +4245,13 @@ -18 ], "referencedDeclaration": -18, - "src": "4137:7:123", + "src": "4175:7:124", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 48765, + "id": 48841, "isConstant": false, "isLValue": false, "isPure": false, @@ -4202,31 +4260,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4137:136:123", + "src": "4175:136:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48766, + "id": 48842, "nodeType": "ExpressionStatement", - "src": "4137:136:123" + "src": "4175:136:124" }, { "assignments": [ - 48768 + 48844 ], "declarations": [ { "constant": false, - "id": 48768, + "id": 48844, "mutability": "mutable", "name": "elapsedTime", - "nameLocation": "4291:11:123", + "nameLocation": "4329:11:124", "nodeType": "VariableDeclaration", - "scope": 48789, - "src": "4283:19:123", + "scope": 48865, + "src": "4321:19:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4234,10 +4292,10 @@ "typeString": "uint256" }, "typeName": { - "id": 48767, + "id": 48843, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4283:7:123", + "src": "4321:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4246,39 +4304,39 @@ "visibility": "internal" } ], - "id": 48779, + "id": 48855, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48778, + "id": 48854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 48769, + "id": 48845, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "4317:5:123", + "src": "4355:5:124", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 48770, + "id": 48846, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4323:9:123", + "memberLocation": "4361:9:124", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "4317:15:123", + "src": "4355:15:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4289,12 +4347,12 @@ "rightExpression": { "arguments": [ { - "id": 48776, + "id": 48852, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48733, - "src": "4384:4:123", + "referencedDeclaration": 48809, + "src": "4422:4:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -4311,12 +4369,12 @@ "expression": { "arguments": [ { - "id": 48773, + "id": 48849, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48735, - "src": "4364:7:123", + "referencedDeclaration": 48811, + "src": "4402:7:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -4331,33 +4389,33 @@ } ], "expression": { - "id": 48771, + "id": 48847, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48462, - "src": "4335:15:123", + "referencedDeclaration": 48536, + "src": "4373:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeIdentifier": "t_contract$_TelepathyRouter_$42576", "typeString": "contract TelepathyRouter" } }, - "id": 48772, + "id": 48848, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4351:12:123", + "memberLocation": "4389:12:124", "memberName": "lightClients", "nodeType": "MemberAccess", - "referencedDeclaration": 42595, - "src": "4335:28:123", + "referencedDeclaration": 42603, + "src": "4373:28:124", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", "typeString": "function (uint32) view external returns (contract ILightClient)" } }, - "id": 48774, + "id": 48850, "isConstant": false, "isLValue": false, "isPure": false, @@ -4366,29 +4424,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4335:37:123", + "src": "4373:37:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, - "id": 48775, + "id": 48851, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4373:10:123", + "memberLocation": "4411:10:124", "memberName": "timestamps", "nodeType": "MemberAccess", - "referencedDeclaration": 47861, - "src": "4335:48:123", + "referencedDeclaration": 47935, + "src": "4373:48:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, - "id": 48777, + "id": 48853, "isConstant": false, "isLValue": false, "isPure": false, @@ -4397,21 +4455,21 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4335:54:123", + "src": "4373:54:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4317:72:123", + "src": "4355:72:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4283:106:123" + "src": "4321:106:124" }, { "expression": { @@ -4421,18 +4479,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48785, + "id": 48861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48781, + "id": 48857, "name": "elapsedTime", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48768, - "src": "4420:11:123", + "referencedDeclaration": 48844, + "src": "4458:11:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4445,33 +4503,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 48782, + "id": 48858, "name": "telepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48462, - "src": "4435:15:123", + "referencedDeclaration": 48536, + "src": "4473:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42568", + "typeIdentifier": "t_contract$_TelepathyRouter_$42576", "typeString": "contract TelepathyRouter" } }, - "id": 48783, + "id": 48859, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "4451:22:123", + "memberLocation": "4489:22:124", "memberName": "MIN_LIGHT_CLIENT_DELAY", "nodeType": "MemberAccess", - "referencedDeclaration": 41504, - "src": "4435:38:123", + "referencedDeclaration": 41510, + "src": "4473:38:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", "typeString": "function () view external returns (uint256)" } }, - "id": 48784, + "id": 48860, "isConstant": false, "isLValue": false, "isPure": false, @@ -4480,14 +4538,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4435:40:123", + "src": "4473:40:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4420:55:123", + "src": "4458:55:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4495,14 +4553,14 @@ }, { "hexValue": "4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f742e", - "id": 48786, + "id": 48862, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4489:36:123", + "src": "4527:36:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5b51feb04d24e293cda4cdf47dbe63ae0b79975ab7f4fafdae4b8602d5cda444", "typeString": "literal_string \"Must wait longer to use this slot.\"" @@ -4521,7 +4579,7 @@ "typeString": "literal_string \"Must wait longer to use this slot.\"" } ], - "id": 48780, + "id": 48856, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4529,13 +4587,13 @@ -18 ], "referencedDeclaration": -18, - "src": "4399:7:123", + "src": "4437:7:124", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 48787, + "id": 48863, "isConstant": false, "isLValue": false, "isPure": false, @@ -4544,43 +4602,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4399:136:123", + "src": "4437:136:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48788, + "id": 48864, "nodeType": "ExpressionStatement", - "src": "4399:136:123" + "src": "4437:136:124" } ] }, "documentation": { - "id": 48731, + "id": 48807, "nodeType": "StructuredDocumentation", - "src": "3858:59:123", + "src": "3896:59:124", "text": "@notice Checks that the light client delay is adequate." }, "implemented": true, "kind": "function", "modifiers": [], "name": "requireLightClientDelay", - "nameLocation": "3931:23:123", + "nameLocation": "3969:23:124", "parameters": { - "id": 48736, + "id": 48812, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48733, + "id": 48809, "mutability": "mutable", "name": "slot", - "nameLocation": "3962:4:123", + "nameLocation": "4000:4:124", "nodeType": "VariableDeclaration", - "scope": 48790, - "src": "3955:11:123", + "scope": 48866, + "src": "3993:11:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4588,10 +4646,10 @@ "typeString": "uint64" }, "typeName": { - "id": 48732, + "id": 48808, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "3955:6:123", + "src": "3993:6:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -4601,13 +4659,13 @@ }, { "constant": false, - "id": 48735, + "id": 48811, "mutability": "mutable", "name": "chainId", - "nameLocation": "3975:7:123", + "nameLocation": "4013:7:124", "nodeType": "VariableDeclaration", - "scope": 48790, - "src": "3968:14:123", + "scope": 48866, + "src": "4006:14:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4615,10 +4673,10 @@ "typeString": "uint32" }, "typeName": { - "id": 48734, + "id": 48810, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "3968:6:123", + "src": "4006:6:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -4627,44 +4685,44 @@ "visibility": "internal" } ], - "src": "3954:29:123" + "src": "3992:29:124" }, "returnParameters": { - "id": 48737, + "id": 48813, "nodeType": "ParameterList", "parameters": [], - "src": "3998:0:123" + "src": "4036:0:124" }, - "scope": 48903, + "scope": 48979, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 48902, + "id": 48978, "nodeType": "FunctionDefinition", - "src": "4667:1397:123", + "src": "4705:1397:124", "nodes": [], "body": { - "id": 48901, + "id": 48977, "nodeType": "Block", - "src": "4903:1161:123", + "src": "4941:1161:124", "nodes": [], "statements": [ { "assignments": [ - 48809 + 48885 ], "declarations": [ { "constant": false, - "id": 48809, + "id": 48885, "mutability": "mutable", "name": "success", - "nameLocation": "4918:7:123", + "nameLocation": "4956:7:124", "nodeType": "VariableDeclaration", - "scope": 48901, - "src": "4913:12:123", + "scope": 48977, + "src": "4951:12:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4672,10 +4730,10 @@ "typeString": "bool" }, "typeName": { - "id": 48808, + "id": 48884, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4913:4:123", + "src": "4951:4:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4684,24 +4742,24 @@ "visibility": "internal" } ], - "id": 48810, + "id": 48886, "nodeType": "VariableDeclarationStatement", - "src": "4913:12:123" + "src": "4951:12:124" }, { "assignments": [ - 48812 + 48888 ], "declarations": [ { "constant": false, - "id": 48812, + "id": 48888, "mutability": "mutable", "name": "data", - "nameLocation": "4948:4:123", + "nameLocation": "4986:4:124", "nodeType": "VariableDeclaration", - "scope": 48901, - "src": "4935:17:123", + "scope": 48977, + "src": "4973:17:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4709,10 +4767,10 @@ "typeString": "bytes" }, "typeName": { - "id": 48811, + "id": 48887, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4935:5:123", + "src": "4973:5:124", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4721,29 +4779,29 @@ "visibility": "internal" } ], - "id": 48813, + "id": 48889, "nodeType": "VariableDeclarationStatement", - "src": "4935:17:123" + "src": "4973:17:124" }, { - "id": 48841, + "id": 48917, "nodeType": "Block", - "src": "4962:435:123", + "src": "5000:435:124", "statements": [ { "assignments": [ - 48815 + 48891 ], "declarations": [ { "constant": false, - "id": 48815, + "id": 48891, "mutability": "mutable", "name": "receiveCall", - "nameLocation": "4989:11:123", + "nameLocation": "5027:11:124", "nodeType": "VariableDeclaration", - "scope": 48841, - "src": "4976:24:123", + "scope": 48917, + "src": "5014:24:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4751,10 +4809,10 @@ "typeString": "bytes" }, "typeName": { - "id": 48814, + "id": 48890, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4976:5:123", + "src": "5014:5:124", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4763,59 +4821,59 @@ "visibility": "internal" } ], - "id": 48830, + "id": 48906, "initialValue": { "arguments": [ { "expression": { "expression": { - "id": 48818, + "id": 48894, "name": "ISubscriptionReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49188, - "src": "5043:21:123", + "referencedDeclaration": 49264, + "src": "5081:21:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49188_$", + "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49264_$", "typeString": "type(contract ISubscriptionReceiver)" } }, - "id": 48819, + "id": 48895, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "5065:13:123", + "memberLocation": "5103:13:124", "memberName": "handlePublish", "nodeType": "MemberAccess", - "referencedDeclaration": 49187, - "src": "5043:35:123", + "referencedDeclaration": 49263, + "src": "5081:35:124", "typeDescriptions": { "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function ISubscriptionReceiver.handlePublish(bytes32,uint32,address,uint64,bytes32[] memory,bytes memory) returns (bytes4)" } }, - "id": 48820, + "id": 48896, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "5079:8:123", + "memberLocation": "5117:8:124", "memberName": "selector", "nodeType": "MemberAccess", - "src": "5043:44:123", + "src": "5081:44:124", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, { - "id": 48821, + "id": 48897, "name": "_subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48793, - "src": "5105:15:123", + "referencedDeclaration": 48869, + "src": "5143:15:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4823,27 +4881,27 @@ }, { "expression": { - "id": 48822, + "id": 48898, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48796, - "src": "5138:13:123", + "referencedDeclaration": 48872, + "src": "5176:13:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48823, + "id": 48899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5152:13:123", + "memberLocation": "5190:13:124", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49073, - "src": "5138:27:123", + "referencedDeclaration": 49149, + "src": "5176:27:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -4851,63 +4909,63 @@ }, { "expression": { - "id": 48824, + "id": 48900, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48796, - "src": "5183:13:123", + "referencedDeclaration": 48872, + "src": "5221:13:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48825, + "id": 48901, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5197:13:123", + "memberLocation": "5235:13:124", "memberName": "sourceAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 49075, - "src": "5183:27:123", + "referencedDeclaration": 49151, + "src": "5221:27:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 48826, + "id": 48902, "name": "_txSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48800, - "src": "5228:7:123", + "referencedDeclaration": 48876, + "src": "5266:7:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { - "id": 48827, + "id": 48903, "name": "_eventTopics", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48803, - "src": "5253:12:123", + "referencedDeclaration": 48879, + "src": "5291:12:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, { - "id": 48828, + "id": 48904, "name": "_eventData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48805, - "src": "5283:10:123", + "referencedDeclaration": 48881, + "src": "5321:10:124", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4946,32 +5004,32 @@ } ], "expression": { - "id": 48816, + "id": 48892, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "5003:3:123", + "src": "5041:3:124", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 48817, + "id": 48893, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "5007:18:123", + "memberLocation": "5045:18:124", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", - "src": "5003:22:123", + "src": "5041:22:124", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 48829, + "id": 48905, "isConstant": false, "isLValue": false, "isPure": false, @@ -4980,7 +5038,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5003:304:123", + "src": "5041:304:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -4988,11 +5046,11 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4976:331:123" + "src": "5014:331:124" }, { "expression": { - "id": 48839, + "id": 48915, "isConstant": false, "isLValue": false, "isPure": false, @@ -5000,38 +5058,38 @@ "leftHandSide": { "components": [ { - "id": 48831, + "id": 48907, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48809, - "src": "5322:7:123", + "referencedDeclaration": 48885, + "src": "5360:7:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { - "id": 48832, + "id": 48908, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48812, - "src": "5331:4:123", + "referencedDeclaration": 48888, + "src": "5369:4:124", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], - "id": 48833, + "id": 48909, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", - "src": "5321:15:123", + "src": "5359:15:124", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" @@ -5042,12 +5100,12 @@ "rightHandSide": { "arguments": [ { - "id": 48837, + "id": 48913, "name": "receiveCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48815, - "src": "5374:11:123", + "referencedDeclaration": 48891, + "src": "5412:11:124", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5063,47 +5121,47 @@ ], "expression": { "expression": { - "id": 48834, + "id": 48910, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48796, - "src": "5339:13:123", + "referencedDeclaration": 48872, + "src": "5377:13:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48835, + "id": 48911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5353:15:123", + "memberLocation": "5391:15:124", "memberName": "callbackAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 49077, - "src": "5339:29:123", + "referencedDeclaration": 49153, + "src": "5377:29:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 48836, + "id": 48912, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5369:4:123", + "memberLocation": "5407:4:124", "memberName": "call", "nodeType": "MemberAccess", - "src": "5339:34:123", + "src": "5377:34:124", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 48838, + "id": 48914, "isConstant": false, "isLValue": false, "isPure": false, @@ -5112,39 +5170,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5339:47:123", + "src": "5377:47:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, - "src": "5321:65:123", + "src": "5359:65:124", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48840, + "id": 48916, "nodeType": "ExpressionStatement", - "src": "5321:65:123" + "src": "5359:65:124" } ] }, { "assignments": [ - 48843 + 48919 ], "declarations": [ { "constant": false, - "id": 48843, + "id": 48919, "mutability": "mutable", "name": "implementsHandler", - "nameLocation": "5412:17:123", + "nameLocation": "5450:17:124", "nodeType": "VariableDeclaration", - "scope": 48901, - "src": "5407:22:123", + "scope": 48977, + "src": "5445:22:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5152,10 +5210,10 @@ "typeString": "bool" }, "typeName": { - "id": 48842, + "id": 48918, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5407:4:123", + "src": "5445:4:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5164,17 +5222,17 @@ "visibility": "internal" } ], - "id": 48845, + "id": 48921, "initialValue": { "hexValue": "66616c7365", - "id": 48844, + "id": 48920, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "5432:5:123", + "src": "5470:5:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5182,7 +5240,7 @@ "value": "false" }, "nodeType": "VariableDeclarationStatement", - "src": "5407:30:123" + "src": "5445:30:124" }, { "condition": { @@ -5190,33 +5248,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48849, + "id": 48925, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 48846, + "id": 48922, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48812, - "src": "5451:4:123", + "referencedDeclaration": 48888, + "src": "5489:4:124", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 48847, + "id": 48923, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5456:6:123", + "memberLocation": "5494:6:124", "memberName": "length", "nodeType": "MemberAccess", - "src": "5451:11:123", + "src": "5489:11:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5226,48 +5284,48 @@ "operator": "==", "rightExpression": { "hexValue": "3332", - "id": 48848, + "id": 48924, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5466:2:123", + "src": "5504:2:124", "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" }, "value": "32" }, - "src": "5451:17:123", + "src": "5489:17:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 48869, + "id": 48945, "nodeType": "IfStatement", - "src": "5447:178:123", + "src": "5485:178:124", "trueBody": { - "id": 48868, + "id": 48944, "nodeType": "Block", - "src": "5470:155:123", + "src": "5508:155:124", "statements": [ { "assignments": [ - 48851 + 48927 ], "declarations": [ { "constant": false, - "id": 48851, + "id": 48927, "mutability": "mutable", "name": "magic", - "nameLocation": "5492:5:123", + "nameLocation": "5530:5:124", "nodeType": "VariableDeclaration", - "scope": 48868, - "src": "5485:12:123", + "scope": 48944, + "src": "5523:12:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5275,10 +5333,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 48850, + "id": 48926, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "5485:6:123", + "src": "5523:6:124", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -5287,16 +5345,16 @@ "visibility": "internal" } ], - "id": 48859, + "id": 48935, "initialValue": { "arguments": [ { - "id": 48854, + "id": 48930, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48812, - "src": "5512:4:123", + "referencedDeclaration": 48888, + "src": "5550:4:124", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5305,34 +5363,34 @@ { "components": [ { - "id": 48856, + "id": 48932, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5519:6:123", + "src": "5557:6:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes4_$", "typeString": "type(bytes4)" }, "typeName": { - "id": 48855, + "id": 48931, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "5519:6:123", + "src": "5557:6:124", "typeDescriptions": {} } } ], - "id": 48857, + "id": 48933, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "5518:8:123", + "src": "5556:8:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes4_$", "typeString": "type(bytes4)" @@ -5351,32 +5409,32 @@ } ], "expression": { - "id": 48852, + "id": 48928, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "5501:3:123", + "src": "5539:3:124", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 48853, + "id": 48929, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "5505:6:123", + "memberLocation": "5543:6:124", "memberName": "decode", "nodeType": "MemberAccess", - "src": "5501:10:123", + "src": "5539:10:124", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 48858, + "id": 48934, "isConstant": false, "isLValue": false, "isPure": false, @@ -5385,7 +5443,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5501:26:123", + "src": "5539:26:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes4", @@ -5393,22 +5451,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5484:43:123" + "src": "5522:43:124" }, { "expression": { - "id": 48866, + "id": 48942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48860, + "id": 48936, "name": "implementsHandler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48843, - "src": "5541:17:123", + "referencedDeclaration": 48919, + "src": "5579:17:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5421,18 +5479,18 @@ "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, - "id": 48865, + "id": 48941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48861, + "id": 48937, "name": "magic", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48851, - "src": "5561:5:123", + "referencedDeclaration": 48927, + "src": "5599:5:124", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -5443,61 +5501,61 @@ "rightExpression": { "expression": { "expression": { - "id": 48862, + "id": 48938, "name": "ISubscriptionReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49188, - "src": "5570:21:123", + "referencedDeclaration": 49264, + "src": "5608:21:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49188_$", + "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49264_$", "typeString": "type(contract ISubscriptionReceiver)" } }, - "id": 48863, + "id": 48939, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "5592:13:123", + "memberLocation": "5630:13:124", "memberName": "handlePublish", "nodeType": "MemberAccess", - "referencedDeclaration": 49187, - "src": "5570:35:123", + "referencedDeclaration": 49263, + "src": "5608:35:124", "typeDescriptions": { "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function ISubscriptionReceiver.handlePublish(bytes32,uint32,address,uint64,bytes32[] memory,bytes memory) returns (bytes4)" } }, - "id": 48864, + "id": 48940, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "5606:8:123", + "memberLocation": "5644:8:124", "memberName": "selector", "nodeType": "MemberAccess", - "src": "5570:44:123", + "src": "5608:44:124", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, - "src": "5561:53:123", + "src": "5599:53:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "5541:73:123", + "src": "5579:73:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 48867, + "id": 48943, "nodeType": "ExpressionStatement", - "src": "5541:73:123" + "src": "5579:73:124" } ] } @@ -5508,18 +5566,18 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 48872, + "id": 48948, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48870, + "id": 48946, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48809, - "src": "5639:7:123", + "referencedDeclaration": 48885, + "src": "5677:7:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5528,56 +5586,56 @@ "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { - "id": 48871, + "id": 48947, "name": "implementsHandler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48843, - "src": "5650:17:123", + "referencedDeclaration": 48919, + "src": "5688:17:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "5639:28:123", + "src": "5677:28:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 48888, + "id": 48964, "nodeType": "Block", - "src": "5764:86:123", + "src": "5802:86:124", "statements": [ { "expression": { - "id": 48886, + "id": 48962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 48881, + "id": 48957, "name": "eventsPublished", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48467, - "src": "5778:15:123", + "referencedDeclaration": 48541, + "src": "5816:15:124", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49133_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49209_$", "typeString": "mapping(bytes32 => enum PublishStatus)" } }, - "id": 48883, + "id": 48959, "indexExpression": { - "id": 48882, + "id": 48958, "name": "_publishKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48798, - "src": "5794:11:123", + "referencedDeclaration": 48874, + "src": "5832:11:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5588,9 +5646,9 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5778:28:123", + "src": "5816:28:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49133", + "typeIdentifier": "t_enum$_PublishStatus_$49209", "typeString": "enum PublishStatus" } }, @@ -5598,80 +5656,80 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 48884, + "id": 48960, "name": "PublishStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49133, - "src": "5809:13:123", + "referencedDeclaration": 49209, + "src": "5847:13:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49133_$", + "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49209_$", "typeString": "type(enum PublishStatus)" } }, - "id": 48885, + "id": 48961, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "5823:16:123", + "memberLocation": "5861:16:124", "memberName": "EXECUTION_FAILED", "nodeType": "MemberAccess", - "referencedDeclaration": 49131, - "src": "5809:30:123", + "referencedDeclaration": 49207, + "src": "5847:30:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49133", + "typeIdentifier": "t_enum$_PublishStatus_$49209", "typeString": "enum PublishStatus" } }, - "src": "5778:61:123", + "src": "5816:61:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49133", + "typeIdentifier": "t_enum$_PublishStatus_$49209", "typeString": "enum PublishStatus" } }, - "id": 48887, + "id": 48963, "nodeType": "ExpressionStatement", - "src": "5778:61:123" + "src": "5816:61:124" } ] }, - "id": 48889, + "id": 48965, "nodeType": "IfStatement", - "src": "5635:215:123", + "src": "5673:215:124", "trueBody": { - "id": 48880, + "id": 48956, "nodeType": "Block", - "src": "5669:89:123", + "src": "5707:89:124", "statements": [ { "expression": { - "id": 48878, + "id": 48954, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 48873, + "id": 48949, "name": "eventsPublished", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48467, - "src": "5683:15:123", + "referencedDeclaration": 48541, + "src": "5721:15:124", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49133_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49209_$", "typeString": "mapping(bytes32 => enum PublishStatus)" } }, - "id": 48875, + "id": 48951, "indexExpression": { - "id": 48874, + "id": 48950, "name": "_publishKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48798, - "src": "5699:11:123", + "referencedDeclaration": 48874, + "src": "5737:11:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5682,9 +5740,9 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5683:28:123", + "src": "5721:28:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49133", + "typeIdentifier": "t_enum$_PublishStatus_$49209", "typeString": "enum PublishStatus" } }, @@ -5692,41 +5750,41 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 48876, + "id": 48952, "name": "PublishStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49133, - "src": "5714:13:123", + "referencedDeclaration": 49209, + "src": "5752:13:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49133_$", + "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49209_$", "typeString": "type(enum PublishStatus)" } }, - "id": 48877, + "id": 48953, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "5728:19:123", + "memberLocation": "5766:19:124", "memberName": "EXECUTION_SUCCEEDED", "nodeType": "MemberAccess", - "referencedDeclaration": 49132, - "src": "5714:33:123", + "referencedDeclaration": 49208, + "src": "5752:33:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49133", + "typeIdentifier": "t_enum$_PublishStatus_$49209", "typeString": "enum PublishStatus" } }, - "src": "5683:64:123", + "src": "5721:64:124", "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49133", + "typeIdentifier": "t_enum$_PublishStatus_$49209", "typeString": "enum PublishStatus" } }, - "id": 48879, + "id": 48955, "nodeType": "ExpressionStatement", - "src": "5683:64:123" + "src": "5721:64:124" } ] } @@ -5735,12 +5793,12 @@ "eventCall": { "arguments": [ { - "id": 48891, + "id": 48967, "name": "_subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48793, - "src": "5886:15:123", + "referencedDeclaration": 48869, + "src": "5924:15:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5748,27 +5806,27 @@ }, { "expression": { - "id": 48892, + "id": 48968, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48796, - "src": "5915:13:123", + "referencedDeclaration": 48872, + "src": "5953:13:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48893, + "id": 48969, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5929:13:123", + "memberLocation": "5967:13:124", "memberName": "sourceChainId", "nodeType": "MemberAccess", - "referencedDeclaration": 49073, - "src": "5915:27:123", + "referencedDeclaration": 49149, + "src": "5953:27:124", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -5776,27 +5834,27 @@ }, { "expression": { - "id": 48894, + "id": 48970, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48796, - "src": "5956:13:123", + "referencedDeclaration": 48872, + "src": "5994:13:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48895, + "id": 48971, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5970:13:123", + "memberLocation": "6008:13:124", "memberName": "sourceAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 49075, - "src": "5956:27:123", + "referencedDeclaration": 49151, + "src": "5994:27:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5804,39 +5862,39 @@ }, { "expression": { - "id": 48896, + "id": 48972, "name": "_subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48796, - "src": "5997:13:123", + "referencedDeclaration": 48872, + "src": "6035:13:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription calldata" } }, - "id": 48897, + "id": 48973, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6011:15:123", + "memberLocation": "6049:15:124", "memberName": "callbackAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 49077, - "src": "5997:29:123", + "referencedDeclaration": 49153, + "src": "6035:29:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 48898, + "id": 48974, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48809, - "src": "6040:7:123", + "referencedDeclaration": 48885, + "src": "6078:7:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5866,18 +5924,18 @@ "typeString": "bool" } ], - "id": 48890, + "id": 48966, "name": "Publish", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49146, - "src": "5865:7:123", + "referencedDeclaration": 49222, + "src": "5903:7:124", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (bytes32,uint32,address,address,bool)" } }, - "id": 48899, + "id": 48975, "isConstant": false, "isLValue": false, "isPure": false, @@ -5886,43 +5944,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5865:192:123", + "src": "5903:192:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48900, + "id": 48976, "nodeType": "EmitStatement", - "src": "5860:197:123" + "src": "5898:197:124" } ] }, "documentation": { - "id": 48791, + "id": 48867, "nodeType": "StructuredDocumentation", - "src": "4548:114:123", + "src": "4586:114:124", "text": "@notice Executes the callback function on the subscriber, and marks the event publish as successful or failed." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_publish", - "nameLocation": "4676:8:123", + "nameLocation": "4714:8:124", "parameters": { - "id": 48806, + "id": 48882, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48793, + "id": 48869, "mutability": "mutable", "name": "_subscriptionId", - "nameLocation": "4702:15:123", + "nameLocation": "4740:15:124", "nodeType": "VariableDeclaration", - "scope": 48902, - "src": "4694:23:123", + "scope": 48978, + "src": "4732:23:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5930,10 +5988,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 48792, + "id": 48868, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4694:7:123", + "src": "4732:7:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5943,36 +6001,36 @@ }, { "constant": false, - "id": 48796, + "id": 48872, "mutability": "mutable", "name": "_subscription", - "nameLocation": "4749:13:123", + "nameLocation": "4787:13:124", "nodeType": "VariableDeclaration", - "scope": 48902, - "src": "4727:35:123", + "scope": 48978, + "src": "4765:35:124", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_calldata_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", "typeString": "struct Subscription" }, "typeName": { - "id": 48795, + "id": 48871, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48794, + "id": 48870, "name": "Subscription", "nameLocations": [ - "4727:12:123" + "4765:12:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49080, - "src": "4727:12:123" + "referencedDeclaration": 49156, + "src": "4765:12:124" }, - "referencedDeclaration": 49080, - "src": "4727:12:123", + "referencedDeclaration": 49156, + "src": "4765:12:124", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_storage_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_storage_ptr", "typeString": "struct Subscription" } }, @@ -5980,13 +6038,13 @@ }, { "constant": false, - "id": 48798, + "id": 48874, "mutability": "mutable", "name": "_publishKey", - "nameLocation": "4780:11:123", + "nameLocation": "4818:11:124", "nodeType": "VariableDeclaration", - "scope": 48902, - "src": "4772:19:123", + "scope": 48978, + "src": "4810:19:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5994,10 +6052,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 48797, + "id": 48873, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4772:7:123", + "src": "4810:7:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6007,13 +6065,13 @@ }, { "constant": false, - "id": 48800, + "id": 48876, "mutability": "mutable", "name": "_txSlot", - "nameLocation": "4808:7:123", + "nameLocation": "4846:7:124", "nodeType": "VariableDeclaration", - "scope": 48902, - "src": "4801:14:123", + "scope": 48978, + "src": "4839:14:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6021,10 +6079,10 @@ "typeString": "uint64" }, "typeName": { - "id": 48799, + "id": 48875, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "4801:6:123", + "src": "4839:6:124", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -6034,13 +6092,13 @@ }, { "constant": false, - "id": 48803, + "id": 48879, "mutability": "mutable", "name": "_eventTopics", - "nameLocation": "4842:12:123", + "nameLocation": "4880:12:124", "nodeType": "VariableDeclaration", - "scope": 48902, - "src": "4825:29:123", + "scope": 48978, + "src": "4863:29:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6049,18 +6107,18 @@ }, "typeName": { "baseType": { - "id": 48801, + "id": 48877, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4825:7:123", + "src": "4863:7:124", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 48802, + "id": 48878, "nodeType": "ArrayTypeName", - "src": "4825:9:123", + "src": "4863:9:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -6070,13 +6128,13 @@ }, { "constant": false, - "id": 48805, + "id": 48881, "mutability": "mutable", "name": "_eventData", - "nameLocation": "4877:10:123", + "nameLocation": "4915:10:124", "nodeType": "VariableDeclaration", - "scope": 48902, - "src": "4864:23:123", + "scope": 48978, + "src": "4902:23:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6084,10 +6142,10 @@ "typeString": "bytes" }, "typeName": { - "id": 48804, + "id": 48880, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4864:5:123", + "src": "4902:5:124", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6096,15 +6154,15 @@ "visibility": "internal" } ], - "src": "4684:209:123" + "src": "4722:209:124" }, "returnParameters": { - "id": 48807, + "id": 48883, "nodeType": "ParameterList", "parameters": [], - "src": "4903:0:123" + "src": "4941:0:124" }, - "scope": 48903, + "scope": 48979, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" @@ -6114,56 +6172,56 @@ "baseContracts": [ { "baseName": { - "id": 48530, + "id": 48604, "name": "IPublisher", "nameLocations": [ - "709:10:123" + "709:10:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49167, - "src": "709:10:123" + "referencedDeclaration": 49243, + "src": "709:10:124" }, - "id": 48531, + "id": 48605, "nodeType": "InheritanceSpecifier", - "src": "709:10:123" + "src": "709:10:124" }, { "baseName": { - "id": 48532, + "id": 48606, "name": "PubSubStorage", "nameLocations": [ - "721:13:123" + "721:13:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48478, - "src": "721:13:123" + "referencedDeclaration": 48552, + "src": "721:13:124" }, - "id": 48533, + "id": 48607, "nodeType": "InheritanceSpecifier", - "src": "721:13:123" + "src": "721:13:124" } ], "canonicalName": "TelepathyPublisher", "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 48529, + "id": 48603, "nodeType": "StructuredDocumentation", - "src": "538:140:123", + "src": "538:140:124", "text": "@title TelepathyPublisher\n @author Succinct Labs\n @notice A contract that can publish events to a ISubscriptionReceiver contract." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 48903, - 48478, - 49167 + 48979, + 48552, + 49243 ], "name": "TelepathyPublisher", - "nameLocation": "687:18:123", - "scope": 48904, + "nameLocation": "687:18:124", + "scope": 48980, "usedErrors": [] } ] }, - "id": 123 + "id": 124 } \ No newline at end of file diff --git a/out/TelepathyRouter.sol/TelepathyRouter.json b/out/TelepathyRouter.sol/TelepathyRouter.json index 3960525..2c364d7 100644 --- a/out/TelepathyRouter.sol/TelepathyRouter.json +++ b/out/TelepathyRouter.sol/TelepathyRouter.json @@ -5,6 +5,16 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "CannotSendToSameChain", + "type": "error" + }, + { + "inputs": [], + "name": "SendingDisabled", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -1002,34 +1012,52 @@ } ], "bytecode": { - "object": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e8565b603254610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60325460ff9081161015620000e6576032805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615f3662000120600039600081816109f701528181610a3701528181610d9f01528181610ddf0152610e6e0152615f366000f3fe6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004614f74565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a366004614fad565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b5366004615034565b6107be565b3480156102c657600080fd5b506102da6102d5366004615094565b6108cb565b005b3480156102e857600080fd5b5061028c6102f73660046150af565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615ee183398151915281565b34801561033a57600080fd5b506102da6103493660046150c8565b610945565b34801561035a57600080fd5b506102da6103693660046150c8565b61096f565b34801561037a57600080fd5b506102da6103893660046150f4565b6109ed565b34801561039a57600080fd5b5061024a6103a9366004615094565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d9366004615208565b610acc565b3480156103ea57600080fd5b5061040e6103f93660046150af565b60076020526000908152604090205460ff1681565b604051610256919061531b565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da610458366004615343565b610d95565b34801561046957600080fd5b5061028c610e61565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b9366004615094565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da61050736600461543e565b610f14565b34801561051857600080fd5b506102da611217565b34801561052d57600080fd5b5061028c61053c366004615034565b6112fc565b34801561054d57600080fd5b5061028c61055c366004615552565b61137b565b34801561056d57600080fd5b506104d461057c366004615094565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b2366004615593565b6113d2565b3480156105c357600080fd5b5061028c6105d23660046150af565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff36600461563d565b6116e7565b34801561061057600080fd5b5061024a61061f3660046150c8565b611898565b34801561063057600080fd5b506102da6118c3565b34801561064557600080fd5b506102da610654366004615094565b6119a8565b34801561066557600080fd5b506106796106743660046150af565b611a25565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be366004615552565b611a5f565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da6107163660046150c8565b611ab6565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b366004615680565b611adb565b34801561075c57600080fd5b5061028c600080516020615e5a83398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107ea5760405162461bcd60e51b81526004016107e19061569d565b60405180910390fd5b468563ffffffff160361080f5760405162461bcd60e51b81526004016107e1906156ca565b600080610828876001600160a01b0388165b8787611b56565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161085d83615717565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b9919061578d565b60405180910390a39695505050505050565b6108e3600080516020615ee183398151915233611898565b6108ff5760405162461bcd60e51b81526004016107e1906157a0565b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096081611bcd565b61096a8383611bd7565b505050565b6001600160a01b03811633146109df5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107e1565b6109e98282611c5d565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a355760405162461bcd60e51b81526004016107e1906157f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a7e600080516020615e9a833981519152546001600160a01b031690565b6001600160a01b031614610aa45760405162461bcd60e51b81526004016107e190615841565b610aad81611cc4565b60408051600080825260208201909252610ac991839190611cf8565b50565b610ad4611e63565b600080610ae18b8b611ebc565b91509150610af28260400151612126565b610aff8260400151612255565b6000808e8e810190610b11919061588d565b91509150610b238285604001516122b1565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb291906158b7565b905080610bf95760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016107e1565b6000610c3d8b8e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508991508890506124e5565b905080610c8c5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016107e1565b505050506000610cf1878790610ca291906158d0565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261268d565b9050818114610d3a5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016107e1565b50610d7c82828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a4092505050565b5050610d886001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ddd5760405162461bcd60e51b81526004016107e1906157f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e26600080516020615e9a833981519152546001600160a01b031690565b6001600160a01b031614610e4c5760405162461bcd60e51b81526004016107e190615841565b610e5582611cc4565b6109e982826001611cf8565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f015760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107e1565b50600080516020615e9a83398151915290565b603254610100900460ff1615808015610f345750603254600160ff909116105b80610f4e5750303b158015610f4e575060325460ff166001145b610fb15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107e1565b6032805460ff191660011790558015610fd4576032805461ff0019166101001790555b610fdc612bee565b610fe4612c1f565b610ffc600080516020615ee183398151915284611bd7565b611014600080516020615e5a83398151915285611bd7565b61101f600085611bd7565b611027612c1f565b855187511461103557600080fd5b845187511461104357600080fd5b86516110569060039060208a0190614e9a565b5060005b60035463ffffffff821610156111aa57868163ffffffff168151811061108257611082615937565b60200260200101516004600060038463ffffffff16815481106110a7576110a7615937565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112357611123615937565b60200260200101516005600060038463ffffffff168154811061114857611148615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a28161594d565b91505061105a565b506000805483151560ff1991821617909155600880549091166001179055801561120e576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b61122f600080516020615ee183398151915233611898565b61124b5760405162461bcd60e51b81526004016107e1906157a0565b60005b60035463ffffffff821610156112d05760006006600060038463ffffffff168154811061127d5761127d615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112c88161594d565b91505061124e565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661131f5760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff16036113445760405162461bcd60e51b81526004016107e1906156ca565b60008061135a876001600160a01b038816610821565b6002805492945090925082916001600160401b031690600061085d83615717565b6000805460ff1661139e5760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff16036113c35760405162461bcd60e51b81526004016107e1906156ca565b60008061082887878787611b56565b6113da611e63565b6000806113e78888611ebc565b915091506113f88260400151612126565b6114058260400151612255565b6114138983604001516122b1565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115c55760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa158015611500573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152491906158b7565b905060008190036115775760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016107e1565b6115ab611584898b6158d0565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612c46565b600083815260096020526040902081905592506115d79050565b60008181526009602052604090205491505b6000846020015160016040516020016116059291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061164d82856116488a8c6158d0565b612d3d565b90508481146116965760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016107e1565b505050506116db82828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a4092505050565b505061120e6001603355565b6116ff600080516020615e5a83398151915233611898565b61171b5760405162461bcd60e51b81526004016107e190615966565b6000805b600354811015611787578463ffffffff166003828154811061174357611743615937565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117755760019150611787565b8061177f816159bb565b91505061171f565b508061181057600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118db600080516020615ee183398151915233611898565b6118f75760405162461bcd60e51b81526004016107e1906157a0565b60005b60035463ffffffff8216101561197c5760016006600060038463ffffffff168154811061192957611929615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806119748161594d565b9150506118fa565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119c0600080516020615ee183398151915233611898565b6119dc5760405162461bcd60e51b81526004016107e1906157a0565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a3557600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a825760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff1603611aa75760405162461bcd60e51b81526004016107e1906156ca565b60008061135a87878787611b56565b600082815260c96020526040902060010154611ad181611bcd565b61096a8383611c5d565b611af3600080516020615ee183398151915233611898565b611b0f5760405162461bcd60e51b81526004016107e1906157a0565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bb99360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612dd992505050565b805160208201209097909650945050505050565b610ac98133612e14565b611be18282611898565b6109e957600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c193390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c678282611898565b156109e957600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611cdc600080516020615e5a83398151915233611898565b610ac95760405162461bcd60e51b81526004016107e190615966565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d2b5761096a83612e6d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d85575060408051601f3d908101601f19168201909252611d82918101906158b7565b60015b611de85760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107e1565b600080516020615e9a8339815191528114611e575760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107e1565b5061096a838383612f09565b600260335403611eb55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107e1565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f3985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f3492505050565b905060008585604051611f4d9291906159d4565b60405190819003902090506000808281526007602052604090205460ff166002811115611f7c57611f7c615305565b14611fc95760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016107e1565b46826080015163ffffffff16146120115760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016107e1565b600854825160ff90811691161461205b5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016107e1565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120a6575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121195760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016107e1565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b031661218c5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016107e1565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220991906159e4565b610ac95760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016107e1565b63ffffffff811660009081526006602052604090205460ff1615610ac95760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016107e1565b63ffffffff81166000908152600460205260409020546001600160a01b03166123175760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016107e1565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015612380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a491906158b7565b6000036123f35760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016107e1565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247d91906158b7565b6124879042615a01565b9050607881101561096a5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016107e1565b600080826001600160401b0316846001600160401b0316036125235750600b61251081610200615a14565b61251c90610183615a33565b9050612676565b6120006125308486615a46565b6001600160401b0316116125925750600b61254c816020615a14565b612557906006615a33565b905061256e6120006001600160401b038516615a83565b61257a61200083615a14565b6125849190615a33565b905061251081610200615a14565b836001600160401b0316836001600160401b031610156126245750600b6125ba816020615a14565b6125c5906007615a33565b90506125d2816002615a14565b6125dd906000615a33565b90506125f46120006001600160401b038516615a97565b612602630100000083615a14565b61260c9190615a33565b9050612619816002615a14565b612557906001615a33565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016107e1565b61268287828888612ff9565b979650505050505050565b60008061269b878a8a613013565b90506000816000815181106126b2576126b2615937565b01602001516001600160f81b03191690506000600160f81b8214806126e45750600160f91b6001600160f81b03198316145b156126f157506001612756565b600360fe1b6001600160f81b031983161061270e57506000612756565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016107e1565b6000602084019050600060405180604001604052808487516127789190615a01565b81526020016127878585615a33565b905290506000612796826138b3565b905080516004146127e25760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016107e1565b6000612807826003815181106127fa576127fa615937565b60200260200101516138b3565b905080518c106128595760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016107e1565b6000612870828e815181106127fa576127fa615937565b905080516003146128ce5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016107e1565b60006128f3826000815181106128e6576128e6615937565b6020026020010151613ad8565b90508c6001600160a01b0316816001600160a01b0316146129665760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016107e1565b600061297e836001815181106127fa576127fa615937565b90508c6129a48260008151811061299757612997615937565b6020026020010151613b42565b14612a075760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016107e1565b612a29818d81518110612a1c57612a1c615937565b6020026020010151613b49565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612a6f93929190615aab565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612ac19190615adb565b6000604051808303816000865af19150503d8060008114612afe576040519150601f19603f3d011682016040523d82523d6000602084013e612b03565b606091505b5080519195509350600092506020039050612b4557600082806020019051810190612b2e9190615af7565b6001600160e01b031916631dee306b60e11b149150505b828015612b4f5750805b15612b72576000858152600760205260409020805460ff19166002179055612b8c565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612bd7929190615b14565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612c155760405162461bcd60e51b81526004016107e190615b38565b612c1d613c4c565b565b603254610100900460ff16612c1d5760405162461bcd60e51b81526004016107e190615b38565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612cab82604051602001612c9591815260200190565b6040516020818303038152906040528786613013565b90506000815111612cf75760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016107e1565b6000612d0a612d0583613c73565b6138b3565b90508051600414612d1a57600080fd5b612d308160028151811061299757612997615937565b93505050505b9392505050565b600080612d6c85604051602001612d5691815260200190565b6040516020818303038152906040528486613013565b90506000815111612dbf5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016107e1565b612dd0612dcb82613c73565b613b42565b95945050505050565b606087878787878787604051602001612df89796959493929190615b83565b6040516020818303038152906040529050979650505050505050565b612e1e8282611898565b6109e957612e2b81613cc6565b612e36836020613cd8565b604051602001612e47929190615c0a565b60408051601f198184030181529082905262461bcd60e51b82526107e19160040161578d565b6001600160a01b0381163b612eda5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107e1565b600080516020615e9a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612f1283613e73565b600082511180612f1f5750805b1561096a57612f2e8383613eb3565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091612fe8918a9190612fe3908290615a01565b613f9e565b60c088015250949695505050505050565b60008061300786868661408a565b90921495945050505050565b6060600084511161305e5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016107e1565b600061306984614219565b9050600061307686614307565b905060008460405160200161308d91815260200190565b60405160208183030381529060405290506000805b845181101561385c5760008582815181106130bf576130bf615937565b6020026020010151905084518311156131315760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016107e1565b826000036131d0578051805160209182012060405161317f9261315992910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6131cb5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016107e1565b6132c6565b80515160201161325657805180516020918201206040516131fa9261315992910190815260200190565b6131cb5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016107e1565b8051845160208087019190912082519190920120146132c65760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016107e1565b6132d260106001615a33565b8160200151510361347f578451830361341757600061330e826020015160108151811061330157613301615937565b6020026020010151614421565b905060008151116133875760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016107e1565b600187516133959190615a01565b83146134095760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016107e1565b9650612d3695505050505050565b600085848151811061342b5761342b615937565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061345657613456615937565b6020026020010151905061346981614544565b9550613476600186615a33565b94505050613849565b6002816020015151036137f057600061349782614569565b90506000816000815181106134ae576134ae615937565b016020015160f81c905060006134c5600283615c7f565b6134d0906002615ca1565b905060006134e1848360ff1661458d565b905060006134ef8a8961458d565b905060006134fd83836145c3565b9050808351146135755760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016107e1565b60ff85166002148061358a575060ff85166003145b1561373057808251146136055760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016107e1565b6000613621886020015160018151811061330157613301615937565b9050600081511161369a5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016107e1565b60018d516136a89190615a01565b891461371c5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016107e1565b9c50612d369b505050505050505050505050565b60ff85161580613743575060ff85166001145b156137825761376f876020015160018151811061376257613762615937565b6020026020010151614544565b995061377b818a615a33565b98506137e5565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016107e1565b505050505050613849565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016107e1565b5080613854816159bb565b9150506130a2565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016107e1565b606060008060006138c385614642565b9194509250905060018160018111156138de576138de615305565b146139515760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016107e1565b845161395d8385615a33565b146139c55760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016107e1565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816139de5790505090506000845b8751811015613acc57600080613a516040518060400160405280858d60000151613a359190615a01565b8152602001858d60200151613a4a9190615a33565b9052614642565b509150915060405180604001604052808383613a6d9190615a33565b8152602001848c60200151613a829190615a33565b815250858581518110613a9757613a97615937565b6020908102919091010152613aad600185615a33565b9350613ab98183615a33565b613ac39084615a33565b92505050613a0b565b50815295945050505050565b8051600090600103613aec57506000919050565b8151601514613b3d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016107e1565b6107b8825b60006107b8825b6000602182600001511115613ba05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016107e1565b6000806000613bae85614642565b919450925090506000816001811115613bc957613bc9615305565b14613c165760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016107e1565b6000838660200151613c289190615a33565b80519091506020841015613c425760208490036101000a90045b9695505050505050565b603254610100900460ff16612be75760405162461bcd60e51b81526004016107e190615b38565b60408051808201909152600080825260208201526000825111613ca85760405162461bcd60e51b81526004016107e190615cba565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613ce7836002615a14565b613cf2906002615a33565b6001600160401b03811115613d0957613d09615153565b6040519080825280601f01601f191660200182016040528015613d33576020820181803683370190505b509050600360fc1b81600081518110613d4e57613d4e615937565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613d7d57613d7d615937565b60200101906001600160f81b031916908160001a9053506000613da1846002615a14565b613dac906001615a33565b90505b6001811115613e24576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613de057613de0615937565b1a60f81b828281518110613df657613df6615937565b60200101906001600160f81b031916908160001a90535060049490941c93613e1d81615d2a565b9050613daf565b508315612d365760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107e1565b613e7c81612e6d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613f1b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107e1565b600080846001600160a01b031684604051613f369190615adb565b600060405180830381855af49150503d8060008114613f71576040519150601f19603f3d011682016040523d82523d6000602084013e613f76565b606091505b5091509150612dd08282604051806060016040528060278152602001615eba60279139614d05565b606081613fac81601f615a33565b1015613fca5760405162461bcd60e51b81526004016107e190615d41565b613fd48284615a33565b845110156140185760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016107e1565b6060821580156140375760405191506000825260208201604052614081565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614070578051835260209283019201614058565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161409b9190615a33565b6140a6906002615e4d565b116140b057600080fd5b8360005b84600114614081576140c7600286615a83565b6001036141665760028482815181106140e2576140e2615937565b602002602001015183604051602001614105929190918252602082015260400190565b60408051601f198184030181529082905261411f91615adb565b602060405180830381855afa15801561413c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061415f91906158b7565b91506141fa565b60028285838151811061417b5761417b615937565b602002602001015160405160200161419d929190918252602082015260400190565b60408051601f19818403018152908290526141b791615adb565b602060405180830381855afa1580156141d4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906141f791906158b7565b91505b614205600286615a97565b945080614211816159bb565b9150506140b4565b80516060906000816001600160401b0381111561423857614238615153565b60405190808252806020026020018201604052801561427d57816020015b60408051808201909152606080825260208201528152602001906001900390816142565790505b50905060005b828110156142ff5760405180604001604052808683815181106142a8576142a8615937565b602002602001015181526020016142d78784815181106142ca576142ca615937565b6020026020010151614d1e565b8152508282815181106142ec576142ec615937565b6020908102919091010152600101614283565b509392505050565b80516060906000614319826002615a14565b6001600160401b0381111561433057614330615153565b6040519080825280601f01601f19166020018201604052801561435a576020820181803683370190505b5090506000805b838110156144175785818151811061437b5761437b615937565b6020910101516001600160f81b03198116925060041c60ff60f41b16836143a3836002615a14565b815181106143b3576143b3615937565b60200101906001600160f81b031916908160001a905350600f60f81b8216836143dd836002615a14565b6143e8906001615a33565b815181106143f8576143f8615937565b60200101906001600160f81b031916908160001a905350600101614361565b5090949350505050565b6060600080600061443185614642565b91945092509050600081600181111561444c5761444c615305565b146144bf5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016107e1565b6144c98284615a33565b8551146145355760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016107e1565b612dd085602001518484614d2c565b606060208260000151106145605761455b82614421565b6107b8565b6107b882614dcc565b60606107b8614588836020015160008151811061330157613301615937565b614307565b6060825182106145ac57506040805160208101909152600081526107b8565b612d3683838486516145be9190615a01565b614de2565b600080600083518551106145d85783516145db565b84515b90505b808210801561463257508382815181106145fa576145fa615937565b602001015160f81c60f81b6001600160f81b03191685838151811061462157614621615937565b01602001516001600160f81b031916145b156142ff578160010191506145de565b60008060008084600001511161466a5760405162461bcd60e51b81526004016107e190615cba565b6020840151805160001a607f811161468f576000600160009450945094505050614cfe565b60b781116147ec5760006146a4608083615a01565b9050808760000151116147245760405162461bcd60e51b815260206004820152604e6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016107e1565b6001838101516001600160f81b03191690821415806147515750600160ff1b6001600160f81b0319821610155b6147d95760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016107e1565b5060019550935060009250614cfe915050565b60bf8111614a2d57600061480160b783615a01565b9050808760000151116148845760405162461bcd60e51b81526020600482015260516024820152600080516020615e7a83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016107e1565b60018301516001600160f81b031916600081900361490b5760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016107e1565b600184015160088302610100031c6037811161498e5760405162461bcd60e51b81526020600482015260486024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016107e1565b6149988184615a33565b895111614a105760405162461bcd60e51b815260206004820152604c6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016107e1565b614a1b836001615a33565b9750955060009450614cfe9350505050565b60f78111614acf576000614a4260c083615a01565b905080876000015111614abe5760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016107e1565b600195509350849250614cfe915050565b6000614adc60f783615a01565b905080876000015111614b5b5760405162461bcd60e51b815260206004820152604d6024820152600080516020615e7a83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016107e1565b60018301516001600160f81b0319166000819003614be05760405162461bcd60e51b81526020600482015260486024820152600080516020615e7a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016107e1565b600184015160088302610100031c60378111614c615760405162461bcd60e51b81526020600482015260466024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016107e1565b614c6b8184615a33565b895111614ce15760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016107e1565b614cec836001615a33565b9750955060019450614cfe9350505050565b9193909250565b60608315614d14575081612d36565b612d368383614e70565b60606107b8612d0583613c73565b60606000826001600160401b03811115614d4857614d48615153565b6040519080825280601f01601f191660200182016040528015614d72576020820181803683370190505b50905082600003614d84579050612d36565b6000614d908587615a33565b90506020820160005b85811015614db1578281015182820152602001614d99565b85811115614dc0576000868301525b50919695505050505050565b60606107b8826020015160008460000151614d2c565b60608182601f011015614e075760405162461bcd60e51b81526004016107e190615d41565b828284011015614e295760405162461bcd60e51b81526004016107e190615d41565b818301845110156140185760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016107e1565b815115614e805781518083602001fd5b8060405162461bcd60e51b81526004016107e1919061578d565b82805482825590600052602060002090600701600890048101928215614f395791602002820160005b83821115614f0757835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614ec3565b8015614f375782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614f07565b505b50614f45929150614f49565b5090565b5b80821115614f455760008155600101614f4a565b6001600160e01b031981168114610ac957600080fd5b600060208284031215614f8657600080fd5b8135612d3681614f5e565b80356001600160401b0381168114614fa857600080fd5b919050565b600060208284031215614fbf57600080fd5b612d3682614f91565b803563ffffffff81168114614fa857600080fd5b80356001600160a01b0381168114614fa857600080fd5b60008083601f84011261500557600080fd5b5081356001600160401b0381111561501c57600080fd5b60208301915083602082850101111561211f57600080fd5b6000806000806060858703121561504a57600080fd5b61505385614fc8565b935061506160208601614fdc565b925060408501356001600160401b0381111561507c57600080fd5b61508887828801614ff3565b95989497509550505050565b6000602082840312156150a657600080fd5b612d3682614fc8565b6000602082840312156150c157600080fd5b5035919050565b600080604083850312156150db57600080fd5b823591506150eb60208401614fdc565b90509250929050565b60006020828403121561510657600080fd5b612d3682614fdc565b60008083601f84011261512157600080fd5b5081356001600160401b0381111561513857600080fd5b6020830191508360208260051b850101111561211f57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561519157615191615153565b604052919050565b600082601f8301126151aa57600080fd5b81356001600160401b038111156151c3576151c3615153565b6151d6601f8201601f1916602001615169565b8181528460208386010111156151eb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561522957600080fd5b6001600160401b03808d35111561523f57600080fd5b61524c8e8e358f01614ff3565b909c509a5060208d013581101561526257600080fd5b6152728e60208f01358f01614ff3565b909a50985060408d013581101561528857600080fd5b6152988e60408f01358f0161510f565b909850965060608d0135955060808d01358110156152b557600080fd5b6152c58e60808f01358f0161510f565b909550935060a08d01358110156152db57600080fd5b506152ec8d60a08e01358e01615199565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b602081016003831061533d57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561535657600080fd5b61535f83614fdc565b915060208301356001600160401b0381111561537a57600080fd5b61538685828601615199565b9150509250929050565b60006001600160401b038211156153a9576153a9615153565b5060051b60200190565b600082601f8301126153c457600080fd5b813560206153d96153d483615390565b615169565b82815260059290921b840181019181810190868411156153f857600080fd5b8286015b8481101561541a5761540d81614fdc565b83529183019183016153fc565b509695505050505050565b8015158114610ac957600080fd5b8035614fa881615425565b60008060008060008060c0878903121561545757600080fd5b86356001600160401b038082111561546e57600080fd5b818901915089601f83011261548257600080fd5b813560206154926153d483615390565b82815260059290921b8401810191818101908d8411156154b157600080fd5b948201945b838610156154d6576154c786614fc8565b825294820194908201906154b6565b9a50508a0135925050808211156154ec57600080fd5b6154f88a838b016153b3565b9650604089013591508082111561550e57600080fd5b5061551b89828a016153b3565b94505061552a60608801614fdc565b925061553860808801614fdc565b915061554660a08801615433565b90509295509295509295565b6000806000806060858703121561556857600080fd5b61557185614fc8565b93506020850135925060408501356001600160401b0381111561507c57600080fd5b60008060008060008060006080888a0312156155ae57600080fd5b6155b788614f91565b965060208801356001600160401b03808211156155d357600080fd5b6155df8b838c01614ff3565b909850965060408a01359150808211156155f857600080fd5b6156048b838c0161510f565b909650945060608a013591508082111561561d57600080fd5b5061562a8a828b0161510f565b989b979a50959850939692959293505050565b60008060006060848603121561565257600080fd5b61565b84614fc8565b925061566960208501614fdc565b915061567760408501614fdc565b90509250925092565b60006020828403121561569257600080fd5b8135612d3681615425565b60208082526013908201527214d95b991a5b99c81a5cc8191a5cd8589b1959606a1b604082015260600190565b60208082526019908201527f43616e6e6f742073656e6420746f2073616d6520636861696e00000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681810361573357615733615701565b6001019392505050565b60005b83811015615758578181015183820152602001615740565b50506000910152565b6000815180845261577981602086016020860161573d565b601f01601f19169290920160200192915050565b602081526000612d366020830184615761565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600080604083850312156158a057600080fd5b6158a983614f91565b91506150eb60208401614f91565b6000602082840312156158c957600080fd5b5051919050565b60006158de6153d484615390565b80848252602080830192508560051b8501368111156158fc57600080fd5b855b81811015614dc05780356001600160401b0381111561591d5760008081fd5b61592936828a01615199565b8652509382019382016158fe565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff80831681810361573357615733615701565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6000600182016159cd576159cd615701565b5060010190565b8183823760009101908152919050565b6000602082840312156159f657600080fd5b8151612d3681615425565b818103818111156107b8576107b8615701565b6000816000190483118215151615615a2e57615a2e615701565b500290565b808201808211156107b8576107b8615701565b6001600160401b03828116828216039080821115615a6657615a66615701565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082615a9257615a92615a6d565b500690565b600082615aa657615aa6615a6d565b500490565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612dd090830184615761565b60008251615aed81846020870161573d565b9190910192915050565b600060208284031215615b0957600080fd5b8151612d3681614f5e565b604081526000615b276040830185615761565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615bf781604585016020870161573d565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615c4281601785016020880161573d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615c7381602884016020880161573d565b01602801949350505050565b600060ff831680615c9257615c92615a6d565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b8615701565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615d3957615d39615701565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615da4578160001904821115615d8a57615d8a615701565b80851615615d9757918102915b93841c9390800290615d6e565b509250929050565b600082615dbb575060016107b8565b81615dc8575060006107b8565b8160018114615dde5760028114615de857615e04565b60019150506107b8565b60ff841115615df957615df9615701565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615e27575081810a6107b8565b615e318383615d69565b8060001904821115615e4557615e45615701565b029392505050565b6000612d368383615dac56fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220f963c2cdb21e7cd55c8073e6b7a59d7952e2e681906c27fcf9b57ed9ceac437d64736f6c63430008100033", - "sourceMap": "698:1544:102:-:0;;;1332:4:38;1289:48;;987:53:102;;;;;;;;;-1:-1:-1;1011:22:102;:20;:22::i;:::-;698:1544;;5928:279:37;5996:13;;;;;;;5995:14;5987:66;;;;-1:-1:-1;;;5987:66:37;;216:2:145;5987:66:37;;;198:21:145;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:145;;;338:37;392:19;;5987:66:37;;;;;;;;6067:12;;6082:15;6067:12;;;:30;6063:138;;;6113:12;:30;;-1:-1:-1;;6113:30:37;6128:15;6113:30;;;;;;6162:28;;564:36:145;;;6162:28:37;;552:2:145;537:18;6162:28:37;;;;;;;6063:138;5928:279::o;422:184:145:-;698:1544:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} + "object": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e8565b603254610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60325460ff9081161015620000e6576032805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615fb362000120600039600081816109f901528181610a3901528181610da601528181610de60152610e750152615fb36000f3fe6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004615055565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a36600461508e565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b5366004615115565b6107be565b3480156102c657600080fd5b506102da6102d5366004615175565b6108c4565b005b3480156102e857600080fd5b5061028c6102f7366004615190565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615f5e83398151915281565b34801561033a57600080fd5b506102da6103493660046151a9565b610947565b34801561035a57600080fd5b506102da6103693660046151a9565b610971565b34801561037a57600080fd5b506102da6103893660046151d5565b6109ef565b34801561039a57600080fd5b5061024a6103a9366004615175565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d93660046152e9565b610ace565b3480156103ea57600080fd5b5061040e6103f9366004615190565b60076020526000908152604090205460ff1681565b60405161025691906153fc565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da610458366004615424565b610d9c565b34801561046957600080fd5b5061028c610e68565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b9366004615175565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da61050736600461551f565b610f1b565b34801561051857600080fd5b506102da61121e565b34801561052d57600080fd5b5061028c61053c366004615115565b611303565b34801561054d57600080fd5b5061028c61055c366004615633565b611384565b34801561056d57600080fd5b506104d461057c366004615175565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b2366004615674565b6113dd565b3480156105c357600080fd5b5061028c6105d2366004615190565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff36600461571e565b6116f2565b34801561061057600080fd5b5061024a61061f3660046151a9565b6118a3565b34801561063057600080fd5b506102da6118ce565b34801561064557600080fd5b506102da610654366004615175565b6119b3565b34801561066557600080fd5b50610679610674366004615190565b611a30565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be366004615633565b611a6a565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da6107163660046151a9565b611ac3565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b366004615761565b611ae8565b34801561075c57600080fd5b5061028c600080516020615ed783398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107e257604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036108085760405163b0747d8160e01b815260040160405180910390fd5b600080610821876001600160a01b0388165b8787611b63565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161085683615794565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b2919061580a565b60405180910390a39695505050505050565b6108dc600080516020615f5e833981519152336118a3565b6109015760405162461bcd60e51b81526004016108f89061581d565b60405180910390fd5b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096281611bda565b61096c8383611be4565b505050565b6001600160a01b03811633146109e15760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108f8565b6109eb8282611c6a565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a375760405162461bcd60e51b81526004016108f890615872565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a80600080516020615f17833981519152546001600160a01b031690565b6001600160a01b031614610aa65760405162461bcd60e51b81526004016108f8906158be565b610aaf81611cd1565b60408051600080825260208201909252610acb91839190611d05565b50565b610ad6611e70565b600080610ae38b8b611ec9565b91509150610af48260400151612133565b610b018260400151612262565b6000808e8e810190610b13919061590a565b91509150610b258285604001516122be565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190615934565b905080610bfb5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016108f8565b6000610c448b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a0151869150889088906124f2565b905080610c935760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016108f8565b505050506000610cf8878790610ca9919061594d565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261276e565b9050818114610d415760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b50610d8382828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b2192505050565b5050610d8f6001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610de45760405162461bcd60e51b81526004016108f890615872565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e2d600080516020615f17833981519152546001600160a01b031690565b6001600160a01b031614610e535760405162461bcd60e51b81526004016108f8906158be565b610e5c82611cd1565b6109eb82826001611d05565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f085760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f8565b50600080516020615f1783398151915290565b603254610100900460ff1615808015610f3b5750603254600160ff909116105b80610f555750303b158015610f55575060325460ff166001145b610fb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f8565b6032805460ff191660011790558015610fdb576032805461ff0019166101001790555b610fe3612ccf565b610feb612d00565b611003600080516020615f5e83398151915284611be4565b61101b600080516020615ed783398151915285611be4565b611026600085611be4565b61102e612d00565b855187511461103c57600080fd5b845187511461104a57600080fd5b865161105d9060039060208a0190614f7b565b5060005b60035463ffffffff821610156111b157868163ffffffff1681518110611089576110896159b4565b60200260200101516004600060038463ffffffff16815481106110ae576110ae6159b4565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112a5761112a6159b4565b60200260200101516005600060038463ffffffff168154811061114f5761114f6159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a9816159ca565b915050611061565b506000805483151560ff19918216179091556008805490911660011790558015611215576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b611236600080516020615f5e833981519152336118a3565b6112525760405162461bcd60e51b81526004016108f89061581d565b60005b60035463ffffffff821610156112d75760006006600060038463ffffffff1681548110611284576112846159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112cf816159ca565b915050611255565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661132757604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361134d5760405163b0747d8160e01b815260040160405180910390fd5b600080611363876001600160a01b03881661081a565b6002805492945090925082916001600160401b031690600061085683615794565b6000805460ff166113a857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036113ce5760405163b0747d8160e01b815260040160405180910390fd5b60008061082187878787611b63565b6113e5611e70565b6000806113f28888611ec9565b915091506114038260400151612133565b6114108260400151612262565b61141e8983604001516122be565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115d05760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa15801561150b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152f9190615934565b905060008190036115825760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016108f8565b6115b661158f898b61594d565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612d27565b600083815260096020526040902081905592506115e29050565b60008181526009602052604090205491505b6000846020015160016040516020016116109291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061165882856116538a8c61594d565b612e1e565b90508481146116a15760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b505050506116e682828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b2192505050565b50506112156001603355565b61170a600080516020615ed7833981519152336118a3565b6117265760405162461bcd60e51b81526004016108f8906159e3565b6000805b600354811015611792578463ffffffff166003828154811061174e5761174e6159b4565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117805760019150611792565b8061178a81615a38565b91505061172a565b508061181b57600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118e6600080516020615f5e833981519152336118a3565b6119025760405162461bcd60e51b81526004016108f89061581d565b60005b60035463ffffffff821610156119875760016006600060038463ffffffff1681548110611934576119346159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff19169115159190911790558061197f816159ca565b915050611905565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119cb600080516020615f5e833981519152336118a3565b6119e75760405162461bcd60e51b81526004016108f89061581d565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a4057600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a8e57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff1603611ab45760405163b0747d8160e01b815260040160405180910390fd5b60008061136387878787611b63565b600082815260c96020526040902060010154611ade81611bda565b61096c8383611c6a565b611b00600080516020615f5e833981519152336118a3565b611b1c5760405162461bcd60e51b81526004016108f89061581d565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bc69360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612eba92505050565b805160208201209097909650945050505050565b610acb8133612ef5565b611bee82826118a3565b6109eb57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c263390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c7482826118a3565b156109eb57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611ce9600080516020615ed7833981519152336118a3565b610acb5760405162461bcd60e51b81526004016108f8906159e3565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d385761096c83612f4e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d92575060408051601f3d908101601f19168201909252611d8f91810190615934565b60015b611df55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f8565b600080516020615f178339815191528114611e645760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f8565b5061096c838383612fea565b600260335403611ec25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108f8565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f4685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061301592505050565b905060008585604051611f5a929190615a51565b60405190819003902090506000808281526007602052604090205460ff166002811115611f8957611f896153e6565b14611fd65760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016108f8565b46826080015163ffffffff161461201e5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016108f8565b600854825160ff9081169116146120685760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016108f8565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120b3575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121265760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016108f8565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b03166121995760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122169190615a61565b610acb5760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016108f8565b63ffffffff811660009081526006602052604090205460ff1615610acb5760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016108f8565b63ffffffff81166000908152600460205260409020546001600160a01b03166123245760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b19190615934565b6000036124005760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016108f8565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248a9190615934565b6124949042615a7e565b9050607881101561096c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016108f8565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af415801561254c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125709190615934565b9050600081856001600160401b03161061258b57601b61258e565b60075b60ff169050600082866001600160401b0316106125ca576120006125bb846001600160401b038916615a7e565b6125c59190615aa7565b6125df565b6125df6120006001600160401b038816615aa7565b90506000866001600160401b0316886001600160401b03160361261e5750600b61260b81610200615abb565b61261790610183615ada565b9050612753565b61200061262b888a615aed565b6001600160401b03161161268d5750600b612647816020615abb565b612652906006615ada565b90506126696120006001600160401b038916615b14565b61267561200083615abb565b61267f9190615ada565b905061260b81610200615abb565b876001600160401b0316876001600160401b0316101561270b5750600b826126b6826020615abb565b6126c09190615ada565b90506126cd816002615abb565b6126d8906000615ada565b9050816126e9630100000083615abb565b6126f39190615ada565b9050612700816002615abb565b612652906001615ada565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016108f8565b61275f8b828c8c6130da565b9b9a5050505050505050505050565b60008061277c878a8a6130f4565b9050600081600081518110612793576127936159b4565b01602001516001600160f81b03191690506000600160f81b8214806127c55750600160f91b6001600160f81b03198316145b156127d257506001612837565b600360fe1b6001600160f81b03198316106127ef57506000612837565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016108f8565b6000602084019050600060405180604001604052808487516128599190615a7e565b81526020016128688585615ada565b90529050600061287782613994565b905080516004146128c35760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016108f8565b60006128e8826003815181106128db576128db6159b4565b6020026020010151613994565b905080518c1061293a5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016108f8565b6000612951828e815181106128db576128db6159b4565b905080516003146129af5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016108f8565b60006129d4826000815181106129c7576129c76159b4565b6020026020010151613bb9565b90508c6001600160a01b0316816001600160a01b031614612a475760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016108f8565b6000612a5f836001815181106128db576128db6159b4565b90508c612a8582600081518110612a7857612a786159b4565b6020026020010151613c23565b14612ae85760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016108f8565b612b0a818d81518110612afd57612afd6159b4565b6020026020010151613c2a565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612b5093929190615b28565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612ba29190615b58565b6000604051808303816000865af19150503d8060008114612bdf576040519150601f19603f3d011682016040523d82523d6000602084013e612be4565b606091505b5080519195509350600092506020039050612c2657600082806020019051810190612c0f9190615b74565b6001600160e01b031916631dee306b60e11b149150505b828015612c305750805b15612c53576000858152600760205260409020805460ff19166002179055612c6d565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612cb8929190615b91565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612cf65760405162461bcd60e51b81526004016108f890615bb5565b612cfe613d2d565b565b603254610100900460ff16612cfe5760405162461bcd60e51b81526004016108f890615bb5565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612d8c82604051602001612d7691815260200190565b60405160208183030381529060405287866130f4565b90506000815111612dd85760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016108f8565b6000612deb612de683613d54565b613994565b90508051600414612dfb57600080fd5b612e1181600281518110612a7857612a786159b4565b93505050505b9392505050565b600080612e4d85604051602001612e3791815260200190565b60405160208183030381529060405284866130f4565b90506000815111612ea05760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016108f8565b612eb1612eac82613d54565b613c23565b95945050505050565b606087878787878787604051602001612ed99796959493929190615c00565b6040516020818303038152906040529050979650505050505050565b612eff82826118a3565b6109eb57612f0c81613da7565b612f17836020613db9565b604051602001612f28929190615c87565b60408051601f198184030181529082905262461bcd60e51b82526108f89160040161580a565b6001600160a01b0381163b612fbb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f8565b600080516020615f1783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612ff383613f54565b6000825111806130005750805b1561096c5761300f8383613f94565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916130c9918a91906130c4908290615a7e565b61407f565b60c088015250949695505050505050565b6000806130e886868661416b565b90921495945050505050565b6060600084511161313f5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016108f8565b600061314a846142fa565b90506000613157866143e8565b905060008460405160200161316e91815260200190565b60405160208183030381529060405290506000805b845181101561393d5760008582815181106131a0576131a06159b4565b6020026020010151905084518311156132125760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016108f8565b826000036132b157805180516020918201206040516132609261323a92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6132ac5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016108f8565b6133a7565b80515160201161333757805180516020918201206040516132db9261323a92910190815260200190565b6132ac5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016108f8565b8051845160208087019190912082519190920120146133a75760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016108f8565b6133b360106001615ada565b8160200151510361356057845183036134f85760006133ef82602001516010815181106133e2576133e26159b4565b6020026020010151614502565b905060008151116134685760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016108f8565b600187516134769190615a7e565b83146134ea5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016108f8565b9650612e1795505050505050565b600085848151811061350c5761350c6159b4565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110613537576135376159b4565b6020026020010151905061354a81614625565b9550613557600186615ada565b9450505061392a565b6002816020015151036138d15760006135788261464a565b905060008160008151811061358f5761358f6159b4565b016020015160f81c905060006135a6600283615cfc565b6135b1906002615d1e565b905060006135c2848360ff1661466e565b905060006135d08a8961466e565b905060006135de83836146a4565b9050808351146136565760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016108f8565b60ff85166002148061366b575060ff85166003145b1561381157808251146136e65760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016108f8565b600061370288602001516001815181106133e2576133e26159b4565b9050600081511161377b5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016108f8565b60018d516137899190615a7e565b89146137fd5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016108f8565b9c50612e179b505050505050505050505050565b60ff85161580613824575060ff85166001145b15613863576138508760200151600181518110613843576138436159b4565b6020026020010151614625565b995061385c818a615ada565b98506138c6565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016108f8565b50505050505061392a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016108f8565b508061393581615a38565b915050613183565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016108f8565b606060008060006139a485614723565b9194509250905060018160018111156139bf576139bf6153e6565b14613a325760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016108f8565b8451613a3e8385615ada565b14613aa65760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016108f8565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081613abf5790505090506000845b8751811015613bad57600080613b326040518060400160405280858d60000151613b169190615a7e565b8152602001858d60200151613b2b9190615ada565b9052614723565b509150915060405180604001604052808383613b4e9190615ada565b8152602001848c60200151613b639190615ada565b815250858581518110613b7857613b786159b4565b6020908102919091010152613b8e600185615ada565b9350613b9a8183615ada565b613ba49084615ada565b92505050613aec565b50815295945050505050565b8051600090600103613bcd57506000919050565b8151601514613c1e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016108f8565b6107b8825b60006107b8825b6000602182600001511115613c815760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000806000613c8f85614723565b919450925090506000816001811115613caa57613caa6153e6565b14613cf75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000838660200151613d099190615ada565b80519091506020841015613d235760208490036101000a90045b9695505050505050565b603254610100900460ff16612cc85760405162461bcd60e51b81526004016108f890615bb5565b60408051808201909152600080825260208201526000825111613d895760405162461bcd60e51b81526004016108f890615d37565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613dc8836002615abb565b613dd3906002615ada565b6001600160401b03811115613dea57613dea615234565b6040519080825280601f01601f191660200182016040528015613e14576020820181803683370190505b509050600360fc1b81600081518110613e2f57613e2f6159b4565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613e5e57613e5e6159b4565b60200101906001600160f81b031916908160001a9053506000613e82846002615abb565b613e8d906001615ada565b90505b6001811115613f05576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613ec157613ec16159b4565b1a60f81b828281518110613ed757613ed76159b4565b60200101906001600160f81b031916908160001a90535060049490941c93613efe81615da7565b9050613e90565b508315612e175760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108f8565b613f5d81612f4e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613ffc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108f8565b600080846001600160a01b0316846040516140179190615b58565b600060405180830381855af49150503d8060008114614052576040519150601f19603f3d011682016040523d82523d6000602084013e614057565b606091505b5091509150612eb18282604051806060016040528060278152602001615f3760279139614de6565b60608161408d81601f615ada565b10156140ab5760405162461bcd60e51b81526004016108f890615dbe565b6140b58284615ada565b845110156140f95760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b6060821580156141185760405191506000825260208201604052614162565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614151578051835260209283019201614139565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161417c9190615ada565b614187906002615eca565b1161419157600080fd5b8360005b84600114614162576141a8600286615b14565b6001036142475760028482815181106141c3576141c36159b4565b6020026020010151836040516020016141e6929190918252602082015260400190565b60408051601f198184030181529082905261420091615b58565b602060405180830381855afa15801561421d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142409190615934565b91506142db565b60028285838151811061425c5761425c6159b4565b602002602001015160405160200161427e929190918252602082015260400190565b60408051601f198184030181529082905261429891615b58565b602060405180830381855afa1580156142b5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142d89190615934565b91505b6142e6600286615aa7565b9450806142f281615a38565b915050614195565b80516060906000816001600160401b0381111561431957614319615234565b60405190808252806020026020018201604052801561435e57816020015b60408051808201909152606080825260208201528152602001906001900390816143375790505b50905060005b828110156143e0576040518060400160405280868381518110614389576143896159b4565b602002602001015181526020016143b88784815181106143ab576143ab6159b4565b6020026020010151614dff565b8152508282815181106143cd576143cd6159b4565b6020908102919091010152600101614364565b509392505050565b805160609060006143fa826002615abb565b6001600160401b0381111561441157614411615234565b6040519080825280601f01601f19166020018201604052801561443b576020820181803683370190505b5090506000805b838110156144f85785818151811061445c5761445c6159b4565b6020910101516001600160f81b03198116925060041c60ff60f41b1683614484836002615abb565b81518110614494576144946159b4565b60200101906001600160f81b031916908160001a905350600f60f81b8216836144be836002615abb565b6144c9906001615ada565b815181106144d9576144d96159b4565b60200101906001600160f81b031916908160001a905350600101614442565b5090949350505050565b6060600080600061451285614723565b91945092509050600081600181111561452d5761452d6153e6565b146145a05760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016108f8565b6145aa8284615ada565b8551146146165760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016108f8565b612eb185602001518484614e0d565b606060208260000151106146415761463c82614502565b6107b8565b6107b882614ead565b60606107b861466983602001516000815181106133e2576133e26159b4565b6143e8565b60608251821061468d57506040805160208101909152600081526107b8565b612e17838384865161469f9190615a7e565b614ec3565b600080600083518551106146b95783516146bc565b84515b90505b808210801561471357508382815181106146db576146db6159b4565b602001015160f81c60f81b6001600160f81b031916858381518110614702576147026159b4565b01602001516001600160f81b031916145b156143e0578160010191506146bf565b60008060008084600001511161474b5760405162461bcd60e51b81526004016108f890615d37565b6020840151805160001a607f8111614770576000600160009450945094505050614ddf565b60b781116148cd576000614785608083615a7e565b9050808760000151116148055760405162461bcd60e51b815260206004820152604e6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016108f8565b6001838101516001600160f81b03191690821415806148325750600160ff1b6001600160f81b0319821610155b6148ba5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016108f8565b5060019550935060009250614ddf915050565b60bf8111614b0e5760006148e260b783615a7e565b9050808760000151116149655760405162461bcd60e51b81526020600482015260516024820152600080516020615ef783398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016108f8565b60018301516001600160f81b03191660008190036149ec5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016108f8565b600184015160088302610100031c60378111614a6f5760405162461bcd60e51b81526020600482015260486024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016108f8565b614a798184615ada565b895111614af15760405162461bcd60e51b815260206004820152604c6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016108f8565b614afc836001615ada565b9750955060009450614ddf9350505050565b60f78111614bb0576000614b2360c083615a7e565b905080876000015111614b9f5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016108f8565b600195509350849250614ddf915050565b6000614bbd60f783615a7e565b905080876000015111614c3c5760405162461bcd60e51b815260206004820152604d6024820152600080516020615ef783398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016108f8565b60018301516001600160f81b0319166000819003614cc15760405162461bcd60e51b81526020600482015260486024820152600080516020615ef783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016108f8565b600184015160088302610100031c60378111614d425760405162461bcd60e51b81526020600482015260466024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016108f8565b614d4c8184615ada565b895111614dc25760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016108f8565b614dcd836001615ada565b9750955060019450614ddf9350505050565b9193909250565b60608315614df5575081612e17565b612e178383614f51565b60606107b8612de683613d54565b60606000826001600160401b03811115614e2957614e29615234565b6040519080825280601f01601f191660200182016040528015614e53576020820181803683370190505b50905082600003614e65579050612e17565b6000614e718587615ada565b90506020820160005b85811015614e92578281015182820152602001614e7a565b85811115614ea1576000868301525b50919695505050505050565b60606107b8826020015160008460000151614e0d565b60608182601f011015614ee85760405162461bcd60e51b81526004016108f890615dbe565b828284011015614f0a5760405162461bcd60e51b81526004016108f890615dbe565b818301845110156140f95760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b815115614f615781518083602001fd5b8060405162461bcd60e51b81526004016108f8919061580a565b8280548282559060005260206000209060070160089004810192821561501a5791602002820160005b83821115614fe857835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614fa4565b80156150185782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614fe8565b505b5061502692915061502a565b5090565b5b80821115615026576000815560010161502b565b6001600160e01b031981168114610acb57600080fd5b60006020828403121561506757600080fd5b8135612e178161503f565b80356001600160401b038116811461508957600080fd5b919050565b6000602082840312156150a057600080fd5b612e1782615072565b803563ffffffff8116811461508957600080fd5b80356001600160a01b038116811461508957600080fd5b60008083601f8401126150e657600080fd5b5081356001600160401b038111156150fd57600080fd5b60208301915083602082850101111561212c57600080fd5b6000806000806060858703121561512b57600080fd5b615134856150a9565b9350615142602086016150bd565b925060408501356001600160401b0381111561515d57600080fd5b615169878288016150d4565b95989497509550505050565b60006020828403121561518757600080fd5b612e17826150a9565b6000602082840312156151a257600080fd5b5035919050565b600080604083850312156151bc57600080fd5b823591506151cc602084016150bd565b90509250929050565b6000602082840312156151e757600080fd5b612e17826150bd565b60008083601f84011261520257600080fd5b5081356001600160401b0381111561521957600080fd5b6020830191508360208260051b850101111561212c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561527257615272615234565b604052919050565b600082601f83011261528b57600080fd5b81356001600160401b038111156152a4576152a4615234565b6152b7601f8201601f191660200161524a565b8181528460208386010111156152cc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561530a57600080fd5b6001600160401b03808d35111561532057600080fd5b61532d8e8e358f016150d4565b909c509a5060208d013581101561534357600080fd5b6153538e60208f01358f016150d4565b909a50985060408d013581101561536957600080fd5b6153798e60408f01358f016151f0565b909850965060608d0135955060808d013581101561539657600080fd5b6153a68e60808f01358f016151f0565b909550935060a08d01358110156153bc57600080fd5b506153cd8d60a08e01358e0161527a565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b602081016003831061541e57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561543757600080fd5b615440836150bd565b915060208301356001600160401b0381111561545b57600080fd5b6154678582860161527a565b9150509250929050565b60006001600160401b0382111561548a5761548a615234565b5060051b60200190565b600082601f8301126154a557600080fd5b813560206154ba6154b583615471565b61524a565b82815260059290921b840181019181810190868411156154d957600080fd5b8286015b848110156154fb576154ee816150bd565b83529183019183016154dd565b509695505050505050565b8015158114610acb57600080fd5b803561508981615506565b60008060008060008060c0878903121561553857600080fd5b86356001600160401b038082111561554f57600080fd5b818901915089601f83011261556357600080fd5b813560206155736154b583615471565b82815260059290921b8401810191818101908d84111561559257600080fd5b948201945b838610156155b7576155a8866150a9565b82529482019490820190615597565b9a50508a0135925050808211156155cd57600080fd5b6155d98a838b01615494565b965060408901359150808211156155ef57600080fd5b506155fc89828a01615494565b94505061560b606088016150bd565b9250615619608088016150bd565b915061562760a08801615514565b90509295509295509295565b6000806000806060858703121561564957600080fd5b615652856150a9565b93506020850135925060408501356001600160401b0381111561515d57600080fd5b60008060008060008060006080888a03121561568f57600080fd5b61569888615072565b965060208801356001600160401b03808211156156b457600080fd5b6156c08b838c016150d4565b909850965060408a01359150808211156156d957600080fd5b6156e58b838c016151f0565b909650945060608a01359150808211156156fe57600080fd5b5061570b8a828b016151f0565b989b979a50959850939692959293505050565b60008060006060848603121561573357600080fd5b61573c846150a9565b925061574a602085016150bd565b9150615758604085016150bd565b90509250925092565b60006020828403121561577357600080fd5b8135612e1781615506565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b038083168181036157b0576157b061577e565b6001019392505050565b60005b838110156157d55781810151838201526020016157bd565b50506000910152565b600081518084526157f68160208601602086016157ba565b601f01601f19169290920160200192915050565b602081526000612e1760208301846157de565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000806040838503121561591d57600080fd5b61592683615072565b91506151cc60208401615072565b60006020828403121561594657600080fd5b5051919050565b600061595b6154b584615471565b80848252602080830192508560051b85013681111561597957600080fd5b855b81811015614ea15780356001600160401b0381111561599a5760008081fd5b6159a636828a0161527a565b86525093820193820161597b565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff8083168181036157b0576157b061577e565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b600060018201615a4a57615a4a61577e565b5060010190565b8183823760009101908152919050565b600060208284031215615a7357600080fd5b8151612e1781615506565b818103818111156107b8576107b861577e565b634e487b7160e01b600052601260045260246000fd5b600082615ab657615ab6615a91565b500490565b6000816000190483118215151615615ad557615ad561577e565b500290565b808201808211156107b8576107b861577e565b6001600160401b03828116828216039080821115615b0d57615b0d61577e565b5092915050565b600082615b2357615b23615a91565b500690565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612eb1908301846157de565b60008251615b6a8184602087016157ba565b9190910192915050565b600060208284031215615b8657600080fd5b8151612e178161503f565b604081526000615ba460408301856157de565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615c748160458501602087016157ba565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615cbf8160178501602088016157ba565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615cf08160288401602088016157ba565b01602801949350505050565b600060ff831680615d0f57615d0f615a91565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b861577e565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615db657615db661577e565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615e21578160001904821115615e0757615e0761577e565b80851615615e1457918102915b93841c9390800290615deb565b509250929050565b600082615e38575060016107b8565b81615e45575060006107b8565b8160018114615e5b5760028114615e6557615e81565b60019150506107b8565b60ff841115615e7657615e7661577e565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615ea4575081810a6107b8565b615eae8383615de6565b8060001904821115615ec257615ec261577e565b029392505050565b6000612e178383615e2956fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212209920968ca2549dc136114884cdd68cb7192890d709c1df8ba30e5a5f0825170164736f6c63430008100033", + "sourceMap": "698:1544:102:-:0;;;1332:4:38;1289:48;;987:53:102;;;;;;;;;-1:-1:-1;1011:22:102;:20;:22::i;:::-;698:1544;;5928:279:37;5996:13;;;;;;;5995:14;5987:66;;;;-1:-1:-1;;;5987:66:37;;216:2:146;5987:66:37;;;198:21:146;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:146;;;338:37;392:19;;5987:66:37;;;;;;;;6067:12;;6082:15;6067:12;;;:30;6063:138;;;6113:12;:30;;-1:-1:-1;;6113:30:37;6128:15;6113:30;;;;;;6162:28;;564:36:146;;;6162:28:37;;552:2:146;537:18;6162:28:37;;;;;;;6063:138;5928:279::o;422:184:146:-;698:1544:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": { + "src/libraries/BeaconChainForks.sol": { + "BeaconChainForks": [ + { + "start": 9778, + "length": 20 + } + ] + } + } }, "deployedBytecode": { - "object": "0x6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004614f74565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a366004614fad565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b5366004615034565b6107be565b3480156102c657600080fd5b506102da6102d5366004615094565b6108cb565b005b3480156102e857600080fd5b5061028c6102f73660046150af565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615ee183398151915281565b34801561033a57600080fd5b506102da6103493660046150c8565b610945565b34801561035a57600080fd5b506102da6103693660046150c8565b61096f565b34801561037a57600080fd5b506102da6103893660046150f4565b6109ed565b34801561039a57600080fd5b5061024a6103a9366004615094565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d9366004615208565b610acc565b3480156103ea57600080fd5b5061040e6103f93660046150af565b60076020526000908152604090205460ff1681565b604051610256919061531b565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da610458366004615343565b610d95565b34801561046957600080fd5b5061028c610e61565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b9366004615094565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da61050736600461543e565b610f14565b34801561051857600080fd5b506102da611217565b34801561052d57600080fd5b5061028c61053c366004615034565b6112fc565b34801561054d57600080fd5b5061028c61055c366004615552565b61137b565b34801561056d57600080fd5b506104d461057c366004615094565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b2366004615593565b6113d2565b3480156105c357600080fd5b5061028c6105d23660046150af565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff36600461563d565b6116e7565b34801561061057600080fd5b5061024a61061f3660046150c8565b611898565b34801561063057600080fd5b506102da6118c3565b34801561064557600080fd5b506102da610654366004615094565b6119a8565b34801561066557600080fd5b506106796106743660046150af565b611a25565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be366004615552565b611a5f565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da6107163660046150c8565b611ab6565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b366004615680565b611adb565b34801561075c57600080fd5b5061028c600080516020615e5a83398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107ea5760405162461bcd60e51b81526004016107e19061569d565b60405180910390fd5b468563ffffffff160361080f5760405162461bcd60e51b81526004016107e1906156ca565b600080610828876001600160a01b0388165b8787611b56565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161085d83615717565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b9919061578d565b60405180910390a39695505050505050565b6108e3600080516020615ee183398151915233611898565b6108ff5760405162461bcd60e51b81526004016107e1906157a0565b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096081611bcd565b61096a8383611bd7565b505050565b6001600160a01b03811633146109df5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107e1565b6109e98282611c5d565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a355760405162461bcd60e51b81526004016107e1906157f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a7e600080516020615e9a833981519152546001600160a01b031690565b6001600160a01b031614610aa45760405162461bcd60e51b81526004016107e190615841565b610aad81611cc4565b60408051600080825260208201909252610ac991839190611cf8565b50565b610ad4611e63565b600080610ae18b8b611ebc565b91509150610af28260400151612126565b610aff8260400151612255565b6000808e8e810190610b11919061588d565b91509150610b238285604001516122b1565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb291906158b7565b905080610bf95760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016107e1565b6000610c3d8b8e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508991508890506124e5565b905080610c8c5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016107e1565b505050506000610cf1878790610ca291906158d0565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261268d565b9050818114610d3a5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016107e1565b50610d7c82828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a4092505050565b5050610d886001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ddd5760405162461bcd60e51b81526004016107e1906157f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e26600080516020615e9a833981519152546001600160a01b031690565b6001600160a01b031614610e4c5760405162461bcd60e51b81526004016107e190615841565b610e5582611cc4565b6109e982826001611cf8565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f015760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107e1565b50600080516020615e9a83398151915290565b603254610100900460ff1615808015610f345750603254600160ff909116105b80610f4e5750303b158015610f4e575060325460ff166001145b610fb15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107e1565b6032805460ff191660011790558015610fd4576032805461ff0019166101001790555b610fdc612bee565b610fe4612c1f565b610ffc600080516020615ee183398151915284611bd7565b611014600080516020615e5a83398151915285611bd7565b61101f600085611bd7565b611027612c1f565b855187511461103557600080fd5b845187511461104357600080fd5b86516110569060039060208a0190614e9a565b5060005b60035463ffffffff821610156111aa57868163ffffffff168151811061108257611082615937565b60200260200101516004600060038463ffffffff16815481106110a7576110a7615937565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112357611123615937565b60200260200101516005600060038463ffffffff168154811061114857611148615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a28161594d565b91505061105a565b506000805483151560ff1991821617909155600880549091166001179055801561120e576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b61122f600080516020615ee183398151915233611898565b61124b5760405162461bcd60e51b81526004016107e1906157a0565b60005b60035463ffffffff821610156112d05760006006600060038463ffffffff168154811061127d5761127d615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112c88161594d565b91505061124e565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661131f5760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff16036113445760405162461bcd60e51b81526004016107e1906156ca565b60008061135a876001600160a01b038816610821565b6002805492945090925082916001600160401b031690600061085d83615717565b6000805460ff1661139e5760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff16036113c35760405162461bcd60e51b81526004016107e1906156ca565b60008061082887878787611b56565b6113da611e63565b6000806113e78888611ebc565b915091506113f88260400151612126565b6114058260400151612255565b6114138983604001516122b1565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115c55760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa158015611500573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152491906158b7565b905060008190036115775760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016107e1565b6115ab611584898b6158d0565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612c46565b600083815260096020526040902081905592506115d79050565b60008181526009602052604090205491505b6000846020015160016040516020016116059291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061164d82856116488a8c6158d0565b612d3d565b90508481146116965760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016107e1565b505050506116db82828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a4092505050565b505061120e6001603355565b6116ff600080516020615e5a83398151915233611898565b61171b5760405162461bcd60e51b81526004016107e190615966565b6000805b600354811015611787578463ffffffff166003828154811061174357611743615937565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117755760019150611787565b8061177f816159bb565b91505061171f565b508061181057600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118db600080516020615ee183398151915233611898565b6118f75760405162461bcd60e51b81526004016107e1906157a0565b60005b60035463ffffffff8216101561197c5760016006600060038463ffffffff168154811061192957611929615937565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806119748161594d565b9150506118fa565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119c0600080516020615ee183398151915233611898565b6119dc5760405162461bcd60e51b81526004016107e1906157a0565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a3557600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a825760405162461bcd60e51b81526004016107e19061569d565b468563ffffffff1603611aa75760405162461bcd60e51b81526004016107e1906156ca565b60008061135a87878787611b56565b600082815260c96020526040902060010154611ad181611bcd565b61096a8383611c5d565b611af3600080516020615ee183398151915233611898565b611b0f5760405162461bcd60e51b81526004016107e1906157a0565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bb99360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612dd992505050565b805160208201209097909650945050505050565b610ac98133612e14565b611be18282611898565b6109e957600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c193390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c678282611898565b156109e957600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611cdc600080516020615e5a83398151915233611898565b610ac95760405162461bcd60e51b81526004016107e190615966565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d2b5761096a83612e6d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d85575060408051601f3d908101601f19168201909252611d82918101906158b7565b60015b611de85760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107e1565b600080516020615e9a8339815191528114611e575760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107e1565b5061096a838383612f09565b600260335403611eb55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107e1565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f3985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f3492505050565b905060008585604051611f4d9291906159d4565b60405190819003902090506000808281526007602052604090205460ff166002811115611f7c57611f7c615305565b14611fc95760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016107e1565b46826080015163ffffffff16146120115760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016107e1565b600854825160ff90811691161461205b5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016107e1565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120a6575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121195760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016107e1565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b031661218c5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016107e1565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220991906159e4565b610ac95760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016107e1565b63ffffffff811660009081526006602052604090205460ff1615610ac95760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016107e1565b63ffffffff81166000908152600460205260409020546001600160a01b03166123175760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016107e1565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015612380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a491906158b7565b6000036123f35760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016107e1565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247d91906158b7565b6124879042615a01565b9050607881101561096a5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016107e1565b600080826001600160401b0316846001600160401b0316036125235750600b61251081610200615a14565b61251c90610183615a33565b9050612676565b6120006125308486615a46565b6001600160401b0316116125925750600b61254c816020615a14565b612557906006615a33565b905061256e6120006001600160401b038516615a83565b61257a61200083615a14565b6125849190615a33565b905061251081610200615a14565b836001600160401b0316836001600160401b031610156126245750600b6125ba816020615a14565b6125c5906007615a33565b90506125d2816002615a14565b6125dd906000615a33565b90506125f46120006001600160401b038516615a97565b612602630100000083615a14565b61260c9190615a33565b9050612619816002615a14565b612557906001615a33565b60405162461bcd60e51b815260206004820152602160248201527f54727573746c657373414d423a20696e76616c69642074617267657420736c6f6044820152601d60fa1b60648201526084016107e1565b61268287828888612ff9565b979650505050505050565b60008061269b878a8a613013565b90506000816000815181106126b2576126b2615937565b01602001516001600160f81b03191690506000600160f81b8214806126e45750600160f91b6001600160f81b03198316145b156126f157506001612756565b600360fe1b6001600160f81b031983161061270e57506000612756565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016107e1565b6000602084019050600060405180604001604052808487516127789190615a01565b81526020016127878585615a33565b905290506000612796826138b3565b905080516004146127e25760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016107e1565b6000612807826003815181106127fa576127fa615937565b60200260200101516138b3565b905080518c106128595760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016107e1565b6000612870828e815181106127fa576127fa615937565b905080516003146128ce5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016107e1565b60006128f3826000815181106128e6576128e6615937565b6020026020010151613ad8565b90508c6001600160a01b0316816001600160a01b0316146129665760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016107e1565b600061297e836001815181106127fa576127fa615937565b90508c6129a48260008151811061299757612997615937565b6020026020010151613b42565b14612a075760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016107e1565b612a29818d81518110612a1c57612a1c615937565b6020026020010151613b49565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612a6f93929190615aab565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612ac19190615adb565b6000604051808303816000865af19150503d8060008114612afe576040519150601f19603f3d011682016040523d82523d6000602084013e612b03565b606091505b5080519195509350600092506020039050612b4557600082806020019051810190612b2e9190615af7565b6001600160e01b031916631dee306b60e11b149150505b828015612b4f5750805b15612b72576000858152600760205260409020805460ff19166002179055612b8c565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612bd7929190615b14565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612c155760405162461bcd60e51b81526004016107e190615b38565b612c1d613c4c565b565b603254610100900460ff16612c1d5760405162461bcd60e51b81526004016107e190615b38565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612cab82604051602001612c9591815260200190565b6040516020818303038152906040528786613013565b90506000815111612cf75760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016107e1565b6000612d0a612d0583613c73565b6138b3565b90508051600414612d1a57600080fd5b612d308160028151811061299757612997615937565b93505050505b9392505050565b600080612d6c85604051602001612d5691815260200190565b6040516020818303038152906040528486613013565b90506000815111612dbf5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016107e1565b612dd0612dcb82613c73565b613b42565b95945050505050565b606087878787878787604051602001612df89796959493929190615b83565b6040516020818303038152906040529050979650505050505050565b612e1e8282611898565b6109e957612e2b81613cc6565b612e36836020613cd8565b604051602001612e47929190615c0a565b60408051601f198184030181529082905262461bcd60e51b82526107e19160040161578d565b6001600160a01b0381163b612eda5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107e1565b600080516020615e9a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612f1283613e73565b600082511180612f1f5750805b1561096a57612f2e8383613eb3565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091612fe8918a9190612fe3908290615a01565b613f9e565b60c088015250949695505050505050565b60008061300786868661408a565b90921495945050505050565b6060600084511161305e5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016107e1565b600061306984614219565b9050600061307686614307565b905060008460405160200161308d91815260200190565b60405160208183030381529060405290506000805b845181101561385c5760008582815181106130bf576130bf615937565b6020026020010151905084518311156131315760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016107e1565b826000036131d0578051805160209182012060405161317f9261315992910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6131cb5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016107e1565b6132c6565b80515160201161325657805180516020918201206040516131fa9261315992910190815260200190565b6131cb5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016107e1565b8051845160208087019190912082519190920120146132c65760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016107e1565b6132d260106001615a33565b8160200151510361347f578451830361341757600061330e826020015160108151811061330157613301615937565b6020026020010151614421565b905060008151116133875760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016107e1565b600187516133959190615a01565b83146134095760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016107e1565b9650612d3695505050505050565b600085848151811061342b5761342b615937565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061345657613456615937565b6020026020010151905061346981614544565b9550613476600186615a33565b94505050613849565b6002816020015151036137f057600061349782614569565b90506000816000815181106134ae576134ae615937565b016020015160f81c905060006134c5600283615c7f565b6134d0906002615ca1565b905060006134e1848360ff1661458d565b905060006134ef8a8961458d565b905060006134fd83836145c3565b9050808351146135755760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016107e1565b60ff85166002148061358a575060ff85166003145b1561373057808251146136055760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016107e1565b6000613621886020015160018151811061330157613301615937565b9050600081511161369a5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016107e1565b60018d516136a89190615a01565b891461371c5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016107e1565b9c50612d369b505050505050505050505050565b60ff85161580613743575060ff85166001145b156137825761376f876020015160018151811061376257613762615937565b6020026020010151614544565b995061377b818a615a33565b98506137e5565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016107e1565b505050505050613849565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016107e1565b5080613854816159bb565b9150506130a2565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016107e1565b606060008060006138c385614642565b9194509250905060018160018111156138de576138de615305565b146139515760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016107e1565b845161395d8385615a33565b146139c55760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016107e1565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816139de5790505090506000845b8751811015613acc57600080613a516040518060400160405280858d60000151613a359190615a01565b8152602001858d60200151613a4a9190615a33565b9052614642565b509150915060405180604001604052808383613a6d9190615a33565b8152602001848c60200151613a829190615a33565b815250858581518110613a9757613a97615937565b6020908102919091010152613aad600185615a33565b9350613ab98183615a33565b613ac39084615a33565b92505050613a0b565b50815295945050505050565b8051600090600103613aec57506000919050565b8151601514613b3d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016107e1565b6107b8825b60006107b8825b6000602182600001511115613ba05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016107e1565b6000806000613bae85614642565b919450925090506000816001811115613bc957613bc9615305565b14613c165760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016107e1565b6000838660200151613c289190615a33565b80519091506020841015613c425760208490036101000a90045b9695505050505050565b603254610100900460ff16612be75760405162461bcd60e51b81526004016107e190615b38565b60408051808201909152600080825260208201526000825111613ca85760405162461bcd60e51b81526004016107e190615cba565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613ce7836002615a14565b613cf2906002615a33565b6001600160401b03811115613d0957613d09615153565b6040519080825280601f01601f191660200182016040528015613d33576020820181803683370190505b509050600360fc1b81600081518110613d4e57613d4e615937565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613d7d57613d7d615937565b60200101906001600160f81b031916908160001a9053506000613da1846002615a14565b613dac906001615a33565b90505b6001811115613e24576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613de057613de0615937565b1a60f81b828281518110613df657613df6615937565b60200101906001600160f81b031916908160001a90535060049490941c93613e1d81615d2a565b9050613daf565b508315612d365760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107e1565b613e7c81612e6d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613f1b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107e1565b600080846001600160a01b031684604051613f369190615adb565b600060405180830381855af49150503d8060008114613f71576040519150601f19603f3d011682016040523d82523d6000602084013e613f76565b606091505b5091509150612dd08282604051806060016040528060278152602001615eba60279139614d05565b606081613fac81601f615a33565b1015613fca5760405162461bcd60e51b81526004016107e190615d41565b613fd48284615a33565b845110156140185760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016107e1565b6060821580156140375760405191506000825260208201604052614081565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614070578051835260209283019201614058565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161409b9190615a33565b6140a6906002615e4d565b116140b057600080fd5b8360005b84600114614081576140c7600286615a83565b6001036141665760028482815181106140e2576140e2615937565b602002602001015183604051602001614105929190918252602082015260400190565b60408051601f198184030181529082905261411f91615adb565b602060405180830381855afa15801561413c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061415f91906158b7565b91506141fa565b60028285838151811061417b5761417b615937565b602002602001015160405160200161419d929190918252602082015260400190565b60408051601f19818403018152908290526141b791615adb565b602060405180830381855afa1580156141d4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906141f791906158b7565b91505b614205600286615a97565b945080614211816159bb565b9150506140b4565b80516060906000816001600160401b0381111561423857614238615153565b60405190808252806020026020018201604052801561427d57816020015b60408051808201909152606080825260208201528152602001906001900390816142565790505b50905060005b828110156142ff5760405180604001604052808683815181106142a8576142a8615937565b602002602001015181526020016142d78784815181106142ca576142ca615937565b6020026020010151614d1e565b8152508282815181106142ec576142ec615937565b6020908102919091010152600101614283565b509392505050565b80516060906000614319826002615a14565b6001600160401b0381111561433057614330615153565b6040519080825280601f01601f19166020018201604052801561435a576020820181803683370190505b5090506000805b838110156144175785818151811061437b5761437b615937565b6020910101516001600160f81b03198116925060041c60ff60f41b16836143a3836002615a14565b815181106143b3576143b3615937565b60200101906001600160f81b031916908160001a905350600f60f81b8216836143dd836002615a14565b6143e8906001615a33565b815181106143f8576143f8615937565b60200101906001600160f81b031916908160001a905350600101614361565b5090949350505050565b6060600080600061443185614642565b91945092509050600081600181111561444c5761444c615305565b146144bf5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016107e1565b6144c98284615a33565b8551146145355760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016107e1565b612dd085602001518484614d2c565b606060208260000151106145605761455b82614421565b6107b8565b6107b882614dcc565b60606107b8614588836020015160008151811061330157613301615937565b614307565b6060825182106145ac57506040805160208101909152600081526107b8565b612d3683838486516145be9190615a01565b614de2565b600080600083518551106145d85783516145db565b84515b90505b808210801561463257508382815181106145fa576145fa615937565b602001015160f81c60f81b6001600160f81b03191685838151811061462157614621615937565b01602001516001600160f81b031916145b156142ff578160010191506145de565b60008060008084600001511161466a5760405162461bcd60e51b81526004016107e190615cba565b6020840151805160001a607f811161468f576000600160009450945094505050614cfe565b60b781116147ec5760006146a4608083615a01565b9050808760000151116147245760405162461bcd60e51b815260206004820152604e6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016107e1565b6001838101516001600160f81b03191690821415806147515750600160ff1b6001600160f81b0319821610155b6147d95760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016107e1565b5060019550935060009250614cfe915050565b60bf8111614a2d57600061480160b783615a01565b9050808760000151116148845760405162461bcd60e51b81526020600482015260516024820152600080516020615e7a83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016107e1565b60018301516001600160f81b031916600081900361490b5760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016107e1565b600184015160088302610100031c6037811161498e5760405162461bcd60e51b81526020600482015260486024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016107e1565b6149988184615a33565b895111614a105760405162461bcd60e51b815260206004820152604c6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016107e1565b614a1b836001615a33565b9750955060009450614cfe9350505050565b60f78111614acf576000614a4260c083615a01565b905080876000015111614abe5760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016107e1565b600195509350849250614cfe915050565b6000614adc60f783615a01565b905080876000015111614b5b5760405162461bcd60e51b815260206004820152604d6024820152600080516020615e7a83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016107e1565b60018301516001600160f81b0319166000819003614be05760405162461bcd60e51b81526020600482015260486024820152600080516020615e7a83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016107e1565b600184015160088302610100031c60378111614c615760405162461bcd60e51b81526020600482015260466024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016107e1565b614c6b8184615a33565b895111614ce15760405162461bcd60e51b815260206004820152604a6024820152600080516020615e7a83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016107e1565b614cec836001615a33565b9750955060019450614cfe9350505050565b9193909250565b60608315614d14575081612d36565b612d368383614e70565b60606107b8612d0583613c73565b60606000826001600160401b03811115614d4857614d48615153565b6040519080825280601f01601f191660200182016040528015614d72576020820181803683370190505b50905082600003614d84579050612d36565b6000614d908587615a33565b90506020820160005b85811015614db1578281015182820152602001614d99565b85811115614dc0576000868301525b50919695505050505050565b60606107b8826020015160008460000151614d2c565b60608182601f011015614e075760405162461bcd60e51b81526004016107e190615d41565b828284011015614e295760405162461bcd60e51b81526004016107e190615d41565b818301845110156140185760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016107e1565b815115614e805781518083602001fd5b8060405162461bcd60e51b81526004016107e1919061578d565b82805482825590600052602060002090600701600890048101928215614f395791602002820160005b83821115614f0757835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614ec3565b8015614f375782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614f07565b505b50614f45929150614f49565b5090565b5b80821115614f455760008155600101614f4a565b6001600160e01b031981168114610ac957600080fd5b600060208284031215614f8657600080fd5b8135612d3681614f5e565b80356001600160401b0381168114614fa857600080fd5b919050565b600060208284031215614fbf57600080fd5b612d3682614f91565b803563ffffffff81168114614fa857600080fd5b80356001600160a01b0381168114614fa857600080fd5b60008083601f84011261500557600080fd5b5081356001600160401b0381111561501c57600080fd5b60208301915083602082850101111561211f57600080fd5b6000806000806060858703121561504a57600080fd5b61505385614fc8565b935061506160208601614fdc565b925060408501356001600160401b0381111561507c57600080fd5b61508887828801614ff3565b95989497509550505050565b6000602082840312156150a657600080fd5b612d3682614fc8565b6000602082840312156150c157600080fd5b5035919050565b600080604083850312156150db57600080fd5b823591506150eb60208401614fdc565b90509250929050565b60006020828403121561510657600080fd5b612d3682614fdc565b60008083601f84011261512157600080fd5b5081356001600160401b0381111561513857600080fd5b6020830191508360208260051b850101111561211f57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561519157615191615153565b604052919050565b600082601f8301126151aa57600080fd5b81356001600160401b038111156151c3576151c3615153565b6151d6601f8201601f1916602001615169565b8181528460208386010111156151eb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561522957600080fd5b6001600160401b03808d35111561523f57600080fd5b61524c8e8e358f01614ff3565b909c509a5060208d013581101561526257600080fd5b6152728e60208f01358f01614ff3565b909a50985060408d013581101561528857600080fd5b6152988e60408f01358f0161510f565b909850965060608d0135955060808d01358110156152b557600080fd5b6152c58e60808f01358f0161510f565b909550935060a08d01358110156152db57600080fd5b506152ec8d60a08e01358e01615199565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b602081016003831061533d57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561535657600080fd5b61535f83614fdc565b915060208301356001600160401b0381111561537a57600080fd5b61538685828601615199565b9150509250929050565b60006001600160401b038211156153a9576153a9615153565b5060051b60200190565b600082601f8301126153c457600080fd5b813560206153d96153d483615390565b615169565b82815260059290921b840181019181810190868411156153f857600080fd5b8286015b8481101561541a5761540d81614fdc565b83529183019183016153fc565b509695505050505050565b8015158114610ac957600080fd5b8035614fa881615425565b60008060008060008060c0878903121561545757600080fd5b86356001600160401b038082111561546e57600080fd5b818901915089601f83011261548257600080fd5b813560206154926153d483615390565b82815260059290921b8401810191818101908d8411156154b157600080fd5b948201945b838610156154d6576154c786614fc8565b825294820194908201906154b6565b9a50508a0135925050808211156154ec57600080fd5b6154f88a838b016153b3565b9650604089013591508082111561550e57600080fd5b5061551b89828a016153b3565b94505061552a60608801614fdc565b925061553860808801614fdc565b915061554660a08801615433565b90509295509295509295565b6000806000806060858703121561556857600080fd5b61557185614fc8565b93506020850135925060408501356001600160401b0381111561507c57600080fd5b60008060008060008060006080888a0312156155ae57600080fd5b6155b788614f91565b965060208801356001600160401b03808211156155d357600080fd5b6155df8b838c01614ff3565b909850965060408a01359150808211156155f857600080fd5b6156048b838c0161510f565b909650945060608a013591508082111561561d57600080fd5b5061562a8a828b0161510f565b989b979a50959850939692959293505050565b60008060006060848603121561565257600080fd5b61565b84614fc8565b925061566960208501614fdc565b915061567760408501614fdc565b90509250925092565b60006020828403121561569257600080fd5b8135612d3681615425565b60208082526013908201527214d95b991a5b99c81a5cc8191a5cd8589b1959606a1b604082015260600190565b60208082526019908201527f43616e6e6f742073656e6420746f2073616d6520636861696e00000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681810361573357615733615701565b6001019392505050565b60005b83811015615758578181015183820152602001615740565b50506000910152565b6000815180845261577981602086016020860161573d565b601f01601f19169290920160200192915050565b602081526000612d366020830184615761565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600080604083850312156158a057600080fd5b6158a983614f91565b91506150eb60208401614f91565b6000602082840312156158c957600080fd5b5051919050565b60006158de6153d484615390565b80848252602080830192508560051b8501368111156158fc57600080fd5b855b81811015614dc05780356001600160401b0381111561591d5760008081fd5b61592936828a01615199565b8652509382019382016158fe565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff80831681810361573357615733615701565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6000600182016159cd576159cd615701565b5060010190565b8183823760009101908152919050565b6000602082840312156159f657600080fd5b8151612d3681615425565b818103818111156107b8576107b8615701565b6000816000190483118215151615615a2e57615a2e615701565b500290565b808201808211156107b8576107b8615701565b6001600160401b03828116828216039080821115615a6657615a66615701565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082615a9257615a92615a6d565b500690565b600082615aa657615aa6615a6d565b500490565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612dd090830184615761565b60008251615aed81846020870161573d565b9190910192915050565b600060208284031215615b0957600080fd5b8151612d3681614f5e565b604081526000615b276040830185615761565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615bf781604585016020870161573d565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615c4281601785016020880161573d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615c7381602884016020880161573d565b01602801949350505050565b600060ff831680615c9257615c92615a6d565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b8615701565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615d3957615d39615701565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615da4578160001904821115615d8a57615d8a615701565b80851615615d9757918102915b93841c9390800290615d6e565b509250929050565b600082615dbb575060016107b8565b81615dc8575060006107b8565b8160018114615dde5760028114615de857615e04565b60019150506107b8565b60ff841115615df957615df9615701565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615e27575081810a6107b8565b615e318383615d69565b8060001904821115615e4557615e45615701565b029392505050565b6000612d368383615dac56fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220f963c2cdb21e7cd55c8073e6b7a59d7952e2e681906c27fcf9b57ed9ceac437d64736f6c63430008100033", - "sourceMap": "698:1544:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2903:213:31;;;;;;;;;;-1:-1:-1;2903:213:31;;;;;:::i;:::-;;:::i;:::-;;;565:14:145;;558:22;540:41;;528:2;513:18;2903:213:31;;;;;;;;527:42:103;;;;;;;;;;-1:-1:-1;527:42:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1103:25:145;;;1091:2;1076:18;527:42:103;957:177:145;3356:541:99;;;;;;;;;;-1:-1:-1;3356:541:99;;;;;:::i;:::-;;:::i;3147:128:101:-;;;;;;;;;;-1:-1:-1;3147:128:101;;;;;:::i;:::-;;:::i;:::-;;4708:129:31;;;;;;;;;;-1:-1:-1;4708:129:31;;;;;:::i;:::-;4782:7;4808:12;;;:6;:12;;;;;:22;;;;4708:129;1199:66:101;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1199:66:101;;5133:145:31;;;;;;;;;;-1:-1:-1;5133:145:31;;;;;:::i;:::-;;:::i;6242:214::-;;;;;;;;;;-1:-1:-1;6242:214:31;;;;;:::i;:::-;;:::i;3317:197:38:-;;;;;;;;;;-1:-1:-1;3317:197:38;;;;;:::i;:::-;;:::i;1291:37:103:-;;;;;;;;;;-1:-1:-1;1291:37:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;4866:1891:100;;;;;;;;;;-1:-1:-1;4866:1891:100;;;;;:::i;:::-;;:::i;1398:54:103:-;;;;;;;;;;-1:-1:-1;1398:54:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;;-1:-1:-1;434:26:103;;;;;;;;1876:109:100;;;;;;;;;;-1:-1:-1;1957:14:100;:21;1876:109;;3763:222:38;;;;;;:::i;:::-;;:::i;3006:131::-;;;;;;;;;;;;;:::i;1690:20:103:-;;;;;;;;;;-1:-1:-1;1690:20:103;;;;;;;;;;;7434:4:145;7422:17;;;7404:36;;7392:2;7377:18;1690:20:103;7262:184:145;1164:46:103;;;;;;;;;;-1:-1:-1;1164:46:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;7615:32:145;;;7597:51;;7585:2;7570:18;1164:46:103;7451:203:145;1118:958:102;;;;;;;;;;-1:-1:-1;1118:958:102;;;;;:::i;:::-;;:::i;3463:198:101:-;;;;;;;;;;;;;:::i;1778:490:99:-;;;;;;;;;;-1:-1:-1;1778:490:99;;;;;:::i;:::-;;:::i;2830:520::-;;;;;;;;;;-1:-1:-1;2830:520:99;;;;;:::i;:::-;;:::i;999:51:103:-;;;;;;;;;;-1:-1:-1;999:51:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;;;;;-1:-1:-1;2394:1820:100;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;;;;;-1:-1:-1;1936:51:103;;;;;:::i;:::-;;;;;;;;;;;;;;3987:684:101;;;;;;;;;;-1:-1:-1;3987:684:101;;;;;:::i;:::-;;:::i;3203:145:31:-;;;;;;;;;;-1:-1:-1;3203:145:31;;;;;:::i;:::-;;:::i;2432:193:101:-;;;;;;;;;;;;;:::i;2827:123::-;;;;;;;;;;-1:-1:-1;2827:123:101;;;;;:::i;:::-;;:::i;879:30:103:-;;;;;;;;;;-1:-1:-1;879:30:103;;;;;:::i;:::-;;:::i;:::-;;;13007:10:145;12995:23;;;12977:42;;12965:2;12950:18;879:30:103;12833:192:145;2324:49:31;;;;;;;;;;-1:-1:-1;2324:49:31;2369:4;2324:49;;1303:469:99;;;;;;;;;;-1:-1:-1;1303:469:99;;;;;:::i;:::-;;:::i;634:19:103:-;;;;;;;;;;-1:-1:-1;634:19:103;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;13192:31:145;;;13174:50;;13162:2;13147:18;634:19:103;13030:200:145;5558:147:31;;;;;;;;;;-1:-1:-1;5558:147:31;;;;;:::i;:::-;;:::i;924:58:100:-;;;;;;;;;;;;973:9;924:58;;2097:142:101;;;;;;;;;;-1:-1:-1;2097:142:101;;;;;:::i;:::-;;:::i;1370:66::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1370:66:101;;837:33:102;;;;;;;;;;;;869:1;837:33;;2903:213:31;2988:4;-1:-1:-1;;;;;;3011:58:31;;-1:-1:-1;;;3011:58:31;;:98;;-1:-1:-1;;;;;;;;;;1168:51:44;;;3073:36:31;3004:105;2903:213;-1:-1:-1;;2903:213:31:o;3356:541:99:-;3521:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;;;;;;;;;3570:13:::1;3548:18;:35;;::::0;3540:73:::1;;;;-1:-1:-1::0;;;3540:73:99::1;;;;;;;:::i;:::-;3624:20;::::0;3681:85:::1;3700:18:::0;-1:-1:-1;;;;;337:22:112;;3720:39:99::1;3761:4;;3681:18;:85::i;:::-;3785:5;::::0;;-1:-1:-1;;;;;3785:5:99;;::::1;3776:15;::::0;;;:8:::1;:15;::::0;;;;:29;;;3832:7;;3623:143;;-1:-1:-1;3623:143:99;;-1:-1:-1;3623:143:99;;3832:7:::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;3832:7:99::1;;;;;-1:-1:-1::0;;;;;3832:7:99::1;;;;;;-1:-1:-1::0;;;;;3820:42:99::1;;3854:7;3820:42;;;;;;:::i;:::-;;;;;;;;3879:11:::0;3356:541;-1:-1:-1;;;;;;3356:541:99:o;3147:128:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;3213:15:::1;::::0;::::1;3231:5;3213:15:::0;;;:6:::1;:15;::::0;;;;;:23;;-1:-1:-1;;3213:23:101::1;::::0;;3251:17;::::1;::::0;3231:5;3251:17:::1;3147:128:::0;:::o;5133:145:31:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5246:25:::1;5257:4;5263:7;5246:10;:25::i;:::-;5133:145:::0;;;:::o;6242:214::-;-1:-1:-1;;;;;6337:23:31;;929:10:41;6337:23:31;6329:83;;;;-1:-1:-1;;;6329:83:31;;15905:2:145;6329:83:31;;;15887:21:145;15944:2;15924:18;;;15917:30;15983:34;15963:18;;;15956:62;-1:-1:-1;;;16034:18:145;;;16027:45;16089:19;;6329:83:31;15703:411:145;6329:83:31;6423:26;6435:4;6441:7;6423:11;:26::i;:::-;6242:214;;:::o;3317:197:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3400:36:::1;3418:17;3400;:36::i;:::-;3487:12;::::0;;3497:1:::1;3487:12:::0;;;::::1;::::0;::::1;::::0;;;3446:61:::1;::::0;3468:17;;3487:12;3446:21:::1;:61::i;:::-;3317:197:::0;:::o;4866:1891:100:-;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;13192:31:145;;5661:52:100;;::::1;13174:50:145::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;13147:18:145;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;17803:2:145;5727:58:100::1;::::0;::::1;17785:21:145::0;17842:2;17822:18;;;17815:30;-1:-1:-1;;;17861:18:145;;;17854:51;17922:18;;5727:58:100::1;17601:345:145::0;5727:58:100::1;5799:12;5830:84;5853:12;5867:17;;5830:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5886:10:100;;-1:-1:-1;5898:7:100;;-1:-1:-1;5907:6:100;;-1:-1:-1;5830:22:100::1;:84::i;:::-;5799:115;;5936:7;5928:47;;;::::0;-1:-1:-1;;;5928:47:100;;18153:2:145;5928:47:100::1;::::0;::::1;18135:21:145::0;18192:2;18172:18;;;18165:30;18231:29;18211:18;;;18204:57;18278:18;;5928:47:100::1;17951:351:145::0;5928:47:100::1;5462:524;;;;6209:26;6263:320;6309:12;;6263:320;;;;;:::i;:::-;6459:21;::::0;;::::1;::::0;6446:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6343:12;;6377:17;;6416:8;;-1:-1:-1;;;;;6446:35:100::1;1151:46;1484:1;6263:24;:320::i;:::-;6209:388;;6641:11;6619:18;:33;6611:67;;;::::0;-1:-1:-1;;;6611:67:100;;19392:2:145;6611:67:100::1;::::0;::::1;19374:21:145::0;19431:2;19411:18;;;19404:30;-1:-1:-1;;;19450:18:145;;;19443:51;19511:18;;6611:67:100::1;19190:345:145::0;6611:67:100::1;5996:693;6699:51;6715:7;6724:11;6737:12;;6699:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6699:15:100::1;::::0;-1:-1:-1;;;6699:51:100:i:1;:::-;5185:1572;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1891:100;;;;;;;;;;;:::o;3763:222:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3880:36:::1;3898:17;3880;:36::i;:::-;3926:52;3948:17;3967:4;3973;3926:21;:52::i;3006:131::-:0;3084:7;2324:4;-1:-1:-1;;;;;2333:6:38;2316:23;;2308:92;;;;-1:-1:-1;;;2308:92:38;;19742:2:145;2308:92:38;;;19724:21:145;19781:2;19761:18;;;19754:30;19820:34;19800:18;;;19793:62;19891:26;19871:18;;;19864:54;19935:19;;2308:92:38;19540:420:145;2308:92:38;-1:-1:-1;;;;;;;;;;;;3006:131:38;:::o;1118:958:102:-;3291:13:37;;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:37;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:37;1476:19:40;:23;;;3376:66:37;;-1:-1:-1;3425:12:37;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:37;;20167:2:145;3314:201:37;;;20149:21:145;20206:2;20186:18;;;20179:30;20245:34;20225:18;;;20218:62;-1:-1:-1;;;20296:18:145;;;20289:44;20350:19;;3314:201:37;19965:410:145;3314:201:37;3525:12;:16;;-1:-1:-1;;3525:16:37;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:37;;;;;3551:65;1380:24:102::1;:22;:24::i;:::-;1414:22;:20;:22::i;:::-;1446:36;-1:-1:-1::0;;;;;;;;;;;1472:9:102::1;1446:10;:36::i;:::-;1492;-1:-1:-1::0;;;;;;;;;;;1518:9:102::1;1492:10;:36::i;:::-;1538:41;2369:4:31;1569:9:102::0;1538:10:::1;:41::i;:::-;1589:24;:22;:24::i;:::-;1658:13;:20;1632:15;:22;:46;1624:55;;;::::0;::::1;;1723:13;:20;1697:15;:22;:46;1689:55;;;::::0;::::1;;1755:32:::0;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1802:8;1797:204;1820:14;:21:::0;1816:25:::1;::::0;::::1;;1797:204;;;1909:13;1923:1;1909:16;;;;;;;;;;:::i;:::-;;;;;;;1862:12;:31;1875:14;1890:1;1875:17;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1862:31;;;;;;;;;;;;;;;;:64;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;;1974:13;1988:1;1974:16;;;;;;;;;;:::i;:::-;;;;;;;1940:12;:31;1953:14;1968:1;1953:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;1940:31:::0;;;::::1;::::0;;;;;;;;:50;;-1:-1:-1;;;;;;1940:50:102::1;-1:-1:-1::0;;;;;1940:50:102;;;::::1;::::0;;;::::1;::::0;;1843:3;::::1;::::0;::::1;:::i;:::-;;;;1797:204;;;-1:-1:-1::0;2010:14:102::1;:32:::0;;;::::1;;-1:-1:-1::0;;2010:32:102;;::::1;;::::0;;;2052:7:::1;:17:::0;;;;::::1;2010:32:::0;2052:17:::1;::::0;;3636:99:37;;;;3670:13;:21;;-1:-1:-1;;3670:21:37;;;3710:14;;-1:-1:-1;7404:36:145;;3710:14:37;;7392:2:145;7377:18;3710:14:37;;;;;;;3636:99;3258:483;1118:958:102;;;;;;:::o;3463:198:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;3523:8:::1;3518:109;3541:14;:21:::0;3537:25:::1;::::0;::::1;;3518:109;;;3611:5;3583:6;:25;3590:14;3605:1;3590:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;3583:25:::0;;;::::1;::::0;;;;;;;;:33;;-1:-1:-1;;3583:33:101::1;::::0;::::1;;::::0;;;::::1;::::0;;3564:3;::::1;::::0;::::1;:::i;:::-;;;;3518:109;;;-1:-1:-1::0;3641:13:101::1;::::0;::::1;::::0;;;::::1;3463:198::o:0;1778:490:99:-;1927:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;1980:13:::1;1958:18;:35;;::::0;1950:73:::1;;;;-1:-1:-1::0;;;1950:73:99::1;;;;;;;:::i;:::-;2034:20;::::0;2091:85:::1;2110:18:::0;-1:-1:-1;;;;;337:22:112;;2130:39:99::1;245:122:112::0;2091:85:99::1;2203:5;:7:::0;;2033:143;;-1:-1:-1;2033:143:99;;-1:-1:-1;2033:143:99;;-1:-1:-1;;;;;2203:7:99::1;::::0;:5:::1;:7;::::0;::::1;:::i;2830:520::-:0;2995:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;3044:13:::1;3022:18;:35;;::::0;3014:73:::1;;;;-1:-1:-1::0;;;3014:73:99::1;;;;;;;:::i;:::-;3098:20;3120:19:::0;3155:64:::1;3174:18;3194;3214:4;;3155:18;:64::i;2394:1820:100:-:0;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;21136:3:145;21114:16;;;;-1:-1:-1;;;;;;21110:43:145;2955:82:100;;::::1;21098:56:145::0;21209:3;21187:16;;;-1:-1:-1;;;;;;21183:51:145;21170:11;;;21163:72;21273:2;21269:15;-1:-1:-1;;;;;;21269:15:145;21251:12;;;21244:75;2955:82:100;;;;;;;;;21335:12:145;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;13192:31:145;;3301:61:100;;::::1;13174:50:145::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;13147:18:145;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;21560:2:145;3380:67:100::1;::::0;::::1;21542:21:145::0;21599:2;21579:18;;;21572:30;21638:33;21618:18;;;21611:61;21689:18;;3380:67:100::1;21358:355:145::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;21908:31:145;;;;21890:50;;21971:2;21956:18;;21949:34;21878:2;21863:18;;21718:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;1103:25:145::0;3826:80:100;;;;;;;;;1076:18:145;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;19392:2:145;4090:31:100::1;::::0;::::1;19374:21:145::0;19431:2;19411:18;;;19404:30;-1:-1:-1;;;19450:18:145;;;19443:51;19511:18;;4090:31:100::1;19190:345:145::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;3987:684:101;1689:34;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;:::-;4135:18:::1;4176:9:::0;4171:186:::1;4195:14;:21:::0;4191:25;::::1;4171:186;;;4262:7;4241:28;;:14;4256:1;4241:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;::::1;;;:28:::0;4237:110:::1;;4305:4;4289:20;;4327:5;;4237:110;4218:3:::0;::::1;::::0;::::1;:::i;:::-;;;;4171:186;;;;4371:13;4366:117;;4400:14;:28:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4400:28:101;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;;;;::::1;;;::::0;;::::1;::::0;::::1;;::::0;;::::1;;::::0;;4447:25:::1;::::0;4400:28;;4447:25:::1;::::0;::::1;4366:117;4492:21;::::0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;:49;;-1:-1:-1;;;;;4492:49:101;;::::1;-1:-1:-1::0;;;;;;4492:49:101;;::::1;::::0;::::1;::::0;;;4551:12:::1;:21:::0;;;;;;:35;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;4601:63;;22768:34:145;;;22818:18;;;22811:43;;;;4601:63:101::1;::::0;22703:18:145;4601:63:101::1;;;;;;;4125:546;3987:684:::0;;;:::o;3203:145:31:-;3289:4;3312:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3312:29:31;;;;;;;;;;;;;;;3203:145::o;2432:193:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2490:8:::1;2485:108;2508:14;:21:::0;2504:25:::1;::::0;::::1;;2485:108;;;2578:4;2550:6;:25;2557:14;2572:1;2557:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;2550:25:::0;;;::::1;::::0;;;;;;;;:32;;-1:-1:-1;;2550:32:101::1;::::0;::::1;;::::0;;;::::1;::::0;;2531:3;::::1;::::0;::::1;:::i;:::-;;;;2485:108;;;-1:-1:-1::0;2607:11:101::1;::::0;::::1;::::0;;;::::1;2432:193::o:0;2827:123::-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2891:15:::1;::::0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:22;;-1:-1:-1;;2891:22:101::1;2909:4;2891:22;::::0;;2928:15;::::1;::::0;2891;2928::::1;2827:123:::0;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1303:469:99:-;1452:7;869:14;;;;861:46;;;;-1:-1:-1;;;861:46:99;;;;;;;:::i;:::-;1505:13:::1;1483:18;:35;;::::0;1475:73:::1;;;;-1:-1:-1::0;;;1475:73:99::1;;;;;;;:::i;:::-;1559:20;1581:19:::0;1616:64:::1;1635:18;1655;1675:4;;1616:18;:64::i;5558:147:31:-:0;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5672:26:::1;5684:4;5690:7;5672:11;:26::i;2097:142:101:-:0;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2170:14:::1;:24:::0;;-1:-1:-1;;2170:24:101::1;::::0;::::1;;::::0;;::::1;::::0;;;2209:23:::1;::::0;540:41:145;;;2209:23:101::1;::::0;528:2:145;513:18;2209:23:101::1;;;;;;;2097:142:::0;:::o;4455:497:99:-;4721:7;;4742:5;;4685:213;;;;;;;;;;;;;;;;;;;;;;4612:25;;4639:19;;4685:213;;4721:7;;;;;-1:-1:-1;;;;;4742:5:99;;;;4768:13;;4796:10;;4820:18;;4852;;4884:4;;;;;;4685:213;;4884:4;;;;4685:213;;;;;;;;;-1:-1:-1;4685:22:99;;-1:-1:-1;;;4685:213:99:i;:::-;4922:23;;;;;;4670:228;;4922:23;;-1:-1:-1;4455:497:99;-1:-1:-1;;;;;4455:497:99:o;3642:103:31:-;3708:30;3719:4;929:10:41;3708::31;:30::i;7791:233::-;7874:22;7882:4;7888:7;7874;:22::i;:::-;7869:149;;7912:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7912:29:31;;;;;;;;;:36;;-1:-1:-1;;7912:36:31;7944:4;7912:36;;;7994:12;929:10:41;;850:96;7994:12:31;-1:-1:-1;;;;;7967:40:31;7985:7;-1:-1:-1;;;;;7967:40:31;7979:4;7967:40;;;;;;;;;;7791:233;;:::o;8195:234::-;8278:22;8286:4;8292:7;8278;:22::i;:::-;8274:149;;;8348:5;8316:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8316:29:31;;;;;;;;;;:37;;-1:-1:-1;;8316:37:31;;;8372:40;929:10:41;;8316:12:31;;8372:40;;8348:5;8372:40;8195:234;;:::o;2153:87:102:-;1689:34:101;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;2938:974:35:-;951:66;3384:59;;;3380:526;;;3459:37;3478:17;3459:18;:37::i;3380:526::-;3560:17;-1:-1:-1;;;;;3531:61:35;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3531:63:35;;;;;;;;-1:-1:-1;;3531:63:35;;;;;;;;;;;;:::i;:::-;;;3527:302;;3758:56;;-1:-1:-1;;;3758:56:35;;23067:2:145;3758:56:35;;;23049:21:145;23106:2;23086:18;;;23079:30;23145:34;23125:18;;;23118:62;-1:-1:-1;;;23196:18:145;;;23189:44;23250:19;;3758:56:35;22865:410:145;3527:302:35;-1:-1:-1;;;;;;;;;;;3644:28:35;;3636:82;;;;-1:-1:-1;;;3636:82:35;;23482:2:145;3636:82:35;;;23464:21:145;23521:2;23501:18;;;23494:30;23560:34;23540:18;;;23533:62;-1:-1:-1;;;23611:18:145;;;23604:39;23660:19;;3636:82:35;23280:405:145;3636:82:35;3595:138;3842:53;3860:17;3879:4;3885:9;3842:17;:53::i;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;23892:2:145;2704:63:39;;;23874:21:145;23931:2;23911:18;;;23904:30;23970:33;23950:18;;;23943:61;24021:18;;2704:63:39;23690:355:145;2704:63:39;1830:1;2842:7;:18;2580:287::o;7985:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8106:7:100;8129:22;8154:36;8177:12;;8154:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8154:22:100;;-1:-1:-1;;;8154:36:100:i;:::-;8129:61;;8200:19;8232:12;;8222:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8290:26:100;8260;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8256:562;;8332:35;;-1:-1:-1;;;8332:35:100;;24528:2:145;8332:35:100;;;24510:21:145;24567:2;24547:18;;;24540:30;24606:27;24586:18;;;24579:55;24651:18;;8332:35:100;24326:349:145;8256:562:100;8418:13;8388:7;:26;;;:43;;;8384:434;;8447:22;;-1:-1:-1;;;8447:22:100;;24882:2:145;8447:22:100;;;24864:21:145;24921:2;24901:18;;;24894:30;-1:-1:-1;;;24940:18:145;;;24933:42;24992:18;;8447:22:100;24680:336:145;8384:434:100;8509:7;;8490:15;;8509:7;8490:26;;;8509:7;;8490:26;8486:332;;8532:24;;-1:-1:-1;;;8532:24:100;;25223:2:145;8532:24:100;;;25205:21:145;25262:2;25242:18;;;25235:30;-1:-1:-1;;;25281:18:145;;;25274:44;25335:18;;8532:24:100;25021:338:145;8486:332:100;8611:21;;;;;8598:35;;8646:1;8598:35;;;:12;:35;;;;-1:-1:-1;;;;;8598:35:100;8590:58;;:127;;-1:-1:-1;8681:21:100;;;;;8668:35;;8715:1;8668:35;;;:12;:35;;;;-1:-1:-1;;;;;8668:35:100;:49;8590:127;8573:245;;;8742:65;;-1:-1:-1;;;8742:65:100;;25566:2:145;8742:65:100;;;25548:21:145;25605:2;25585:18;;;25578:30;25644:34;25624:18;;;25617:62;25715:25;25695:18;;;25688:53;25758:19;;8742:65:100;25364:419:145;8573:245:100;8835:7;;-1:-1:-1;8844:11:100;-1:-1:-1;7985:878:100;;;;;;:::o;6843:253::-;6938:21;;;6972:1;6938:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6938:21:100;6922:81;;;;-1:-1:-1;;;6922:81:100;;25990:2:145;6922:81:100;;;25972:21:145;26029:2;26009:18;;;26002:30;-1:-1:-1;;;26048:18:145;;;26041:54;26112:18;;6922:81:100;25788:348:145;6922:81:100;7021:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7021:34:100;;;;-1:-1:-1;;;;;7021:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7013:76;;;;-1:-1:-1;;;7013:76:100;;26593:2:145;7013:76:100;;;26575:21:145;26632:2;26612:18;;;26605:30;26671:31;26651:18;;;26644:59;26720:18;;7013:76:100;26391:353:145;7157:121:100;7232:15;;;;;;;:6;:15;;;;;;;;7231:16;7223:48;;;;-1:-1:-1;;;7223:48:100;;26951:2:145;7223:48:100;;;26933:21:145;26990:2;26970:18;;;26963:30;-1:-1:-1;;;27009:18:145;;;27002:49;27068:18;;7223:48:100;26749:343:145;7348:452:100;7450:21;;;7484:1;7450:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7450:21:100;7434:81;;;;-1:-1:-1;;;7434:81:100;;25990:2:145;7434:81:100;;;25972:21:145;26029:2;26009:18;;;26002:30;-1:-1:-1;;;26048:18:145;;;26041:54;26112:18;;7434:81:100;25788:348:145;7434:81:100;7533:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7533:38:100;;-1:-1:-1;;;;;13192:31:145;;7533:38:100;;;13174:50:145;;;;-1:-1:-1;;;;;7533:21:100;;;;:32;;13147:18:145;;7533:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7575:1;7533:43;7525:86;;;;-1:-1:-1;;;7525:86:100;;27488:2:145;7525:86:100;;;27470:21:145;27527:2;27507:18;;;27500:30;27566:32;27546:18;;;27539:60;27616:18;;7525:86:100;27286:354:145;7525:86:100;7661:21;;;7621:19;7661:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7661:38:100;;-1:-1:-1;;;;;13192:31:145;;7661:38:100;;;13174:50:145;;;;-1:-1:-1;;;;;7661:21:100;;:32;;13147:18:145;;7661:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7643:56;;:15;:56;:::i;:::-;7621:78;;973:9;7717:11;:37;;7709:84;;;;-1:-1:-1;;;7709:84:100;;27980:2:145;7709:84:100;;;27962:21:145;28019:2;27999:18;;;27992:30;28058:34;28038:18;;;28031:62;-1:-1:-1;;;28109:18:145;;;28102:32;28151:19;;7709:84:100;27778:398:145;3024:1184:109;3230:4;3246:13;3284:6;-1:-1:-1;;;;;3273:17:109;:7;-1:-1:-1;;;;;3273:17:109;;3269:845;;-1:-1:-1;3314:5:109;3341:14;3314:5;3349:6;3341:14;:::i;:::-;:20;;3358:3;3341:20;:::i;:::-;3333:28;;3269:845;;;304:4;3382:16;3392:6;3382:7;:16;:::i;:::-;-1:-1:-1;;;;;3382:45:109;;3378:736;;-1:-1:-1;3451:5:109;3478:14;3451:5;3486:6;3478:14;:::i;:::-;:18;;3495:1;3478:18;:::i;:::-;3470:26;-1:-1:-1;3554:34:109;304:4;-1:-1:-1;;;;;3554:34:109;;;:::i;:::-;3518:33;304:4;3518:5;:33;:::i;:::-;:70;;;;:::i;:::-;3510:78;-1:-1:-1;3610:14:109;3510:78;3618:6;3610:14;:::i;3378:736::-;3660:7;-1:-1:-1;;;;;3651:16:109;:6;-1:-1:-1;;;;;3651:16:109;;3647:467;;;-1:-1:-1;3691:5:109;3718:14;3691:5;3726:6;3718:14;:::i;:::-;:18;;3735:1;3718:18;:::i;:::-;3710:26;-1:-1:-1;3758:9:109;3710:26;3766:1;3758:9;:::i;:::-;:13;;3770:1;3758:13;:::i;:::-;3750:21;-1:-1:-1;3826:34:109;304:4;-1:-1:-1;;;;;3826:34:109;;;:::i;:::-;3793:30;236:8;3793:5;:30;:::i;:::-;:67;;;;:::i;:::-;3785:75;-1:-1:-1;3882:9:109;3785:75;3890:1;3882:9;:::i;:::-;:13;;3894:1;3882:13;:::i;3647:467::-;4060:43;;-1:-1:-1;;;4060:43:109;;29248:2:145;4060:43:109;;;29230:21:145;29287:2;29267:18;;;29260:30;29326:34;29306:18;;;29299:62;-1:-1:-1;;;29377:18:145;;;29370:31;29418:19;;4060:43:109;29046:397:145;3647:467:109;4130:71;4150:12;4164:5;4171:17;4190:10;4130:19;:71::i;:::-;4123:78;3024:1184;-1:-1:-1;;;;;;;3024:1184:109:o;1420:2836:110:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:110;;-1:-1:-1;2441:14:110;-1:-1:-1;;;2469:25:110;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:110;;;2469:54;2465:236;;;-1:-1:-1;2548:1:110;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:110;;;2566:135;;-1:-1:-1;2620:1:110;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:110;;29650:2:145;2652:38:110;;;29632:21:145;29689:2;29669:18;;;29662:30;29728;29708:18;;;29701:58;29776:18;;2652:38:110;29448:352:145;2566:135:110;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:110;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:110;;30007:2:145;3233:58:110;;;29989:21:145;30046:2;30026:18;;;30019:30;-1:-1:-1;;;30065:18:145;;;30058:52;30127:18;;3233:58:110;29805:346:145;3233:58:110;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:110;;30358:2:145;3450:58:110;;;30340:21:145;30397:2;30377:18;;;30370:30;30436:25;30416:18;;;30409:53;30479:18;;3450:58:110;30156:347:145;3450:58:110;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:110;;30710:2:145;3594:70:110;;;30692:21:145;30749:2;30729:18;;;30722:30;30788:34;30768:18;;;30761:62;-1:-1:-1;;;30839:18:145;;;30832:32;30881:19;;3594:70:110;30508:398:145;3594:70:110;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:110;:15;-1:-1:-1;;;;;3811:33:110;;3803:85;;;;-1:-1:-1;;;3803:85:110;;31113:2:145;3803:85:110;;;31095:21:145;31152:2;31132:18;;;31125:30;31191:34;31171:18;;;31164:62;-1:-1:-1;;;31242:18:145;;;31235:37;31289:19;;3803:85:110;30911:403:145;3803:85:110;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:110;;31521:2:145;4057:142:110;;;31503:21:145;31560:2;31540:18;;;31533:30;31599:34;31579:18;;;31572:62;-1:-1:-1;;;31650:18:145;;;31643:43;31703:19;;4057:142:110;31319:409:145;4057:142:110;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9345:1529:100:-;9473:11;9494:17;9535:24;9602:42;;;9662:7;:21;;;9701:7;:21;;;9740:7;:12;;;9562:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9562:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9562:204:100;-1:-1:-1;;;;;;9562:204:100;;;;;;;;;;9822:26;;;;9562:204;;-1:-1:-1;9880:11:100;-1:-1:-1;;;;;9880:16:100;9897:11;9880:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10350:11:100;;9863:46;;-1:-1:-1;9863:46:100;-1:-1:-1;10306:22:100;;-1:-1:-1;10365:2:100;10350:17;;-1:-1:-1;10346:176:100;;10384:12;10411:4;10400:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10460:51:100;-1:-1:-1;;;10460:51:100;;-1:-1:-1;;10346:176:100;10536:6;:27;;;;;10546:17;10536:27;10532:210;;;10579:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10579:62:100;10608:33;10579:62;;;10532:210;;;10672:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10672:59:100;10701:30;10672:59;;;10532:210;10824:11;10809:7;:13;;;-1:-1:-1;;;;;10757:110:100;10786:7;:21;;;10757:110;;;10837:12;10851:6;10757:110;;;;;;;:::i;:::-;;;;;;;;9463:1411;;;9345:1529;;;:::o;2873:209:39:-;1787:1;3053:7;:22;2873:209::o;1868:111::-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;:::-;1938:34:39::1;:32;:34::i;:::-;1868:111::o:0;2025:65:31:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;735:581:110:-;927:33;;-1:-1:-1;;;;;;33548:2:145;33544:15;;;33540:53;927:33:110;;;33528:66:145;872:7:110;;;;33610:12:145;;927:33:110;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;33762:19:145;;33806:2;33797:12;;33633:182;1014:29:110;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:110;;34022:2:145;1072:58:110;;;34004:21:145;34061:2;34041:18;;;34034:30;-1:-1:-1;;;34080:18:145;;;34073:52;34142:18;;1072:58:110;33820:346:145;1072:58:110;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:110;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;33762:19:145;;33806:2;33797:12;;33633:182;538:26:110;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:110;;34373:2:145;601:65:110;;;34355:21:145;34412:2;34392:18;;;34385:30;34451;34431:18;;;34424:58;34499:18;;601:65:110;34171:352:145;601:65:110;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:110:o;3800:489:107:-;4049:12;4110:7;4131:5;4150:13;4177;4204:18;4236;4268:4;4080:202;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4073:209;;3800:489;;;;;;;;;:::o;4026:501:31:-;4114:22;4122:4;4128:7;4114;:22::i;:::-;4109:412;;4297:39;4328:7;4297:30;:39::i;:::-;4407:49;4446:4;4453:2;4407:30;:49::i;:::-;4204:274;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4204:274:31;;;;;;;;;;-1:-1:-1;;;4152:358:31;;;;;;;:::i;1805:281:35:-;-1:-1:-1;;;;;1476:19:40;;;1878:106:35;;;;-1:-1:-1;;;1878:106:35;;36649:2:145;1878:106:35;;;36631:21:145;36688:2;36668:18;;;36661:30;36727:34;36707:18;;;36700:62;-1:-1:-1;;;36778:18:145;;;36771:43;36831:19;;1878:106:35;36447:409:145;1878:106:35;-1:-1:-1;;;;;;;;;;;1994:85:35;;-1:-1:-1;;;;;;1994:85:35;-1:-1:-1;;;;;1994:85:35;;;;;;;;;;1805:281::o;2478:288::-;2616:29;2627:17;2616:10;:29::i;:::-;2673:1;2659:4;:11;:15;:28;;;;2678:9;2659:28;2655:105;;;2703:46;2725:17;2744:4;2703:21;:46::i;:::-;;2478:288;;;:::o;4295:1028:107:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:107;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:107;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:107;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:107;;4295:1028;-1:-1:-1;;;;;;4295:1028:107:o;1770:281:109:-;1914:4;1934:26;1963:38;1981:4;1987:5;1994:6;1963:17;:38::i;:::-;2018:26;;;;1770:281;-1:-1:-1;;;;;1770:281:109:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;37063:2:145;3101:49:77;;;37045:21:145;37102:2;37082:18;;;37075:30;-1:-1:-1;;;37121:18:145;;;37114:51;37182:18;;3101:49:77;36861:345:145;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;33762:19:145;;33806:2;33797:12;;33633:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;37413:2:145;3636:134:77;;;37395:21:145;37452:2;37432:18;;;37425:30;37491:34;37471:18;;;37464:62;-1:-1:-1;;;37542:18:145;;;37535:44;37596:19;;3636:134:77;37211:410:145;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;33762:19:145;;;33806:2;33797:12;;33633:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;37828:2:145;3893:176:77;;;37810:21:145;37867:2;37847:18;;;37840:30;37906:31;37886:18;;;37879:59;37955:18;;3893:176:77;37626:353:145;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;33762:19:145;;;33806:2;33797:12;;33633:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;38186:2:145;4222:186:77;;;38168:21:145;38225:2;38205:18;;;38198:30;38264:34;38244:18;;;38237:62;-1:-1:-1;;;38315:18:145;;;38308:37;38362:19;;4222:186:77;37984:403:145;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;38594:2:145;4509:156:77;;;38576:21:145;38633:2;38613:18;;;38606:30;38672:34;38652:18;;;38645:62;-1:-1:-1;;;38723:18:145;;;38716:36;38769:19;;4509:156:77;38392:402:145;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;39001:2:145;5384:158:77;;;38983:21:145;39040:2;39020:18;;;39013:30;39079:34;39059:18;;;39052:62;39150:29;39130:18;;;39123:57;39197:19;;5384:158:77;38799:423:145;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;39429:2:145;5626:162:77;;;39411:21:145;39468:2;39448:18;;;39441:30;39507:34;39487:18;;;39480:62;39578:28;39558:18;;;39551:56;39624:19;;5626:162:77;39227:422:145;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;40174:2:145;7009:171:77;;;40156:21:145;40213:2;40193:18;;;40186:30;40252:34;40232:18;;;40225:62;40323:28;40303:18;;;40296:56;40369:19;;7009:171:77;39972:422:145;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;40601:2:145;7843:185:77;;;40583:21:145;40640:2;40620:18;;;40613:30;40679:34;40659:18;;;40652:62;40750:31;40730:18;;;40723:59;40799:19;;7843:185:77;40399:425:145;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;41031:2:145;8463:156:77;;;41013:21:145;41070:2;41050:18;;;41043:30;41109:34;41089:18;;;41082:62;41180:27;41160:18;;;41153:55;41225:19;;8463:156:77;40829:421:145;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;41457:2:145;8703:160:77;;;41439:21:145;41496:2;41476:18;;;41469:30;41535:34;41515:18;;;41508:62;41606:26;41586:18;;;41579:54;41650:19;;8703:160:77;41255:420:145;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;41882:2:145;9439:60:77;;;41864:21:145;41921:2;41901:18;;;41894:30;41960:34;41940:18;;;41933:62;-1:-1:-1;;;42011:18:145;;;42004:48;42069:19;;9439:60:77;41680:414:145;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;42301:2:145;9556:50:77;;;42283:21:145;42340:2;42320:18;;;42313:30;42379:34;42359:18;;;42352:62;-1:-1:-1;;;42430:18:145;;;42423:38;42478:19;;9556:50:77;42099:404:145;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;42710:2:145;9641:47:77;;;42692:21:145;42749:2;42729:18;;;42722:30;42788:34;42768:18;;;42761:62;-1:-1:-1;;;42839:18:145;;;42832:35;42884:19;;9641:47:77;42508:401:145;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;43116:2:145;2161:136:75;;;43098:21:145;43155:2;43135:18;;;43128:30;43194:34;43174:18;;;43167:62;43265:26;43245:18;;;43238:54;43309:19;;2161:136:75;42914:420:145;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;43541:2:145;2308:134:75;;;43523:21:145;43580:2;43560:18;;;43553:30;43619:34;43599:18;;;43592:62;-1:-1:-1;;;43670:18:145;;;43663:48;43728:19;;2308:134:75;43339:414:145;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;43960:2:145;12579:55:75;;;43942:21:145;43999:2;43979:18;;;43972:30;44038:28;44018:18;;;44011:56;44084:18;;12579:55:75;43758:350:145;12579:55:75;12668:16;12680:3;12160:122;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;44315:2:145;11438:55:75;;;44297:21:145;44354:2;44334:18;;;44327:30;44393:28;44373:18;;;44366:56;44439:18;;11438:55:75;44113:350:145;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;44315:2:145;11598:72:75;;;44297:21:145;44354:2;44334:18;;;44327:30;44393:28;44373:18;;;44366:56;44439:18;;11598:72:75;44113:350:145;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1985:109:39:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;1385:419:75:-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;2146:149:43:-;2204:13;2236:52;-1:-1:-1;;;;;2248:22:43;;333:2;1557:437;1632:13;1657:19;1689:10;1693:6;1689:1;:10;:::i;:::-;:14;;1702:1;1689:14;:::i;:::-;-1:-1:-1;;;;;1679:25:43;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1679:25:43;;1657:47;;-1:-1:-1;;;1714:6:43;1721:1;1714:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1714:15:43;;;;;;;;;-1:-1:-1;;;1739:6:43;1746:1;1739:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1739:15:43;;;;;;;;-1:-1:-1;1769:9:43;1781:10;1785:6;1781:1;:10;:::i;:::-;:14;;1794:1;1781:14;:::i;:::-;1769:26;;1764:128;1801:1;1797;:5;1764:128;;;-1:-1:-1;;;1844:5:43;1852:3;1844:11;1835:21;;;;;;;:::i;:::-;;;;1823:6;1830:1;1823:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1823:33:43;;;;;;;;-1:-1:-1;1880:1:43;1870:11;;;;;1804:3;;;:::i;:::-;;;1764:128;;;-1:-1:-1;1909:10:43;;1901:55;;;;-1:-1:-1;;;1901:55:43;;45294:2:145;1901:55:43;;;45276:21:145;;;45313:18;;;45306:30;45372:34;45352:18;;;45345:62;45424:18;;1901:55:43;45092:356:145;2192:152:35;2258:37;2277:17;2258:18;:37::i;:::-;2310:27;;-1:-1:-1;;;;;2310:27:35;;;;;;;;2192:152;:::o;7088:455::-;7171:12;-1:-1:-1;;;;;1476:19:40;;;7195:88:35;;;;-1:-1:-1;;;7195:88:35;;45655:2:145;7195:88:35;;;45637:21:145;45694:2;45674:18;;;45667:30;45733:34;45713:18;;;45706:62;-1:-1:-1;;;45784:18:145;;;45777:36;45830:19;;7195:88:35;45453:402:145;7195:88:35;7354:12;7368:23;7395:6;-1:-1:-1;;;;;7395:19:35;7415:4;7395:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:67;;;;7437:99;7473:7;7482:10;7437:99;;;;;;;;;;;;;;;;;:35;:99::i;205:3191:107:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:107;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:107;;46405:2:145;409:63:107;;;46387:21:145;46444:2;46424:18;;;46417:30;-1:-1:-1;;;46463:18:145;;;46456:47;46520:18;;409:63:107;46203:341:145;409:63:107;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:107;;;2803:2;2786:11;-1:-1:-1;;2782:25:107;2776:4;2769:39;-1:-1:-1;617:2736:107;-1:-1:-1;3380:9:107;205:3191;-1:-1:-1;;;;205:3191:107:o;1213:551:109:-;1341:7;1399:5;1378:6;:13;1394:1;1378:17;;;;:::i;:::-;1372:24;;:1;:24;:::i;:::-;:32;1364:41;;;;;;1431:4;1415:13;1468:268;1475:5;1484:1;1475:10;1468:268;;1505:9;1513:1;1505:5;:9;:::i;:::-;1518:1;1505:14;1501:184;;1547:38;1567:6;1574:1;1567:9;;;;;;;;:::i;:::-;;;;;;;1578:5;1554:30;;;;;;;;48080:19:145;;;48124:2;48115:12;;48108:28;48161:2;48152:12;;47923:247;1554:30:109;;;;-1:-1:-1;;1554:30:109;;;;;;;;;;1547:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1539:46;;1501:184;;;1632:38;1652:5;1659:6;1666:1;1659:9;;;;;;;;:::i;:::-;;;;;;;1639:30;;;;;;;;48080:19:145;;;48124:2;48115:12;;48108:28;48161:2;48152:12;;47923:247;1639:30:109;;;;-1:-1:-1;;1639:30:109;;;;;;;;;;1632:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1624:46;;1501:184;1698:10;1707:1;1698:10;;:::i;:::-;;-1:-1:-1;1722:3:109;;;;:::i;:::-;;;;1468:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;48377:2:145;4505:137:75;;;48359:21:145;48416:2;48396:18;;;48389:30;48455:34;48435:18;;;48428:62;48526:27;48506:18;;;48499:55;48571:19;;4505:137:75;48175:421:145;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;48803:2:145;4653:136:75;;;48785:21:145;48842:2;48822:18;;;48815:30;48881:34;48861:18;;;48854:62;-1:-1:-1;;;48932:18:145;;;48925:50;48992:19;;4653:136:75;48601:416:145;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;49224:2:145;6699:156:75;;;49206:21:145;49263:2;49243:18;;;49236:30;-1:-1:-1;;;;;;;;;;;49282:18:145;;;49275:62;49373:34;49353:18;;;49346:62;-1:-1:-1;;;49424:19:145;;;49417:45;49479:19;;6699:156:75;49022:482:145;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;49711:2:145;7025:177:75;;;49693:21:145;49750:2;49730:18;;;49723:30;49789:34;49769:18;;;49762:62;49860:34;49840:18;;;49833:62;-1:-1:-1;;;49911:19:145;;;49904:44;49965:19;;7025:177:75;49509:481:145;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;50197:2:145;7387:164:75;;;50179:21:145;50236:2;50216:18;;;50209:30;-1:-1:-1;;;;;;;;;;;50255:18:145;;;50248:62;50346:34;50326:18;;;50319:62;-1:-1:-1;;;50397:19:145;;;50390:48;50455:19;;7387:164:75;49995:485:145;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;50687:2:145;7721:159:75;;;50669:21:145;50726:2;50706:18;;;50699:30;-1:-1:-1;;;;;;;;;;;50745:18:145;;;50738:62;50836:34;50816:18;;;50809:62;-1:-1:-1;;;50887:19:145;;;50880:41;50938:19;;7721:159:75;50485:478:145;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;51170:2:145;8042:142:75;;;51152:21:145;51209:2;51189:18;;;51182:30;-1:-1:-1;;;;;;;;;;;51228:18:145;;;51221:62;51319:34;51299:18;;;51292:62;-1:-1:-1;;;51370:19:145;;;51363:39;51419:19;;8042:142:75;50968:476:145;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;51651:2:145;8199:168:75;;;51633:21:145;51690:2;51670:18;;;51663:30;-1:-1:-1;;;;;;;;;;;51709:18:145;;;51702:62;51800:34;51780:18;;;51773:62;-1:-1:-1;;;51851:19:145;;;51844:43;51904:19;;8199:168:75;51449:480:145;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;52136:2:145;8617:153:75;;;52118:21:145;52175:2;52155:18;;;52148:30;-1:-1:-1;;;;;;;;;;;52194:18:145;;;52187:62;52285:34;52265:18;;;52258:62;-1:-1:-1;;;52336:19:145;;;52329:41;52387:19;;8617:153:75;51934:478:145;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;52619:2:145;8935:161:75;;;52601:21:145;52658:2;52638:18;;;52631:30;-1:-1:-1;;;;;;;;;;;52677:18:145;;;52670:62;52768:34;52748:18;;;52741:62;-1:-1:-1;;;52819:19:145;;;52812:44;52873:19;;8935:161:75;52417:481:145;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;53105:2:145;9266:157:75;;;53087:21:145;53144:2;53124:18;;;53117:30;-1:-1:-1;;;;;;;;;;;53163:18:145;;;53156:62;53254:34;53234:18;;;53227:62;-1:-1:-1;;;53305:19:145;;;53298:39;53354:19;;9266:157:75;52903:476:145;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;53586:2:145;9588:141:75;;;53568:21:145;53625:2;53605:18;;;53598:30;-1:-1:-1;;;;;;;;;;;53644:18:145;;;53637:62;53735:34;53715:18;;;53708:62;-1:-1:-1;;;53786:19:145;;;53779:37;53833:19;;9588:141:75;53384:474:145;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;54065:2:145;9744:168:75;;;54047:21:145;54104:2;54084:18;;;54077:30;-1:-1:-1;;;;;;;;;;;54123:18:145;;;54116:62;54214:34;54194:18;;;54187:62;-1:-1:-1;;;54265:19:145;;;54258:41;54316:19;;9744:168:75;53863:478:145;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;7438:295:40:-;7584:12;7612:7;7608:119;;;-1:-1:-1;7642:10:40;7635:17;;7608:119;7683:33;7691:10;7703:12;7683:7;:33::i;4047:125:75:-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;46405:2:145;989:63:74;;;46387:21:145;46444:2;46424:18;;;46417:30;-1:-1:-1;;;46463:18:145;;;46456:47;46520:18;;989:63:74;46203:341:145;7739:540:40;7898:17;;:21;7894:379;;8126:10;8120:17;8182:15;8169:10;8165:2;8161:19;8154:44;7894:379;8249:12;8242:20;;-1:-1:-1;;;8242:20:40;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:145;-1:-1:-1;;;;;;88:32:145;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:171::-;659:20;;-1:-1:-1;;;;;708:30:145;;698:41;;688:69;;753:1;750;743:12;688:69;592:171;;;:::o;768:184::-;826:6;879:2;867:9;858:7;854:23;850:32;847:52;;;895:1;892;885:12;847:52;918:28;936:9;918:28;:::i;1139:163::-;1206:20;;1266:10;1255:22;;1245:33;;1235:61;;1292:1;1289;1282:12;1307:173;1375:20;;-1:-1:-1;;;;;1424:31:145;;1414:42;;1404:70;;1470:1;1467;1460:12;1485:347;1536:8;1546:6;1600:3;1593:4;1585:6;1581:17;1577:27;1567:55;;1618:1;1615;1608:12;1567:55;-1:-1:-1;1641:20:145;;-1:-1:-1;;;;;1673:30:145;;1670:50;;;1716:1;1713;1706:12;1670:50;1753:4;1745:6;1741:17;1729:29;;1805:3;1798:4;1789:6;1781;1777:19;1773:30;1770:39;1767:59;;;1822:1;1819;1812:12;1837:555;1924:6;1932;1940;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2040:28;2058:9;2040:28;:::i;:::-;2030:38;;2087;2121:2;2110:9;2106:18;2087:38;:::i;:::-;2077:48;;2176:2;2165:9;2161:18;2148:32;-1:-1:-1;;;;;2195:6:145;2192:30;2189:50;;;2235:1;2232;2225:12;2189:50;2274:58;2324:7;2315:6;2304:9;2300:22;2274:58;:::i;:::-;1837:555;;;;-1:-1:-1;2351:8:145;-1:-1:-1;;;;1837:555:145:o;2397:184::-;2455:6;2508:2;2496:9;2487:7;2483:23;2479:32;2476:52;;;2524:1;2521;2514:12;2476:52;2547:28;2565:9;2547:28;:::i;2586:180::-;2645:6;2698:2;2686:9;2677:7;2673:23;2669:32;2666:52;;;2714:1;2711;2704:12;2666:52;-1:-1:-1;2737:23:145;;2586:180;-1:-1:-1;2586:180:145:o;2771:254::-;2839:6;2847;2900:2;2888:9;2879:7;2875:23;2871:32;2868:52;;;2916:1;2913;2906:12;2868:52;2952:9;2939:23;2929:33;;2981:38;3015:2;3004:9;3000:18;2981:38;:::i;:::-;2971:48;;2771:254;;;;;:::o;3030:186::-;3089:6;3142:2;3130:9;3121:7;3117:23;3113:32;3110:52;;;3158:1;3155;3148:12;3110:52;3181:29;3200:9;3181:29;:::i;3221:367::-;3284:8;3294:6;3348:3;3341:4;3333:6;3329:17;3325:27;3315:55;;3366:1;3363;3356:12;3315:55;-1:-1:-1;3389:20:145;;-1:-1:-1;;;;;3421:30:145;;3418:50;;;3464:1;3461;3454:12;3418:50;3501:4;3493:6;3489:17;3477:29;;3561:3;3554:4;3544:6;3541:1;3537:14;3529:6;3525:27;3521:38;3518:47;3515:67;;;3578:1;3575;3568:12;3593:127;3654:10;3649:3;3645:20;3642:1;3635:31;3685:4;3682:1;3675:15;3709:4;3706:1;3699:15;3725:275;3796:2;3790:9;3861:2;3842:13;;-1:-1:-1;;3838:27:145;3826:40;;-1:-1:-1;;;;;3881:34:145;;3917:22;;;3878:62;3875:88;;;3943:18;;:::i;:::-;3979:2;3972:22;3725:275;;-1:-1:-1;3725:275:145:o;4005:530::-;4047:5;4100:3;4093:4;4085:6;4081:17;4077:27;4067:55;;4118:1;4115;4108:12;4067:55;4154:6;4141:20;-1:-1:-1;;;;;4176:2:145;4173:26;4170:52;;;4202:18;;:::i;:::-;4246:55;4289:2;4270:13;;-1:-1:-1;;4266:27:145;4295:4;4262:38;4246:55;:::i;:::-;4326:2;4317:7;4310:19;4372:3;4365:4;4360:2;4352:6;4348:15;4344:26;4341:35;4338:55;;;4389:1;4386;4379:12;4338:55;4454:2;4447:4;4439:6;4435:17;4428:4;4419:7;4415:18;4402:55;4502:1;4477:16;;;4495:4;4473:27;4466:38;;;;4481:7;4005:530;-1:-1:-1;;;4005:530:145:o;4540:1652::-;4749:6;4757;4765;4773;4781;4789;4797;4805;4813;4821;4829:7;4883:3;4871:9;4862:7;4858:23;4854:33;4851:53;;;4900:1;4897;4890:12;4851:53;-1:-1:-1;;;;;4981:2:145;4969:9;4956:23;4953:31;4950:51;;;4997:1;4994;4987:12;4950:51;5036:75;5103:7;5090:9;5077:23;5066:9;5062:39;5036:75;:::i;:::-;5130:8;;-1:-1:-1;5157:8:145;-1:-1:-1;5208:2:145;5193:18;;5180:32;5177:40;-1:-1:-1;5174:60:145;;;5230:1;5227;5220:12;5174:60;5269:84;5345:7;5338:2;5327:9;5323:18;5310:32;5299:9;5295:48;5269:84;:::i;:::-;5372:8;;-1:-1:-1;5399:8:145;-1:-1:-1;5450:2:145;5435:18;;5422:32;5419:40;-1:-1:-1;5416:60:145;;;5472:1;5469;5462:12;5416:60;5511:96;5599:7;5592:2;5581:9;5577:18;5564:32;5553:9;5549:48;5511:96;:::i;:::-;5626:8;;-1:-1:-1;5653:8:145;-1:-1:-1;5708:2:145;5693:18;;5680:32;;-1:-1:-1;5755:3:145;5740:19;;5727:33;5724:41;-1:-1:-1;5721:61:145;;;5778:1;5775;5768:12;5721:61;5817:97;5906:7;5898:3;5887:9;5883:19;5870:33;5859:9;5855:49;5817:97;:::i;:::-;5933:8;;-1:-1:-1;5960:8:145;-1:-1:-1;6011:3:145;5996:19;;5983:33;5980:41;-1:-1:-1;5977:61:145;;;6034:1;6031;6024:12;5977:61;;6057:76;6125:7;6117:3;6106:9;6102:19;6089:33;6078:9;6074:49;6057:76;:::i;:::-;6047:86;;6181:3;6170:9;6166:19;6153:33;6142:44;;4540:1652;;;;;;;;;;;;;;:::o;6197:127::-;6258:10;6253:3;6249:20;6246:1;6239:31;6289:4;6286:1;6279:15;6313:4;6310:1;6303:15;6329:347;6480:2;6465:18;;6513:1;6502:13;;6492:144;;6558:10;6553:3;6549:20;6546:1;6539:31;6593:4;6590:1;6583:15;6621:4;6618:1;6611:15;6492:144;6645:25;;;6329:347;:::o;6863:394::-;6940:6;6948;7001:2;6989:9;6980:7;6976:23;6972:32;6969:52;;;7017:1;7014;7007:12;6969:52;7040:29;7059:9;7040:29;:::i;:::-;7030:39;;7120:2;7109:9;7105:18;7092:32;-1:-1:-1;;;;;7139:6:145;7136:30;7133:50;;;7179:1;7176;7169:12;7133:50;7202:49;7243:7;7234:6;7223:9;7219:22;7202:49;:::i;:::-;7192:59;;;6863:394;;;;;:::o;7659:182::-;7718:4;-1:-1:-1;;;;;7743:6:145;7740:30;7737:56;;;7773:18;;:::i;:::-;-1:-1:-1;7818:1:145;7814:14;7830:4;7810:25;;7659:182::o;7846:667::-;7900:5;7953:3;7946:4;7938:6;7934:17;7930:27;7920:55;;7971:1;7968;7961:12;7920:55;8007:6;7994:20;8033:4;8057:59;8073:42;8112:2;8073:42;:::i;:::-;8057:59;:::i;:::-;8150:15;;;8236:1;8232:10;;;;8220:23;;8216:32;;;8181:12;;;;8260:15;;;8257:35;;;8288:1;8285;8278:12;8257:35;8324:2;8316:6;8312:15;8336:148;8352:6;8347:3;8344:15;8336:148;;;8418:23;8437:3;8418:23;:::i;:::-;8406:36;;8462:12;;;;8369;;8336:148;;;-1:-1:-1;8502:5:145;7846:667;-1:-1:-1;;;;;;7846:667:145:o;8518:118::-;8604:5;8597:13;8590:21;8583:5;8580:32;8570:60;;8626:1;8623;8616:12;8641:128;8706:20;;8735:28;8706:20;8735:28;:::i;8774:1588::-;8949:6;8957;8965;8973;8981;8989;9042:3;9030:9;9021:7;9017:23;9013:33;9010:53;;;9059:1;9056;9049:12;9010:53;9099:9;9086:23;-1:-1:-1;;;;;9169:2:145;9161:6;9158:14;9155:34;;;9185:1;9182;9175:12;9155:34;9223:6;9212:9;9208:22;9198:32;;9268:7;9261:4;9257:2;9253:13;9249:27;9239:55;;9290:1;9287;9280:12;9239:55;9326:2;9313:16;9348:4;9372:59;9388:42;9427:2;9388:42;:::i;9372:59::-;9465:15;;;9547:1;9543:10;;;;9535:19;;9531:28;;;9496:12;;;;9571:19;;;9568:39;;;9603:1;9600;9593:12;9568:39;9627:11;;;;9647:147;9663:6;9658:3;9655:15;9647:147;;;9729:22;9747:3;9729:22;:::i;:::-;9717:35;;9680:12;;;;9772;;;;9647:147;;;9813:5;-1:-1:-1;;9856:18:145;;9843:32;;-1:-1:-1;;9887:16:145;;;9884:36;;;9916:1;9913;9906:12;9884:36;9939:63;9994:7;9983:8;9972:9;9968:24;9939:63;:::i;:::-;9929:73;;10055:2;10044:9;10040:18;10027:32;10011:48;;10084:2;10074:8;10071:16;10068:36;;;10100:1;10097;10090:12;10068:36;;10123:63;10178:7;10167:8;10156:9;10152:24;10123:63;:::i;:::-;10113:73;;;10205:38;10239:2;10228:9;10224:18;10205:38;:::i;:::-;10195:48;;10262:39;10296:3;10285:9;10281:19;10262:39;:::i;:::-;10252:49;;10320:36;10351:3;10340:9;10336:19;10320:36;:::i;:::-;10310:46;;8774:1588;;;;;;;;:::o;10367:549::-;10454:6;10462;10470;10478;10531:2;10519:9;10510:7;10506:23;10502:32;10499:52;;;10547:1;10544;10537:12;10499:52;10570:28;10588:9;10570:28;:::i;:::-;10560:38;;10645:2;10634:9;10630:18;10617:32;10607:42;;10700:2;10689:9;10685:18;10672:32;-1:-1:-1;;;;;10719:6:145;10716:30;10713:50;;;10759:1;10756;10749:12;11151:1155;11323:6;11331;11339;11347;11355;11363;11371;11424:3;11412:9;11403:7;11399:23;11395:33;11392:53;;;11441:1;11438;11431:12;11392:53;11464:28;11482:9;11464:28;:::i;:::-;11454:38;;11543:2;11532:9;11528:18;11515:32;-1:-1:-1;;;;;11607:2:145;11599:6;11596:14;11593:34;;;11623:1;11620;11613:12;11593:34;11662:58;11712:7;11703:6;11692:9;11688:22;11662:58;:::i;:::-;11739:8;;-1:-1:-1;11636:84:145;-1:-1:-1;11827:2:145;11812:18;;11799:32;;-1:-1:-1;11843:16:145;;;11840:36;;;11872:1;11869;11862:12;11840:36;11911:72;11975:7;11964:8;11953:9;11949:24;11911:72;:::i;:::-;12002:8;;-1:-1:-1;11885:98:145;-1:-1:-1;12090:2:145;12075:18;;12062:32;;-1:-1:-1;12106:16:145;;;12103:36;;;12135:1;12132;12125:12;12103:36;;12174:72;12238:7;12227:8;12216:9;12212:24;12174:72;:::i;:::-;11151:1155;;;;-1:-1:-1;11151:1155:145;;-1:-1:-1;11151:1155:145;;;;12148:98;;-1:-1:-1;;;11151:1155:145:o;12311:332::-;12387:6;12395;12403;12456:2;12444:9;12435:7;12431:23;12427:32;12424:52;;;12472:1;12469;12462:12;12424:52;12495:28;12513:9;12495:28;:::i;:::-;12485:38;;12542;12576:2;12565:9;12561:18;12542:38;:::i;:::-;12532:48;;12599:38;12633:2;12622:9;12618:18;12599:38;:::i;:::-;12589:48;;12311:332;;;;;:::o;13235:241::-;13291:6;13344:2;13332:9;13323:7;13319:23;13315:32;13312:52;;;13360:1;13357;13350:12;13312:52;13399:9;13386:23;13418:28;13440:5;13418:28;:::i;13481:343::-;13683:2;13665:21;;;13722:2;13702:18;;;13695:30;-1:-1:-1;;;13756:2:145;13741:18;;13734:49;13815:2;13800:18;;13481:343::o;13829:349::-;14031:2;14013:21;;;14070:2;14050:18;;;14043:30;14109:27;14104:2;14089:18;;14082:55;14169:2;14154:18;;13829:349::o;14183:127::-;14244:10;14239:3;14235:20;14232:1;14225:31;14275:4;14272:1;14265:15;14299:4;14296:1;14289:15;14315:209;14353:3;-1:-1:-1;;;;;14434:2:145;14427:5;14423:14;14461:2;14452:7;14449:15;14446:41;;14467:18;;:::i;:::-;14516:1;14503:15;;14315:209;-1:-1:-1;;;14315:209:145:o;14529:250::-;14614:1;14624:113;14638:6;14635:1;14632:13;14624:113;;;14714:11;;;14708:18;14695:11;;;14688:39;14660:2;14653:10;14624:113;;;-1:-1:-1;;14771:1:145;14753:16;;14746:27;14529:250::o;14784:270::-;14825:3;14863:5;14857:12;14890:6;14885:3;14878:19;14906:76;14975:6;14968:4;14963:3;14959:14;14952:4;14945:5;14941:16;14906:76;:::i;:::-;15036:2;15015:15;-1:-1:-1;;15011:29:145;15002:39;;;;15043:4;14998:50;;14784:270;-1:-1:-1;;14784:270:145:o;15059:217::-;15206:2;15195:9;15188:21;15169:4;15226:44;15266:2;15255:9;15251:18;15243:6;15226:44;:::i;15281:417::-;15483:2;15465:21;;;15522:2;15502:18;;;15495:30;15561:34;15556:2;15541:18;;15534:62;-1:-1:-1;;;15627:2:145;15612:18;;15605:51;15688:3;15673:19;;15281:417::o;16119:408::-;16321:2;16303:21;;;16360:2;16340:18;;;16333:30;16399:34;16394:2;16379:18;;16372:62;-1:-1:-1;;;16465:2:145;16450:18;;16443:42;16517:3;16502:19;;16119:408::o;16532:::-;16734:2;16716:21;;;16773:2;16753:18;;;16746:30;16812:34;16807:2;16792:18;;16785:62;-1:-1:-1;;;16878:2:145;16863:18;;16856:42;16930:3;16915:19;;16532:408::o;16945:256::-;17011:6;17019;17072:2;17060:9;17051:7;17047:23;17043:32;17040:52;;;17088:1;17085;17078:12;17040:52;17111:28;17129:9;17111:28;:::i;:::-;17101:38;;17158:37;17191:2;17180:9;17176:18;17158:37;:::i;17412:184::-;17482:6;17535:2;17523:9;17514:7;17510:23;17506:32;17503:52;;;17551:1;17548;17541:12;17503:52;-1:-1:-1;17574:16:145;;17412:184;-1:-1:-1;17412:184:145:o;18307:878::-;18443:9;18478:63;18494:46;18533:6;18494:46;:::i;18478:63::-;18563:3;18587:6;18582:3;18575:19;18613:4;18642:2;18637:3;18633:12;18626:19;;18686:6;18683:1;18679:14;18672:5;18668:26;18717:14;18709:6;18706:26;18703:46;;;18745:1;18742;18735:12;18703:46;18769:5;18783:369;18799:6;18794:3;18791:15;18783:369;;;18885:3;18872:17;-1:-1:-1;;;;;18908:11:145;18905:35;18902:125;;;18981:1;19010:2;19006;18999:14;18902:125;19052:57;19094:14;19080:11;19073:5;19069:23;19052:57;:::i;:::-;19040:70;;-1:-1:-1;19130:12:145;;;;18816;;18783:369;;20380:127;20441:10;20436:3;20432:20;20429:1;20422:31;20472:4;20469:1;20462:15;20496:4;20493:1;20486:15;20512:201;20550:3;20578:10;20623:2;20616:5;20612:14;20650:2;20641:7;20638:15;20635:41;;20656:18;;:::i;21994:417::-;22196:2;22178:21;;;22235:2;22215:18;;;22208:30;22274:34;22269:2;22254:18;;22247:62;-1:-1:-1;;;22340:2:145;22325:18;;22318:51;22401:3;22386:19;;21994:417::o;22416:135::-;22455:3;22476:17;;;22473:43;;22496:18;;:::i;:::-;-1:-1:-1;22543:1:145;22532:13;;22416:135::o;24050:271::-;24233:6;24225;24220:3;24207:33;24189:3;24259:16;;24284:13;;;24259:16;24050:271;-1:-1:-1;24050:271:145:o;26141:245::-;26208:6;26261:2;26249:9;26240:7;26236:23;26232:32;26229:52;;;26277:1;26274;26267:12;26229:52;26309:9;26303:16;26328:28;26350:5;26328:28;:::i;27645:128::-;27712:9;;;27733:11;;;27730:37;;;27747:18;;:::i;28181:168::-;28221:7;28287:1;28283;28279:6;28275:14;28272:1;28269:21;28264:1;28257:9;28250:17;28246:45;28243:71;;;28294:18;;:::i;:::-;-1:-1:-1;28334:9:145;;28181:168::o;28354:125::-;28419:9;;;28440:10;;;28437:36;;;28453:18;;:::i;28484:183::-;-1:-1:-1;;;;;28603:10:145;;;28591;;;28587:27;;28626:12;;;28623:38;;;28641:18;;:::i;:::-;28623:38;28484:183;;;;:::o;28672:127::-;28733:10;28728:3;28724:20;28721:1;28714:31;28764:4;28761:1;28754:15;28788:4;28785:1;28778:15;28804:112;28836:1;28862;28852:35;;28867:18;;:::i;:::-;-1:-1:-1;28901:9:145;;28804:112::o;28921:120::-;28961:1;28987;28977:35;;28992:18;;:::i;:::-;-1:-1:-1;29026:9:145;;28921:120::o;31733:400::-;31946:10;31934:23;;31916:42;;-1:-1:-1;;;;;31994:32:145;;31989:2;31974:18;;31967:60;32063:2;32058;32043:18;;32036:30;;;-1:-1:-1;;32083:44:145;;32108:18;;32100:6;32083:44;:::i;32138:287::-;32267:3;32305:6;32299:13;32321:66;32380:6;32375:3;32368:4;32360:6;32356:17;32321:66;:::i;:::-;32403:16;;;;;32138:287;-1:-1:-1;;32138:287:145:o;32430:249::-;32499:6;32552:2;32540:9;32531:7;32527:23;32523:32;32520:52;;;32568:1;32565;32558:12;32520:52;32600:9;32594:16;32619:30;32643:5;32619:30;:::i;32684:298::-;32853:2;32842:9;32835:21;32816:4;32873:44;32913:2;32902:9;32898:18;32890:6;32873:44;:::i;:::-;32865:52;;32967:6;32960:14;32953:22;32948:2;32937:9;32933:18;32926:50;32684:298;;;;;:::o;32987:407::-;33189:2;33171:21;;;33228:2;33208:18;;;33201:30;33267:34;33262:2;33247:18;;33240:62;-1:-1:-1;;;33333:2:145;33318:18;;33311:41;33384:3;33369:19;;32987:407::o;34528:873::-;-1:-1:-1;;;;;;34871:3:145;34849:16;;;34845:36;34833:49;;-1:-1:-1;;;;;;34937:3:145;34915:16;;;34911:51;34907:1;34898:11;;34891:72;-1:-1:-1;;;;;;34986:3:145;35035:16;;;35031:25;;35027:1;35018:11;;35011:46;-1:-1:-1;;;;;;35095:2:145;35091:15;;;35087:53;35082:2;35073:12;;35066:75;35175:16;;;35171:25;35166:2;35157:12;;35150:47;35222:2;35213:12;;35206:28;;;35257:13;;-1:-1:-1;;35279:75:145;35257:13;35342:2;35333:12;;35326:4;35314:17;;35279:75;:::i;:::-;35374:16;;;;35392:2;35370:25;;34528:873;-1:-1:-1;;;;;;;;34528:873:145:o;35406:812::-;35817:25;35812:3;35805:38;35787:3;35872:6;35866:13;35888:75;35956:6;35951:2;35946:3;35942:12;35935:4;35927:6;35923:17;35888:75;:::i;:::-;-1:-1:-1;;;36022:2:145;35982:16;;;36014:11;;;36007:40;36072:13;;36094:76;36072:13;36156:2;36148:11;;36141:4;36129:17;;36094:76;:::i;:::-;36190:17;36209:2;36186:26;;35406:812;-1:-1:-1;;;;35406:812:145:o;39654:157::-;39684:1;39718:4;39715:1;39711:12;39742:3;39732:37;;39749:18;;:::i;:::-;39801:3;39794:4;39791:1;39787:12;39783:22;39778:27;;;39654:157;;;;:::o;39816:151::-;39906:4;39899:12;;;39885;;;39881:31;;39924:14;;39921:40;;;39941:18;;:::i;44468:478::-;44670:2;44652:21;;;44709:2;44689:18;;;44682:30;44748:34;44743:2;44728:18;;44721:62;44819:34;44814:2;44799:18;;44792:62;-1:-1:-1;;;44885:3:145;44870:19;;44863:41;44936:3;44921:19;;44468:478::o;44951:136::-;44990:3;45018:5;45008:39;;45027:18;;:::i;:::-;-1:-1:-1;;;45063:18:145;;44951:136::o;45860:338::-;46062:2;46044:21;;;46101:2;46081:18;;;46074:30;-1:-1:-1;;;46135:2:145;46120:18;;46113:44;46189:2;46174:18;;45860:338::o;46549:422::-;46638:1;46681:5;46638:1;46695:270;46716:7;46706:8;46703:21;46695:270;;;46775:4;46771:1;46767:6;46763:17;46757:4;46754:27;46751:53;;;46784:18;;:::i;:::-;46834:7;46824:8;46820:22;46817:55;;;46854:16;;;;46817:55;46933:22;;;;46893:15;;;;46695:270;;;46699:3;46549:422;;;;;:::o;46976:806::-;47025:5;47055:8;47045:80;;-1:-1:-1;47096:1:145;47110:5;;47045:80;47144:4;47134:76;;-1:-1:-1;47181:1:145;47195:5;;47134:76;47226:4;47244:1;47239:59;;;;47312:1;47307:130;;;;47219:218;;47239:59;47269:1;47260:10;;47283:5;;;47307:130;47344:3;47334:8;47331:17;47328:43;;;47351:18;;:::i;:::-;-1:-1:-1;;47407:1:145;47393:16;;47422:5;;47219:218;;47521:2;47511:8;47508:16;47502:3;47496:4;47493:13;47489:36;47483:2;47473:8;47470:16;47465:2;47459:4;47456:12;47452:35;47449:77;47446:159;;;-1:-1:-1;47558:19:145;;;47590:5;;47446:159;47637:34;47662:8;47656:4;47637:34;:::i;:::-;47707:6;47703:1;47699:6;47695:19;47686:7;47683:32;47680:58;;;47718:18;;:::i;:::-;47756:20;;46976:806;-1:-1:-1;;;46976:806:145:o;47787:131::-;47847:5;47876:36;47903:8;47897:4;47876:36;:::i", - "linkReferences": {}, + "object": "0x6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004615055565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a36600461508e565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b5366004615115565b6107be565b3480156102c657600080fd5b506102da6102d5366004615175565b6108c4565b005b3480156102e857600080fd5b5061028c6102f7366004615190565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615f5e83398151915281565b34801561033a57600080fd5b506102da6103493660046151a9565b610947565b34801561035a57600080fd5b506102da6103693660046151a9565b610971565b34801561037a57600080fd5b506102da6103893660046151d5565b6109ef565b34801561039a57600080fd5b5061024a6103a9366004615175565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d93660046152e9565b610ace565b3480156103ea57600080fd5b5061040e6103f9366004615190565b60076020526000908152604090205460ff1681565b60405161025691906153fc565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da610458366004615424565b610d9c565b34801561046957600080fd5b5061028c610e68565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b9366004615175565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da61050736600461551f565b610f1b565b34801561051857600080fd5b506102da61121e565b34801561052d57600080fd5b5061028c61053c366004615115565b611303565b34801561054d57600080fd5b5061028c61055c366004615633565b611384565b34801561056d57600080fd5b506104d461057c366004615175565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b2366004615674565b6113dd565b3480156105c357600080fd5b5061028c6105d2366004615190565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff36600461571e565b6116f2565b34801561061057600080fd5b5061024a61061f3660046151a9565b6118a3565b34801561063057600080fd5b506102da6118ce565b34801561064557600080fd5b506102da610654366004615175565b6119b3565b34801561066557600080fd5b50610679610674366004615190565b611a30565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be366004615633565b611a6a565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da6107163660046151a9565b611ac3565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b366004615761565b611ae8565b34801561075c57600080fd5b5061028c600080516020615ed783398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107e257604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036108085760405163b0747d8160e01b815260040160405180910390fd5b600080610821876001600160a01b0388165b8787611b63565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161085683615794565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b2919061580a565b60405180910390a39695505050505050565b6108dc600080516020615f5e833981519152336118a3565b6109015760405162461bcd60e51b81526004016108f89061581d565b60405180910390fd5b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096281611bda565b61096c8383611be4565b505050565b6001600160a01b03811633146109e15760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108f8565b6109eb8282611c6a565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a375760405162461bcd60e51b81526004016108f890615872565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a80600080516020615f17833981519152546001600160a01b031690565b6001600160a01b031614610aa65760405162461bcd60e51b81526004016108f8906158be565b610aaf81611cd1565b60408051600080825260208201909252610acb91839190611d05565b50565b610ad6611e70565b600080610ae38b8b611ec9565b91509150610af48260400151612133565b610b018260400151612262565b6000808e8e810190610b13919061590a565b91509150610b258285604001516122be565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190615934565b905080610bfb5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016108f8565b6000610c448b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a0151869150889088906124f2565b905080610c935760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016108f8565b505050506000610cf8878790610ca9919061594d565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261276e565b9050818114610d415760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b50610d8382828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b2192505050565b5050610d8f6001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610de45760405162461bcd60e51b81526004016108f890615872565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e2d600080516020615f17833981519152546001600160a01b031690565b6001600160a01b031614610e535760405162461bcd60e51b81526004016108f8906158be565b610e5c82611cd1565b6109eb82826001611d05565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f085760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f8565b50600080516020615f1783398151915290565b603254610100900460ff1615808015610f3b5750603254600160ff909116105b80610f555750303b158015610f55575060325460ff166001145b610fb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f8565b6032805460ff191660011790558015610fdb576032805461ff0019166101001790555b610fe3612ccf565b610feb612d00565b611003600080516020615f5e83398151915284611be4565b61101b600080516020615ed783398151915285611be4565b611026600085611be4565b61102e612d00565b855187511461103c57600080fd5b845187511461104a57600080fd5b865161105d9060039060208a0190614f7b565b5060005b60035463ffffffff821610156111b157868163ffffffff1681518110611089576110896159b4565b60200260200101516004600060038463ffffffff16815481106110ae576110ae6159b4565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112a5761112a6159b4565b60200260200101516005600060038463ffffffff168154811061114f5761114f6159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a9816159ca565b915050611061565b506000805483151560ff19918216179091556008805490911660011790558015611215576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b611236600080516020615f5e833981519152336118a3565b6112525760405162461bcd60e51b81526004016108f89061581d565b60005b60035463ffffffff821610156112d75760006006600060038463ffffffff1681548110611284576112846159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112cf816159ca565b915050611255565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661132757604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361134d5760405163b0747d8160e01b815260040160405180910390fd5b600080611363876001600160a01b03881661081a565b6002805492945090925082916001600160401b031690600061085683615794565b6000805460ff166113a857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036113ce5760405163b0747d8160e01b815260040160405180910390fd5b60008061082187878787611b63565b6113e5611e70565b6000806113f28888611ec9565b915091506114038260400151612133565b6114108260400151612262565b61141e8983604001516122be565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115d05760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa15801561150b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152f9190615934565b905060008190036115825760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016108f8565b6115b661158f898b61594d565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612d27565b600083815260096020526040902081905592506115e29050565b60008181526009602052604090205491505b6000846020015160016040516020016116109291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061165882856116538a8c61594d565b612e1e565b90508481146116a15760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b505050506116e682828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b2192505050565b50506112156001603355565b61170a600080516020615ed7833981519152336118a3565b6117265760405162461bcd60e51b81526004016108f8906159e3565b6000805b600354811015611792578463ffffffff166003828154811061174e5761174e6159b4565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117805760019150611792565b8061178a81615a38565b91505061172a565b508061181b57600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118e6600080516020615f5e833981519152336118a3565b6119025760405162461bcd60e51b81526004016108f89061581d565b60005b60035463ffffffff821610156119875760016006600060038463ffffffff1681548110611934576119346159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff19169115159190911790558061197f816159ca565b915050611905565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119cb600080516020615f5e833981519152336118a3565b6119e75760405162461bcd60e51b81526004016108f89061581d565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a4057600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a8e57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff1603611ab45760405163b0747d8160e01b815260040160405180910390fd5b60008061136387878787611b63565b600082815260c96020526040902060010154611ade81611bda565b61096c8383611c6a565b611b00600080516020615f5e833981519152336118a3565b611b1c5760405162461bcd60e51b81526004016108f89061581d565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bc69360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612eba92505050565b805160208201209097909650945050505050565b610acb8133612ef5565b611bee82826118a3565b6109eb57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c263390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c7482826118a3565b156109eb57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611ce9600080516020615ed7833981519152336118a3565b610acb5760405162461bcd60e51b81526004016108f8906159e3565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d385761096c83612f4e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d92575060408051601f3d908101601f19168201909252611d8f91810190615934565b60015b611df55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f8565b600080516020615f178339815191528114611e645760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f8565b5061096c838383612fea565b600260335403611ec25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108f8565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f4685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061301592505050565b905060008585604051611f5a929190615a51565b60405190819003902090506000808281526007602052604090205460ff166002811115611f8957611f896153e6565b14611fd65760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016108f8565b46826080015163ffffffff161461201e5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016108f8565b600854825160ff9081169116146120685760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016108f8565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120b3575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121265760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016108f8565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b03166121995760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122169190615a61565b610acb5760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016108f8565b63ffffffff811660009081526006602052604090205460ff1615610acb5760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016108f8565b63ffffffff81166000908152600460205260409020546001600160a01b03166123245760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b19190615934565b6000036124005760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016108f8565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248a9190615934565b6124949042615a7e565b9050607881101561096c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016108f8565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af415801561254c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125709190615934565b9050600081856001600160401b03161061258b57601b61258e565b60075b60ff169050600082866001600160401b0316106125ca576120006125bb846001600160401b038916615a7e565b6125c59190615aa7565b6125df565b6125df6120006001600160401b038816615aa7565b90506000866001600160401b0316886001600160401b03160361261e5750600b61260b81610200615abb565b61261790610183615ada565b9050612753565b61200061262b888a615aed565b6001600160401b03161161268d5750600b612647816020615abb565b612652906006615ada565b90506126696120006001600160401b038916615b14565b61267561200083615abb565b61267f9190615ada565b905061260b81610200615abb565b876001600160401b0316876001600160401b0316101561270b5750600b826126b6826020615abb565b6126c09190615ada565b90506126cd816002615abb565b6126d8906000615ada565b9050816126e9630100000083615abb565b6126f39190615ada565b9050612700816002615abb565b612652906001615ada565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016108f8565b61275f8b828c8c6130da565b9b9a5050505050505050505050565b60008061277c878a8a6130f4565b9050600081600081518110612793576127936159b4565b01602001516001600160f81b03191690506000600160f81b8214806127c55750600160f91b6001600160f81b03198316145b156127d257506001612837565b600360fe1b6001600160f81b03198316106127ef57506000612837565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016108f8565b6000602084019050600060405180604001604052808487516128599190615a7e565b81526020016128688585615ada565b90529050600061287782613994565b905080516004146128c35760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016108f8565b60006128e8826003815181106128db576128db6159b4565b6020026020010151613994565b905080518c1061293a5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016108f8565b6000612951828e815181106128db576128db6159b4565b905080516003146129af5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016108f8565b60006129d4826000815181106129c7576129c76159b4565b6020026020010151613bb9565b90508c6001600160a01b0316816001600160a01b031614612a475760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016108f8565b6000612a5f836001815181106128db576128db6159b4565b90508c612a8582600081518110612a7857612a786159b4565b6020026020010151613c23565b14612ae85760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016108f8565b612b0a818d81518110612afd57612afd6159b4565b6020026020010151613c2a565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612b5093929190615b28565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612ba29190615b58565b6000604051808303816000865af19150503d8060008114612bdf576040519150601f19603f3d011682016040523d82523d6000602084013e612be4565b606091505b5080519195509350600092506020039050612c2657600082806020019051810190612c0f9190615b74565b6001600160e01b031916631dee306b60e11b149150505b828015612c305750805b15612c53576000858152600760205260409020805460ff19166002179055612c6d565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612cb8929190615b91565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612cf65760405162461bcd60e51b81526004016108f890615bb5565b612cfe613d2d565b565b603254610100900460ff16612cfe5760405162461bcd60e51b81526004016108f890615bb5565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612d8c82604051602001612d7691815260200190565b60405160208183030381529060405287866130f4565b90506000815111612dd85760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016108f8565b6000612deb612de683613d54565b613994565b90508051600414612dfb57600080fd5b612e1181600281518110612a7857612a786159b4565b93505050505b9392505050565b600080612e4d85604051602001612e3791815260200190565b60405160208183030381529060405284866130f4565b90506000815111612ea05760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016108f8565b612eb1612eac82613d54565b613c23565b95945050505050565b606087878787878787604051602001612ed99796959493929190615c00565b6040516020818303038152906040529050979650505050505050565b612eff82826118a3565b6109eb57612f0c81613da7565b612f17836020613db9565b604051602001612f28929190615c87565b60408051601f198184030181529082905262461bcd60e51b82526108f89160040161580a565b6001600160a01b0381163b612fbb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f8565b600080516020615f1783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612ff383613f54565b6000825111806130005750805b1561096c5761300f8383613f94565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916130c9918a91906130c4908290615a7e565b61407f565b60c088015250949695505050505050565b6000806130e886868661416b565b90921495945050505050565b6060600084511161313f5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016108f8565b600061314a846142fa565b90506000613157866143e8565b905060008460405160200161316e91815260200190565b60405160208183030381529060405290506000805b845181101561393d5760008582815181106131a0576131a06159b4565b6020026020010151905084518311156132125760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016108f8565b826000036132b157805180516020918201206040516132609261323a92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6132ac5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016108f8565b6133a7565b80515160201161333757805180516020918201206040516132db9261323a92910190815260200190565b6132ac5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016108f8565b8051845160208087019190912082519190920120146133a75760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016108f8565b6133b360106001615ada565b8160200151510361356057845183036134f85760006133ef82602001516010815181106133e2576133e26159b4565b6020026020010151614502565b905060008151116134685760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016108f8565b600187516134769190615a7e565b83146134ea5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016108f8565b9650612e1795505050505050565b600085848151811061350c5761350c6159b4565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110613537576135376159b4565b6020026020010151905061354a81614625565b9550613557600186615ada565b9450505061392a565b6002816020015151036138d15760006135788261464a565b905060008160008151811061358f5761358f6159b4565b016020015160f81c905060006135a6600283615cfc565b6135b1906002615d1e565b905060006135c2848360ff1661466e565b905060006135d08a8961466e565b905060006135de83836146a4565b9050808351146136565760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016108f8565b60ff85166002148061366b575060ff85166003145b1561381157808251146136e65760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016108f8565b600061370288602001516001815181106133e2576133e26159b4565b9050600081511161377b5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016108f8565b60018d516137899190615a7e565b89146137fd5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016108f8565b9c50612e179b505050505050505050505050565b60ff85161580613824575060ff85166001145b15613863576138508760200151600181518110613843576138436159b4565b6020026020010151614625565b995061385c818a615ada565b98506138c6565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016108f8565b50505050505061392a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016108f8565b508061393581615a38565b915050613183565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016108f8565b606060008060006139a485614723565b9194509250905060018160018111156139bf576139bf6153e6565b14613a325760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016108f8565b8451613a3e8385615ada565b14613aa65760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016108f8565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081613abf5790505090506000845b8751811015613bad57600080613b326040518060400160405280858d60000151613b169190615a7e565b8152602001858d60200151613b2b9190615ada565b9052614723565b509150915060405180604001604052808383613b4e9190615ada565b8152602001848c60200151613b639190615ada565b815250858581518110613b7857613b786159b4565b6020908102919091010152613b8e600185615ada565b9350613b9a8183615ada565b613ba49084615ada565b92505050613aec565b50815295945050505050565b8051600090600103613bcd57506000919050565b8151601514613c1e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016108f8565b6107b8825b60006107b8825b6000602182600001511115613c815760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000806000613c8f85614723565b919450925090506000816001811115613caa57613caa6153e6565b14613cf75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000838660200151613d099190615ada565b80519091506020841015613d235760208490036101000a90045b9695505050505050565b603254610100900460ff16612cc85760405162461bcd60e51b81526004016108f890615bb5565b60408051808201909152600080825260208201526000825111613d895760405162461bcd60e51b81526004016108f890615d37565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613dc8836002615abb565b613dd3906002615ada565b6001600160401b03811115613dea57613dea615234565b6040519080825280601f01601f191660200182016040528015613e14576020820181803683370190505b509050600360fc1b81600081518110613e2f57613e2f6159b4565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613e5e57613e5e6159b4565b60200101906001600160f81b031916908160001a9053506000613e82846002615abb565b613e8d906001615ada565b90505b6001811115613f05576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613ec157613ec16159b4565b1a60f81b828281518110613ed757613ed76159b4565b60200101906001600160f81b031916908160001a90535060049490941c93613efe81615da7565b9050613e90565b508315612e175760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108f8565b613f5d81612f4e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613ffc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108f8565b600080846001600160a01b0316846040516140179190615b58565b600060405180830381855af49150503d8060008114614052576040519150601f19603f3d011682016040523d82523d6000602084013e614057565b606091505b5091509150612eb18282604051806060016040528060278152602001615f3760279139614de6565b60608161408d81601f615ada565b10156140ab5760405162461bcd60e51b81526004016108f890615dbe565b6140b58284615ada565b845110156140f95760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b6060821580156141185760405191506000825260208201604052614162565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614151578051835260209283019201614139565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161417c9190615ada565b614187906002615eca565b1161419157600080fd5b8360005b84600114614162576141a8600286615b14565b6001036142475760028482815181106141c3576141c36159b4565b6020026020010151836040516020016141e6929190918252602082015260400190565b60408051601f198184030181529082905261420091615b58565b602060405180830381855afa15801561421d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142409190615934565b91506142db565b60028285838151811061425c5761425c6159b4565b602002602001015160405160200161427e929190918252602082015260400190565b60408051601f198184030181529082905261429891615b58565b602060405180830381855afa1580156142b5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142d89190615934565b91505b6142e6600286615aa7565b9450806142f281615a38565b915050614195565b80516060906000816001600160401b0381111561431957614319615234565b60405190808252806020026020018201604052801561435e57816020015b60408051808201909152606080825260208201528152602001906001900390816143375790505b50905060005b828110156143e0576040518060400160405280868381518110614389576143896159b4565b602002602001015181526020016143b88784815181106143ab576143ab6159b4565b6020026020010151614dff565b8152508282815181106143cd576143cd6159b4565b6020908102919091010152600101614364565b509392505050565b805160609060006143fa826002615abb565b6001600160401b0381111561441157614411615234565b6040519080825280601f01601f19166020018201604052801561443b576020820181803683370190505b5090506000805b838110156144f85785818151811061445c5761445c6159b4565b6020910101516001600160f81b03198116925060041c60ff60f41b1683614484836002615abb565b81518110614494576144946159b4565b60200101906001600160f81b031916908160001a905350600f60f81b8216836144be836002615abb565b6144c9906001615ada565b815181106144d9576144d96159b4565b60200101906001600160f81b031916908160001a905350600101614442565b5090949350505050565b6060600080600061451285614723565b91945092509050600081600181111561452d5761452d6153e6565b146145a05760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016108f8565b6145aa8284615ada565b8551146146165760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016108f8565b612eb185602001518484614e0d565b606060208260000151106146415761463c82614502565b6107b8565b6107b882614ead565b60606107b861466983602001516000815181106133e2576133e26159b4565b6143e8565b60608251821061468d57506040805160208101909152600081526107b8565b612e17838384865161469f9190615a7e565b614ec3565b600080600083518551106146b95783516146bc565b84515b90505b808210801561471357508382815181106146db576146db6159b4565b602001015160f81c60f81b6001600160f81b031916858381518110614702576147026159b4565b01602001516001600160f81b031916145b156143e0578160010191506146bf565b60008060008084600001511161474b5760405162461bcd60e51b81526004016108f890615d37565b6020840151805160001a607f8111614770576000600160009450945094505050614ddf565b60b781116148cd576000614785608083615a7e565b9050808760000151116148055760405162461bcd60e51b815260206004820152604e6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016108f8565b6001838101516001600160f81b03191690821415806148325750600160ff1b6001600160f81b0319821610155b6148ba5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016108f8565b5060019550935060009250614ddf915050565b60bf8111614b0e5760006148e260b783615a7e565b9050808760000151116149655760405162461bcd60e51b81526020600482015260516024820152600080516020615ef783398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016108f8565b60018301516001600160f81b03191660008190036149ec5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016108f8565b600184015160088302610100031c60378111614a6f5760405162461bcd60e51b81526020600482015260486024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016108f8565b614a798184615ada565b895111614af15760405162461bcd60e51b815260206004820152604c6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016108f8565b614afc836001615ada565b9750955060009450614ddf9350505050565b60f78111614bb0576000614b2360c083615a7e565b905080876000015111614b9f5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016108f8565b600195509350849250614ddf915050565b6000614bbd60f783615a7e565b905080876000015111614c3c5760405162461bcd60e51b815260206004820152604d6024820152600080516020615ef783398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016108f8565b60018301516001600160f81b0319166000819003614cc15760405162461bcd60e51b81526020600482015260486024820152600080516020615ef783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016108f8565b600184015160088302610100031c60378111614d425760405162461bcd60e51b81526020600482015260466024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016108f8565b614d4c8184615ada565b895111614dc25760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016108f8565b614dcd836001615ada565b9750955060019450614ddf9350505050565b9193909250565b60608315614df5575081612e17565b612e178383614f51565b60606107b8612de683613d54565b60606000826001600160401b03811115614e2957614e29615234565b6040519080825280601f01601f191660200182016040528015614e53576020820181803683370190505b50905082600003614e65579050612e17565b6000614e718587615ada565b90506020820160005b85811015614e92578281015182820152602001614e7a565b85811115614ea1576000868301525b50919695505050505050565b60606107b8826020015160008460000151614e0d565b60608182601f011015614ee85760405162461bcd60e51b81526004016108f890615dbe565b828284011015614f0a5760405162461bcd60e51b81526004016108f890615dbe565b818301845110156140f95760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b815115614f615781518083602001fd5b8060405162461bcd60e51b81526004016108f8919061580a565b8280548282559060005260206000209060070160089004810192821561501a5791602002820160005b83821115614fe857835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614fa4565b80156150185782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614fe8565b505b5061502692915061502a565b5090565b5b80821115615026576000815560010161502b565b6001600160e01b031981168114610acb57600080fd5b60006020828403121561506757600080fd5b8135612e178161503f565b80356001600160401b038116811461508957600080fd5b919050565b6000602082840312156150a057600080fd5b612e1782615072565b803563ffffffff8116811461508957600080fd5b80356001600160a01b038116811461508957600080fd5b60008083601f8401126150e657600080fd5b5081356001600160401b038111156150fd57600080fd5b60208301915083602082850101111561212c57600080fd5b6000806000806060858703121561512b57600080fd5b615134856150a9565b9350615142602086016150bd565b925060408501356001600160401b0381111561515d57600080fd5b615169878288016150d4565b95989497509550505050565b60006020828403121561518757600080fd5b612e17826150a9565b6000602082840312156151a257600080fd5b5035919050565b600080604083850312156151bc57600080fd5b823591506151cc602084016150bd565b90509250929050565b6000602082840312156151e757600080fd5b612e17826150bd565b60008083601f84011261520257600080fd5b5081356001600160401b0381111561521957600080fd5b6020830191508360208260051b850101111561212c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561527257615272615234565b604052919050565b600082601f83011261528b57600080fd5b81356001600160401b038111156152a4576152a4615234565b6152b7601f8201601f191660200161524a565b8181528460208386010111156152cc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561530a57600080fd5b6001600160401b03808d35111561532057600080fd5b61532d8e8e358f016150d4565b909c509a5060208d013581101561534357600080fd5b6153538e60208f01358f016150d4565b909a50985060408d013581101561536957600080fd5b6153798e60408f01358f016151f0565b909850965060608d0135955060808d013581101561539657600080fd5b6153a68e60808f01358f016151f0565b909550935060a08d01358110156153bc57600080fd5b506153cd8d60a08e01358e0161527a565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b602081016003831061541e57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561543757600080fd5b615440836150bd565b915060208301356001600160401b0381111561545b57600080fd5b6154678582860161527a565b9150509250929050565b60006001600160401b0382111561548a5761548a615234565b5060051b60200190565b600082601f8301126154a557600080fd5b813560206154ba6154b583615471565b61524a565b82815260059290921b840181019181810190868411156154d957600080fd5b8286015b848110156154fb576154ee816150bd565b83529183019183016154dd565b509695505050505050565b8015158114610acb57600080fd5b803561508981615506565b60008060008060008060c0878903121561553857600080fd5b86356001600160401b038082111561554f57600080fd5b818901915089601f83011261556357600080fd5b813560206155736154b583615471565b82815260059290921b8401810191818101908d84111561559257600080fd5b948201945b838610156155b7576155a8866150a9565b82529482019490820190615597565b9a50508a0135925050808211156155cd57600080fd5b6155d98a838b01615494565b965060408901359150808211156155ef57600080fd5b506155fc89828a01615494565b94505061560b606088016150bd565b9250615619608088016150bd565b915061562760a08801615514565b90509295509295509295565b6000806000806060858703121561564957600080fd5b615652856150a9565b93506020850135925060408501356001600160401b0381111561515d57600080fd5b60008060008060008060006080888a03121561568f57600080fd5b61569888615072565b965060208801356001600160401b03808211156156b457600080fd5b6156c08b838c016150d4565b909850965060408a01359150808211156156d957600080fd5b6156e58b838c016151f0565b909650945060608a01359150808211156156fe57600080fd5b5061570b8a828b016151f0565b989b979a50959850939692959293505050565b60008060006060848603121561573357600080fd5b61573c846150a9565b925061574a602085016150bd565b9150615758604085016150bd565b90509250925092565b60006020828403121561577357600080fd5b8135612e1781615506565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b038083168181036157b0576157b061577e565b6001019392505050565b60005b838110156157d55781810151838201526020016157bd565b50506000910152565b600081518084526157f68160208601602086016157ba565b601f01601f19169290920160200192915050565b602081526000612e1760208301846157de565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000806040838503121561591d57600080fd5b61592683615072565b91506151cc60208401615072565b60006020828403121561594657600080fd5b5051919050565b600061595b6154b584615471565b80848252602080830192508560051b85013681111561597957600080fd5b855b81811015614ea15780356001600160401b0381111561599a5760008081fd5b6159a636828a0161527a565b86525093820193820161597b565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff8083168181036157b0576157b061577e565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b600060018201615a4a57615a4a61577e565b5060010190565b8183823760009101908152919050565b600060208284031215615a7357600080fd5b8151612e1781615506565b818103818111156107b8576107b861577e565b634e487b7160e01b600052601260045260246000fd5b600082615ab657615ab6615a91565b500490565b6000816000190483118215151615615ad557615ad561577e565b500290565b808201808211156107b8576107b861577e565b6001600160401b03828116828216039080821115615b0d57615b0d61577e565b5092915050565b600082615b2357615b23615a91565b500690565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612eb1908301846157de565b60008251615b6a8184602087016157ba565b9190910192915050565b600060208284031215615b8657600080fd5b8151612e178161503f565b604081526000615ba460408301856157de565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615c748160458501602087016157ba565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615cbf8160178501602088016157ba565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615cf08160288401602088016157ba565b01602801949350505050565b600060ff831680615d0f57615d0f615a91565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b861577e565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615db657615db661577e565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615e21578160001904821115615e0757615e0761577e565b80851615615e1457918102915b93841c9390800290615deb565b509250929050565b600082615e38575060016107b8565b81615e45575060006107b8565b8160018114615e5b5760028114615e6557615e81565b60019150506107b8565b60ff841115615e7657615e7661577e565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615ea4575081810a6107b8565b615eae8383615de6565b8060001904821115615ec257615ec261577e565b029392505050565b6000612e178383615e2956fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212209920968ca2549dc136114884cdd68cb7192890d709c1df8ba30e5a5f0825170164736f6c63430008100033", + "sourceMap": "698:1544:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2903:213:31;;;;;;;;;;-1:-1:-1;2903:213:31;;;;;:::i;:::-;;:::i;:::-;;;565:14:146;;558:22;540:41;;528:2;513:18;2903:213:31;;;;;;;;527:42:103;;;;;;;;;;-1:-1:-1;527:42:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1103:25:146;;;1091:2;1076:18;527:42:103;957:177:146;3438:539:99;;;;;;;;;;-1:-1:-1;3438:539:99;;;;;:::i;:::-;;:::i;3147:128:101:-;;;;;;;;;;-1:-1:-1;3147:128:101;;;;;:::i;:::-;;:::i;:::-;;4708:129:31;;;;;;;;;;-1:-1:-1;4708:129:31;;;;;:::i;:::-;4782:7;4808:12;;;:6;:12;;;;;:22;;;;4708:129;1199:66:101;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1199:66:101;;5133:145:31;;;;;;;;;;-1:-1:-1;5133:145:31;;;;;:::i;:::-;;:::i;6242:214::-;;;;;;;;;;-1:-1:-1;6242:214:31;;;;;:::i;:::-;;:::i;3317:197:38:-;;;;;;;;;;-1:-1:-1;3317:197:38;;;;;:::i;:::-;;:::i;1291:37:103:-;;;;;;;;;;-1:-1:-1;1291:37:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;4866:1928:100;;;;;;;;;;-1:-1:-1;4866:1928:100;;;;;:::i;:::-;;:::i;1398:54:103:-;;;;;;;;;;-1:-1:-1;1398:54:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;;-1:-1:-1;434:26:103;;;;;;;;1876:109:100;;;;;;;;;;-1:-1:-1;1957:14:100;:21;1876:109;;3763:222:38;;;;;;:::i;:::-;;:::i;3006:131::-;;;;;;;;;;;;;:::i;1690:20:103:-;;;;;;;;;;-1:-1:-1;1690:20:103;;;;;;;;;;;7434:4:146;7422:17;;;7404:36;;7392:2;7377:18;1690:20:103;7262:184:146;1164:46:103;;;;;;;;;;-1:-1:-1;1164:46:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;7615:32:146;;;7597:51;;7585:2;7570:18;1164:46:103;7451:203:146;1118:958:102;;;;;;;;;;-1:-1:-1;1118:958:102;;;;;:::i;:::-;;:::i;3463:198:101:-;;;;;;;;;;;;;:::i;1864:488:99:-;;;;;;;;;;-1:-1:-1;1864:488:99;;;;;:::i;:::-;;:::i;2914:518::-;;;;;;;;;;-1:-1:-1;2914:518:99;;;;;:::i;:::-;;:::i;999:51:103:-;;;;;;;;;;-1:-1:-1;999:51:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;;;;;-1:-1:-1;2394:1820:100;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;;;;;-1:-1:-1;1936:51:103;;;;;:::i;:::-;;;;;;;;;;;;;;3987:684:101;;;;;;;;;;-1:-1:-1;3987:684:101;;;;;:::i;:::-;;:::i;3203:145:31:-;;;;;;;;;;-1:-1:-1;3203:145:31;;;;;:::i;:::-;;:::i;2432:193:101:-;;;;;;;;;;;;;:::i;2827:123::-;;;;;;;;;;-1:-1:-1;2827:123:101;;;;;:::i;:::-;;:::i;879:30:103:-;;;;;;;;;;-1:-1:-1;879:30:103;;;;;:::i;:::-;;:::i;:::-;;;13007:10:146;12995:23;;;12977:42;;12965:2;12950:18;879:30:103;12833:192:146;2324:49:31;;;;;;;;;;-1:-1:-1;2324:49:31;2369:4;2324:49;;1391:467:99;;;;;;;;;;-1:-1:-1;1391:467:99;;;;;:::i;:::-;;:::i;634:19:103:-;;;;;;;;;;-1:-1:-1;634:19:103;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;13192:31:146;;;13174:50;;13162:2;13147:18;634:19:103;13030:200:146;5558:147:31;;;;;;;;;;-1:-1:-1;5558:147:31;;;;;:::i;:::-;;:::i;924:58:100:-;;;;;;;;;;;;973:9;924:58;;2097:142:101;;;;;;;;;;-1:-1:-1;2097:142:101;;;;;:::i;:::-;;:::i;1370:66::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1370:66:101;;837:33:102;;;;;;;;;;;;869:1;837:33;;2903:213:31;2988:4;-1:-1:-1;;;;;;3011:58:31;;-1:-1:-1;;;3011:58:31;;:98;;-1:-1:-1;;;;;;;;;;1168:51:44;;;3073:36:31;3004:105;2903:213;-1:-1:-1;;2903:213:31:o;3438:539:99:-;3603:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3648:13:::1;3626:18;:35;;::::0;3622:71:::1;;3670:23;;-1:-1:-1::0;;;3670:23:99::1;;;;;;;;;;;3622:71;3704:20;::::0;3761:85:::1;3780:18:::0;-1:-1:-1;;;;;337:22:113;;3800:39:99::1;3841:4;;3761:18;:85::i;:::-;3865:5;::::0;;-1:-1:-1;;;;;3865:5:99;;::::1;3856:15;::::0;;;:8:::1;:15;::::0;;;;:29;;;3912:7;;3703:143;;-1:-1:-1;3703:143:99;;-1:-1:-1;3703:143:99;;3912:7:::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;;-1:-1:-1::0;;;;;3900:42:99::1;;3934:7;3900:42;;;;;;:::i;:::-;;;;;;;;3959:11:::0;3438:539;-1:-1:-1;;;;;;3438:539:99:o;3147:128:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;;;;;;;;;3213:15:::1;::::0;::::1;3231:5;3213:15:::0;;;:6:::1;:15;::::0;;;;;:23;;-1:-1:-1;;3213:23:101::1;::::0;;3251:17;::::1;::::0;3231:5;3251:17:::1;3147:128:::0;:::o;5133:145:31:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5246:25:::1;5257:4;5263:7;5246:10;:25::i;:::-;5133:145:::0;;;:::o;6242:214::-;-1:-1:-1;;;;;6337:23:31;;929:10:41;6337:23:31;6329:83;;;;-1:-1:-1;;;6329:83:31;;15203:2:146;6329:83:31;;;15185:21:146;15242:2;15222:18;;;15215:30;15281:34;15261:18;;;15254:62;-1:-1:-1;;;15332:18:146;;;15325:45;15387:19;;6329:83:31;15001:411:146;6329:83:31;6423:26;6435:4;6441:7;6423:11;:26::i;:::-;6242:214;;:::o;3317:197:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3400:36:::1;3418:17;3400;:36::i;:::-;3487:12;::::0;;3497:1:::1;3487:12:::0;;;::::1;::::0;::::1;::::0;;;3446:61:::1;::::0;3468:17;;3487:12;3446:21:::1;:61::i;:::-;3317:197:::0;:::o;4866:1928:100:-;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;13192:31:146;;5661:52:100;;::::1;13174:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;13147:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;17101:2:146;5727:58:100::1;::::0;::::1;17083:21:146::0;17140:2;17120:18;;;17113:30;-1:-1:-1;;;17159:18:146;;;17152:51;17220:18;;5727:58:100::1;16899:345:146::0;5727:58:100::1;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;17451:2:146;5965:47:100::1;::::0;::::1;17433:21:146::0;17490:2;17470:18;;;17463:30;17529:29;17509:18;;;17502:57;17576:18;;5965:47:100::1;17249:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;18690:2:146;6648:67:100::1;::::0;::::1;18672:21:146::0;18729:2;18709:18;;;18702:30;-1:-1:-1;;;18748:18:146;;;18741:51;18809:18;;6648:67:100::1;18488:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;3763:222:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3880:36:::1;3898:17;3880;:36::i;:::-;3926:52;3948:17;3967:4;3973;3926:21;:52::i;3006:131::-:0;3084:7;2324:4;-1:-1:-1;;;;;2333:6:38;2316:23;;2308:92;;;;-1:-1:-1;;;2308:92:38;;19040:2:146;2308:92:38;;;19022:21:146;19079:2;19059:18;;;19052:30;19118:34;19098:18;;;19091:62;19189:26;19169:18;;;19162:54;19233:19;;2308:92:38;18838:420:146;2308:92:38;-1:-1:-1;;;;;;;;;;;;3006:131:38;:::o;1118:958:102:-;3291:13:37;;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:37;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:37;1476:19:40;:23;;;3376:66:37;;-1:-1:-1;3425:12:37;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:37;;19465:2:146;3314:201:37;;;19447:21:146;19504:2;19484:18;;;19477:30;19543:34;19523:18;;;19516:62;-1:-1:-1;;;19594:18:146;;;19587:44;19648:19;;3314:201:37;19263:410:146;3314:201:37;3525:12;:16;;-1:-1:-1;;3525:16:37;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:37;;;;;3551:65;1380:24:102::1;:22;:24::i;:::-;1414:22;:20;:22::i;:::-;1446:36;-1:-1:-1::0;;;;;;;;;;;1472:9:102::1;1446:10;:36::i;:::-;1492;-1:-1:-1::0;;;;;;;;;;;1518:9:102::1;1492:10;:36::i;:::-;1538:41;2369:4:31;1569:9:102::0;1538:10:::1;:41::i;:::-;1589:24;:22;:24::i;:::-;1658:13;:20;1632:15;:22;:46;1624:55;;;::::0;::::1;;1723:13;:20;1697:15;:22;:46;1689:55;;;::::0;::::1;;1755:32:::0;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1802:8;1797:204;1820:14;:21:::0;1816:25:::1;::::0;::::1;;1797:204;;;1909:13;1923:1;1909:16;;;;;;;;;;:::i;:::-;;;;;;;1862:12;:31;1875:14;1890:1;1875:17;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1862:31;;;;;;;;;;;;;;;;:64;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;;1974:13;1988:1;1974:16;;;;;;;;;;:::i;:::-;;;;;;;1940:12;:31;1953:14;1968:1;1953:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;1940:31:::0;;;::::1;::::0;;;;;;;;:50;;-1:-1:-1;;;;;;1940:50:102::1;-1:-1:-1::0;;;;;1940:50:102;;;::::1;::::0;;;::::1;::::0;;1843:3;::::1;::::0;::::1;:::i;:::-;;;;1797:204;;;-1:-1:-1::0;2010:14:102::1;:32:::0;;;::::1;;-1:-1:-1::0;;2010:32:102;;::::1;;::::0;;;2052:7:::1;:17:::0;;;;::::1;2010:32:::0;2052:17:::1;::::0;;3636:99:37;;;;3670:13;:21;;-1:-1:-1;;3670:21:37;;;3710:14;;-1:-1:-1;7404:36:146;;3710:14:37;;7392:2:146;7377:18;3710:14:37;;;;;;;3636:99;3258:483;1118:958:102;;;;;;:::o;3463:198:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;3523:8:::1;3518:109;3541:14;:21:::0;3537:25:::1;::::0;::::1;;3518:109;;;3611:5;3583:6;:25;3590:14;3605:1;3590:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;3583:25:::0;;;::::1;::::0;;;;;;;;:33;;-1:-1:-1;;3583:33:101::1;::::0;::::1;;::::0;;;::::1;::::0;;3564:3;::::1;::::0;::::1;:::i;:::-;;;;3518:109;;;-1:-1:-1::0;3641:13:101::1;::::0;::::1;::::0;;;::::1;3463:198::o:0;1864:488:99:-;2013:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;2062:13:::1;2040:18;:35;;::::0;2036:71:::1;;2084:23;;-1:-1:-1::0;;;2084:23:99::1;;;;;;;;;;;2036:71;2118:20;::::0;2175:85:::1;2194:18:::0;-1:-1:-1;;;;;337:22:113;;2214:39:99::1;245:122:113::0;2175:85:99::1;2287:5;:7:::0;;2117:143;;-1:-1:-1;2117:143:99;;-1:-1:-1;2117:143:99;;-1:-1:-1;;;;;2287:7:99::1;::::0;:5:::1;:7;::::0;::::1;:::i;2914:518::-:0;3079:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3124:13:::1;3102:18;:35;;::::0;3098:71:::1;;3146:23;;-1:-1:-1::0;;;3146:23:99::1;;;;;;;;;;;3098:71;3180:20;3202:19:::0;3237:64:::1;3256:18;3276;3296:4;;3237:18;:64::i;2394:1820:100:-:0;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;20434:3:146;20412:16;;;;-1:-1:-1;;;;;;20408:43:146;2955:82:100;;::::1;20396:56:146::0;20507:3;20485:16;;;-1:-1:-1;;;;;;20481:51:146;20468:11;;;20461:72;20571:2;20567:15;-1:-1:-1;;;;;;20567:15:146;20549:12;;;20542:75;2955:82:100;;;;;;;;;20633:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;13192:31:146;;3301:61:100;;::::1;13174:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;13147:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;20858:2:146;3380:67:100::1;::::0;::::1;20840:21:146::0;20897:2;20877:18;;;20870:30;20936:33;20916:18;;;20909:61;20987:18;;3380:67:100::1;20656:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;21206:31:146;;;;21188:50;;21269:2;21254:18;;21247:34;21176:2;21161:18;;21016:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;1103:25:146::0;3826:80:100;;;;;;;;;1076:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;18690:2:146;4090:31:100::1;::::0;::::1;18672:21:146::0;18729:2;18709:18;;;18702:30;-1:-1:-1;;;18748:18:146;;;18741:51;18809:18;;4090:31:100::1;18488:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;3987:684:101;1689:34;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;:::-;4135:18:::1;4176:9:::0;4171:186:::1;4195:14;:21:::0;4191:25;::::1;4171:186;;;4262:7;4241:28;;:14;4256:1;4241:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;::::1;;;:28:::0;4237:110:::1;;4305:4;4289:20;;4327:5;;4237:110;4218:3:::0;::::1;::::0;::::1;:::i;:::-;;;;4171:186;;;;4371:13;4366:117;;4400:14;:28:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4400:28:101;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;;;;::::1;;;::::0;;::::1;::::0;::::1;;::::0;;::::1;;::::0;;4447:25:::1;::::0;4400:28;;4447:25:::1;::::0;::::1;4366:117;4492:21;::::0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;:49;;-1:-1:-1;;;;;4492:49:101;;::::1;-1:-1:-1::0;;;;;;4492:49:101;;::::1;::::0;::::1;::::0;;;4551:12:::1;:21:::0;;;;;;:35;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;4601:63;;22066:34:146;;;22116:18;;;22109:43;;;;4601:63:101::1;::::0;22001:18:146;4601:63:101::1;;;;;;;4125:546;3987:684:::0;;;:::o;3203:145:31:-;3289:4;3312:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3312:29:31;;;;;;;;;;;;;;;3203:145::o;2432:193:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2490:8:::1;2485:108;2508:14;:21:::0;2504:25:::1;::::0;::::1;;2485:108;;;2578:4;2550:6;:25;2557:14;2572:1;2557:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;2550:25:::0;;;::::1;::::0;;;;;;;;:32;;-1:-1:-1;;2550:32:101::1;::::0;::::1;;::::0;;;::::1;::::0;;2531:3;::::1;::::0;::::1;:::i;:::-;;;;2485:108;;;-1:-1:-1::0;2607:11:101::1;::::0;::::1;::::0;;;::::1;2432:193::o:0;2827:123::-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2891:15:::1;::::0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:22;;-1:-1:-1;;2891:22:101::1;2909:4;2891:22;::::0;;2928:15;::::1;::::0;2891;2928::::1;2827:123:::0;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1391:467:99:-;1540:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;1589:13:::1;1567:18;:35;;::::0;1563:71:::1;;1611:23;;-1:-1:-1::0;;;1611:23:99::1;;;;;;;;;;;1563:71;1645:20;1667:19:::0;1702:64:::1;1721:18;1741;1761:4;;1702:18;:64::i;5558:147:31:-:0;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5672:26:::1;5684:4;5690:7;5672:11;:26::i;2097:142:101:-:0;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2170:14:::1;:24:::0;;-1:-1:-1;;2170:24:101::1;::::0;::::1;;::::0;;::::1;::::0;;;2209:23:::1;::::0;540:41:146;;;2209:23:101::1;::::0;528:2:146;513:18;2209:23:101::1;;;;;;;2097:142:::0;:::o;4535:497:99:-;4801:7;;4822:5;;4765:213;;;;;;;;;;;;;;;;;;;;;;4692:25;;4719:19;;4765:213;;4801:7;;;;;-1:-1:-1;;;;;4822:5:99;;;;4848:13;;4876:10;;4900:18;;4932;;4964:4;;;;;;4765:213;;4964:4;;;;4765:213;;;;;;;;;-1:-1:-1;4765:22:99;;-1:-1:-1;;;4765:213:99:i;:::-;5002:23;;;;;;4750:228;;5002:23;;-1:-1:-1;4535:497:99;-1:-1:-1;;;;;4535:497:99:o;3642:103:31:-;3708:30;3719:4;929:10:41;3708::31;:30::i;7791:233::-;7874:22;7882:4;7888:7;7874;:22::i;:::-;7869:149;;7912:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7912:29:31;;;;;;;;;:36;;-1:-1:-1;;7912:36:31;7944:4;7912:36;;;7994:12;929:10:41;;850:96;7994:12:31;-1:-1:-1;;;;;7967:40:31;7985:7;-1:-1:-1;;;;;7967:40:31;7979:4;7967:40;;;;;;;;;;7791:233;;:::o;8195:234::-;8278:22;8286:4;8292:7;8278;:22::i;:::-;8274:149;;;8348:5;8316:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8316:29:31;;;;;;;;;;:37;;-1:-1:-1;;8316:37:31;;;8372:40;929:10:41;;8316:12:31;;8372:40;;8348:5;8372:40;8195:234;;:::o;2153:87:102:-;1689:34:101;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;2938:974:35:-;951:66;3384:59;;;3380:526;;;3459:37;3478:17;3459:18;:37::i;3380:526::-;3560:17;-1:-1:-1;;;;;3531:61:35;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3531:63:35;;;;;;;;-1:-1:-1;;3531:63:35;;;;;;;;;;;;:::i;:::-;;;3527:302;;3758:56;;-1:-1:-1;;;3758:56:35;;22365:2:146;3758:56:35;;;22347:21:146;22404:2;22384:18;;;22377:30;22443:34;22423:18;;;22416:62;-1:-1:-1;;;22494:18:146;;;22487:44;22548:19;;3758:56:35;22163:410:146;3527:302:35;-1:-1:-1;;;;;;;;;;;3644:28:35;;3636:82;;;;-1:-1:-1;;;3636:82:35;;22780:2:146;3636:82:35;;;22762:21:146;22819:2;22799:18;;;22792:30;22858:34;22838:18;;;22831:62;-1:-1:-1;;;22909:18:146;;;22902:39;22958:19;;3636:82:35;22578:405:146;3636:82:35;3595:138;3842:53;3860:17;3879:4;3885:9;3842:17;:53::i;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;23190:2:146;2704:63:39;;;23172:21:146;23229:2;23209:18;;;23202:30;23268:33;23248:18;;;23241:61;23319:18;;2704:63:39;22988:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;23826:2:146;8369:35:100;;;23808:21:146;23865:2;23845:18;;;23838:30;23904:27;23884:18;;;23877:55;23949:18;;8369:35:100;23624:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;24180:2:146;8484:22:100;;;24162:21:146;24219:2;24199:18;;;24192:30;-1:-1:-1;;;24238:18:146;;;24231:42;24290:18;;8484:22:100;23978:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;24521:2:146;8569:24:100;;;24503:21:146;24560:2;24540:18;;;24533:30;-1:-1:-1;;;24579:18:146;;;24572:44;24633:18;;8569:24:100;24319:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;24864:2:146;8779:65:100;;;24846:21:146;24903:2;24883:18;;;24876:30;24942:34;24922:18;;;24915:62;25013:25;24993:18;;;24986:53;25056:19;;8779:65:100;24662:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;25288:2:146;6959:81:100;;;25270:21:146;25327:2;25307:18;;;25300:30;-1:-1:-1;;;25346:18:146;;;25339:54;25410:18;;6959:81:100;25086:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;25891:2:146;7050:76:100;;;25873:21:146;25930:2;25910:18;;;25903:30;25969:31;25949:18;;;25942:59;26018:18;;7050:76:100;25689:353:146;7194:121:100;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;26249:2:146;7260:48:100;;;26231:21:146;26288:2;26268:18;;;26261:30;-1:-1:-1;;;26307:18:146;;;26300:49;26366:18;;7260:48:100;26047:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;25288:2:146;7471:81:100;;;25270:21:146;25327:2;25307:18;;;25300:30;-1:-1:-1;;;25346:18:146;;;25339:54;25410:18;;7471:81:100;25086:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;13192:31:146;;7570:38:100;;;13174:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;13147:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;26786:2:146;7562:86:100;;;26768:21:146;26825:2;26805:18;;;26798:30;26864:32;26844:18;;;26837:60;26914:18;;7562:86:100;26584:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;13192:31:146;;7698:38:100;;;13174:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;13147:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;27278:2:146;7746:84:100;;;27260:21:146;27317:2;27297:18;;;27290:30;27356:34;27336:18;;;27329:62;-1:-1:-1;;;27407:18:146;;;27400:32;27449:19;;7746:84:100;27076:398:146;3094:1947:110;3372:46;;-1:-1:-1;;;3372:46:110;;;12995:23:146;;3372:46:110;;;12977:42:146;3330:4:110;;;;3372:16;;:31;;12950:18:146;;3372:46:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;28751:2:146;4896:40:110;;;28733:21:146;28790:2;28770:18;;;28763:30;28829:32;28809:18;;;28802:60;28879:18;;4896:40:110;28549:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;29110:2:146;2652:38:111;;;29092:21:146;29149:2;29129:18;;;29122:30;29188;29168:18;;;29161:58;29236:18;;2652:38:111;28908:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;29467:2:146;3233:58:111;;;29449:21:146;29506:2;29486:18;;;29479:30;-1:-1:-1;;;29525:18:146;;;29518:52;29587:18;;3233:58:111;29265:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;29818:2:146;3450:58:111;;;29800:21:146;29857:2;29837:18;;;29830:30;29896:25;29876:18;;;29869:53;29939:18;;3450:58:111;29616:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;30170:2:146;3594:70:111;;;30152:21:146;30209:2;30189:18;;;30182:30;30248:34;30228:18;;;30221:62;-1:-1:-1;;;30299:18:146;;;30292:32;30341:19;;3594:70:111;29968:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;30573:2:146;3803:85:111;;;30555:21:146;30612:2;30592:18;;;30585:30;30651:34;30631:18;;;30624:62;-1:-1:-1;;;30702:18:146;;;30695:37;30749:19;;3803:85:111;30371:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;30981:2:146;4057:142:111;;;30963:21:146;31020:2;31000:18;;;30993:30;31059:34;31039:18;;;31032:62;-1:-1:-1;;;31110:18:146;;;31103:43;31163:19;;4057:142:111;30779:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;2873:209:39:-;1787:1;3053:7;:22;2873:209::o;1868:111::-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;:::-;1938:34:39::1;:32;:34::i;:::-;1868:111::o:0;2025:65:31:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;735:581:111:-;927:33;;-1:-1:-1;;;;;;33008:2:146;33004:15;;;33000:53;927:33:111;;;32988:66:146;872:7:111;;;;33070:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;33222:19:146;;33266:2;33257:12;;33093:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;33482:2:146;1072:58:111;;;33464:21:146;33521:2;33501:18;;;33494:30;-1:-1:-1;;;33540:18:146;;;33533:52;33602:18;;1072:58:111;33280:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;33222:19:146;;33266:2;33257:12;;33093:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;33833:2:146;601:65:111;;;33815:21:146;33872:2;33852:18;;;33845:30;33911;33891:18;;;33884:58;33959:18;;601:65:111;33631:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;3800:489:108:-;4049:12;4110:7;4131:5;4150:13;4177;4204:18;4236;4268:4;4080:202;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4073:209;;3800:489;;;;;;;;;:::o;4026:501:31:-;4114:22;4122:4;4128:7;4114;:22::i;:::-;4109:412;;4297:39;4328:7;4297:30;:39::i;:::-;4407:49;4446:4;4453:2;4407:30;:49::i;:::-;4204:274;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4204:274:31;;;;;;;;;;-1:-1:-1;;;4152:358:31;;;;;;;:::i;1805:281:35:-;-1:-1:-1;;;;;1476:19:40;;;1878:106:35;;;;-1:-1:-1;;;1878:106:35;;36109:2:146;1878:106:35;;;36091:21:146;36148:2;36128:18;;;36121:30;36187:34;36167:18;;;36160:62;-1:-1:-1;;;36238:18:146;;;36231:43;36291:19;;1878:106:35;35907:409:146;1878:106:35;-1:-1:-1;;;;;;;;;;;1994:85:35;;-1:-1:-1;;;;;;1994:85:35;-1:-1:-1;;;;;1994:85:35;;;;;;;;;;1805:281::o;2478:288::-;2616:29;2627:17;2616:10;:29::i;:::-;2673:1;2659:4;:11;:15;:28;;;;2678:9;2659:28;2655:105;;;2703:46;2725:17;2744:4;2703:21;:46::i;:::-;;2478:288;;;:::o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;36523:2:146;3101:49:77;;;36505:21:146;36562:2;36542:18;;;36535:30;-1:-1:-1;;;36581:18:146;;;36574:51;36642:18;;3101:49:77;36321:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;33222:19:146;;33266:2;33257:12;;33093:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;36873:2:146;3636:134:77;;;36855:21:146;36912:2;36892:18;;;36885:30;36951:34;36931:18;;;36924:62;-1:-1:-1;;;37002:18:146;;;36995:44;37056:19;;3636:134:77;36671:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;33222:19:146;;;33266:2;33257:12;;33093:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;37288:2:146;3893:176:77;;;37270:21:146;37327:2;37307:18;;;37300:30;37366:31;37346:18;;;37339:59;37415:18;;3893:176:77;37086:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;33222:19:146;;;33266:2;33257:12;;33093:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;37646:2:146;4222:186:77;;;37628:21:146;37685:2;37665:18;;;37658:30;37724:34;37704:18;;;37697:62;-1:-1:-1;;;37775:18:146;;;37768:37;37822:19;;4222:186:77;37444:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;38054:2:146;4509:156:77;;;38036:21:146;38093:2;38073:18;;;38066:30;38132:34;38112:18;;;38105:62;-1:-1:-1;;;38183:18:146;;;38176:36;38229:19;;4509:156:77;37852:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;38461:2:146;5384:158:77;;;38443:21:146;38500:2;38480:18;;;38473:30;38539:34;38519:18;;;38512:62;38610:29;38590:18;;;38583:57;38657:19;;5384:158:77;38259:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;38889:2:146;5626:162:77;;;38871:21:146;38928:2;38908:18;;;38901:30;38967:34;38947:18;;;38940:62;39038:28;39018:18;;;39011:56;39084:19;;5626:162:77;38687:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;39634:2:146;7009:171:77;;;39616:21:146;39673:2;39653:18;;;39646:30;39712:34;39692:18;;;39685:62;39783:28;39763:18;;;39756:56;39829:19;;7009:171:77;39432:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;40061:2:146;7843:185:77;;;40043:21:146;40100:2;40080:18;;;40073:30;40139:34;40119:18;;;40112:62;40210:31;40190:18;;;40183:59;40259:19;;7843:185:77;39859:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;40491:2:146;8463:156:77;;;40473:21:146;40530:2;40510:18;;;40503:30;40569:34;40549:18;;;40542:62;40640:27;40620:18;;;40613:55;40685:19;;8463:156:77;40289:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;40917:2:146;8703:160:77;;;40899:21:146;40956:2;40936:18;;;40929:30;40995:34;40975:18;;;40968:62;41066:26;41046:18;;;41039:54;41110:19;;8703:160:77;40715:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;41342:2:146;9439:60:77;;;41324:21:146;41381:2;41361:18;;;41354:30;41420:34;41400:18;;;41393:62;-1:-1:-1;;;41471:18:146;;;41464:48;41529:19;;9439:60:77;41140:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;41761:2:146;9556:50:77;;;41743:21:146;41800:2;41780:18;;;41773:30;41839:34;41819:18;;;41812:62;-1:-1:-1;;;41890:18:146;;;41883:38;41938:19;;9556:50:77;41559:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;42170:2:146;9641:47:77;;;42152:21:146;42209:2;42189:18;;;42182:30;42248:34;42228:18;;;42221:62;-1:-1:-1;;;42299:18:146;;;42292:35;42344:19;;9641:47:77;41968:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;42576:2:146;2161:136:75;;;42558:21:146;42615:2;42595:18;;;42588:30;42654:34;42634:18;;;42627:62;42725:26;42705:18;;;42698:54;42769:19;;2161:136:75;42374:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;43001:2:146;2308:134:75;;;42983:21:146;43040:2;43020:18;;;43013:30;43079:34;43059:18;;;43052:62;-1:-1:-1;;;43130:18:146;;;43123:48;43188:19;;2308:134:75;42799:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;43420:2:146;12579:55:75;;;43402:21:146;43459:2;43439:18;;;43432:30;43498:28;43478:18;;;43471:56;43544:18;;12579:55:75;43218:350:146;12579:55:75;12668:16;12680:3;12160:122;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;43775:2:146;11438:55:75;;;43757:21:146;43814:2;43794:18;;;43787:30;43853:28;43833:18;;;43826:56;43899:18;;11438:55:75;43573:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;43775:2:146;11598:72:75;;;43757:21:146;43814:2;43794:18;;;43787:30;43853:28;43833:18;;;43826:56;43899:18;;11598:72:75;43573:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1985:109:39:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;1385:419:75:-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;2146:149:43:-;2204:13;2236:52;-1:-1:-1;;;;;2248:22:43;;333:2;1557:437;1632:13;1657:19;1689:10;1693:6;1689:1;:10;:::i;:::-;:14;;1702:1;1689:14;:::i;:::-;-1:-1:-1;;;;;1679:25:43;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1679:25:43;;1657:47;;-1:-1:-1;;;1714:6:43;1721:1;1714:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1714:15:43;;;;;;;;;-1:-1:-1;;;1739:6:43;1746:1;1739:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1739:15:43;;;;;;;;-1:-1:-1;1769:9:43;1781:10;1785:6;1781:1;:10;:::i;:::-;:14;;1794:1;1781:14;:::i;:::-;1769:26;;1764:128;1801:1;1797;:5;1764:128;;;-1:-1:-1;;;1844:5:43;1852:3;1844:11;1835:21;;;;;;;:::i;:::-;;;;1823:6;1830:1;1823:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1823:33:43;;;;;;;;-1:-1:-1;1880:1:43;1870:11;;;;;1804:3;;;:::i;:::-;;;1764:128;;;-1:-1:-1;1909:10:43;;1901:55;;;;-1:-1:-1;;;1901:55:43;;44754:2:146;1901:55:43;;;44736:21:146;;;44773:18;;;44766:30;44832:34;44812:18;;;44805:62;44884:18;;1901:55:43;44552:356:146;2192:152:35;2258:37;2277:17;2258:18;:37::i;:::-;2310:27;;-1:-1:-1;;;;;2310:27:35;;;;;;;;2192:152;:::o;7088:455::-;7171:12;-1:-1:-1;;;;;1476:19:40;;;7195:88:35;;;;-1:-1:-1;;;7195:88:35;;45115:2:146;7195:88:35;;;45097:21:146;45154:2;45134:18;;;45127:30;45193:34;45173:18;;;45166:62;-1:-1:-1;;;45244:18:146;;;45237:36;45290:19;;7195:88:35;44913:402:146;7195:88:35;7354:12;7368:23;7395:6;-1:-1:-1;;;;;7395:19:35;7415:4;7395:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:67;;;;7437:99;7473:7;7482:10;7437:99;;;;;;;;;;;;;;;;;:35;:99::i;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;45865:2:146;409:63:108;;;45847:21:146;45904:2;45884:18;;;45877:30;-1:-1:-1;;;45923:18:146;;;45916:47;45980:18;;409:63:108;45663:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;47540:19:146;;;47584:2;47575:12;;47568:28;47621:2;47612:12;;47383:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;47540:19:146;;;47584:2;47575:12;;47568:28;47621:2;47612:12;;47383:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;47837:2:146;4505:137:75;;;47819:21:146;47876:2;47856:18;;;47849:30;47915:34;47895:18;;;47888:62;47986:27;47966:18;;;47959:55;48031:19;;4505:137:75;47635:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;48263:2:146;4653:136:75;;;48245:21:146;48302:2;48282:18;;;48275:30;48341:34;48321:18;;;48314:62;-1:-1:-1;;;48392:18:146;;;48385:50;48452:19;;4653:136:75;48061:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;48684:2:146;6699:156:75;;;48666:21:146;48723:2;48703:18;;;48696:30;-1:-1:-1;;;;;;;;;;;48742:18:146;;;48735:62;48833:34;48813:18;;;48806:62;-1:-1:-1;;;48884:19:146;;;48877:45;48939:19;;6699:156:75;48482:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;49171:2:146;7025:177:75;;;49153:21:146;49210:2;49190:18;;;49183:30;49249:34;49229:18;;;49222:62;49320:34;49300:18;;;49293:62;-1:-1:-1;;;49371:19:146;;;49364:44;49425:19;;7025:177:75;48969:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;49657:2:146;7387:164:75;;;49639:21:146;49696:2;49676:18;;;49669:30;-1:-1:-1;;;;;;;;;;;49715:18:146;;;49708:62;49806:34;49786:18;;;49779:62;-1:-1:-1;;;49857:19:146;;;49850:48;49915:19;;7387:164:75;49455:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;50147:2:146;7721:159:75;;;50129:21:146;50186:2;50166:18;;;50159:30;-1:-1:-1;;;;;;;;;;;50205:18:146;;;50198:62;50296:34;50276:18;;;50269:62;-1:-1:-1;;;50347:19:146;;;50340:41;50398:19;;7721:159:75;49945:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;50630:2:146;8042:142:75;;;50612:21:146;50669:2;50649:18;;;50642:30;-1:-1:-1;;;;;;;;;;;50688:18:146;;;50681:62;50779:34;50759:18;;;50752:62;-1:-1:-1;;;50830:19:146;;;50823:39;50879:19;;8042:142:75;50428:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;51111:2:146;8199:168:75;;;51093:21:146;51150:2;51130:18;;;51123:30;-1:-1:-1;;;;;;;;;;;51169:18:146;;;51162:62;51260:34;51240:18;;;51233:62;-1:-1:-1;;;51311:19:146;;;51304:43;51364:19;;8199:168:75;50909:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;51596:2:146;8617:153:75;;;51578:21:146;51635:2;51615:18;;;51608:30;-1:-1:-1;;;;;;;;;;;51654:18:146;;;51647:62;51745:34;51725:18;;;51718:62;-1:-1:-1;;;51796:19:146;;;51789:41;51847:19;;8617:153:75;51394:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;52079:2:146;8935:161:75;;;52061:21:146;52118:2;52098:18;;;52091:30;-1:-1:-1;;;;;;;;;;;52137:18:146;;;52130:62;52228:34;52208:18;;;52201:62;-1:-1:-1;;;52279:19:146;;;52272:44;52333:19;;8935:161:75;51877:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;52565:2:146;9266:157:75;;;52547:21:146;52604:2;52584:18;;;52577:30;-1:-1:-1;;;;;;;;;;;52623:18:146;;;52616:62;52714:34;52694:18;;;52687:62;-1:-1:-1;;;52765:19:146;;;52758:39;52814:19;;9266:157:75;52363:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;53046:2:146;9588:141:75;;;53028:21:146;53085:2;53065:18;;;53058:30;-1:-1:-1;;;;;;;;;;;53104:18:146;;;53097:62;53195:34;53175:18;;;53168:62;-1:-1:-1;;;53246:19:146;;;53239:37;53293:19;;9588:141:75;52844:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;53525:2:146;9744:168:75;;;53507:21:146;53564:2;53544:18;;;53537:30;-1:-1:-1;;;;;;;;;;;53583:18:146;;;53576:62;53674:34;53654:18;;;53647:62;-1:-1:-1;;;53725:19:146;;;53718:41;53776:19;;9744:168:75;53323:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;7438:295:40:-;7584:12;7612:7;7608:119;;;-1:-1:-1;7642:10:40;7635:17;;7608:119;7683:33;7691:10;7703:12;7683:7;:33::i;4047:125:75:-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;45865:2:146;989:63:74;;;45847:21:146;45904:2;45884:18;;;45877:30;-1:-1:-1;;;45923:18:146;;;45916:47;45980:18;;989:63:74;45663:341:146;7739:540:40;7898:17;;:21;7894:379;;8126:10;8120:17;8182:15;8169:10;8165:2;8161:19;8154:44;7894:379;8249:12;8242:20;;-1:-1:-1;;;8242:20:40;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:146;-1:-1:-1;;;;;;88:32:146;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:171::-;659:20;;-1:-1:-1;;;;;708:30:146;;698:41;;688:69;;753:1;750;743:12;688:69;592:171;;;:::o;768:184::-;826:6;879:2;867:9;858:7;854:23;850:32;847:52;;;895:1;892;885:12;847:52;918:28;936:9;918:28;:::i;1139:163::-;1206:20;;1266:10;1255:22;;1245:33;;1235:61;;1292:1;1289;1282:12;1307:173;1375:20;;-1:-1:-1;;;;;1424:31:146;;1414:42;;1404:70;;1470:1;1467;1460:12;1485:347;1536:8;1546:6;1600:3;1593:4;1585:6;1581:17;1577:27;1567:55;;1618:1;1615;1608:12;1567:55;-1:-1:-1;1641:20:146;;-1:-1:-1;;;;;1673:30:146;;1670:50;;;1716:1;1713;1706:12;1670:50;1753:4;1745:6;1741:17;1729:29;;1805:3;1798:4;1789:6;1781;1777:19;1773:30;1770:39;1767:59;;;1822:1;1819;1812:12;1837:555;1924:6;1932;1940;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2040:28;2058:9;2040:28;:::i;:::-;2030:38;;2087;2121:2;2110:9;2106:18;2087:38;:::i;:::-;2077:48;;2176:2;2165:9;2161:18;2148:32;-1:-1:-1;;;;;2195:6:146;2192:30;2189:50;;;2235:1;2232;2225:12;2189:50;2274:58;2324:7;2315:6;2304:9;2300:22;2274:58;:::i;:::-;1837:555;;;;-1:-1:-1;2351:8:146;-1:-1:-1;;;;1837:555:146:o;2397:184::-;2455:6;2508:2;2496:9;2487:7;2483:23;2479:32;2476:52;;;2524:1;2521;2514:12;2476:52;2547:28;2565:9;2547:28;:::i;2586:180::-;2645:6;2698:2;2686:9;2677:7;2673:23;2669:32;2666:52;;;2714:1;2711;2704:12;2666:52;-1:-1:-1;2737:23:146;;2586:180;-1:-1:-1;2586:180:146:o;2771:254::-;2839:6;2847;2900:2;2888:9;2879:7;2875:23;2871:32;2868:52;;;2916:1;2913;2906:12;2868:52;2952:9;2939:23;2929:33;;2981:38;3015:2;3004:9;3000:18;2981:38;:::i;:::-;2971:48;;2771:254;;;;;:::o;3030:186::-;3089:6;3142:2;3130:9;3121:7;3117:23;3113:32;3110:52;;;3158:1;3155;3148:12;3110:52;3181:29;3200:9;3181:29;:::i;3221:367::-;3284:8;3294:6;3348:3;3341:4;3333:6;3329:17;3325:27;3315:55;;3366:1;3363;3356:12;3315:55;-1:-1:-1;3389:20:146;;-1:-1:-1;;;;;3421:30:146;;3418:50;;;3464:1;3461;3454:12;3418:50;3501:4;3493:6;3489:17;3477:29;;3561:3;3554:4;3544:6;3541:1;3537:14;3529:6;3525:27;3521:38;3518:47;3515:67;;;3578:1;3575;3568:12;3593:127;3654:10;3649:3;3645:20;3642:1;3635:31;3685:4;3682:1;3675:15;3709:4;3706:1;3699:15;3725:275;3796:2;3790:9;3861:2;3842:13;;-1:-1:-1;;3838:27:146;3826:40;;-1:-1:-1;;;;;3881:34:146;;3917:22;;;3878:62;3875:88;;;3943:18;;:::i;:::-;3979:2;3972:22;3725:275;;-1:-1:-1;3725:275:146:o;4005:530::-;4047:5;4100:3;4093:4;4085:6;4081:17;4077:27;4067:55;;4118:1;4115;4108:12;4067:55;4154:6;4141:20;-1:-1:-1;;;;;4176:2:146;4173:26;4170:52;;;4202:18;;:::i;:::-;4246:55;4289:2;4270:13;;-1:-1:-1;;4266:27:146;4295:4;4262:38;4246:55;:::i;:::-;4326:2;4317:7;4310:19;4372:3;4365:4;4360:2;4352:6;4348:15;4344:26;4341:35;4338:55;;;4389:1;4386;4379:12;4338:55;4454:2;4447:4;4439:6;4435:17;4428:4;4419:7;4415:18;4402:55;4502:1;4477:16;;;4495:4;4473:27;4466:38;;;;4481:7;4005:530;-1:-1:-1;;;4005:530:146:o;4540:1652::-;4749:6;4757;4765;4773;4781;4789;4797;4805;4813;4821;4829:7;4883:3;4871:9;4862:7;4858:23;4854:33;4851:53;;;4900:1;4897;4890:12;4851:53;-1:-1:-1;;;;;4981:2:146;4969:9;4956:23;4953:31;4950:51;;;4997:1;4994;4987:12;4950:51;5036:75;5103:7;5090:9;5077:23;5066:9;5062:39;5036:75;:::i;:::-;5130:8;;-1:-1:-1;5157:8:146;-1:-1:-1;5208:2:146;5193:18;;5180:32;5177:40;-1:-1:-1;5174:60:146;;;5230:1;5227;5220:12;5174:60;5269:84;5345:7;5338:2;5327:9;5323:18;5310:32;5299:9;5295:48;5269:84;:::i;:::-;5372:8;;-1:-1:-1;5399:8:146;-1:-1:-1;5450:2:146;5435:18;;5422:32;5419:40;-1:-1:-1;5416:60:146;;;5472:1;5469;5462:12;5416:60;5511:96;5599:7;5592:2;5581:9;5577:18;5564:32;5553:9;5549:48;5511:96;:::i;:::-;5626:8;;-1:-1:-1;5653:8:146;-1:-1:-1;5708:2:146;5693:18;;5680:32;;-1:-1:-1;5755:3:146;5740:19;;5727:33;5724:41;-1:-1:-1;5721:61:146;;;5778:1;5775;5768:12;5721:61;5817:97;5906:7;5898:3;5887:9;5883:19;5870:33;5859:9;5855:49;5817:97;:::i;:::-;5933:8;;-1:-1:-1;5960:8:146;-1:-1:-1;6011:3:146;5996:19;;5983:33;5980:41;-1:-1:-1;5977:61:146;;;6034:1;6031;6024:12;5977:61;;6057:76;6125:7;6117:3;6106:9;6102:19;6089:33;6078:9;6074:49;6057:76;:::i;:::-;6047:86;;6181:3;6170:9;6166:19;6153:33;6142:44;;4540:1652;;;;;;;;;;;;;;:::o;6197:127::-;6258:10;6253:3;6249:20;6246:1;6239:31;6289:4;6286:1;6279:15;6313:4;6310:1;6303:15;6329:347;6480:2;6465:18;;6513:1;6502:13;;6492:144;;6558:10;6553:3;6549:20;6546:1;6539:31;6593:4;6590:1;6583:15;6621:4;6618:1;6611:15;6492:144;6645:25;;;6329:347;:::o;6863:394::-;6940:6;6948;7001:2;6989:9;6980:7;6976:23;6972:32;6969:52;;;7017:1;7014;7007:12;6969:52;7040:29;7059:9;7040:29;:::i;:::-;7030:39;;7120:2;7109:9;7105:18;7092:32;-1:-1:-1;;;;;7139:6:146;7136:30;7133:50;;;7179:1;7176;7169:12;7133:50;7202:49;7243:7;7234:6;7223:9;7219:22;7202:49;:::i;:::-;7192:59;;;6863:394;;;;;:::o;7659:182::-;7718:4;-1:-1:-1;;;;;7743:6:146;7740:30;7737:56;;;7773:18;;:::i;:::-;-1:-1:-1;7818:1:146;7814:14;7830:4;7810:25;;7659:182::o;7846:667::-;7900:5;7953:3;7946:4;7938:6;7934:17;7930:27;7920:55;;7971:1;7968;7961:12;7920:55;8007:6;7994:20;8033:4;8057:59;8073:42;8112:2;8073:42;:::i;:::-;8057:59;:::i;:::-;8150:15;;;8236:1;8232:10;;;;8220:23;;8216:32;;;8181:12;;;;8260:15;;;8257:35;;;8288:1;8285;8278:12;8257:35;8324:2;8316:6;8312:15;8336:148;8352:6;8347:3;8344:15;8336:148;;;8418:23;8437:3;8418:23;:::i;:::-;8406:36;;8462:12;;;;8369;;8336:148;;;-1:-1:-1;8502:5:146;7846:667;-1:-1:-1;;;;;;7846:667:146:o;8518:118::-;8604:5;8597:13;8590:21;8583:5;8580:32;8570:60;;8626:1;8623;8616:12;8641:128;8706:20;;8735:28;8706:20;8735:28;:::i;8774:1588::-;8949:6;8957;8965;8973;8981;8989;9042:3;9030:9;9021:7;9017:23;9013:33;9010:53;;;9059:1;9056;9049:12;9010:53;9099:9;9086:23;-1:-1:-1;;;;;9169:2:146;9161:6;9158:14;9155:34;;;9185:1;9182;9175:12;9155:34;9223:6;9212:9;9208:22;9198:32;;9268:7;9261:4;9257:2;9253:13;9249:27;9239:55;;9290:1;9287;9280:12;9239:55;9326:2;9313:16;9348:4;9372:59;9388:42;9427:2;9388:42;:::i;9372:59::-;9465:15;;;9547:1;9543:10;;;;9535:19;;9531:28;;;9496:12;;;;9571:19;;;9568:39;;;9603:1;9600;9593:12;9568:39;9627:11;;;;9647:147;9663:6;9658:3;9655:15;9647:147;;;9729:22;9747:3;9729:22;:::i;:::-;9717:35;;9680:12;;;;9772;;;;9647:147;;;9813:5;-1:-1:-1;;9856:18:146;;9843:32;;-1:-1:-1;;9887:16:146;;;9884:36;;;9916:1;9913;9906:12;9884:36;9939:63;9994:7;9983:8;9972:9;9968:24;9939:63;:::i;:::-;9929:73;;10055:2;10044:9;10040:18;10027:32;10011:48;;10084:2;10074:8;10071:16;10068:36;;;10100:1;10097;10090:12;10068:36;;10123:63;10178:7;10167:8;10156:9;10152:24;10123:63;:::i;:::-;10113:73;;;10205:38;10239:2;10228:9;10224:18;10205:38;:::i;:::-;10195:48;;10262:39;10296:3;10285:9;10281:19;10262:39;:::i;:::-;10252:49;;10320:36;10351:3;10340:9;10336:19;10320:36;:::i;:::-;10310:46;;8774:1588;;;;;;;;:::o;10367:549::-;10454:6;10462;10470;10478;10531:2;10519:9;10510:7;10506:23;10502:32;10499:52;;;10547:1;10544;10537:12;10499:52;10570:28;10588:9;10570:28;:::i;:::-;10560:38;;10645:2;10634:9;10630:18;10617:32;10607:42;;10700:2;10689:9;10685:18;10672:32;-1:-1:-1;;;;;10719:6:146;10716:30;10713:50;;;10759:1;10756;10749:12;11151:1155;11323:6;11331;11339;11347;11355;11363;11371;11424:3;11412:9;11403:7;11399:23;11395:33;11392:53;;;11441:1;11438;11431:12;11392:53;11464:28;11482:9;11464:28;:::i;:::-;11454:38;;11543:2;11532:9;11528:18;11515:32;-1:-1:-1;;;;;11607:2:146;11599:6;11596:14;11593:34;;;11623:1;11620;11613:12;11593:34;11662:58;11712:7;11703:6;11692:9;11688:22;11662:58;:::i;:::-;11739:8;;-1:-1:-1;11636:84:146;-1:-1:-1;11827:2:146;11812:18;;11799:32;;-1:-1:-1;11843:16:146;;;11840:36;;;11872:1;11869;11862:12;11840:36;11911:72;11975:7;11964:8;11953:9;11949:24;11911:72;:::i;:::-;12002:8;;-1:-1:-1;11885:98:146;-1:-1:-1;12090:2:146;12075:18;;12062:32;;-1:-1:-1;12106:16:146;;;12103:36;;;12135:1;12132;12125:12;12103:36;;12174:72;12238:7;12227:8;12216:9;12212:24;12174:72;:::i;:::-;11151:1155;;;;-1:-1:-1;11151:1155:146;;-1:-1:-1;11151:1155:146;;;;12148:98;;-1:-1:-1;;;11151:1155:146:o;12311:332::-;12387:6;12395;12403;12456:2;12444:9;12435:7;12431:23;12427:32;12424:52;;;12472:1;12469;12462:12;12424:52;12495:28;12513:9;12495:28;:::i;:::-;12485:38;;12542;12576:2;12565:9;12561:18;12542:38;:::i;:::-;12532:48;;12599:38;12633:2;12622:9;12618:18;12599:38;:::i;:::-;12589:48;;12311:332;;;;;:::o;13235:241::-;13291:6;13344:2;13332:9;13323:7;13319:23;13315:32;13312:52;;;13360:1;13357;13350:12;13312:52;13399:9;13386:23;13418:28;13440:5;13418:28;:::i;13481:127::-;13542:10;13537:3;13533:20;13530:1;13523:31;13573:4;13570:1;13563:15;13597:4;13594:1;13587:15;13613:209;13651:3;-1:-1:-1;;;;;13732:2:146;13725:5;13721:14;13759:2;13750:7;13747:15;13744:41;;13765:18;;:::i;:::-;13814:1;13801:15;;13613:209;-1:-1:-1;;;13613:209:146:o;13827:250::-;13912:1;13922:113;13936:6;13933:1;13930:13;13922:113;;;14012:11;;;14006:18;13993:11;;;13986:39;13958:2;13951:10;13922:113;;;-1:-1:-1;;14069:1:146;14051:16;;14044:27;13827:250::o;14082:270::-;14123:3;14161:5;14155:12;14188:6;14183:3;14176:19;14204:76;14273:6;14266:4;14261:3;14257:14;14250:4;14243:5;14239:16;14204:76;:::i;:::-;14334:2;14313:15;-1:-1:-1;;14309:29:146;14300:39;;;;14341:4;14296:50;;14082:270;-1:-1:-1;;14082:270:146:o;14357:217::-;14504:2;14493:9;14486:21;14467:4;14524:44;14564:2;14553:9;14549:18;14541:6;14524:44;:::i;14579:417::-;14781:2;14763:21;;;14820:2;14800:18;;;14793:30;14859:34;14854:2;14839:18;;14832:62;-1:-1:-1;;;14925:2:146;14910:18;;14903:51;14986:3;14971:19;;14579:417::o;15417:408::-;15619:2;15601:21;;;15658:2;15638:18;;;15631:30;15697:34;15692:2;15677:18;;15670:62;-1:-1:-1;;;15763:2:146;15748:18;;15741:42;15815:3;15800:19;;15417:408::o;15830:::-;16032:2;16014:21;;;16071:2;16051:18;;;16044:30;16110:34;16105:2;16090:18;;16083:62;-1:-1:-1;;;16176:2:146;16161:18;;16154:42;16228:3;16213:19;;15830:408::o;16243:256::-;16309:6;16317;16370:2;16358:9;16349:7;16345:23;16341:32;16338:52;;;16386:1;16383;16376:12;16338:52;16409:28;16427:9;16409:28;:::i;:::-;16399:38;;16456:37;16489:2;16478:9;16474:18;16456:37;:::i;16710:184::-;16780:6;16833:2;16821:9;16812:7;16808:23;16804:32;16801:52;;;16849:1;16846;16839:12;16801:52;-1:-1:-1;16872:16:146;;16710:184;-1:-1:-1;16710:184:146:o;17605:878::-;17741:9;17776:63;17792:46;17831:6;17792:46;:::i;17776:63::-;17861:3;17885:6;17880:3;17873:19;17911:4;17940:2;17935:3;17931:12;17924:19;;17984:6;17981:1;17977:14;17970:5;17966:26;18015:14;18007:6;18004:26;18001:46;;;18043:1;18040;18033:12;18001:46;18067:5;18081:369;18097:6;18092:3;18089:15;18081:369;;;18183:3;18170:17;-1:-1:-1;;;;;18206:11:146;18203:35;18200:125;;;18279:1;18308:2;18304;18297:14;18200:125;18350:57;18392:14;18378:11;18371:5;18367:23;18350:57;:::i;:::-;18338:70;;-1:-1:-1;18428:12:146;;;;18114;;18081:369;;19678:127;19739:10;19734:3;19730:20;19727:1;19720:31;19770:4;19767:1;19760:15;19794:4;19791:1;19784:15;19810:201;19848:3;19876:10;19921:2;19914:5;19910:14;19948:2;19939:7;19936:15;19933:41;;19954:18;;:::i;21292:417::-;21494:2;21476:21;;;21533:2;21513:18;;;21506:30;21572:34;21567:2;21552:18;;21545:62;-1:-1:-1;;;21638:2:146;21623:18;;21616:51;21699:3;21684:19;;21292:417::o;21714:135::-;21753:3;21774:17;;;21771:43;;21794:18;;:::i;:::-;-1:-1:-1;21841:1:146;21830:13;;21714:135::o;23348:271::-;23531:6;23523;23518:3;23505:33;23487:3;23557:16;;23582:13;;;23557:16;23348:271;-1:-1:-1;23348:271:146:o;25439:245::-;25506:6;25559:2;25547:9;25538:7;25534:23;25530:32;25527:52;;;25575:1;25572;25565:12;25527:52;25607:9;25601:16;25626:28;25648:5;25626:28;:::i;26943:128::-;27010:9;;;27031:11;;;27028:37;;;27045:18;;:::i;27684:127::-;27745:10;27740:3;27736:20;27733:1;27726:31;27776:4;27773:1;27766:15;27800:4;27797:1;27790:15;27816:120;27856:1;27882;27872:35;;27887:18;;:::i;:::-;-1:-1:-1;27921:9:146;;27816:120::o;27941:168::-;27981:7;28047:1;28043;28039:6;28035:14;28032:1;28029:21;28024:1;28017:9;28010:17;28006:45;28003:71;;;28054:18;;:::i;:::-;-1:-1:-1;28094:9:146;;27941:168::o;28114:125::-;28179:9;;;28200:10;;;28197:36;;;28213:18;;:::i;28244:183::-;-1:-1:-1;;;;;28363:10:146;;;28351;;;28347:27;;28386:12;;;28383:38;;;28401:18;;:::i;:::-;28383:38;28244:183;;;;:::o;28432:112::-;28464:1;28490;28480:35;;28495:18;;:::i;:::-;-1:-1:-1;28529:9:146;;28432:112::o;31193:400::-;31406:10;31394:23;;31376:42;;-1:-1:-1;;;;;31454:32:146;;31449:2;31434:18;;31427:60;31523:2;31518;31503:18;;31496:30;;;-1:-1:-1;;31543:44:146;;31568:18;;31560:6;31543:44;:::i;31598:287::-;31727:3;31765:6;31759:13;31781:66;31840:6;31835:3;31828:4;31820:6;31816:17;31781:66;:::i;:::-;31863:16;;;;;31598:287;-1:-1:-1;;31598:287:146:o;31890:249::-;31959:6;32012:2;32000:9;31991:7;31987:23;31983:32;31980:52;;;32028:1;32025;32018:12;31980:52;32060:9;32054:16;32079:30;32103:5;32079:30;:::i;32144:298::-;32313:2;32302:9;32295:21;32276:4;32333:44;32373:2;32362:9;32358:18;32350:6;32333:44;:::i;:::-;32325:52;;32427:6;32420:14;32413:22;32408:2;32397:9;32393:18;32386:50;32144:298;;;;;:::o;32447:407::-;32649:2;32631:21;;;32688:2;32668:18;;;32661:30;32727:34;32722:2;32707:18;;32700:62;-1:-1:-1;;;32793:2:146;32778:18;;32771:41;32844:3;32829:19;;32447:407::o;33988:873::-;-1:-1:-1;;;;;;34331:3:146;34309:16;;;34305:36;34293:49;;-1:-1:-1;;;;;;34397:3:146;34375:16;;;34371:51;34367:1;34358:11;;34351:72;-1:-1:-1;;;;;;34446:3:146;34495:16;;;34491:25;;34487:1;34478:11;;34471:46;-1:-1:-1;;;;;;34555:2:146;34551:15;;;34547:53;34542:2;34533:12;;34526:75;34635:16;;;34631:25;34626:2;34617:12;;34610:47;34682:2;34673:12;;34666:28;;;34717:13;;-1:-1:-1;;34739:75:146;34717:13;34802:2;34793:12;;34786:4;34774:17;;34739:75;:::i;:::-;34834:16;;;;34852:2;34830:25;;33988:873;-1:-1:-1;;;;;;;;33988:873:146:o;34866:812::-;35277:25;35272:3;35265:38;35247:3;35332:6;35326:13;35348:75;35416:6;35411:2;35406:3;35402:12;35395:4;35387:6;35383:17;35348:75;:::i;:::-;-1:-1:-1;;;35482:2:146;35442:16;;;35474:11;;;35467:40;35532:13;;35554:76;35532:13;35616:2;35608:11;;35601:4;35589:17;;35554:76;:::i;:::-;35650:17;35669:2;35646:26;;34866:812;-1:-1:-1;;;;34866:812:146:o;39114:157::-;39144:1;39178:4;39175:1;39171:12;39202:3;39192:37;;39209:18;;:::i;:::-;39261:3;39254:4;39251:1;39247:12;39243:22;39238:27;;;39114:157;;;;:::o;39276:151::-;39366:4;39359:12;;;39345;;;39341:31;;39384:14;;39381:40;;;39401:18;;:::i;43928:478::-;44130:2;44112:21;;;44169:2;44149:18;;;44142:30;44208:34;44203:2;44188:18;;44181:62;44279:34;44274:2;44259:18;;44252:62;-1:-1:-1;;;44345:3:146;44330:19;;44323:41;44396:3;44381:19;;43928:478::o;44411:136::-;44450:3;44478:5;44468:39;;44487:18;;:::i;:::-;-1:-1:-1;;;44523:18:146;;44411:136::o;45320:338::-;45522:2;45504:21;;;45561:2;45541:18;;;45534:30;-1:-1:-1;;;45595:2:146;45580:18;;45573:44;45649:2;45634:18;;45320:338::o;46009:422::-;46098:1;46141:5;46098:1;46155:270;46176:7;46166:8;46163:21;46155:270;;;46235:4;46231:1;46227:6;46223:17;46217:4;46214:27;46211:53;;;46244:18;;:::i;:::-;46294:7;46284:8;46280:22;46277:55;;;46314:16;;;;46277:55;46393:22;;;;46353:15;;;;46155:270;;;46159:3;46009:422;;;;;:::o;46436:806::-;46485:5;46515:8;46505:80;;-1:-1:-1;46556:1:146;46570:5;;46505:80;46604:4;46594:76;;-1:-1:-1;46641:1:146;46655:5;;46594:76;46686:4;46704:1;46699:59;;;;46772:1;46767:130;;;;46679:218;;46699:59;46729:1;46720:10;;46743:5;;;46767:130;46804:3;46794:8;46791:17;46788:43;;;46811:18;;:::i;:::-;-1:-1:-1;;46867:1:146;46853:16;;46882:5;;46679:218;;46981:2;46971:8;46968:16;46962:3;46956:4;46953:13;46949:36;46943:2;46933:8;46930:16;46925:2;46919:4;46916:12;46912:35;46909:77;46906:159;;;-1:-1:-1;47018:19:146;;;47050:5;;46906:159;47097:34;47122:8;47116:4;47097:34;:::i;:::-;47167:6;47163:1;47159:6;47155:19;47146:7;47143:32;47140:58;;;47178:18;;:::i;:::-;47216:20;;46436:806;-1:-1:-1;;;46436:806:146:o;47247:131::-;47307:5;47336:36;47363:8;47357:4;47336:36;:::i", + "linkReferences": { + "src/libraries/BeaconChainForks.sol": { + "BeaconChainForks": [ + { + "start": 9490, + "length": 20 + } + ] + } + }, "immutableReferences": { "29435": [ { - "start": 2551, + "start": 2553, "length": 32 }, { - "start": 2615, + "start": 2617, "length": 32 }, { - "start": 3487, + "start": 3494, "length": 32 }, { - "start": 3551, + "start": 3558, "length": 32 }, { - "start": 3694, + "start": 3701, "length": 32 } ] @@ -1075,7 +1103,7 @@ "upgradeToAndCall(address,bytes)": "4f1ef286", "version()": "54fd4d50" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Freeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"SendingEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lightClient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"SetLightClientAndBroadcaster\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"SourceChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Unfreeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UnfreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GUARDIAN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMELOCK_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"freeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"_sourceChainIds\",\"type\":\"uint32[]\"},{\"internalType\":\"address[]\",\"name\":\"_lightClients\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_broadcasters\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_timelock\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_sendingEnabled\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"lightclient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"setLightClientAndBroadcaster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setSendingEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"unfreeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unfreezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"freeze(uint32)\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"freezeAll()\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"send(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"sendViaStorage(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"details\":\"This is controlled by the timelock as it is a potentially dangerous method since both the light client and broadcaster address are critical in verifying that only valid sent messages are executed.\"},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unfreeze(uint32)\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"unfreezeAll()\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"Telepathy Router\",\"version\":1},\"userdoc\":{\"events\":{\"Freeze(uint32)\":{\"notice\":\"Emitted when freeze is called.\"},\"FreezeAll()\":{\"notice\":\"Emitted when freezeAll is called.\"},\"SendingEnabled(bool)\":{\"notice\":\"Emitted when the sendingEnabled flag is changed.\"},\"SetLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Emitted when setLightClientAndBroadcaster is called.\"},\"SourceChainAdded(uint32)\":{\"notice\":\"Emitted when a new source chain is added.\"},\"Unfreeze(uint32)\":{\"notice\":\"Emitted when unfreeze is called.\"},\"UnfreezeAll()\":{\"notice\":\"Emitted when unfreezeAll is called.\"}},\"kind\":\"user\",\"methods\":{\"GUARDIAN_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'guardian'.\"},\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"TIMELOCK_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'timelock'.\"},\"VERSION()\":{\"notice\":\"Returns current contract version.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"constructor\":{\"notice\":\"Prevents the implementation contract from being initialized outside of the upgradeable proxy.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"freeze(uint32)\":{\"notice\":\"Freezes messages from the specified chain.\"},\"freezeAll()\":{\"notice\":\"Freezes messages from all chains.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"initialize(uint32[],address[],address[],address,address,bool)\":{\"notice\":\"Initializes the contract and the parent contracts once.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"send(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.\"},\"sendViaStorage(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Sets the light client contract and broadcaster for a given chainId.\"},\"setSendingEnabled(bool)\":{\"notice\":\"Allows the owner to control whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"unfreeze(uint32)\":{\"notice\":\"Unfreezes messages from the specified chain.\"},\"unfreezeAll()\":{\"notice\":\"Unfreezes messages from all chains.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Send and receive arbitrary messages from other chains.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TelepathyRouter.sol\":\"TelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotSendToSameChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SendingDisabled\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Freeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"SendingEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lightClient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"SetLightClientAndBroadcaster\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"SourceChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Unfreeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UnfreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GUARDIAN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMELOCK_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"freeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"_sourceChainIds\",\"type\":\"uint32[]\"},{\"internalType\":\"address[]\",\"name\":\"_lightClients\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_broadcasters\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_timelock\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_sendingEnabled\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"lightclient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"setLightClientAndBroadcaster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setSendingEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"unfreeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unfreezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"freeze(uint32)\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"freezeAll()\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"send(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"sendViaStorage(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"details\":\"This is controlled by the timelock as it is a potentially dangerous method since both the light client and broadcaster address are critical in verifying that only valid sent messages are executed.\"},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unfreeze(uint32)\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"unfreezeAll()\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"Telepathy Router\",\"version\":1},\"userdoc\":{\"events\":{\"Freeze(uint32)\":{\"notice\":\"Emitted when freeze is called.\"},\"FreezeAll()\":{\"notice\":\"Emitted when freezeAll is called.\"},\"SendingEnabled(bool)\":{\"notice\":\"Emitted when the sendingEnabled flag is changed.\"},\"SetLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Emitted when setLightClientAndBroadcaster is called.\"},\"SourceChainAdded(uint32)\":{\"notice\":\"Emitted when a new source chain is added.\"},\"Unfreeze(uint32)\":{\"notice\":\"Emitted when unfreeze is called.\"},\"UnfreezeAll()\":{\"notice\":\"Emitted when unfreezeAll is called.\"}},\"kind\":\"user\",\"methods\":{\"GUARDIAN_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'guardian'.\"},\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"TIMELOCK_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'timelock'.\"},\"VERSION()\":{\"notice\":\"Returns current contract version.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"constructor\":{\"notice\":\"Prevents the implementation contract from being initialized outside of the upgradeable proxy.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"freeze(uint32)\":{\"notice\":\"Freezes messages from the specified chain.\"},\"freezeAll()\":{\"notice\":\"Freezes messages from all chains.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"initialize(uint32[],address[],address[],address,address,bool)\":{\"notice\":\"Initializes the contract and the parent contracts once.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"send(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.\"},\"sendViaStorage(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Sets the light client contract and broadcaster for a given chainId.\"},\"setSendingEnabled(bool)\":{\"notice\":\"Allows the owner to control whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"unfreeze(uint32)\":{\"notice\":\"Unfreezes messages from the specified chain.\"},\"unfreezeAll()\":{\"notice\":\"Unfreezes messages from all chains.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Send and receive arbitrary messages from other chains.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TelepathyRouter.sol\":\"TelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -1088,6 +1116,16 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "type": "error", + "name": "CannotSendToSameChain" + }, + { + "inputs": [], + "type": "error", + "name": "SendingDisabled" + }, { "inputs": [ { @@ -2437,18 +2475,18 @@ "license": "MIT" }, "src/amb/SourceAMB.sol": { - "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", "urls": [ - "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", - "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", + "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" ], "license": null }, "src/amb/TargetAMB.sol": { - "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", "urls": [ - "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", - "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", + "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" ], "license": null }, @@ -2484,6 +2522,14 @@ ], "license": null }, + "src/libraries/BeaconChainForks.sol": { + "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "urls": [ + "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", + "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + ], + "license": null + }, "src/libraries/MessageEncoding.sol": { "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", "urls": [ @@ -2493,10 +2539,10 @@ "license": null }, "src/libraries/SimpleSerialize.sol": { - "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", "urls": [ - "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", - "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", + "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" ], "license": null }, @@ -2529,40 +2575,40 @@ }, "ast": { "absolutePath": "src/amb/TelepathyRouter.sol", - "id": 42569, + "id": 42577, "exportedSymbols": { "ILightClient": [ - 47862 + 47936 ], "ITelepathyHandler": [ - 42756 + 42764 ], "ITelepathyReceiver": [ - 42744 + 42752 ], "ITelepathyRouter": [ - 42699 + 42707 ], "Message": [ - 42646 + 42654 ], "MessageStatus": [ - 42631 + 42639 ], "SourceAMB": [ - 41473 + 41479 ], "TargetAMB": [ - 42115 + 42123 ], "TelepathyAccess": [ - 42407 + 42415 ], "TelepathyRouter": [ - 42568 + 42576 ], "TelepathyStorage": [ - 42625 + 42633 ], "UUPSUpgradeable": [ 29540 @@ -2572,7 +2618,7 @@ "src": "0:2243:102", "nodes": [ { - "id": 42409, + "id": 42417, "nodeType": "PragmaDirective", "src": "0:23:102", "nodes": [], @@ -2583,19 +2629,19 @@ ] }, { - "id": 42411, + "id": 42419, "nodeType": "ImportDirective", "src": "25:99:102", "nodes": [], "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", "file": "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "nameLocation": "-1:-1:-1", - "scope": 42569, + "scope": 42577, "sourceUnit": 29541, "symbolAliases": [ { "foreign": { - "id": 42410, + "id": 42418, "name": "UUPSUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2609,23 +2655,23 @@ "unitAlias": "" }, { - "id": 42413, + "id": 42421, "nodeType": "ImportDirective", "src": "126:73:102", "nodes": [], "absolutePath": "src/lightclient/interfaces/ILightClient.sol", "file": "src/lightclient/interfaces/ILightClient.sol", "nameLocation": "-1:-1:-1", - "scope": 42569, - "sourceUnit": 47863, + "scope": 42577, + "sourceUnit": 47937, "symbolAliases": [ { "foreign": { - "id": 42412, + "id": 42420, "name": "ILightClient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47862, + "referencedDeclaration": 47936, "src": "134:12:102", "typeDescriptions": {} }, @@ -2635,23 +2681,23 @@ "unitAlias": "" }, { - "id": 42415, + "id": 42423, "nodeType": "ImportDirective", "src": "201:62:102", "nodes": [], "absolutePath": "src/amb/TelepathyStorage.sol", "file": "src/amb/TelepathyStorage.sol", "nameLocation": "-1:-1:-1", - "scope": 42569, - "sourceUnit": 42626, + "scope": 42577, + "sourceUnit": 42634, "symbolAliases": [ { "foreign": { - "id": 42414, + "id": 42422, "name": "TelepathyStorage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42625, + "referencedDeclaration": 42633, "src": "209:16:102", "typeDescriptions": {} }, @@ -2661,23 +2707,23 @@ "unitAlias": "" }, { - "id": 42421, + "id": 42429, "nodeType": "ImportDirective", "src": "264:152:102", "nodes": [], "absolutePath": "src/amb/interfaces/ITelepathy.sol", "file": "src/amb/interfaces/ITelepathy.sol", "nameLocation": "-1:-1:-1", - "scope": 42569, - "sourceUnit": 42757, + "scope": 42577, + "sourceUnit": 42765, "symbolAliases": [ { "foreign": { - "id": 42416, + "id": 42424, "name": "ITelepathyReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42744, + "referencedDeclaration": 42752, "src": "277:18:102", "typeDescriptions": {} }, @@ -2685,11 +2731,11 @@ }, { "foreign": { - "id": 42417, + "id": 42425, "name": "Message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42646, + "referencedDeclaration": 42654, "src": "301:7:102", "typeDescriptions": {} }, @@ -2697,11 +2743,11 @@ }, { "foreign": { - "id": 42418, + "id": 42426, "name": "MessageStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42631, + "referencedDeclaration": 42639, "src": "314:13:102", "typeDescriptions": {} }, @@ -2709,11 +2755,11 @@ }, { "foreign": { - "id": 42419, + "id": 42427, "name": "ITelepathyHandler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42756, + "referencedDeclaration": 42764, "src": "333:17:102", "typeDescriptions": {} }, @@ -2721,11 +2767,11 @@ }, { "foreign": { - "id": 42420, + "id": 42428, "name": "ITelepathyRouter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42699, + "referencedDeclaration": 42707, "src": "356:16:102", "typeDescriptions": {} }, @@ -2735,23 +2781,23 @@ "unitAlias": "" }, { - "id": 42423, + "id": 42431, "nodeType": "ImportDirective", "src": "417:48:102", "nodes": [], "absolutePath": "src/amb/TargetAMB.sol", "file": "src/amb/TargetAMB.sol", "nameLocation": "-1:-1:-1", - "scope": 42569, - "sourceUnit": 42116, + "scope": 42577, + "sourceUnit": 42124, "symbolAliases": [ { "foreign": { - "id": 42422, + "id": 42430, "name": "TargetAMB", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42115, + "referencedDeclaration": 42123, "src": "425:9:102", "typeDescriptions": {} }, @@ -2761,23 +2807,23 @@ "unitAlias": "" }, { - "id": 42425, + "id": 42433, "nodeType": "ImportDirective", "src": "466:48:102", "nodes": [], "absolutePath": "src/amb/SourceAMB.sol", "file": "src/amb/SourceAMB.sol", "nameLocation": "-1:-1:-1", - "scope": 42569, - "sourceUnit": 41474, + "scope": 42577, + "sourceUnit": 41480, "symbolAliases": [ { "foreign": { - "id": 42424, + "id": 42432, "name": "SourceAMB", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 41473, + "referencedDeclaration": 41479, "src": "474:9:102", "typeDescriptions": {} }, @@ -2787,23 +2833,23 @@ "unitAlias": "" }, { - "id": 42427, + "id": 42435, "nodeType": "ImportDirective", "src": "515:60:102", "nodes": [], "absolutePath": "src/amb/TelepathyAccess.sol", "file": "src/amb/TelepathyAccess.sol", "nameLocation": "-1:-1:-1", - "scope": 42569, - "sourceUnit": 42408, + "scope": 42577, + "sourceUnit": 42416, "symbolAliases": [ { "foreign": { - "id": 42426, + "id": 42434, "name": "TelepathyAccess", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42407, + "referencedDeclaration": 42415, "src": "523:15:102", "typeDescriptions": {} }, @@ -2813,18 +2859,18 @@ "unitAlias": "" }, { - "id": 42568, + "id": 42576, "nodeType": "ContractDefinition", "src": "698:1544:102", "nodes": [ { - "id": 42440, + "id": 42448, "nodeType": "VariableDeclaration", "src": "837:33:102", "nodes": [], "constant": true, "documentation": { - "id": 42437, + "id": 42445, "nodeType": "StructuredDocumentation", "src": "787:45:102", "text": "@notice Returns current contract version." @@ -2833,7 +2879,7 @@ "mutability": "constant", "name": "VERSION", "nameLocation": "859:7:102", - "scope": 42568, + "scope": 42576, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2841,7 +2887,7 @@ "typeString": "uint8" }, "typeName": { - "id": 42438, + "id": 42446, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "837:5:102", @@ -2852,7 +2898,7 @@ }, "value": { "hexValue": "31", - "id": 42439, + "id": 42447, "isConstant": false, "isLValue": false, "isPure": true, @@ -2869,12 +2915,12 @@ "visibility": "public" }, { - "id": 42448, + "id": 42456, "nodeType": "FunctionDefinition", "src": "987:53:102", "nodes": [], "body": { - "id": 42447, + "id": 42455, "nodeType": "Block", "src": "1001:39:102", "nodes": [], @@ -2884,7 +2930,7 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 42444, + "id": 42452, "name": "_disableInitializers", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2895,7 +2941,7 @@ "typeString": "function ()" } }, - "id": 42445, + "id": 42453, "isConstant": false, "isLValue": false, "isPure": false, @@ -2911,14 +2957,14 @@ "typeString": "tuple()" } }, - "id": 42446, + "id": 42454, "nodeType": "ExpressionStatement", "src": "1011:22:102" } ] }, "documentation": { - "id": 42441, + "id": 42449, "nodeType": "StructuredDocumentation", "src": "877:105:102", "text": "@notice Prevents the implementation contract from being initialized outside of the upgradeable proxy." @@ -2929,29 +2975,29 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 42442, + "id": 42450, "nodeType": "ParameterList", "parameters": [], "src": "998:2:102" }, "returnParameters": { - "id": 42443, + "id": 42451, "nodeType": "ParameterList", "parameters": [], "src": "1001:0:102" }, - "scope": 42568, + "scope": 42576, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 42557, + "id": 42565, "nodeType": "FunctionDefinition", "src": "1118:958:102", "nodes": [], "body": { - "id": 42556, + "id": 42564, "nodeType": "Block", "src": "1370:706:102", "nodes": [], @@ -2961,7 +3007,7 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 42469, + "id": 42477, "name": "__ReentrancyGuard_init", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2972,7 +3018,7 @@ "typeString": "function ()" } }, - "id": 42470, + "id": 42478, "isConstant": false, "isLValue": false, "isPure": false, @@ -2988,7 +3034,7 @@ "typeString": "tuple()" } }, - "id": 42471, + "id": 42479, "nodeType": "ExpressionStatement", "src": "1380:24:102" }, @@ -2997,7 +3043,7 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 42472, + "id": 42480, "name": "__AccessControl_init", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3008,7 +3054,7 @@ "typeString": "function ()" } }, - "id": 42473, + "id": 42481, "isConstant": false, "isLValue": false, "isPure": false, @@ -3024,7 +3070,7 @@ "typeString": "tuple()" } }, - "id": 42474, + "id": 42482, "nodeType": "ExpressionStatement", "src": "1414:22:102" }, @@ -3032,11 +3078,11 @@ "expression": { "arguments": [ { - "id": 42476, + "id": 42484, "name": "GUARDIAN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42168, + "referencedDeclaration": 42176, "src": "1457:13:102", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3044,11 +3090,11 @@ } }, { - "id": 42477, + "id": 42485, "name": "_guardian", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42462, + "referencedDeclaration": 42470, "src": "1472:9:102", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3067,7 +3113,7 @@ "typeString": "address" } ], - "id": 42475, + "id": 42483, "name": "_grantRole", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3078,7 +3124,7 @@ "typeString": "function (bytes32,address)" } }, - "id": 42478, + "id": 42486, "isConstant": false, "isLValue": false, "isPure": false, @@ -3094,7 +3140,7 @@ "typeString": "tuple()" } }, - "id": 42479, + "id": 42487, "nodeType": "ExpressionStatement", "src": "1446:36:102" }, @@ -3102,11 +3148,11 @@ "expression": { "arguments": [ { - "id": 42481, + "id": 42489, "name": "TIMELOCK_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42174, + "referencedDeclaration": 42182, "src": "1503:13:102", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3114,11 +3160,11 @@ } }, { - "id": 42482, + "id": 42490, "name": "_timelock", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42460, + "referencedDeclaration": 42468, "src": "1518:9:102", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3137,7 +3183,7 @@ "typeString": "address" } ], - "id": 42480, + "id": 42488, "name": "_grantRole", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3148,7 +3194,7 @@ "typeString": "function (bytes32,address)" } }, - "id": 42483, + "id": 42491, "isConstant": false, "isLValue": false, "isPure": false, @@ -3164,7 +3210,7 @@ "typeString": "tuple()" } }, - "id": 42484, + "id": 42492, "nodeType": "ExpressionStatement", "src": "1492:36:102" }, @@ -3172,7 +3218,7 @@ "expression": { "arguments": [ { - "id": 42486, + "id": 42494, "name": "DEFAULT_ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3184,11 +3230,11 @@ } }, { - "id": 42487, + "id": 42495, "name": "_timelock", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42460, + "referencedDeclaration": 42468, "src": "1569:9:102", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3207,7 +3253,7 @@ "typeString": "address" } ], - "id": 42485, + "id": 42493, "name": "_grantRole", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3218,7 +3264,7 @@ "typeString": "function (bytes32,address)" } }, - "id": 42488, + "id": 42496, "isConstant": false, "isLValue": false, "isPure": false, @@ -3234,7 +3280,7 @@ "typeString": "tuple()" } }, - "id": 42489, + "id": 42497, "nodeType": "ExpressionStatement", "src": "1538:41:102" }, @@ -3243,7 +3289,7 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 42490, + "id": 42498, "name": "__UUPSUpgradeable_init", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3254,7 +3300,7 @@ "typeString": "function ()" } }, - "id": 42491, + "id": 42499, "isConstant": false, "isLValue": false, "isPure": false, @@ -3270,7 +3316,7 @@ "typeString": "tuple()" } }, - "id": 42492, + "id": 42500, "nodeType": "ExpressionStatement", "src": "1589:24:102" }, @@ -3282,25 +3328,25 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 42498, + "id": 42506, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 42494, + "id": 42502, "name": "_sourceChainIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42452, + "referencedDeclaration": 42460, "src": "1632:15:102", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", "typeString": "uint32[] memory" } }, - "id": 42495, + "id": 42503, "isConstant": false, "isLValue": false, "isPure": false, @@ -3318,18 +3364,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 42496, + "id": 42504, "name": "_lightClients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42455, + "referencedDeclaration": 42463, "src": "1658:13:102", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 42497, + "id": 42505, "isConstant": false, "isLValue": false, "isPure": false, @@ -3357,7 +3403,7 @@ "typeString": "bool" } ], - "id": 42493, + "id": 42501, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3371,7 +3417,7 @@ "typeString": "function (bool) pure" } }, - "id": 42499, + "id": 42507, "isConstant": false, "isLValue": false, "isPure": false, @@ -3387,7 +3433,7 @@ "typeString": "tuple()" } }, - "id": 42500, + "id": 42508, "nodeType": "ExpressionStatement", "src": "1624:55:102" }, @@ -3399,25 +3445,25 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 42506, + "id": 42514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 42502, + "id": 42510, "name": "_sourceChainIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42452, + "referencedDeclaration": 42460, "src": "1697:15:102", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", "typeString": "uint32[] memory" } }, - "id": 42503, + "id": 42511, "isConstant": false, "isLValue": false, "isPure": false, @@ -3435,18 +3481,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 42504, + "id": 42512, "name": "_broadcasters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42458, + "referencedDeclaration": 42466, "src": "1723:13:102", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 42505, + "id": 42513, "isConstant": false, "isLValue": false, "isPure": false, @@ -3474,7 +3520,7 @@ "typeString": "bool" } ], - "id": 42501, + "id": 42509, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3488,7 +3534,7 @@ "typeString": "function (bool) pure" } }, - "id": 42507, + "id": 42515, "isConstant": false, "isLValue": false, "isPure": false, @@ -3504,23 +3550,23 @@ "typeString": "tuple()" } }, - "id": 42508, + "id": 42516, "nodeType": "ExpressionStatement", "src": "1689:55:102" }, { "expression": { - "id": 42511, + "id": 42519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 42509, + "id": 42517, "name": "sourceChainIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42589, + "referencedDeclaration": 42597, "src": "1755:14:102", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint32_$dyn_storage", @@ -3530,11 +3576,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 42510, + "id": 42518, "name": "_sourceChainIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42452, + "referencedDeclaration": 42460, "src": "1772:15:102", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", @@ -3547,57 +3593,57 @@ "typeString": "uint32[] storage ref" } }, - "id": 42512, + "id": 42520, "nodeType": "ExpressionStatement", "src": "1755:32:102" }, { "body": { - "id": 42546, + "id": 42554, "nodeType": "Block", "src": "1848:153:102", "statements": [ { "expression": { - "id": 42534, + "id": 42542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 42524, + "id": 42532, "name": "lightClients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42595, + "referencedDeclaration": 42603, "src": "1862:12:102", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", "typeString": "mapping(uint32 => contract ILightClient)" } }, - "id": 42528, + "id": 42536, "indexExpression": { "baseExpression": { - "id": 42525, + "id": 42533, "name": "sourceChainIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42589, + "referencedDeclaration": 42597, "src": "1875:14:102", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint32_$dyn_storage", "typeString": "uint32[] storage ref" } }, - "id": 42527, + "id": 42535, "indexExpression": { - "id": 42526, + "id": 42534, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42514, + "referencedDeclaration": 42522, "src": "1890:1:102", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3622,7 +3668,7 @@ "nodeType": "IndexAccess", "src": "1862:31:102", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, @@ -3632,24 +3678,24 @@ "arguments": [ { "baseExpression": { - "id": 42530, + "id": 42538, "name": "_lightClients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42455, + "referencedDeclaration": 42463, "src": "1909:13:102", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 42532, + "id": 42540, "indexExpression": { - "id": 42531, + "id": 42539, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42514, + "referencedDeclaration": 42522, "src": "1923:1:102", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3675,18 +3721,18 @@ "typeString": "address" } ], - "id": 42529, + "id": 42537, "name": "ILightClient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47862, + "referencedDeclaration": 47936, "src": "1896:12:102", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ILightClient_$47862_$", + "typeIdentifier": "t_type$_t_contract$_ILightClient_$47936_$", "typeString": "type(contract ILightClient)" } }, - "id": 42533, + "id": 42541, "isConstant": false, "isLValue": false, "isPure": false, @@ -3698,61 +3744,61 @@ "src": "1896:30:102", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, "src": "1862:64:102", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47862", + "typeIdentifier": "t_contract$_ILightClient_$47936", "typeString": "contract ILightClient" } }, - "id": 42535, + "id": 42543, "nodeType": "ExpressionStatement", "src": "1862:64:102" }, { "expression": { - "id": 42544, + "id": 42552, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 42536, + "id": 42544, "name": "broadcasters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42600, + "referencedDeclaration": 42608, "src": "1940:12:102", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", "typeString": "mapping(uint32 => address)" } }, - "id": 42540, + "id": 42548, "indexExpression": { "baseExpression": { - "id": 42537, + "id": 42545, "name": "sourceChainIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42589, + "referencedDeclaration": 42597, "src": "1953:14:102", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint32_$dyn_storage", "typeString": "uint32[] storage ref" } }, - "id": 42539, + "id": 42547, "indexExpression": { - "id": 42538, + "id": 42546, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42514, + "referencedDeclaration": 42522, "src": "1968:1:102", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3785,24 +3831,24 @@ "operator": "=", "rightHandSide": { "baseExpression": { - "id": 42541, + "id": 42549, "name": "_broadcasters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42458, + "referencedDeclaration": 42466, "src": "1974:13:102", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 42543, + "id": 42551, "indexExpression": { - "id": 42542, + "id": 42550, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42514, + "referencedDeclaration": 42522, "src": "1988:1:102", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3826,7 +3872,7 @@ "typeString": "address" } }, - "id": 42545, + "id": 42553, "nodeType": "ExpressionStatement", "src": "1940:50:102" } @@ -3837,17 +3883,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 42520, + "id": 42528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 42517, + "id": 42525, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42514, + "referencedDeclaration": 42522, "src": "1816:1:102", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3858,18 +3904,18 @@ "operator": "<", "rightExpression": { "expression": { - "id": 42518, + "id": 42526, "name": "sourceChainIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42589, + "referencedDeclaration": 42597, "src": "1820:14:102", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint32_$dyn_storage", "typeString": "uint32[] storage ref" } }, - "id": 42519, + "id": 42527, "isConstant": false, "isLValue": false, "isPure": false, @@ -3889,20 +3935,20 @@ "typeString": "bool" } }, - "id": 42547, + "id": 42555, "initializationExpression": { "assignments": [ - 42514 + 42522 ], "declarations": [ { "constant": false, - "id": 42514, + "id": 42522, "mutability": "mutable", "name": "i", "nameLocation": "1809:1:102", "nodeType": "VariableDeclaration", - "scope": 42547, + "scope": 42555, "src": "1802:8:102", "stateVariable": false, "storageLocation": "default", @@ -3911,7 +3957,7 @@ "typeString": "uint32" }, "typeName": { - "id": 42513, + "id": 42521, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1802:6:102", @@ -3923,10 +3969,10 @@ "visibility": "internal" } ], - "id": 42516, + "id": 42524, "initialValue": { "hexValue": "30", - "id": 42515, + "id": 42523, "isConstant": false, "isLValue": false, "isPure": true, @@ -3945,7 +3991,7 @@ }, "loopExpression": { "expression": { - "id": 42522, + "id": 42530, "isConstant": false, "isLValue": false, "isPure": false, @@ -3955,11 +4001,11 @@ "prefix": false, "src": "1843:3:102", "subExpression": { - "id": 42521, + "id": 42529, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42514, + "referencedDeclaration": 42522, "src": "1843:1:102", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -3971,7 +4017,7 @@ "typeString": "uint32" } }, - "id": 42523, + "id": 42531, "nodeType": "ExpressionStatement", "src": "1843:3:102" }, @@ -3980,17 +4026,17 @@ }, { "expression": { - "id": 42550, + "id": 42558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 42548, + "id": 42556, "name": "sendingEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42577, + "referencedDeclaration": 42585, "src": "2010:14:102", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4000,11 +4046,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 42549, + "id": 42557, "name": "_sendingEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42464, + "referencedDeclaration": 42472, "src": "2027:15:102", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4017,23 +4063,23 @@ "typeString": "bool" } }, - "id": 42551, + "id": 42559, "nodeType": "ExpressionStatement", "src": "2010:32:102" }, { "expression": { - "id": 42554, + "id": 42562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 42552, + "id": 42560, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42614, + "referencedDeclaration": 42622, "src": "2052:7:102", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -4043,11 +4089,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 42553, + "id": 42561, "name": "VERSION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42440, + "referencedDeclaration": 42448, "src": "2062:7:102", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -4060,14 +4106,14 @@ "typeString": "uint8" } }, - "id": 42555, + "id": 42563, "nodeType": "ExpressionStatement", "src": "2052:17:102" } ] }, "documentation": { - "id": 42449, + "id": 42457, "nodeType": "StructuredDocumentation", "src": "1046:67:102", "text": "@notice Initializes the contract and the parent contracts once." @@ -4077,10 +4123,10 @@ "kind": "function", "modifiers": [ { - "id": 42467, + "id": 42475, "kind": "modifierInvocation", "modifierName": { - "id": 42466, + "id": 42474, "name": "initializer", "nameLocations": [ "1358:11:102" @@ -4096,17 +4142,17 @@ "name": "initialize", "nameLocation": "1127:10:102", "parameters": { - "id": 42465, + "id": 42473, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 42452, + "id": 42460, "mutability": "mutable", "name": "_sourceChainIds", "nameLocation": "1163:15:102", "nodeType": "VariableDeclaration", - "scope": 42557, + "scope": 42565, "src": "1147:31:102", "stateVariable": false, "storageLocation": "memory", @@ -4116,7 +4162,7 @@ }, "typeName": { "baseType": { - "id": 42450, + "id": 42458, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1147:6:102", @@ -4125,7 +4171,7 @@ "typeString": "uint32" } }, - "id": 42451, + "id": 42459, "nodeType": "ArrayTypeName", "src": "1147:8:102", "typeDescriptions": { @@ -4137,12 +4183,12 @@ }, { "constant": false, - "id": 42455, + "id": 42463, "mutability": "mutable", "name": "_lightClients", "nameLocation": "1205:13:102", "nodeType": "VariableDeclaration", - "scope": 42557, + "scope": 42565, "src": "1188:30:102", "stateVariable": false, "storageLocation": "memory", @@ -4152,7 +4198,7 @@ }, "typeName": { "baseType": { - "id": 42453, + "id": 42461, "name": "address", "nodeType": "ElementaryTypeName", "src": "1188:7:102", @@ -4162,7 +4208,7 @@ "typeString": "address" } }, - "id": 42454, + "id": 42462, "nodeType": "ArrayTypeName", "src": "1188:9:102", "typeDescriptions": { @@ -4174,12 +4220,12 @@ }, { "constant": false, - "id": 42458, + "id": 42466, "mutability": "mutable", "name": "_broadcasters", "nameLocation": "1245:13:102", "nodeType": "VariableDeclaration", - "scope": 42557, + "scope": 42565, "src": "1228:30:102", "stateVariable": false, "storageLocation": "memory", @@ -4189,7 +4235,7 @@ }, "typeName": { "baseType": { - "id": 42456, + "id": 42464, "name": "address", "nodeType": "ElementaryTypeName", "src": "1228:7:102", @@ -4199,7 +4245,7 @@ "typeString": "address" } }, - "id": 42457, + "id": 42465, "nodeType": "ArrayTypeName", "src": "1228:9:102", "typeDescriptions": { @@ -4211,12 +4257,12 @@ }, { "constant": false, - "id": 42460, + "id": 42468, "mutability": "mutable", "name": "_timelock", "nameLocation": "1276:9:102", "nodeType": "VariableDeclaration", - "scope": 42557, + "scope": 42565, "src": "1268:17:102", "stateVariable": false, "storageLocation": "default", @@ -4225,7 +4271,7 @@ "typeString": "address" }, "typeName": { - "id": 42459, + "id": 42467, "name": "address", "nodeType": "ElementaryTypeName", "src": "1268:7:102", @@ -4239,12 +4285,12 @@ }, { "constant": false, - "id": 42462, + "id": 42470, "mutability": "mutable", "name": "_guardian", "nameLocation": "1303:9:102", "nodeType": "VariableDeclaration", - "scope": 42557, + "scope": 42565, "src": "1295:17:102", "stateVariable": false, "storageLocation": "default", @@ -4253,7 +4299,7 @@ "typeString": "address" }, "typeName": { - "id": 42461, + "id": 42469, "name": "address", "nodeType": "ElementaryTypeName", "src": "1295:7:102", @@ -4267,12 +4313,12 @@ }, { "constant": false, - "id": 42464, + "id": 42472, "mutability": "mutable", "name": "_sendingEnabled", "nameLocation": "1327:15:102", "nodeType": "VariableDeclaration", - "scope": 42557, + "scope": 42565, "src": "1322:20:102", "stateVariable": false, "storageLocation": "default", @@ -4281,7 +4327,7 @@ "typeString": "bool" }, "typeName": { - "id": 42463, + "id": 42471, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1322:4:102", @@ -4296,23 +4342,23 @@ "src": "1137:211:102" }, "returnParameters": { - "id": 42468, + "id": 42476, "nodeType": "ParameterList", "parameters": [], "src": "1370:0:102" }, - "scope": 42568, + "scope": 42576, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 42567, + "id": 42575, "nodeType": "FunctionDefinition", "src": "2153:87:102", "nodes": [], "body": { - "id": 42566, + "id": 42574, "nodeType": "Block", "src": "2238:2:102", "nodes": [], @@ -4322,7 +4368,7 @@ 29534 ], "documentation": { - "id": 42558, + "id": 42566, "nodeType": "StructuredDocumentation", "src": "2082:66:102", "text": "@notice Authorizes an upgrade for the implementation contract." @@ -4331,16 +4377,16 @@ "kind": "function", "modifiers": [ { - "id": 42564, + "id": 42572, "kind": "modifierInvocation", "modifierName": { - "id": 42563, + "id": 42571, "name": "onlyTimelock", "nameLocations": [ "2225:12:102" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42200, + "referencedDeclaration": 42208, "src": "2225:12:102" }, "nodeType": "ModifierInvocation", @@ -4350,23 +4396,23 @@ "name": "_authorizeUpgrade", "nameLocation": "2162:17:102", "overrides": { - "id": 42562, + "id": 42570, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2216:8:102" }, "parameters": { - "id": 42561, + "id": 42569, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 42560, + "id": 42568, "mutability": "mutable", "name": "newImplementation", "nameLocation": "2188:17:102", "nodeType": "VariableDeclaration", - "scope": 42567, + "scope": 42575, "src": "2180:25:102", "stateVariable": false, "storageLocation": "default", @@ -4375,7 +4421,7 @@ "typeString": "address" }, "typeName": { - "id": 42559, + "id": 42567, "name": "address", "nodeType": "ElementaryTypeName", "src": "2180:7:102", @@ -4391,12 +4437,12 @@ "src": "2179:27:102" }, "returnParameters": { - "id": 42565, + "id": 42573, "nodeType": "ParameterList", "parameters": [], "src": "2238:0:102" }, - "scope": 42568, + "scope": 42576, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" @@ -4406,52 +4452,52 @@ "baseContracts": [ { "baseName": { - "id": 42429, + "id": 42437, "name": "SourceAMB", "nameLocations": [ "726:9:102" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 41473, + "referencedDeclaration": 41479, "src": "726:9:102" }, - "id": 42430, + "id": 42438, "nodeType": "InheritanceSpecifier", "src": "726:9:102" }, { "baseName": { - "id": 42431, + "id": 42439, "name": "TargetAMB", "nameLocations": [ "737:9:102" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42115, + "referencedDeclaration": 42123, "src": "737:9:102" }, - "id": 42432, + "id": 42440, "nodeType": "InheritanceSpecifier", "src": "737:9:102" }, { "baseName": { - "id": 42433, + "id": 42441, "name": "TelepathyAccess", "nameLocations": [ "748:15:102" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 42407, + "referencedDeclaration": 42415, "src": "748:15:102" }, - "id": 42434, + "id": 42442, "nodeType": "InheritanceSpecifier", "src": "748:15:102" }, { "baseName": { - "id": 42435, + "id": 42443, "name": "UUPSUpgradeable", "nameLocations": [ "765:15:102" @@ -4460,7 +4506,7 @@ "referencedDeclaration": 29540, "src": "765:15:102" }, - "id": 42436, + "id": 42444, "nodeType": "InheritanceSpecifier", "src": "765:15:102" } @@ -4469,35 +4515,38 @@ "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 42428, + "id": 42436, "nodeType": "StructuredDocumentation", "src": "577:121:102", "text": "@title Telepathy Router\n @author Succinct Labs\n @notice Send and receive arbitrary messages from other chains." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 42568, + 42576, 29540, 29225, 28856, - 42407, + 42415, 28641, 30218, 30230, 28714, 29939, - 42115, - 42744, + 42123, + 42752, 29613, 29404, - 41473, - 42699, - 42625 + 41479, + 42707, + 42633 ], "name": "TelepathyRouter", "nameLocation": "707:15:102", - "scope": 42569, - "usedErrors": [] + "scope": 42577, + "usedErrors": [ + 41241, + 41243 + ] } ] }, diff --git a/out/TelepathySubscriber.sol/TelepathySubscriber.json b/out/TelepathySubscriber.sol/TelepathySubscriber.json index 61cd34a..7329d70 100644 --- a/out/TelepathySubscriber.sol/TelepathySubscriber.json +++ b/out/TelepathySubscriber.sol/TelepathySubscriber.json @@ -245,13 +245,13 @@ } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b50610527806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea2646970667358221220aa11394a30f8ff61a65919bc7fe5e6dc7ac36dbea2b6ff2e2bf09b112b8769d164736f6c63430008100033", - "sourceMap": "335:2199:124:-:0;;;;;;;;;;;;;;;;;;;", + "object": "0x608060405234801561001057600080fd5b50610527806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea264697066735822122030f05064d0b104ed0bcde3dae6b1387cf72d49641b7d6a92ab97ef408c7069bb64736f6c63430008100033", + "sourceMap": "335:2199:125:-:0;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea2646970667358221220aa11394a30f8ff61a65919bc7fe5e6dc7ac36dbea2b6ff2e2bf09b112b8769d164736f6c63430008100033", - "sourceMap": "335:2199:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;837:960:124;;;;;;:::i;:::-;;:::i;:::-;;;1806:25:145;;;1794:2;1779:18;837:960:124;1660:177:145;723:59:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1888:644:124:-;;;;;;:::i;:::-;;:::i;837:960::-;1056:7;1075:32;1122:73;;;;;;;;1135:14;1122:73;;;;;;1151:14;-1:-1:-1;;;;;1122:73:124;;;;;1167:16;-1:-1:-1;;;;;1122:73:124;;;;;1185:9;1122:73;;;1075:120;;1205:22;1251:12;1240:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1240:24:124;;;;;;;;;1230:35;;1240:24;1230:35;;;;;-1:-1:-1;1313:29:124;1280;;;;:13;:29;;;;;;;;;:62;;;;;;;:::i;:::-;;1276:141;;1365:41;;-1:-1:-1;;;1365:41:124;;;;;1806:25:145;;;1779:18;;1365:41:124;;;;;;;;1276:141;1426:29;;;;:13;:29;;;;;:61;;-1:-1:-1;;1426:61:124;1458:29;1426:61;;;1589:21;;;;;;;;1585:97;;;1633:38;;-1:-1:-1;;;1633:38:124;;3168:18:145;3213:15;;;1633:38:124;;;3195:34:145;3265:15;;3245:18;;;3238:43;3131:18;;1633:38:124;2988:299:145;1585:97:124;1735:8;1697:61;;1723:10;1697:61;;1707:14;1697:61;1745:12;1697:61;;;;;;:::i;:::-;;;;;;;;1776:14;837:960;-1:-1:-1;;;;;;;;837:960:124:o;1888:644::-;2009:7;2032:32;2079:67;;;;;;;;2092:14;2079:67;;;;;;2108:14;-1:-1:-1;;;;;2079:67:124;;;;;2124:10;-1:-1:-1;;;;;2079:67:124;;;;;2136:9;2079:67;;;2032:114;;2156:22;2202:12;2191:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2191:24:124;;;;;;;;;2181:35;;2191:24;2181:35;;;;;-1:-1:-1;2264:30:124;2231:29;;;;:13;:29;;;;;;;;;:63;;;;;;;:::i;:::-;;2227:138;;2317:37;;-1:-1:-1;;;2317:37:124;;;;;1806:25:145;;;1779:18;;2317:37:124;1660:177:145;2227:138:124;2406:30;2374:29;;;:13;:29;;;;;;;:62;;-1:-1:-1;;2374:62:124;;;2452:41;2374:29;;2452:41;;;;2480:12;;2452:41;:::i;:::-;;;;;;;;2511:14;1888:644;-1:-1:-1;;;;;1888:644:124:o;14:180:145:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:145;;14:180;-1:-1:-1;14:180:145:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:163::-;653:20;;713:10;702:22;;692:33;;682:61;;739:1;736;729:12;682:61;586:163;;;:::o;754:173::-;822:20;;-1:-1:-1;;;;;871:31:145;;861:42;;851:70;;917:1;914;907:12;932:171;999:20;;1059:18;1048:30;;1038:41;;1028:69;;1093:1;1090;1083:12;1108:547;1209:6;1217;1225;1233;1241;1249;1302:3;1290:9;1281:7;1277:23;1273:33;1270:53;;;1319:1;1316;1309:12;1270:53;1342:28;1360:9;1342:28;:::i;:::-;1332:38;;1389;1423:2;1412:9;1408:18;1389:38;:::i;:::-;1379:48;;1446:38;1480:2;1469:9;1465:18;1446:38;:::i;:::-;1436:48;;1531:2;1520:9;1516:18;1503:32;1493:42;;1554:38;1587:3;1576:9;1572:19;1554:38;:::i;:::-;1544:48;;1611:38;1644:3;1633:9;1629:19;1611:38;:::i;:::-;1601:48;;1108:547;;;;;;;;:::o;1842:255::-;1998:2;1983:18;;2031:1;2020:13;;2010:47;;2037:18;;:::i;2102:326::-;2178:6;2186;2194;2247:2;2235:9;2226:7;2222:23;2218:32;2215:52;;;2263:1;2260;2253:12;2215:52;2286:28;2304:9;2286:28;:::i;:::-;2276:38;;2333;2367:2;2356:9;2352:18;2333:38;:::i;:::-;2323:48;;2418:2;2407:9;2403:18;2390:32;2380:42;;2102:326;;;;;:::o;2433:550::-;2664:13;;2679:10;2660:30;2642:49;;2738:4;2726:17;;;2720:24;-1:-1:-1;;;;;2820:21:145;;;2798:20;;;2791:51;;;;2902:4;2890:17;;;2884:24;2880:33;;;2858:20;;;2851:63;2970:4;2958:17;;;2952:24;2930:20;;;2923:54;;;;2629:3;2614:19;;2433:550::o", + "object": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea264697066735822122030f05064d0b104ed0bcde3dae6b1387cf72d49641b7d6a92ab97ef408c7069bb64736f6c63430008100033", + "sourceMap": "335:2199:125:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;837:960:125;;;;;;:::i;:::-;;:::i;:::-;;;1806:25:146;;;1794:2;1779:18;837:960:125;1660:177:146;723:59:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1888:644:125:-;;;;;;:::i;:::-;;:::i;837:960::-;1056:7;1075:32;1122:73;;;;;;;;1135:14;1122:73;;;;;;1151:14;-1:-1:-1;;;;;1122:73:125;;;;;1167:16;-1:-1:-1;;;;;1122:73:125;;;;;1185:9;1122:73;;;1075:120;;1205:22;1251:12;1240:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1240:24:125;;;;;;;;;1230:35;;1240:24;1230:35;;;;;-1:-1:-1;1313:29:125;1280;;;;:13;:29;;;;;;;;;:62;;;;;;;:::i;:::-;;1276:141;;1365:41;;-1:-1:-1;;;1365:41:125;;;;;1806:25:146;;;1779:18;;1365:41:125;;;;;;;;1276:141;1426:29;;;;:13;:29;;;;;:61;;-1:-1:-1;;1426:61:125;1458:29;1426:61;;;1589:21;;;;;;;;1585:97;;;1633:38;;-1:-1:-1;;;1633:38:125;;3168:18:146;3213:15;;;1633:38:125;;;3195:34:146;3265:15;;3245:18;;;3238:43;3131:18;;1633:38:125;2988:299:146;1585:97:125;1735:8;1697:61;;1723:10;1697:61;;1707:14;1697:61;1745:12;1697:61;;;;;;:::i;:::-;;;;;;;;1776:14;837:960;-1:-1:-1;;;;;;;;837:960:125:o;1888:644::-;2009:7;2032:32;2079:67;;;;;;;;2092:14;2079:67;;;;;;2108:14;-1:-1:-1;;;;;2079:67:125;;;;;2124:10;-1:-1:-1;;;;;2079:67:125;;;;;2136:9;2079:67;;;2032:114;;2156:22;2202:12;2191:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2191:24:125;;;;;;;;;2181:35;;2191:24;2181:35;;;;;-1:-1:-1;2264:30:125;2231:29;;;;:13;:29;;;;;;;;;:63;;;;;;;:::i;:::-;;2227:138;;2317:37;;-1:-1:-1;;;2317:37:125;;;;;1806:25:146;;;1779:18;;2317:37:125;1660:177:146;2227:138:125;2406:30;2374:29;;;:13;:29;;;;;;;:62;;-1:-1:-1;;2374:62:125;;;2452:41;2374:29;;2452:41;;;;2480:12;;2452:41;:::i;:::-;;;;;;;;2511:14;1888:644;-1:-1:-1;;;;;1888:644:125:o;14:180:146:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:146;;14:180;-1:-1:-1;14:180:146:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:163::-;653:20;;713:10;702:22;;692:33;;682:61;;739:1;736;729:12;682:61;586:163;;;:::o;754:173::-;822:20;;-1:-1:-1;;;;;871:31:146;;861:42;;851:70;;917:1;914;907:12;932:171;999:20;;1059:18;1048:30;;1038:41;;1028:69;;1093:1;1090;1083:12;1108:547;1209:6;1217;1225;1233;1241;1249;1302:3;1290:9;1281:7;1277:23;1273:33;1270:53;;;1319:1;1316;1309:12;1270:53;1342:28;1360:9;1342:28;:::i;:::-;1332:38;;1389;1423:2;1412:9;1408:18;1389:38;:::i;:::-;1379:48;;1446:38;1480:2;1469:9;1465:18;1446:38;:::i;:::-;1436:48;;1531:2;1520:9;1516:18;1503:32;1493:42;;1554:38;1587:3;1576:9;1572:19;1554:38;:::i;:::-;1544:48;;1611:38;1644:3;1633:9;1629:19;1611:38;:::i;:::-;1601:48;;1108:547;;;;;;;;:::o;1842:255::-;1998:2;1983:18;;2031:1;2020:13;;2010:47;;2037:18;;:::i;2102:326::-;2178:6;2186;2194;2247:2;2235:9;2226:7;2222:23;2218:32;2215:52;;;2263:1;2260;2253:12;2215:52;2286:28;2304:9;2286:28;:::i;:::-;2276:38;;2333;2367:2;2356:9;2352:18;2333:38;:::i;:::-;2323:48;;2418:2;2407:9;2403:18;2390:32;2380:42;;2102:326;;;;;:::o;2433:550::-;2664:13;;2679:10;2660:30;2642:49;;2738:4;2726:17;;;2720:24;-1:-1:-1;;;;;2820:21:146;;;2798:20;;;2791:51;;;;2902:4;2890:17;;;2884:24;2880:33;;;2858:20;;;2851:63;2970:4;2958:17;;;2952:24;2930:20;;;2923:54;;;;2629:3;2614:19;;2433:550::o", "linkReferences": {} }, "methodIdentifiers": { @@ -260,7 +260,7 @@ "subscriptions(bytes32)": "94259c6c", "unsubscribe(uint32,address,bytes32)": "97229719" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathySubscriber\",\"version\":1},\"userdoc\":{\"events\":{\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"This allows contracts to subscribe to cross-chain events from a source contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathySubscriber.sol\":\"TelepathySubscriber\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathySubscriber\",\"version\":1},\"userdoc\":{\"events\":{\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"This allows contracts to subscribe to cross-chain events from a source contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathySubscriber.sol\":\"TelepathySubscriber\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -718,18 +718,18 @@ "license": "MIT" }, "src/amb/SourceAMB.sol": { - "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", "urls": [ - "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", - "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", + "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" ], "license": null }, "src/amb/TargetAMB.sol": { - "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", "urls": [ - "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", - "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", + "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" ], "license": null }, @@ -765,6 +765,14 @@ ], "license": null }, + "src/libraries/BeaconChainForks.sol": { + "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "urls": [ + "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", + "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + ], + "license": null + }, "src/libraries/MessageEncoding.sol": { "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", "urls": [ @@ -774,10 +782,10 @@ "license": null }, "src/libraries/SimpleSerialize.sol": { - "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", "urls": [ - "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", - "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", + "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" ], "license": null }, @@ -834,31 +842,31 @@ }, "ast": { "absolutePath": "src/pubsub/TelepathySubscriber.sol", - "id": 49067, + "id": 49143, "exportedSymbols": { "ISubscriber": [ - 49129 + 49205 ], "PubSubStorage": [ - 48478 + 48552 ], "Subscription": [ - 49080 + 49156 ], "SubscriptionStatus": [ - 49071 + 49147 ], "TelepathySubscriber": [ - 49066 + 49142 ] }, "nodeType": "SourceUnit", - "src": "0:2535:124", + "src": "0:2535:125", "nodes": [ { - "id": 48905, + "id": 48981, "nodeType": "PragmaDirective", - "src": "0:24:124", + "src": "0:24:125", "nodes": [], "literals": [ "solidity", @@ -868,48 +876,48 @@ ] }, { - "id": 48909, + "id": 48985, "nodeType": "ImportDirective", - "src": "26:96:124", + "src": "26:96:125", "nodes": [], "absolutePath": "src/pubsub/interfaces/IPubSub.sol", "file": "src/pubsub/interfaces/IPubSub.sol", "nameLocation": "-1:-1:-1", - "scope": 49067, - "sourceUnit": 49168, + "scope": 49143, + "sourceUnit": 49244, "symbolAliases": [ { "foreign": { - "id": 48906, + "id": 48982, "name": "Subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49080, - "src": "34:12:124", + "referencedDeclaration": 49156, + "src": "34:12:125", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 48907, + "id": 48983, "name": "SubscriptionStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49071, - "src": "48:18:124", + "referencedDeclaration": 49147, + "src": "48:18:125", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 48908, + "id": 48984, "name": "ISubscriber", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49129, - "src": "68:11:124", + "referencedDeclaration": 49205, + "src": "68:11:125", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -918,24 +926,24 @@ "unitAlias": "" }, { - "id": 48911, + "id": 48987, "nodeType": "ImportDirective", - "src": "124:59:124", + "src": "124:59:125", "nodes": [], "absolutePath": "src/pubsub/PubSubStorage.sol", "file": "src/pubsub/PubSubStorage.sol", "nameLocation": "-1:-1:-1", - "scope": 49067, - "sourceUnit": 48479, + "scope": 49143, + "sourceUnit": 48553, "symbolAliases": [ { "foreign": { - "id": 48910, + "id": 48986, "name": "PubSubStorage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48478, - "src": "132:13:124", + "referencedDeclaration": 48552, + "src": "132:13:125", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -944,31 +952,31 @@ "unitAlias": "" }, { - "id": 49066, + "id": 49142, "nodeType": "ContractDefinition", - "src": "335:2199:124", + "src": "335:2199:125", "nodes": [ { - "id": 48920, + "id": 48996, "nodeType": "ErrorDefinition", - "src": "400:56:124", + "src": "400:56:125", "nodes": [], "errorSelector": "8e04200e", "name": "SubscriptionAlreadyActive", - "nameLocation": "406:25:124", + "nameLocation": "406:25:125", "parameters": { - "id": 48919, + "id": 48995, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48918, + "id": 48994, "mutability": "mutable", "name": "subscriptionId", - "nameLocation": "440:14:124", + "nameLocation": "440:14:125", "nodeType": "VariableDeclaration", - "scope": 48920, - "src": "432:22:124", + "scope": 48996, + "src": "432:22:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -976,10 +984,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 48917, + "id": 48993, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "432:7:124", + "src": "432:7:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -988,30 +996,30 @@ "visibility": "internal" } ], - "src": "431:24:124" + "src": "431:24:125" } }, { - "id": 48924, + "id": 49000, "nodeType": "ErrorDefinition", - "src": "461:52:124", + "src": "461:52:125", "nodes": [], "errorSelector": "00323a52", "name": "SubscriptionNotActive", - "nameLocation": "467:21:124", + "nameLocation": "467:21:125", "parameters": { - "id": 48923, + "id": 48999, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48922, + "id": 48998, "mutability": "mutable", "name": "subscriptionId", - "nameLocation": "497:14:124", + "nameLocation": "497:14:125", "nodeType": "VariableDeclaration", - "scope": 48924, - "src": "489:22:124", + "scope": 49000, + "src": "489:22:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1019,10 +1027,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 48921, + "id": 48997, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "489:7:124", + "src": "489:7:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1031,30 +1039,30 @@ "visibility": "internal" } ], - "src": "488:24:124" + "src": "488:24:125" } }, { - "id": 48930, + "id": 49006, "nodeType": "ErrorDefinition", - "src": "518:57:124", + "src": "518:57:125", "nodes": [], "errorSelector": "f0120c84", "name": "InvalidSlotRange", - "nameLocation": "524:16:124", + "nameLocation": "524:16:125", "parameters": { - "id": 48929, + "id": 49005, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48926, + "id": 49002, "mutability": "mutable", "name": "startSlot", - "nameLocation": "548:9:124", + "nameLocation": "548:9:125", "nodeType": "VariableDeclaration", - "scope": 48930, - "src": "541:16:124", + "scope": 49006, + "src": "541:16:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1062,10 +1070,10 @@ "typeString": "uint64" }, "typeName": { - "id": 48925, + "id": 49001, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "541:6:124", + "src": "541:6:125", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -1075,13 +1083,13 @@ }, { "constant": false, - "id": 48928, + "id": 49004, "mutability": "mutable", "name": "endSlot", - "nameLocation": "566:7:124", + "nameLocation": "566:7:125", "nodeType": "VariableDeclaration", - "scope": 48930, - "src": "559:14:124", + "scope": 49006, + "src": "559:14:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1089,10 +1097,10 @@ "typeString": "uint64" }, "typeName": { - "id": 48927, + "id": 49003, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "559:6:124", + "src": "559:6:125", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -1101,109 +1109,109 @@ "visibility": "internal" } ], - "src": "540:34:124" + "src": "540:34:125" } }, { - "id": 49006, + "id": 49082, "nodeType": "FunctionDefinition", - "src": "837:960:124", + "src": "837:960:125", "nodes": [], "body": { - "id": 49005, + "id": 49081, "nodeType": "Block", - "src": "1065:732:124", + "src": "1065:732:125", "nodes": [], "statements": [ { "assignments": [ - 48950 + 49026 ], "declarations": [ { "constant": false, - "id": 48950, + "id": 49026, "mutability": "mutable", "name": "subscription", - "nameLocation": "1095:12:124", + "nameLocation": "1095:12:125", "nodeType": "VariableDeclaration", - "scope": 49005, - "src": "1075:32:124", + "scope": 49081, + "src": "1075:32:125", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription" }, "typeName": { - "id": 48949, + "id": 49025, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48948, + "id": 49024, "name": "Subscription", "nameLocations": [ - "1075:12:124" + "1075:12:125" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49080, - "src": "1075:12:124" + "referencedDeclaration": 49156, + "src": "1075:12:125" }, - "referencedDeclaration": 49080, - "src": "1075:12:124", + "referencedDeclaration": 49156, + "src": "1075:12:125", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_storage_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_storage_ptr", "typeString": "struct Subscription" } }, "visibility": "internal" } ], - "id": 48957, + "id": 49033, "initialValue": { "arguments": [ { - "id": 48952, + "id": 49028, "name": "_sourceChainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48933, - "src": "1135:14:124", + "referencedDeclaration": 49009, + "src": "1135:14:125", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, { - "id": 48953, + "id": 49029, "name": "_sourceAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48935, - "src": "1151:14:124", + "referencedDeclaration": 49011, + "src": "1151:14:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 48954, + "id": 49030, "name": "_callbackAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48937, - "src": "1167:16:124", + "referencedDeclaration": 49013, + "src": "1167:16:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 48955, + "id": 49031, "name": "_eventSig", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48939, - "src": "1185:9:124", + "referencedDeclaration": 49015, + "src": "1185:9:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1229,18 +1237,18 @@ "typeString": "bytes32" } ], - "id": 48951, + "id": 49027, "name": "Subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49080, - "src": "1122:12:124", + "referencedDeclaration": 49156, + "src": "1122:12:125", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Subscription_$49080_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Subscription_$49156_storage_ptr_$", "typeString": "type(struct Subscription storage pointer)" } }, - "id": 48956, + "id": 49032, "isConstant": false, "isLValue": false, "isPure": false, @@ -1249,30 +1257,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1122:73:124", + "src": "1122:73:125", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "1075:120:124" + "src": "1075:120:125" }, { "assignments": [ - 48959 + 49035 ], "declarations": [ { "constant": false, - "id": 48959, + "id": 49035, "mutability": "mutable", "name": "subscriptionId", - "nameLocation": "1213:14:124", + "nameLocation": "1213:14:125", "nodeType": "VariableDeclaration", - "scope": 49005, - "src": "1205:22:124", + "scope": 49081, + "src": "1205:22:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1280,10 +1288,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 48958, + "id": 49034, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1205:7:124", + "src": "1205:7:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1292,20 +1300,20 @@ "visibility": "internal" } ], - "id": 48966, + "id": 49042, "initialValue": { "arguments": [ { "arguments": [ { - "id": 48963, + "id": 49039, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48950, - "src": "1251:12:124", + "referencedDeclaration": 49026, + "src": "1251:12:125", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription memory" } } @@ -1313,37 +1321,37 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription memory" } ], "expression": { - "id": 48961, + "id": 49037, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "1240:3:124", + "src": "1240:3:125", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 48962, + "id": 49038, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "1244:6:124", + "memberLocation": "1244:6:125", "memberName": "encode", "nodeType": "MemberAccess", - "src": "1240:10:124", + "src": "1240:10:125", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 48964, + "id": 49040, "isConstant": false, "isLValue": false, "isPure": false, @@ -1352,7 +1360,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1240:24:124", + "src": "1240:24:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -1367,18 +1375,18 @@ "typeString": "bytes memory" } ], - "id": 48960, + "id": 49036, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "1230:9:124", + "src": "1230:9:125", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 48965, + "id": 49041, "isConstant": false, "isLValue": false, "isPure": false, @@ -1387,7 +1395,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1230:35:124", + "src": "1230:35:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1395,40 +1403,40 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1205:60:124" + "src": "1205:60:125" }, { "condition": { "commonType": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" }, - "id": 48972, + "id": 49048, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 48967, + "id": 49043, "name": "subscriptions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48472, - "src": "1280:13:124", + "referencedDeclaration": 48546, + "src": "1280:13:125", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49071_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49147_$", "typeString": "mapping(bytes32 => enum SubscriptionStatus)" } }, - "id": 48969, + "id": 49045, "indexExpression": { - "id": 48968, + "id": 49044, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48959, - "src": "1294:14:124", + "referencedDeclaration": 49035, + "src": "1294:14:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1439,9 +1447,9 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1280:29:124", + "src": "1280:29:125", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" } }, @@ -1449,56 +1457,56 @@ "operator": "==", "rightExpression": { "expression": { - "id": 48970, + "id": 49046, "name": "SubscriptionStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49071, - "src": "1313:18:124", + "referencedDeclaration": 49147, + "src": "1313:18:125", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49071_$", + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49147_$", "typeString": "type(enum SubscriptionStatus)" } }, - "id": 48971, + "id": 49047, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "1332:10:124", + "memberLocation": "1332:10:125", "memberName": "SUBSCRIBED", "nodeType": "MemberAccess", - "referencedDeclaration": 49070, - "src": "1313:29:124", + "referencedDeclaration": 49146, + "src": "1313:29:125", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" } }, - "src": "1280:62:124", + "src": "1280:62:125", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 48978, + "id": 49054, "nodeType": "IfStatement", - "src": "1276:141:124", + "src": "1276:141:125", "trueBody": { - "id": 48977, + "id": 49053, "nodeType": "Block", - "src": "1344:73:124", + "src": "1344:73:125", "statements": [ { "errorCall": { "arguments": [ { - "id": 48974, + "id": 49050, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48959, - "src": "1391:14:124", + "referencedDeclaration": 49035, + "src": "1391:14:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1512,18 +1520,18 @@ "typeString": "bytes32" } ], - "id": 48973, + "id": 49049, "name": "SubscriptionAlreadyActive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48920, - "src": "1365:25:124", + "referencedDeclaration": 48996, + "src": "1365:25:125", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", "typeString": "function (bytes32) pure" } }, - "id": 48975, + "id": 49051, "isConstant": false, "isLValue": false, "isPure": false, @@ -1532,48 +1540,48 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1365:41:124", + "src": "1365:41:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48976, + "id": 49052, "nodeType": "RevertStatement", - "src": "1358:48:124" + "src": "1358:48:125" } ] } }, { "expression": { - "id": 48984, + "id": 49060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 48979, + "id": 49055, "name": "subscriptions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48472, - "src": "1426:13:124", + "referencedDeclaration": 48546, + "src": "1426:13:125", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49071_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49147_$", "typeString": "mapping(bytes32 => enum SubscriptionStatus)" } }, - "id": 48981, + "id": 49057, "indexExpression": { - "id": 48980, + "id": 49056, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48959, - "src": "1440:14:124", + "referencedDeclaration": 49035, + "src": "1440:14:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1584,9 +1592,9 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1426:29:124", + "src": "1426:29:125", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" } }, @@ -1594,41 +1602,41 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 48982, + "id": 49058, "name": "SubscriptionStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49071, - "src": "1458:18:124", + "referencedDeclaration": 49147, + "src": "1458:18:125", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49071_$", + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49147_$", "typeString": "type(enum SubscriptionStatus)" } }, - "id": 48983, + "id": 49059, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "1477:10:124", + "memberLocation": "1477:10:125", "memberName": "SUBSCRIBED", "nodeType": "MemberAccess", - "referencedDeclaration": 49070, - "src": "1458:29:124", + "referencedDeclaration": 49146, + "src": "1458:29:125", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" } }, - "src": "1426:61:124", + "src": "1426:61:125", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" } }, - "id": 48985, + "id": 49061, "nodeType": "ExpressionStatement", - "src": "1426:61:124" + "src": "1426:61:125" }, { "condition": { @@ -1636,18 +1644,18 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 48988, + "id": 49064, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48986, + "id": 49062, "name": "_endSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48943, - "src": "1589:8:124", + "referencedDeclaration": 49019, + "src": "1589:8:125", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -1656,53 +1664,53 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 48987, + "id": 49063, "name": "_startSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48941, - "src": "1600:10:124", + "referencedDeclaration": 49017, + "src": "1600:10:125", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, - "src": "1589:21:124", + "src": "1589:21:125", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 48995, + "id": 49071, "nodeType": "IfStatement", - "src": "1585:97:124", + "src": "1585:97:125", "trueBody": { - "id": 48994, + "id": 49070, "nodeType": "Block", - "src": "1612:70:124", + "src": "1612:70:125", "statements": [ { "errorCall": { "arguments": [ { - "id": 48990, + "id": 49066, "name": "_startSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48941, - "src": "1650:10:124", + "referencedDeclaration": 49017, + "src": "1650:10:125", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { - "id": 48991, + "id": 49067, "name": "_endSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48943, - "src": "1662:8:124", + "referencedDeclaration": 49019, + "src": "1662:8:125", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -1720,18 +1728,18 @@ "typeString": "uint64" } ], - "id": 48989, + "id": 49065, "name": "InvalidSlotRange", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48930, - "src": "1633:16:124", + "referencedDeclaration": 49006, + "src": "1633:16:125", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (uint64,uint64) pure" } }, - "id": 48992, + "id": 49068, "isConstant": false, "isLValue": false, "isPure": false, @@ -1740,16 +1748,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1633:38:124", + "src": "1633:38:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 48993, + "id": 49069, "nodeType": "RevertStatement", - "src": "1626:45:124" + "src": "1626:45:125" } ] } @@ -1758,50 +1766,50 @@ "eventCall": { "arguments": [ { - "id": 48997, + "id": 49073, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48959, - "src": "1707:14:124", + "referencedDeclaration": 49035, + "src": "1707:14:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 48998, + "id": 49074, "name": "_startSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48941, - "src": "1723:10:124", + "referencedDeclaration": 49017, + "src": "1723:10:125", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { - "id": 48999, + "id": 49075, "name": "_endSlot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48943, - "src": "1735:8:124", + "referencedDeclaration": 49019, + "src": "1735:8:125", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { - "id": 49000, + "id": 49076, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48950, - "src": "1745:12:124", + "referencedDeclaration": 49026, + "src": "1745:12:125", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription memory" } } @@ -1821,22 +1829,22 @@ "typeString": "uint64" }, { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription memory" } ], - "id": 48996, + "id": 49072, "name": "Subscribe", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49092, - "src": "1697:9:124", + "referencedDeclaration": 49168, + "src": "1697:9:125", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$_t_uint64_$_t_struct$_Subscription_$49080_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$_t_uint64_$_t_struct$_Subscription_$49156_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint64,uint64,struct Subscription memory)" } }, - "id": 49001, + "id": 49077, "isConstant": false, "isLValue": false, "isPure": false, @@ -1845,44 +1853,44 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1697:61:124", + "src": "1697:61:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 49002, + "id": 49078, "nodeType": "EmitStatement", - "src": "1692:66:124" + "src": "1692:66:125" }, { "expression": { - "id": 49003, + "id": 49079, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48959, - "src": "1776:14:124", + "referencedDeclaration": 49035, + "src": "1776:14:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 48947, - "id": 49004, + "functionReturnParameters": 49023, + "id": 49080, "nodeType": "Return", - "src": "1769:21:124" + "src": "1769:21:125" } ] }, "baseFunctions": [ - 49117 + 49193 ], "documentation": { - "id": 48931, + "id": 49007, "nodeType": "StructuredDocumentation", - "src": "581:251:124", + "src": "581:251:125", "text": "@dev The block ranges use as a signal to off-chain, and are NOT enforced by the publisher.\n If events should only a certain range should be valid, the callbackAddress should do their\n own validation when handling the publish." }, "functionSelector": "65138959", @@ -1890,20 +1898,20 @@ "kind": "function", "modifiers": [], "name": "subscribe", - "nameLocation": "846:9:124", + "nameLocation": "846:9:125", "parameters": { - "id": 48944, + "id": 49020, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48933, + "id": 49009, "mutability": "mutable", "name": "_sourceChainId", - "nameLocation": "872:14:124", + "nameLocation": "872:14:125", "nodeType": "VariableDeclaration", - "scope": 49006, - "src": "865:21:124", + "scope": 49082, + "src": "865:21:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1911,10 +1919,10 @@ "typeString": "uint32" }, "typeName": { - "id": 48932, + "id": 49008, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "865:6:124", + "src": "865:6:125", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1924,13 +1932,13 @@ }, { "constant": false, - "id": 48935, + "id": 49011, "mutability": "mutable", "name": "_sourceAddress", - "nameLocation": "904:14:124", + "nameLocation": "904:14:125", "nodeType": "VariableDeclaration", - "scope": 49006, - "src": "896:22:124", + "scope": 49082, + "src": "896:22:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1938,10 +1946,10 @@ "typeString": "address" }, "typeName": { - "id": 48934, + "id": 49010, "name": "address", "nodeType": "ElementaryTypeName", - "src": "896:7:124", + "src": "896:7:125", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1952,13 +1960,13 @@ }, { "constant": false, - "id": 48937, + "id": 49013, "mutability": "mutable", "name": "_callbackAddress", - "nameLocation": "936:16:124", + "nameLocation": "936:16:125", "nodeType": "VariableDeclaration", - "scope": 49006, - "src": "928:24:124", + "scope": 49082, + "src": "928:24:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1966,10 +1974,10 @@ "typeString": "address" }, "typeName": { - "id": 48936, + "id": 49012, "name": "address", "nodeType": "ElementaryTypeName", - "src": "928:7:124", + "src": "928:7:125", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1980,13 +1988,13 @@ }, { "constant": false, - "id": 48939, + "id": 49015, "mutability": "mutable", "name": "_eventSig", - "nameLocation": "970:9:124", + "nameLocation": "970:9:125", "nodeType": "VariableDeclaration", - "scope": 49006, - "src": "962:17:124", + "scope": 49082, + "src": "962:17:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1994,10 +2002,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 48938, + "id": 49014, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "962:7:124", + "src": "962:7:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2007,13 +2015,13 @@ }, { "constant": false, - "id": 48941, + "id": 49017, "mutability": "mutable", "name": "_startSlot", - "nameLocation": "996:10:124", + "nameLocation": "996:10:125", "nodeType": "VariableDeclaration", - "scope": 49006, - "src": "989:17:124", + "scope": 49082, + "src": "989:17:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2021,10 +2029,10 @@ "typeString": "uint64" }, "typeName": { - "id": 48940, + "id": 49016, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "989:6:124", + "src": "989:6:125", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -2034,13 +2042,13 @@ }, { "constant": false, - "id": 48943, + "id": 49019, "mutability": "mutable", "name": "_endSlot", - "nameLocation": "1023:8:124", + "nameLocation": "1023:8:125", "nodeType": "VariableDeclaration", - "scope": 49006, - "src": "1016:15:124", + "scope": 49082, + "src": "1016:15:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2048,10 +2056,10 @@ "typeString": "uint64" }, "typeName": { - "id": 48942, + "id": 49018, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "1016:6:124", + "src": "1016:6:125", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -2060,21 +2068,21 @@ "visibility": "internal" } ], - "src": "855:182:124" + "src": "855:182:125" }, "returnParameters": { - "id": 48947, + "id": 49023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48946, + "id": 49022, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 49006, - "src": "1056:7:124", + "scope": 49082, + "src": "1056:7:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2082,10 +2090,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 48945, + "id": 49021, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1056:7:124", + "src": "1056:7:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2094,89 +2102,89 @@ "visibility": "internal" } ], - "src": "1055:9:124" + "src": "1055:9:125" }, - "scope": 49066, + "scope": 49142, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 49065, + "id": 49141, "nodeType": "FunctionDefinition", - "src": "1888:644:124", + "src": "1888:644:125", "nodes": [], "body": { - "id": 49064, + "id": 49140, "nodeType": "Block", - "src": "2022:510:124", + "src": "2022:510:125", "nodes": [], "statements": [ { "assignments": [ - 49020 + 49096 ], "declarations": [ { "constant": false, - "id": 49020, + "id": 49096, "mutability": "mutable", "name": "subscription", - "nameLocation": "2052:12:124", + "nameLocation": "2052:12:125", "nodeType": "VariableDeclaration", - "scope": 49064, - "src": "2032:32:124", + "scope": 49140, + "src": "2032:32:125", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription" }, "typeName": { - "id": 49019, + "id": 49095, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49018, + "id": 49094, "name": "Subscription", "nameLocations": [ - "2032:12:124" + "2032:12:125" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49080, - "src": "2032:12:124" + "referencedDeclaration": 49156, + "src": "2032:12:125" }, - "referencedDeclaration": 49080, - "src": "2032:12:124", + "referencedDeclaration": 49156, + "src": "2032:12:125", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_storage_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_storage_ptr", "typeString": "struct Subscription" } }, "visibility": "internal" } ], - "id": 49028, + "id": 49104, "initialValue": { "arguments": [ { - "id": 49022, + "id": 49098, "name": "_sourceChainId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49009, - "src": "2092:14:124", + "referencedDeclaration": 49085, + "src": "2092:14:125", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, { - "id": 49023, + "id": 49099, "name": "_sourceAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49011, - "src": "2108:14:124", + "referencedDeclaration": 49087, + "src": "2108:14:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2184,38 +2192,38 @@ }, { "expression": { - "id": 49024, + "id": 49100, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "2124:3:124", + "src": "2124:3:125", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 49025, + "id": 49101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2128:6:124", + "memberLocation": "2128:6:125", "memberName": "sender", "nodeType": "MemberAccess", - "src": "2124:10:124", + "src": "2124:10:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 49026, + "id": 49102, "name": "_eventSig", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49013, - "src": "2136:9:124", + "referencedDeclaration": 49089, + "src": "2136:9:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2241,18 +2249,18 @@ "typeString": "bytes32" } ], - "id": 49021, + "id": 49097, "name": "Subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49080, - "src": "2079:12:124", + "referencedDeclaration": 49156, + "src": "2079:12:125", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Subscription_$49080_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Subscription_$49156_storage_ptr_$", "typeString": "type(struct Subscription storage pointer)" } }, - "id": 49027, + "id": 49103, "isConstant": false, "isLValue": false, "isPure": false, @@ -2261,30 +2269,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2079:67:124", + "src": "2079:67:125", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2032:114:124" + "src": "2032:114:125" }, { "assignments": [ - 49030 + 49106 ], "declarations": [ { "constant": false, - "id": 49030, + "id": 49106, "mutability": "mutable", "name": "subscriptionId", - "nameLocation": "2164:14:124", + "nameLocation": "2164:14:125", "nodeType": "VariableDeclaration", - "scope": 49064, - "src": "2156:22:124", + "scope": 49140, + "src": "2156:22:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2292,10 +2300,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 49029, + "id": 49105, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2156:7:124", + "src": "2156:7:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2304,20 +2312,20 @@ "visibility": "internal" } ], - "id": 49037, + "id": 49113, "initialValue": { "arguments": [ { "arguments": [ { - "id": 49034, + "id": 49110, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49020, - "src": "2202:12:124", + "referencedDeclaration": 49096, + "src": "2202:12:125", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription memory" } } @@ -2325,37 +2333,37 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription memory" } ], "expression": { - "id": 49032, + "id": 49108, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "2191:3:124", + "src": "2191:3:125", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 49033, + "id": 49109, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2195:6:124", + "memberLocation": "2195:6:125", "memberName": "encode", "nodeType": "MemberAccess", - "src": "2191:10:124", + "src": "2191:10:125", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 49035, + "id": 49111, "isConstant": false, "isLValue": false, "isPure": false, @@ -2364,7 +2372,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2191:24:124", + "src": "2191:24:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -2379,18 +2387,18 @@ "typeString": "bytes memory" } ], - "id": 49031, + "id": 49107, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "2181:9:124", + "src": "2181:9:125", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 49036, + "id": 49112, "isConstant": false, "isLValue": false, "isPure": false, @@ -2399,7 +2407,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2181:35:124", + "src": "2181:35:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2407,40 +2415,40 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2156:60:124" + "src": "2156:60:125" }, { "condition": { "commonType": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" }, - "id": 49043, + "id": 49119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 49038, + "id": 49114, "name": "subscriptions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48472, - "src": "2231:13:124", + "referencedDeclaration": 48546, + "src": "2231:13:125", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49071_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49147_$", "typeString": "mapping(bytes32 => enum SubscriptionStatus)" } }, - "id": 49040, + "id": 49116, "indexExpression": { - "id": 49039, + "id": 49115, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49030, - "src": "2245:14:124", + "referencedDeclaration": 49106, + "src": "2245:14:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2451,9 +2459,9 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2231:29:124", + "src": "2231:29:125", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" } }, @@ -2461,56 +2469,56 @@ "operator": "==", "rightExpression": { "expression": { - "id": 49041, + "id": 49117, "name": "SubscriptionStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49071, - "src": "2264:18:124", + "referencedDeclaration": 49147, + "src": "2264:18:125", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49071_$", + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49147_$", "typeString": "type(enum SubscriptionStatus)" } }, - "id": 49042, + "id": 49118, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2283:11:124", + "memberLocation": "2283:11:125", "memberName": "UNSUBSCIBED", "nodeType": "MemberAccess", - "referencedDeclaration": 49069, - "src": "2264:30:124", + "referencedDeclaration": 49145, + "src": "2264:30:125", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" } }, - "src": "2231:63:124", + "src": "2231:63:125", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 49049, + "id": 49125, "nodeType": "IfStatement", - "src": "2227:138:124", + "src": "2227:138:125", "trueBody": { - "id": 49048, + "id": 49124, "nodeType": "Block", - "src": "2296:69:124", + "src": "2296:69:125", "statements": [ { "errorCall": { "arguments": [ { - "id": 49045, + "id": 49121, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49030, - "src": "2339:14:124", + "referencedDeclaration": 49106, + "src": "2339:14:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2524,18 +2532,18 @@ "typeString": "bytes32" } ], - "id": 49044, + "id": 49120, "name": "SubscriptionNotActive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48924, - "src": "2317:21:124", + "referencedDeclaration": 49000, + "src": "2317:21:125", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", "typeString": "function (bytes32) pure" } }, - "id": 49046, + "id": 49122, "isConstant": false, "isLValue": false, "isPure": false, @@ -2544,48 +2552,48 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2317:37:124", + "src": "2317:37:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 49047, + "id": 49123, "nodeType": "RevertStatement", - "src": "2310:44:124" + "src": "2310:44:125" } ] } }, { "expression": { - "id": 49055, + "id": 49131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 49050, + "id": 49126, "name": "subscriptions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48472, - "src": "2374:13:124", + "referencedDeclaration": 48546, + "src": "2374:13:125", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49071_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49147_$", "typeString": "mapping(bytes32 => enum SubscriptionStatus)" } }, - "id": 49052, + "id": 49128, "indexExpression": { - "id": 49051, + "id": 49127, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49030, - "src": "2388:14:124", + "referencedDeclaration": 49106, + "src": "2388:14:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2596,9 +2604,9 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2374:29:124", + "src": "2374:29:125", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" } }, @@ -2606,66 +2614,66 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 49053, + "id": 49129, "name": "SubscriptionStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49071, - "src": "2406:18:124", + "referencedDeclaration": 49147, + "src": "2406:18:125", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49071_$", + "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49147_$", "typeString": "type(enum SubscriptionStatus)" } }, - "id": 49054, + "id": 49130, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2425:11:124", + "memberLocation": "2425:11:125", "memberName": "UNSUBSCIBED", "nodeType": "MemberAccess", - "referencedDeclaration": 49069, - "src": "2406:30:124", + "referencedDeclaration": 49145, + "src": "2406:30:125", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" } }, - "src": "2374:62:124", + "src": "2374:62:125", "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49071", + "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", "typeString": "enum SubscriptionStatus" } }, - "id": 49056, + "id": 49132, "nodeType": "ExpressionStatement", - "src": "2374:62:124" + "src": "2374:62:125" }, { "eventCall": { "arguments": [ { - "id": 49058, + "id": 49134, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49030, - "src": "2464:14:124", + "referencedDeclaration": 49106, + "src": "2464:14:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 49059, + "id": 49135, "name": "subscription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49020, - "src": "2480:12:124", + "referencedDeclaration": 49096, + "src": "2480:12:125", "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription memory" } } @@ -2677,22 +2685,22 @@ "typeString": "bytes32" }, { - "typeIdentifier": "t_struct$_Subscription_$49080_memory_ptr", + "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", "typeString": "struct Subscription memory" } ], - "id": 49057, + "id": 49133, "name": "Unsubscribe", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49100, - "src": "2452:11:124", + "referencedDeclaration": 49176, + "src": "2452:11:125", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49080_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49156_memory_ptr_$returns$__$", "typeString": "function (bytes32,struct Subscription memory)" } }, - "id": 49060, + "id": 49136, "isConstant": false, "isLValue": false, "isPure": false, @@ -2701,44 +2709,44 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2452:41:124", + "src": "2452:41:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 49061, + "id": 49137, "nodeType": "EmitStatement", - "src": "2447:46:124" + "src": "2447:46:125" }, { "expression": { - "id": 49062, + "id": 49138, "name": "subscriptionId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49030, - "src": "2511:14:124", + "referencedDeclaration": 49106, + "src": "2511:14:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 49017, - "id": 49063, + "functionReturnParameters": 49093, + "id": 49139, "nodeType": "Return", - "src": "2504:21:124" + "src": "2504:21:125" } ] }, "baseFunctions": [ - 49128 + 49204 ], "documentation": { - "id": 49007, + "id": 49083, "nodeType": "StructuredDocumentation", - "src": "1803:80:124", + "src": "1803:80:125", "text": "@dev Only the original callbackAddress contract will be able to unsubscribe." }, "functionSelector": "97229719", @@ -2746,20 +2754,20 @@ "kind": "function", "modifiers": [], "name": "unsubscribe", - "nameLocation": "1897:11:124", + "nameLocation": "1897:11:125", "parameters": { - "id": 49014, + "id": 49090, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49009, + "id": 49085, "mutability": "mutable", "name": "_sourceChainId", - "nameLocation": "1916:14:124", + "nameLocation": "1916:14:125", "nodeType": "VariableDeclaration", - "scope": 49065, - "src": "1909:21:124", + "scope": 49141, + "src": "1909:21:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2767,10 +2775,10 @@ "typeString": "uint32" }, "typeName": { - "id": 49008, + "id": 49084, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1909:6:124", + "src": "1909:6:125", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -2780,13 +2788,13 @@ }, { "constant": false, - "id": 49011, + "id": 49087, "mutability": "mutable", "name": "_sourceAddress", - "nameLocation": "1940:14:124", + "nameLocation": "1940:14:125", "nodeType": "VariableDeclaration", - "scope": 49065, - "src": "1932:22:124", + "scope": 49141, + "src": "1932:22:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2794,10 +2802,10 @@ "typeString": "address" }, "typeName": { - "id": 49010, + "id": 49086, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1932:7:124", + "src": "1932:7:125", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2808,13 +2816,13 @@ }, { "constant": false, - "id": 49013, + "id": 49089, "mutability": "mutable", "name": "_eventSig", - "nameLocation": "1964:9:124", + "nameLocation": "1964:9:125", "nodeType": "VariableDeclaration", - "scope": 49065, - "src": "1956:17:124", + "scope": 49141, + "src": "1956:17:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2822,10 +2830,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 49012, + "id": 49088, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1956:7:124", + "src": "1956:7:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2834,21 +2842,21 @@ "visibility": "internal" } ], - "src": "1908:66:124" + "src": "1908:66:125" }, "returnParameters": { - "id": 49017, + "id": 49093, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49016, + "id": 49092, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 49065, - "src": "2009:7:124", + "scope": 49141, + "src": "2009:7:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2856,10 +2864,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 49015, + "id": 49091, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2009:7:124", + "src": "2009:7:125", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2868,9 +2876,9 @@ "visibility": "internal" } ], - "src": "2008:9:124" + "src": "2008:9:125" }, - "scope": 49066, + "scope": 49142, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -2880,60 +2888,60 @@ "baseContracts": [ { "baseName": { - "id": 48913, + "id": 48989, "name": "ISubscriber", "nameLocations": [ - "367:11:124" + "367:11:125" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49129, - "src": "367:11:124" + "referencedDeclaration": 49205, + "src": "367:11:125" }, - "id": 48914, + "id": 48990, "nodeType": "InheritanceSpecifier", - "src": "367:11:124" + "src": "367:11:125" }, { "baseName": { - "id": 48915, + "id": 48991, "name": "PubSubStorage", "nameLocations": [ - "380:13:124" + "380:13:125" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48478, - "src": "380:13:124" + "referencedDeclaration": 48552, + "src": "380:13:125" }, - "id": 48916, + "id": 48992, "nodeType": "InheritanceSpecifier", - "src": "380:13:124" + "src": "380:13:125" } ], "canonicalName": "TelepathySubscriber", "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 48912, + "id": 48988, "nodeType": "StructuredDocumentation", - "src": "185:150:124", + "src": "185:150:125", "text": "@title TelepathySubscriber\n @author Succinct Labs\n @notice This allows contracts to subscribe to cross-chain events from a source contract." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 49066, - 48478, - 49129 + 49142, + 48552, + 49205 ], "name": "TelepathySubscriber", - "nameLocation": "344:19:124", - "scope": 49067, + "nameLocation": "344:19:125", + "scope": 49143, "usedErrors": [ - 48920, - 48924, - 48930 + 48996, + 49000, + 49006 ] } ] }, - "id": 124 + "id": 125 } \ No newline at end of file diff --git a/out/TelepathyValidator.sol/IBasicHomeAMB.json b/out/TelepathyValidator.sol/IBasicHomeAMB.json index 1a97a99..bee2d3c 100644 --- a/out/TelepathyValidator.sol/IBasicHomeAMB.json +++ b/out/TelepathyValidator.sol/IBasicHomeAMB.json @@ -27,7 +27,7 @@ "methodIdentifiers": { "executeAffirmation(bytes)": "e7a2c01f" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"executeAffirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"IBasicHomeAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c\",\"urls\":[\"bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde\",\"dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"executeAffirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"IBasicHomeAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -271,18 +271,18 @@ "license": "MIT" }, "src/amb/SourceAMB.sol": { - "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", "urls": [ - "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", - "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", + "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" ], "license": null }, "src/amb/TargetAMB.sol": { - "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", "urls": [ - "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", - "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", + "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" ], "license": null }, @@ -318,6 +318,14 @@ ], "license": null }, + "src/libraries/BeaconChainForks.sol": { + "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "urls": [ + "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", + "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + ], + "license": null + }, "src/libraries/MessageEncoding.sol": { "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", "urls": [ @@ -327,10 +335,10 @@ "license": null }, "src/libraries/SimpleSerialize.sol": { - "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", "urls": [ - "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", - "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", + "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" ], "license": null }, @@ -383,10 +391,10 @@ "license": null }, "src/pubsub/TelepathyPublisher.sol": { - "keccak256": "0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c", + "keccak256": "0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521", "urls": [ - "bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde", - "dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk" + "bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f", + "dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe" ], "license": null }, @@ -436,10 +444,10 @@ 31597 ], "SubscriptionReceiver": [ - 49279 + 49355 ], "TelepathyPubSub": [ - 48509 + 48583 ], "TelepathyValidator": [ 2853 @@ -469,7 +477,7 @@ "file": "src/pubsub/TelepathyPubSub.sol", "nameLocation": "-1:-1:-1", "scope": 2860, - "sourceUnit": 48510, + "sourceUnit": 48584, "symbolAliases": [ { "foreign": { @@ -477,7 +485,7 @@ "name": "TelepathyPubSub", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48509, + "referencedDeclaration": 48583, "src": "34:15:12", "typeDescriptions": {} }, @@ -495,7 +503,7 @@ "file": "src/pubsub/interfaces/SubscriptionReceiver.sol", "nameLocation": "-1:-1:-1", "scope": 2860, - "sourceUnit": 49280, + "sourceUnit": 49356, "symbolAliases": [ { "foreign": { @@ -503,7 +511,7 @@ "name": "SubscriptionReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49279, + "referencedDeclaration": 49355, "src": "98:20:12", "typeDescriptions": {} }, @@ -1458,7 +1466,7 @@ "1636:20:12" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49279, + "referencedDeclaration": 49355, "src": "1636:20:12" }, "nodeType": "ModifierInvocation", @@ -1973,10 +1981,10 @@ "name": "telepathyPubSub", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49203, + "referencedDeclaration": 49279, "src": "2162:15:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyPubSub_$48509", + "typeIdentifier": "t_contract$_TelepathyPubSub_$48583", "typeString": "contract TelepathyPubSub" } }, @@ -1988,7 +1996,7 @@ "memberLocation": "2178:9:12", "memberName": "subscribe", "nodeType": "MemberAccess", - "referencedDeclaration": 49006, + "referencedDeclaration": 49082, "src": "2162:25:12", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_address_$_t_address_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bytes32_$", @@ -3093,7 +3101,7 @@ ] }, "baseFunctions": [ - 49278 + 49354 ], "documentation": { "id": 2758, @@ -3313,7 +3321,7 @@ "547:20:12" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49279, + "referencedDeclaration": 49355, "src": "547:20:12" }, "id": 2627, @@ -3350,8 +3358,8 @@ 2853, 31597, 35292, - 49279, - 49188 + 49355, + 49264 ], "name": "TelepathyValidator", "nameLocation": "525:18:12", @@ -3361,7 +3369,7 @@ 2645, 2649, 2653, - 49200 + 49276 ] }, { diff --git a/out/TelepathyValidator.sol/TelepathyValidator.json b/out/TelepathyValidator.sol/TelepathyValidator.json index b7aaa9a..10b98c9 100644 --- a/out/TelepathyValidator.sol/TelepathyValidator.json +++ b/out/TelepathyValidator.sol/TelepathyValidator.json @@ -265,13 +265,13 @@ } ], "bytecode": { - "object": "0x6101206040523480156200001257600080fd5b5060405162000ddf38038062000ddf833981016040819052620000359162000213565b600080546001600160a01b0319166001600160a01b038916179055620000626200005c3390565b620000ab565b63ffffffff86166080526001600160a01b0380861660a0526001600160401b0380861660c052841660e0528216610100526200009e81620000fd565b50505050505050620002b2565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200010762000180565b6001600160a01b038116620001725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200017d81620000ab565b50565b6001546001600160a01b03163314620001dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000169565b565b80516001600160a01b0381168114620001f657600080fd5b919050565b80516001600160401b0381168114620001f657600080fd5b600080600080600080600060e0888a0312156200022f57600080fd5b6200023a88620001de565b9650602088015163ffffffff811681146200025457600080fd5b95506200026460408901620001de565b94506200027460608901620001fb565b93506200028460808901620001fb565b92506200029460a08901620001de565b9150620002a460c08901620001de565b905092959891949750929550565b60805160a05160c05160e05161010051610ac56200031a60003960006106230152600081816102140152818161053501526105600152600081816101ec01526104ef015260008181610186015261049201526000818161015f015261043e0152610ac56000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea264697066735822122081ae5fefe82e920bbae0235e9674a3916abbb86f6a4eb94273229f2a4b7e33b964736f6c63430008100033", - "sourceMap": "516:3107:12:-:0;;;1419:499;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;392:15:127;:51;;-1:-1:-1;;;;;;392:51:127;-1:-1:-1;;;;;392:51:127;;;;;936:32:49;955:12;719:10:68;;640:96;955:12:49;936:18;:32::i;:::-;1685:38:12::1;::::0;::::1;;::::0;-1:-1:-1;;;;;1733:37:12;;::::1;;::::0;-1:-1:-1;;;;;1780:23:12;;::::1;;::::0;1813:19;::::1;;::::0;1842:34;::::1;;::::0;1886:25:::1;1904:6:::0;1886:17:::1;:25::i;:::-;1419:499:::0;;;;;;;516:3107;;2433:187:49;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;1373:2:145;2161:73:49::1;::::0;::::1;1355:21:145::0;1412:2;1392:18;;;1385:30;1451:34;1431:18;;;1424:62;-1:-1:-1;;;1502:18:145;;;1495:36;1548:19;;2161:73:49::1;;;;;;;;;2244:28;2263:8:::0;2244:18:::1;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;1780:2:145;1414:68:49;;;1762:21:145;;;1799:18;;;1792:30;1858:34;1838:18;;;1831:62;1910:18;;1414:68:49;1578:356:145;1414:68:49;1359:130::o;14:177:145:-;93:13;;-1:-1:-1;;;;;135:31:145;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:175::-;274:13;;-1:-1:-1;;;;;316:30:145;;306:41;;296:69;;361:1;358;351:12;376:790;497:6;505;513;521;529;537;545;598:3;586:9;577:7;573:23;569:33;566:53;;;615:1;612;605:12;566:53;638:40;668:9;638:40;:::i;:::-;628:50;;721:2;710:9;706:18;700:25;765:10;758:5;754:22;747:5;744:33;734:61;;791:1;788;781:12;734:61;814:5;-1:-1:-1;838:49:145;883:2;868:18;;838:49;:::i;:::-;828:59;;906:48;950:2;939:9;935:18;906:48;:::i;:::-;896:58;;973:49;1017:3;1006:9;1002:19;973:49;:::i;:::-;963:59;;1041:50;1086:3;1075:9;1071:19;1041:50;:::i;:::-;1031:60;;1110:50;1155:3;1144:9;1140:19;1110:50;:::i;:::-;1100:60;;376:790;;;;;;;;;;:::o;1578:356::-;516:3107:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "object": "0x6101206040523480156200001257600080fd5b5060405162000ddf38038062000ddf833981016040819052620000359162000213565b600080546001600160a01b0319166001600160a01b038916179055620000626200005c3390565b620000ab565b63ffffffff86166080526001600160a01b0380861660a0526001600160401b0380861660c052841660e0528216610100526200009e81620000fd565b50505050505050620002b2565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200010762000180565b6001600160a01b038116620001725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200017d81620000ab565b50565b6001546001600160a01b03163314620001dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000169565b565b80516001600160a01b0381168114620001f657600080fd5b919050565b80516001600160401b0381168114620001f657600080fd5b600080600080600080600060e0888a0312156200022f57600080fd5b6200023a88620001de565b9650602088015163ffffffff811681146200025457600080fd5b95506200026460408901620001de565b94506200027460608901620001fb565b93506200028460808901620001fb565b92506200029460a08901620001de565b9150620002a460c08901620001de565b905092959891949750929550565b60805160a05160c05160e05161010051610ac56200031a60003960006106230152600081816102140152818161053501526105600152600081816101ec01526104ef015260008181610186015261049201526000818161015f015261043e0152610ac56000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea2646970667358221220afbd2f6b009b12f8c290dad9e0ab4548c91301fc24c48578d06b6b161b4bf3e664736f6c63430008100033", + "sourceMap": "516:3107:12:-:0;;;1419:499;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;392:15:128;:51;;-1:-1:-1;;;;;;392:51:128;-1:-1:-1;;;;;392:51:128;;;;;936:32:49;955:12;719:10:68;;640:96;955:12:49;936:18;:32::i;:::-;1685:38:12::1;::::0;::::1;;::::0;-1:-1:-1;;;;;1733:37:12;;::::1;;::::0;-1:-1:-1;;;;;1780:23:12;;::::1;;::::0;1813:19;::::1;;::::0;1842:34;::::1;;::::0;1886:25:::1;1904:6:::0;1886:17:::1;:25::i;:::-;1419:499:::0;;;;;;;516:3107;;2433:187:49;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;1373:2:146;2161:73:49::1;::::0;::::1;1355:21:146::0;1412:2;1392:18;;;1385:30;1451:34;1431:18;;;1424:62;-1:-1:-1;;;1502:18:146;;;1495:36;1548:19;;2161:73:49::1;;;;;;;;;2244:28;2263:8:::0;2244:18:::1;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;1780:2:146;1414:68:49;;;1762:21:146;;;1799:18;;;1792:30;1858:34;1838:18;;;1831:62;1910:18;;1414:68:49;1578:356:146;1414:68:49;1359:130::o;14:177:146:-;93:13;;-1:-1:-1;;;;;135:31:146;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:175::-;274:13;;-1:-1:-1;;;;;316:30:146;;306:41;;296:69;;361:1;358;351:12;376:790;497:6;505;513;521;529;537;545;598:3;586:9;577:7;573:23;569:33;566:53;;;615:1;612;605:12;566:53;638:40;668:9;638:40;:::i;:::-;628:50;;721:2;710:9;706:18;700:25;765:10;758:5;754:22;747:5;744:33;734:61;;791:1;788;781:12;734:61;814:5;-1:-1:-1;838:49:146;883:2;868:18;;838:49;:::i;:::-;828:59;;906:48;950:2;939:9;935:18;906:48;:::i;:::-;896:58;;973:49;1017:3;1006:9;1002:19;973:49;:::i;:::-;963:59;;1041:50;1086:3;1075:9;1071:19;1041:50;:::i;:::-;1031:60;;1110:50;1155:3;1144:9;1140:19;1110:50;:::i;:::-;1100:60;;376:790;;;;;;;;;;:::o;1578:356::-;516:3107:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea264697066735822122081ae5fefe82e920bbae0235e9674a3916abbb86f6a4eb94273229f2a4b7e33b964736f6c63430008100033", - "sourceMap": "516:3107:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2059:353;;;:::i;:::-;;;160:25:145;;;148:2;133:18;2059:353:12;;;;;;;;1346:29;;;;;;299:38:127;;;;;-1:-1:-1;;;;;299:38:127;;;;;;-1:-1:-1;;;;;385:32:145;;;367:51;;355:2;340:18;299:38:127;196:228:145;1831:101:49;;;:::i;:::-;;1201:85;1273:6;;-1:-1:-1;;;;;1273:6:49;1201:85;;1924:129:12;;;:::i;456:572:127:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3809:33:145;;;3791:52;;3779:2;3764:18;456:572:127;3647:202:145;2081:198:49;;;;;;:::i;:::-;;:::i;2059:353:12:-;2126:7;1094:13:49;:11;:13::i;:::-;2162:15:12::1;::::0;:212:::1;::::0;-1:-1:-1;;;2162:212:12;;4356:10:145;2201:21:12::1;4344:23:145::0;2162:212:12::1;::::0;::::1;4326:42:145::0;2236:20:12::1;-1:-1:-1::0;;;;;4442:15:145;;;4422:18;;;4415:43;2278:4:12::1;4474:18:145::0;;;4467:43;1095:53:12::1;4526:18:145::0;;;4519:34;4572:18;2332:10:12::1;4627:15:145::0;;4606:19;;;4599:44;2356:8:12::1;4680:15:145::0;4659:19;;;4652:44;2162:15:12;;::::1;::::0;:25:::1;::::0;4298:19:145;;2162:212:12::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2145:14;:229:::0;;;;-1:-1:-1;2059:353:12;:::o;1831:101:49:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1924:129:12:-;1094:13:49;:11;:13::i;:::-;2020:26:12::1;::::0;;-1:-1:-1;;1990:56:12;::::1;2020:26;::::0;;::::1;2019:27;1990:56;::::0;;1924:129::o;456:572:127:-;702:6;746:15;;-1:-1:-1;;;;;746:15:127;724:10;:38;720:110;;785:34;;-1:-1:-1;;;785:34:127;;808:10;785:34;;;367:51:145;340:18;;785:34:127;;;;;;;;720:110;839:121;870:15;887:14;903;919:5;926:12;940:10;839:17;:121::i;:::-;-1:-1:-1;;;;456:572:127;;;;;;;;:::o;2081:198:49:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;5098:2:145;2161:73:49::1;::::0;::::1;5080:21:145::0;5137:2;5117:18;;;5110:30;5176:34;5156:18;;;5149:62;-1:-1:-1;;;5227:18:145;;;5220:36;5273:19;;2161:73:49::1;4896:402:145::0;2161:73:49::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;5505:2:145;1414:68:49;;;5487:21:145;;;5524:18;;;5517:30;5583:34;5563:18;;;5556:62;5635:18;;1414:68:49;5303:356:145;2433:187:49;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2636:985:12:-;2907:21;2889:39;;:14;:39;;;2885:111;;2951:34;;-1:-1:-1;;;2951:34:12;;5838:10:145;5826:23;;2951:34:12;;;5808:42:145;5781:18;;2951:34:12;5664:192:145;2885:111:12;3028:20;-1:-1:-1;;;;;3010:38:12;:14;-1:-1:-1;;;;;3010:38:12;;3006:112;;3071:36;;-1:-1:-1;;;3071:36:12;;-1:-1:-1;;;;;385:32:145;;3071:36:12;;;367:51:145;340:18;;3071:36:12;196:228:145;3006:112:12;3140:10;3132:18;;:5;:18;;;:57;;;-1:-1:-1;3155:13:12;:8;:13;;;;;:33;;;3180:8;3172:16;;:5;:16;;;3155:33;3128:113;;;3212:18;;-1:-1:-1;;;3212:18:12;;6035::145;6023:31;;3212:18:12;;;6005:50:145;5978:18;;3212::12;5861:200:145;3128:113:12;3274:14;;3255:15;:33;3251:109;;3311:38;;-1:-1:-1;;;3311:38:12;;;;;160:25:145;;;133:18;;3311:38:12;14:177:145;3251:109:12;3371:19;3392:17;3424:9;3413:37;;;;;;;;;;;;:::i;:::-;3465:26;;3370:80;;-1:-1:-1;3370:80:12;-1:-1:-1;3465:26:12;;3461:90;;;3507:33;;-1:-1:-1;;;3507:33:12;;-1:-1:-1;;;;;3507:8:12;:27;;;;:33;;3535:4;;3507:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3461:90;3585:11;3597:1;3585:14;;;;;;;;:::i;:::-;;;;;;;3566:48;3601:6;3609:4;3566:48;;;;;;;:::i;:::-;;;;;;;;2875:746;;2636:985;;;;;;:::o;637:173:145:-;705:20;;-1:-1:-1;;;;;754:31:145;;744:42;;734:70;;800:1;797;790:12;734:70;637:173;;;:::o;815:127::-;876:10;871:3;867:20;864:1;857:31;907:4;904:1;897:15;931:4;928:1;921:15;947:275;1018:2;1012:9;1083:2;1064:13;;-1:-1:-1;;1060:27:145;1048:40;;1118:18;1103:34;;1139:22;;;1100:62;1097:88;;;1165:18;;:::i;:::-;1201:2;1194:22;947:275;;-1:-1:-1;947:275:145:o;1227:712::-;1281:5;1334:3;1327:4;1319:6;1315:17;1311:27;1301:55;;1352:1;1349;1342:12;1301:55;1388:6;1375:20;1414:4;1437:18;1433:2;1430:26;1427:52;;;1459:18;;:::i;:::-;1505:2;1502:1;1498:10;1528:28;1552:2;1548;1544:11;1528:28;:::i;:::-;1590:15;;;1660;;;1656:24;;;1621:12;;;;1692:15;;;1689:35;;;1720:1;1717;1710:12;1689:35;1756:2;1748:6;1744:15;1733:26;;1768:142;1784:6;1779:3;1776:15;1768:142;;;1850:17;;1838:30;;1801:12;;;;1888;;;;1768:142;;;1928:5;1227:712;-1:-1:-1;;;;;;;1227:712:145:o;1944:186::-;1992:4;2025:18;2017:6;2014:30;2011:56;;;2047:18;;:::i;:::-;-1:-1:-1;2113:2:145;2092:15;-1:-1:-1;;2088:29:145;2119:4;2084:40;;1944:186::o;2135:462::-;2177:5;2230:3;2223:4;2215:6;2211:17;2207:27;2197:55;;2248:1;2245;2238:12;2197:55;2284:6;2271:20;2315:48;2331:31;2359:2;2331:31;:::i;:::-;2315:48;:::i;:::-;2388:2;2379:7;2372:19;2434:3;2427:4;2422:2;2414:6;2410:15;2406:26;2403:35;2400:55;;;2451:1;2448;2441:12;2400:55;2516:2;2509:4;2501:6;2497:17;2490:4;2481:7;2477:18;2464:55;2564:1;2539:16;;;2557:4;2535:27;2528:38;;;;2543:7;2135:462;-1:-1:-1;;;2135:462:145:o;2602:1040::-;2738:6;2746;2754;2762;2770;2778;2831:3;2819:9;2810:7;2806:23;2802:33;2799:53;;;2848:1;2845;2838:12;2799:53;2884:9;2871:23;2861:33;;2944:2;2933:9;2929:18;2916:32;2988:10;2981:5;2977:22;2970:5;2967:33;2957:61;;3014:1;3011;3004:12;2957:61;3037:5;-1:-1:-1;3061:38:145;3095:2;3080:18;;3061:38;:::i;:::-;3051:48;;3151:2;3140:9;3136:18;3123:32;3174:18;3236:2;3227:7;3223:16;3214:7;3211:29;3201:57;;3254:1;3251;3244:12;3201:57;3277:7;;-1:-1:-1;3335:3:145;3320:19;;3307:33;;3352:14;;;3349:34;;;3379:1;3376;3369:12;3349:34;3402:61;3455:7;3446:6;3435:9;3431:22;3402:61;:::i;:::-;3392:71;;3516:3;3505:9;3501:19;3488:33;3472:49;;3546:2;3536:8;3533:16;3530:36;;;3562:1;3559;3552:12;3530:36;;3585:51;3628:7;3617:8;3606:9;3602:24;3585:51;:::i;:::-;3575:61;;;2602:1040;;;;;;;;:::o;3854:186::-;3913:6;3966:2;3954:9;3945:7;3941:23;3937:32;3934:52;;;3982:1;3979;3972:12;3934:52;4005:29;4024:9;4005:29;:::i;:::-;3995:39;3854:186;-1:-1:-1;;;3854:186:145:o;4707:184::-;4777:6;4830:2;4818:9;4809:7;4805:23;4801:32;4798:52;;;4846:1;4843;4836:12;4798:52;-1:-1:-1;4869:16:145;;4707:184;-1:-1:-1;4707:184:145:o;6066:250::-;6151:1;6161:113;6175:6;6172:1;6169:13;6161:113;;;6251:11;;;6245:18;6232:11;;;6225:39;6197:2;6190:10;6161:113;;;-1:-1:-1;;6308:1:145;6290:16;;6283:27;6066:250::o;6321:441::-;6374:5;6427:3;6420:4;6412:6;6408:17;6404:27;6394:55;;6445:1;6442;6435:12;6394:55;6474:6;6468:13;6505:48;6521:31;6549:2;6521:31;:::i;6505:48::-;6578:2;6569:7;6562:19;6624:3;6617:4;6612:2;6604:6;6600:15;6596:26;6593:35;6590:55;;;6641:1;6638;6631:12;6590:55;6654:77;6728:2;6721:4;6712:7;6708:18;6701:4;6693:6;6689:17;6654:77;:::i;:::-;6749:7;6321:441;-1:-1:-1;;;;6321:441:145:o;6767:558::-;6864:6;6872;6925:2;6913:9;6904:7;6900:23;6896:32;6893:52;;;6941:1;6938;6931:12;6893:52;6974:9;6968:16;7003:18;7044:2;7036:6;7033:14;7030:34;;;7060:1;7057;7050:12;7030:34;7083:60;7135:7;7126:6;7115:9;7111:22;7083:60;:::i;:::-;7073:70;;7189:2;7178:9;7174:18;7168:25;7152:41;;7218:2;7208:8;7205:16;7202:36;;;7234:1;7231;7224:12;7202:36;;7257:62;7311:7;7300:8;7289:9;7285:24;7257:62;:::i;:::-;7247:72;;;6767:558;;;;;:::o;7330:270::-;7371:3;7409:5;7403:12;7436:6;7431:3;7424:19;7452:76;7521:6;7514:4;7509:3;7505:14;7498:4;7491:5;7487:16;7452:76;:::i;:::-;7582:2;7561:15;-1:-1:-1;;7557:29:145;7548:39;;;;7589:4;7544:50;;7330:270;-1:-1:-1;;7330:270:145:o;7605:217::-;7752:2;7741:9;7734:21;7715:4;7772:44;7812:2;7801:9;7797:18;7789:6;7772:44;:::i;7827:127::-;7888:10;7883:3;7879:20;7876:1;7869:31;7919:4;7916:1;7909:15;7943:4;7940:1;7933:15;7959:377;8152:2;8141:9;8134:21;8115:4;8178:44;8218:2;8207:9;8203:18;8195:6;8178:44;:::i;:::-;8270:9;8262:6;8258:22;8253:2;8242:9;8238:18;8231:50;8298:32;8323:6;8315;8298:32;:::i;:::-;8290:40;7959:377;-1:-1:-1;;;;;7959:377:145:o", + "object": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea2646970667358221220afbd2f6b009b12f8c290dad9e0ab4548c91301fc24c48578d06b6b161b4bf3e664736f6c63430008100033", + "sourceMap": "516:3107:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2059:353;;;:::i;:::-;;;160:25:146;;;148:2;133:18;2059:353:12;;;;;;;;1346:29;;;;;;299:38:128;;;;;-1:-1:-1;;;;;299:38:128;;;;;;-1:-1:-1;;;;;385:32:146;;;367:51;;355:2;340:18;299:38:128;196:228:146;1831:101:49;;;:::i;:::-;;1201:85;1273:6;;-1:-1:-1;;;;;1273:6:49;1201:85;;1924:129:12;;;:::i;456:572:128:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3809:33:146;;;3791:52;;3779:2;3764:18;456:572:128;3647:202:146;2081:198:49;;;;;;:::i;:::-;;:::i;2059:353:12:-;2126:7;1094:13:49;:11;:13::i;:::-;2162:15:12::1;::::0;:212:::1;::::0;-1:-1:-1;;;2162:212:12;;4356:10:146;2201:21:12::1;4344:23:146::0;2162:212:12::1;::::0;::::1;4326:42:146::0;2236:20:12::1;-1:-1:-1::0;;;;;4442:15:146;;;4422:18;;;4415:43;2278:4:12::1;4474:18:146::0;;;4467:43;1095:53:12::1;4526:18:146::0;;;4519:34;4572:18;2332:10:12::1;4627:15:146::0;;4606:19;;;4599:44;2356:8:12::1;4680:15:146::0;4659:19;;;4652:44;2162:15:12;;::::1;::::0;:25:::1;::::0;4298:19:146;;2162:212:12::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2145:14;:229:::0;;;;-1:-1:-1;2059:353:12;:::o;1831:101:49:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1924:129:12:-;1094:13:49;:11;:13::i;:::-;2020:26:12::1;::::0;;-1:-1:-1;;1990:56:12;::::1;2020:26;::::0;;::::1;2019:27;1990:56;::::0;;1924:129::o;456:572:128:-;702:6;746:15;;-1:-1:-1;;;;;746:15:128;724:10;:38;720:110;;785:34;;-1:-1:-1;;;785:34:128;;808:10;785:34;;;367:51:146;340:18;;785:34:128;;;;;;;;720:110;839:121;870:15;887:14;903;919:5;926:12;940:10;839:17;:121::i;:::-;-1:-1:-1;;;;456:572:128;;;;;;;;:::o;2081:198:49:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;5098:2:146;2161:73:49::1;::::0;::::1;5080:21:146::0;5137:2;5117:18;;;5110:30;5176:34;5156:18;;;5149:62;-1:-1:-1;;;5227:18:146;;;5220:36;5273:19;;2161:73:49::1;4896:402:146::0;2161:73:49::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;5505:2:146;1414:68:49;;;5487:21:146;;;5524:18;;;5517:30;5583:34;5563:18;;;5556:62;5635:18;;1414:68:49;5303:356:146;2433:187:49;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2636:985:12:-;2907:21;2889:39;;:14;:39;;;2885:111;;2951:34;;-1:-1:-1;;;2951:34:12;;5838:10:146;5826:23;;2951:34:12;;;5808:42:146;5781:18;;2951:34:12;5664:192:146;2885:111:12;3028:20;-1:-1:-1;;;;;3010:38:12;:14;-1:-1:-1;;;;;3010:38:12;;3006:112;;3071:36;;-1:-1:-1;;;3071:36:12;;-1:-1:-1;;;;;385:32:146;;3071:36:12;;;367:51:146;340:18;;3071:36:12;196:228:146;3006:112:12;3140:10;3132:18;;:5;:18;;;:57;;;-1:-1:-1;3155:13:12;:8;:13;;;;;:33;;;3180:8;3172:16;;:5;:16;;;3155:33;3128:113;;;3212:18;;-1:-1:-1;;;3212:18:12;;6035::146;6023:31;;3212:18:12;;;6005:50:146;5978:18;;3212::12;5861:200:146;3128:113:12;3274:14;;3255:15;:33;3251:109;;3311:38;;-1:-1:-1;;;3311:38:12;;;;;160:25:146;;;133:18;;3311:38:12;14:177:146;3251:109:12;3371:19;3392:17;3424:9;3413:37;;;;;;;;;;;;:::i;:::-;3465:26;;3370:80;;-1:-1:-1;3370:80:12;-1:-1:-1;3465:26:12;;3461:90;;;3507:33;;-1:-1:-1;;;3507:33:12;;-1:-1:-1;;;;;3507:8:12;:27;;;;:33;;3535:4;;3507:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3461:90;3585:11;3597:1;3585:14;;;;;;;;:::i;:::-;;;;;;;3566:48;3601:6;3609:4;3566:48;;;;;;;:::i;:::-;;;;;;;;2875:746;;2636:985;;;;;;:::o;637:173:146:-;705:20;;-1:-1:-1;;;;;754:31:146;;744:42;;734:70;;800:1;797;790:12;734:70;637:173;;;:::o;815:127::-;876:10;871:3;867:20;864:1;857:31;907:4;904:1;897:15;931:4;928:1;921:15;947:275;1018:2;1012:9;1083:2;1064:13;;-1:-1:-1;;1060:27:146;1048:40;;1118:18;1103:34;;1139:22;;;1100:62;1097:88;;;1165:18;;:::i;:::-;1201:2;1194:22;947:275;;-1:-1:-1;947:275:146:o;1227:712::-;1281:5;1334:3;1327:4;1319:6;1315:17;1311:27;1301:55;;1352:1;1349;1342:12;1301:55;1388:6;1375:20;1414:4;1437:18;1433:2;1430:26;1427:52;;;1459:18;;:::i;:::-;1505:2;1502:1;1498:10;1528:28;1552:2;1548;1544:11;1528:28;:::i;:::-;1590:15;;;1660;;;1656:24;;;1621:12;;;;1692:15;;;1689:35;;;1720:1;1717;1710:12;1689:35;1756:2;1748:6;1744:15;1733:26;;1768:142;1784:6;1779:3;1776:15;1768:142;;;1850:17;;1838:30;;1801:12;;;;1888;;;;1768:142;;;1928:5;1227:712;-1:-1:-1;;;;;;;1227:712:146:o;1944:186::-;1992:4;2025:18;2017:6;2014:30;2011:56;;;2047:18;;:::i;:::-;-1:-1:-1;2113:2:146;2092:15;-1:-1:-1;;2088:29:146;2119:4;2084:40;;1944:186::o;2135:462::-;2177:5;2230:3;2223:4;2215:6;2211:17;2207:27;2197:55;;2248:1;2245;2238:12;2197:55;2284:6;2271:20;2315:48;2331:31;2359:2;2331:31;:::i;:::-;2315:48;:::i;:::-;2388:2;2379:7;2372:19;2434:3;2427:4;2422:2;2414:6;2410:15;2406:26;2403:35;2400:55;;;2451:1;2448;2441:12;2400:55;2516:2;2509:4;2501:6;2497:17;2490:4;2481:7;2477:18;2464:55;2564:1;2539:16;;;2557:4;2535:27;2528:38;;;;2543:7;2135:462;-1:-1:-1;;;2135:462:146:o;2602:1040::-;2738:6;2746;2754;2762;2770;2778;2831:3;2819:9;2810:7;2806:23;2802:33;2799:53;;;2848:1;2845;2838:12;2799:53;2884:9;2871:23;2861:33;;2944:2;2933:9;2929:18;2916:32;2988:10;2981:5;2977:22;2970:5;2967:33;2957:61;;3014:1;3011;3004:12;2957:61;3037:5;-1:-1:-1;3061:38:146;3095:2;3080:18;;3061:38;:::i;:::-;3051:48;;3151:2;3140:9;3136:18;3123:32;3174:18;3236:2;3227:7;3223:16;3214:7;3211:29;3201:57;;3254:1;3251;3244:12;3201:57;3277:7;;-1:-1:-1;3335:3:146;3320:19;;3307:33;;3352:14;;;3349:34;;;3379:1;3376;3369:12;3349:34;3402:61;3455:7;3446:6;3435:9;3431:22;3402:61;:::i;:::-;3392:71;;3516:3;3505:9;3501:19;3488:33;3472:49;;3546:2;3536:8;3533:16;3530:36;;;3562:1;3559;3552:12;3530:36;;3585:51;3628:7;3617:8;3606:9;3602:24;3585:51;:::i;:::-;3575:61;;;2602:1040;;;;;;;;:::o;3854:186::-;3913:6;3966:2;3954:9;3945:7;3941:23;3937:32;3934:52;;;3982:1;3979;3972:12;3934:52;4005:29;4024:9;4005:29;:::i;:::-;3995:39;3854:186;-1:-1:-1;;;3854:186:146:o;4707:184::-;4777:6;4830:2;4818:9;4809:7;4805:23;4801:32;4798:52;;;4846:1;4843;4836:12;4798:52;-1:-1:-1;4869:16:146;;4707:184;-1:-1:-1;4707:184:146:o;6066:250::-;6151:1;6161:113;6175:6;6172:1;6169:13;6161:113;;;6251:11;;;6245:18;6232:11;;;6225:39;6197:2;6190:10;6161:113;;;-1:-1:-1;;6308:1:146;6290:16;;6283:27;6066:250::o;6321:441::-;6374:5;6427:3;6420:4;6412:6;6408:17;6404:27;6394:55;;6445:1;6442;6435:12;6394:55;6474:6;6468:13;6505:48;6521:31;6549:2;6521:31;:::i;6505:48::-;6578:2;6569:7;6562:19;6624:3;6617:4;6612:2;6604:6;6600:15;6596:26;6593:35;6590:55;;;6641:1;6638;6631:12;6590:55;6654:77;6728:2;6721:4;6712:7;6708:18;6701:4;6693:6;6689:17;6654:77;:::i;:::-;6749:7;6321:441;-1:-1:-1;;;;6321:441:146:o;6767:558::-;6864:6;6872;6925:2;6913:9;6904:7;6900:23;6896:32;6893:52;;;6941:1;6938;6931:12;6893:52;6974:9;6968:16;7003:18;7044:2;7036:6;7033:14;7030:34;;;7060:1;7057;7050:12;7030:34;7083:60;7135:7;7126:6;7115:9;7111:22;7083:60;:::i;:::-;7073:70;;7189:2;7178:9;7174:18;7168:25;7152:41;;7218:2;7208:8;7205:16;7202:36;;;7234:1;7231;7224:12;7202:36;;7257:62;7311:7;7300:8;7289:9;7285:24;7257:62;:::i;:::-;7247:72;;;6767:558;;;;;:::o;7330:270::-;7371:3;7409:5;7403:12;7436:6;7431:3;7424:19;7452:76;7521:6;7514:4;7509:3;7505:14;7498:4;7491:5;7487:16;7452:76;:::i;:::-;7582:2;7561:15;-1:-1:-1;;7557:29:146;7548:39;;;;7589:4;7544:50;;7330:270;-1:-1:-1;;7330:270:146:o;7605:217::-;7752:2;7741:9;7734:21;7715:4;7772:44;7812:2;7801:9;7797:18;7789:6;7772:44;:::i;7827:127::-;7888:10;7883:3;7879:20;7876:1;7869:31;7919:4;7916:1;7909:15;7943:4;7940:1;7933:15;7959:377;8152:2;8141:9;8134:21;8115:4;8178:44;8218:2;8207:9;8203:18;8195:6;8178:44;:::i;:::-;8270:9;8262:6;8258:22;8253:2;8242:9;8238:18;8231:50;8298:32;8323:6;8315;8298:32;:::i;:::-;8290:40;7959:377;-1:-1:-1;;;;;7959:377:146:o", "linkReferences": {}, "immutableReferences": { "2661": [ @@ -336,7 +336,7 @@ "toggleExecuteAffirmations()": "a27c0863", "transferOwnership(address)": "f2fde38b" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyPubSub\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_homeAMB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"}],\"name\":\"InvalidSourceAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"}],\"name\":\"InvalidSourceChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubscriptionId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"NotFromTelepathyPubSub\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"AffirmationHandled\",\"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\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_subscriptionId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[]\",\"name\":\"_eventTopics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"_eventdata\",\"type\":\"bytes\"}],\"name\":\"handlePublish\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscribeToAffirmationEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscriptionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"telepathyPubSub\",\"outputs\":[{\"internalType\":\"contract TelepathyPubSub\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleExecuteAffirmations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"AFFIRMATION_EVENT_SIG\":{\"details\":\"Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData) where the encodedData is the ABI encoded message from the Foreign AMB.\"}},\"title\":\"TelepathyValidator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A validator for the ETH (Foreign) -> Gnosis (Home) bridge that relies on the Telepathy Protocol for proof of consensus in verifying the UserRequestForAffirmation event was emitted on Ethereum.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"TelepathyValidator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21\",\"urls\":[\"bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123\",\"dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb\",\"urls\":[\"bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83\",\"dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c\",\"urls\":[\"bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3\",\"dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c\",\"urls\":[\"bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde\",\"dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyPubSub\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_homeAMB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"}],\"name\":\"InvalidSourceAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"}],\"name\":\"InvalidSourceChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubscriptionId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"NotFromTelepathyPubSub\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"AffirmationHandled\",\"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\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_subscriptionId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[]\",\"name\":\"_eventTopics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"_eventdata\",\"type\":\"bytes\"}],\"name\":\"handlePublish\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscribeToAffirmationEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscriptionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"telepathyPubSub\",\"outputs\":[{\"internalType\":\"contract TelepathyPubSub\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleExecuteAffirmations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"AFFIRMATION_EVENT_SIG\":{\"details\":\"Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData) where the encodedData is the ABI encoded message from the Foreign AMB.\"}},\"title\":\"TelepathyValidator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A validator for the ETH (Foreign) -> Gnosis (Home) bridge that relies on the Telepathy Protocol for proof of consensus in verifying the UserRequestForAffirmation event was emitted on Ethereum.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"TelepathyValidator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -838,18 +838,18 @@ "license": "MIT" }, "src/amb/SourceAMB.sol": { - "keccak256": "0xb73208543250cb11ae7ba4c9824c401cde0c5d8f8161dcb82baaa7fe11714f21", + "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", "urls": [ - "bzz-raw://cbb905ee93085c208a699e6cade2bc5a1cffdd82c61a9789555bcac9e837c123", - "dweb:/ipfs/QmVYsTN84vsUyEqN6JJY6Y1GDzMk6EAbprEQCmPQt7hgUH" + "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", + "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" ], "license": null }, "src/amb/TargetAMB.sol": { - "keccak256": "0xe068fc72ec7110beab65bb7e0479e0930c1e9558b92aefb7366cd5a713e166eb", + "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", "urls": [ - "bzz-raw://90e694ef0f0ee4bf838a4e524ae4d382fed45715a7261b5467f7090515992f83", - "dweb:/ipfs/QmeXXeaNereUiNCrmPXdaqMDpfthUjif3aAgEQotymh4ce" + "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", + "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" ], "license": null }, @@ -885,6 +885,14 @@ ], "license": null }, + "src/libraries/BeaconChainForks.sol": { + "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "urls": [ + "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", + "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + ], + "license": null + }, "src/libraries/MessageEncoding.sol": { "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", "urls": [ @@ -894,10 +902,10 @@ "license": null }, "src/libraries/SimpleSerialize.sol": { - "keccak256": "0x2fd8f56fcd8c959edc554da3948920405ed09251d6dccded7eff9d97ce70323c", + "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", "urls": [ - "bzz-raw://d79bf43d5fdd65b79a034009d3e90a3f01b90a87e4e6bba454a64aa9d540dbc3", - "dweb:/ipfs/QmPAmdZUFhNh618rQbeXoksP6FPxjtAYJShGPkXh9HNy7v" + "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", + "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" ], "license": null }, @@ -950,10 +958,10 @@ "license": null }, "src/pubsub/TelepathyPublisher.sol": { - "keccak256": "0x6c5fb03d467ec4256c98f9baad7ec5276fb791a8369e605cf80ff3d3ede96e4c", + "keccak256": "0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521", "urls": [ - "bzz-raw://641921781741d75be2e6ee565ebce2766b9e18076d231ba525e954cb2a463dde", - "dweb:/ipfs/QmRMnm8ugLrjaHYdfLfdoVDmAjMooxeEeWm3k4THQPAzUk" + "bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f", + "dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe" ], "license": null }, @@ -1003,10 +1011,10 @@ 31597 ], "SubscriptionReceiver": [ - 49279 + 49355 ], "TelepathyPubSub": [ - 48509 + 48583 ], "TelepathyValidator": [ 2853 @@ -1036,7 +1044,7 @@ "file": "src/pubsub/TelepathyPubSub.sol", "nameLocation": "-1:-1:-1", "scope": 2860, - "sourceUnit": 48510, + "sourceUnit": 48584, "symbolAliases": [ { "foreign": { @@ -1044,7 +1052,7 @@ "name": "TelepathyPubSub", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48509, + "referencedDeclaration": 48583, "src": "34:15:12", "typeDescriptions": {} }, @@ -1062,7 +1070,7 @@ "file": "src/pubsub/interfaces/SubscriptionReceiver.sol", "nameLocation": "-1:-1:-1", "scope": 2860, - "sourceUnit": 49280, + "sourceUnit": 49356, "symbolAliases": [ { "foreign": { @@ -1070,7 +1078,7 @@ "name": "SubscriptionReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49279, + "referencedDeclaration": 49355, "src": "98:20:12", "typeDescriptions": {} }, @@ -2025,7 +2033,7 @@ "1636:20:12" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49279, + "referencedDeclaration": 49355, "src": "1636:20:12" }, "nodeType": "ModifierInvocation", @@ -2540,10 +2548,10 @@ "name": "telepathyPubSub", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49203, + "referencedDeclaration": 49279, "src": "2162:15:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyPubSub_$48509", + "typeIdentifier": "t_contract$_TelepathyPubSub_$48583", "typeString": "contract TelepathyPubSub" } }, @@ -2555,7 +2563,7 @@ "memberLocation": "2178:9:12", "memberName": "subscribe", "nodeType": "MemberAccess", - "referencedDeclaration": 49006, + "referencedDeclaration": 49082, "src": "2162:25:12", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_address_$_t_address_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bytes32_$", @@ -3660,7 +3668,7 @@ ] }, "baseFunctions": [ - 49278 + 49354 ], "documentation": { "id": 2758, @@ -3880,7 +3888,7 @@ "547:20:12" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49279, + "referencedDeclaration": 49355, "src": "547:20:12" }, "id": 2627, @@ -3917,8 +3925,8 @@ 2853, 31597, 35292, - 49279, - 49188 + 49355, + 49264 ], "name": "TelepathyValidator", "nameLocation": "525:18:12", @@ -3928,7 +3936,7 @@ 2645, 2649, 2653, - 49200 + 49276 ] }, { diff --git a/out/Timelock.sol/Timelock.json b/out/Timelock.sol/Timelock.json index c0631b9..bd28277 100644 --- a/out/Timelock.sol/Timelock.json +++ b/out/Timelock.sol/Timelock.json @@ -873,12 +873,12 @@ ], "bytecode": { "object": "0x60806040523480156200001157600080fd5b506040516200231038038062002310833981016040819052620000349162000410565b8383838362000053600080516020620022908339815191528062000235565b6200007d600080516020620022b08339815191526000805160206200229083398151915262000235565b620000a7600080516020620022d08339815191526000805160206200229083398151915262000235565b620000d1600080516020620022f08339815191526000805160206200229083398151915262000235565b620000ec600080516020620022908339815191523062000280565b6001600160a01b03811615620001175762000117600080516020620022908339815191528262000280565b60005b83518110156200019d5762000161600080516020620022b08339815191528583815181106200014d576200014d62000497565b60200260200101516200028060201b60201c565b6200018a600080516020620022f08339815191528583815181106200014d576200014d62000497565b6200019581620004ad565b90506200011a565b5060005b8251811015620001e757620001d4600080516020620022d08339815191528483815181106200014d576200014d62000497565b620001df81620004ad565b9050620001a1565b5060028490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15050505050505050620004d5565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6200028c828262000290565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200028c576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002ec3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200035e57600080fd5b919050565b600082601f8301126200037557600080fd5b815160206001600160401b038083111562000394576200039462000330565b8260051b604051601f19603f83011681018181108482111715620003bc57620003bc62000330565b604052938452858101830193838101925087851115620003db57600080fd5b83870191505b848210156200040557620003f58262000346565b83529183019190830190620003e1565b979650505050505050565b600080600080608085870312156200042757600080fd5b845160208601519094506001600160401b03808211156200044757600080fd5b620004558883890162000363565b945060408701519150808211156200046c57600080fd5b506200047b8782880162000363565b9250506200048c6060860162000346565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b600060018201620004ce57634e487b7160e01b600052601160045260246000fd5b5060010190565b611dab80620004e56000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113c0565b6105f6565b005b3480156101f557600080fd5b50610209610204366004611434565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a236600461145e565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c9565b61076b565b3480156102d357600080fd5b506102f26102e2366004611597565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c9565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c9565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115fe565b610791565b34801561039857600080fd5b506102096103a73660046114c9565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115fe565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c9565b610857565b3480156103f857600080fd5b506101e76104073660046114c9565b61086d565b34801561041857600080fd5b5061025261042736600461145e565b610911565b34801561043857600080fd5b506101e761044736600461166e565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115fe565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b5061025261050436600461171f565b610acb565b34801561051557600080fd5b506102f2610524366004611846565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c9565b610b10565b34801561056157600080fd5b506102526105703660046114c9565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115fe565b610be5565b6101e76105b036600461171f565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118ef565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106789695949392919061197c565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f1e565b61071888888888610fba565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b9565b60405180910390a36107618161108d565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110c6565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610853828261114a565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e9695949392919061197c565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119eb565b8885146109b85760405162461bcd60e51b8152600401610840906119eb565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a2e565b9050602002016020810190610a2b9190611a44565b8d8d86818110610a3d57610a3d611a2e565b905060200201358c8c87818110610a5657610a56611a2e565b9050602002810190610a689190611a5f565b8c8b604051610a7c9695949392919061197c565b60405180910390a3610a8d81611abb565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b65565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b6838361114a565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119eb565b878414610c825760405162461bcd60e51b8152600401610840906119eb565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f1e565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a2e565b9050602002016020810190610cd49190611a44565b905060008a8a84818110610cea57610cea611a2e565b9050602002013590503660008a8a86818110610d0857610d08611a2e565b9050602002810190610d1a9190611a5f565b91509150610d2a84848484610fba565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b9565b60405180910390a35050505080610d7790611abb565b9050610ca3565b50610d888161108d565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c06565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610edc816111af565b610ee78360206111c1565b604051602001610ef8929190611c3d565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cb2565b610f278261076b565b610f435760405162461bcd60e51b815260040161084090611ce5565b801580610f5f5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fd7929190611d2f565b60006040518083038185875af1925050503d8060008114611014576040519150601f19603f3d011682016040523d82523d6000602084013e611019565b606091505b50509050806110865760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110968161076b565b6110b25760405162461bcd60e51b815260040161084090611ce5565b600090815260016020819052604090912055565b6110d08282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111063390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6111548282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606106b06001600160a01b03831660145b606060006111d0836002611d3f565b6111db906002611c06565b6001600160401b038111156111f2576111f26114e2565b6040519080825280601f01601f19166020018201604052801561121c576020820181803683370190505b509050600360fc1b8160008151811061123757611237611a2e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061126657611266611a2e565b60200101906001600160f81b031916908160001a905350600061128a846002611d3f565b611295906001611c06565b90505b600181111561130d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c9576112c9611a2e565b1a60f81b8282815181106112df576112df611a2e565b60200101906001600160f81b031916908160001a90535060049490941c9361130681611d5e565b9050611298565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461137357600080fd5b919050565b60008083601f84011261138a57600080fd5b5081356001600160401b038111156113a157600080fd5b6020830191508360208285010111156113b957600080fd5b9250929050565b600080600080600080600060c0888a0312156113db57600080fd5b6113e48861135c565b96506020880135955060408801356001600160401b0381111561140657600080fd5b6114128a828b01611378565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561144657600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147757600080fd5b6114808761135c565b95506020870135945060408701356001600160401b038111156114a257600080fd5b6114ae89828a01611378565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114db57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611520576115206114e2565b604052919050565b600082601f83011261153957600080fd5b81356001600160401b03811115611552576115526114e2565b611565601f8201601f19166020016114f8565b81815284602083860101111561157a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115ad57600080fd5b6115b68561135c565b93506115c46020860161135c565b92506040850135915060608501356001600160401b038111156115e657600080fd5b6115f287828801611528565b91505092959194509250565b6000806040838503121561161157600080fd5b823591506116216020840161135c565b90509250929050565b60008083601f84011261163c57600080fd5b5081356001600160401b0381111561165357600080fd5b6020830191508360208260051b85010111156113b957600080fd5b600080600080600080600080600060c08a8c03121561168c57600080fd5b89356001600160401b03808211156116a357600080fd5b6116af8d838e0161162a565b909b50995060208c01359150808211156116c857600080fd5b6116d48d838e0161162a565b909950975060408c01359150808211156116ed57600080fd5b506116fa8c828d0161162a565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173b57600080fd5b88356001600160401b038082111561175257600080fd5b61175e8c838d0161162a565b909a50985060208b013591508082111561177757600080fd5b6117838c838d0161162a565b909850965060408b013591508082111561179c57600080fd5b506117a98b828c0161162a565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d857600080fd5b813560206001600160401b038211156117f3576117f36114e2565b8160051b6118028282016114f8565b928352848101820192828101908785111561181c57600080fd5b83870192505b8483101561183b57823582529183019190830190611822565b979650505050505050565b600080600080600060a0868803121561185e57600080fd5b6118678661135c565b94506118756020870161135c565b935060408601356001600160401b038082111561189157600080fd5b61189d89838a016117c7565b945060608801359150808211156118b357600080fd5b6118bf89838a016117c7565b935060808801359150808211156118d557600080fd5b506118e288828901611528565b9150509295509295909350565b600080600080600060a0868803121561190757600080fd5b6119108661135c565b945061191e6020870161135c565b9350604086013592506060860135915060808601356001600160401b0381111561194757600080fd5b6118e288828901611528565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006119a460a083018688611953565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119e1606083018486611953565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a5657600080fd5b61078a8261135c565b6000808335601e19843603018112611a7657600080fd5b8301803591506001600160401b03821115611a9057600080fd5b6020019150368190038213156113b957600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611acd57611acd611aa5565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b585782840389528135601e19883603018112611b0f57600080fd5b870185810190356001600160401b03811115611b2a57600080fd5b803603821315611b3957600080fd5b611b44868284611953565b9a87019a9550505090840190600101611aee565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba6576001600160a01b03611b918461135c565b16825260209283019290910190600101611b78565b5083810360208501528881526001600160fb1b03891115611bc657600080fd5b8860051b9150818a60208301370182810360209081016040850152611bee9082018789611ad4565b60608401959095525050608001529695505050505050565b808201808211156106b0576106b0611aa5565b60005b83811015611c34578181015183820152602001611c1c565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c75816017850160208801611c19565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611ca6816028840160208801611c19565b01602801949350505050565b6020815260008251806020840152611cd1816040850160208701611c19565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d5957611d59611aa5565b500290565b600081611d6d57611d6d611aa5565b50600019019056fea2646970667358221220b844616ba7755911759550aa7ec2f72326fc02dcbea65f7b104671736ad141d464736f6c634300081000335f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783", - "sourceMap": "119:616:111:-:0;;;534:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;692:8;702:9;713;724:5;3238:55:50;-1:-1:-1;;;;;;;;;;;1162:32:50;3238:13;:55::i;:::-;3303:49;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3303:13:50;:49::i;:::-;3362;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3362:13:50;:49::i;:::-;3421:50;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3421:13:50;:50::i;:::-;3513:46;-1:-1:-1;;;;;;;;;;;3553:4:50;3513:10;:46::i;:::-;-1:-1:-1;;;;;3600:19:50;;;3596:88;;3635:38;-1:-1:-1;;;;;;;;;;;3667:5:50;3635:10;:38::i;:::-;3744:9;3739:165;3763:9;:16;3759:1;:20;3739:165;;;3800:39;-1:-1:-1;;;;;;;;;;;3826:9:50;3836:1;3826:12;;;;;;;;:::i;:::-;;;;;;;3800:10;;;:39;;:::i;:::-;3853:40;-1:-1:-1;;;;;;;;;;;3880:9:50;3890:1;3880:12;;;;;;;;:::i;3853:40::-;3781:3;;;:::i;:::-;;;3739:165;;;;3949:9;3944:111;3968:9;:16;3964:1;:20;3944:111;;;4005:39;-1:-1:-1;;;;;;;;;;;4031:9:50;4041:1;4031:12;;;;;;;;:::i;4005:39::-;3986:3;;;:::i;:::-;;;3944:111;;;-1:-1:-1;4065:9:50;:20;;;4100:27;;;4115:1;2573:25:145;;2629:2;2614:18;;2607:34;;;4100:27:50;;2546:18:145;4100:27:50;;;;;;;3089:1045;;;;534:199:111;;;;119:616;;7046:247:47;7129:25;4478:12;;;;;;;;;;;:22;;;;7185:34;;;;7234:52;;4478:22;;7185:34;;4478:22;;:12;;7234:52;;7129:25;7234:52;7119:174;7046:247;;:::o;6811:110::-;6889:25;6900:4;6906:7;6889:10;:25::i;:::-;6811:110;;:::o;7461:233::-;2981:4;3004:12;;;;;;;;;;;-1:-1:-1;;;;;3004:29:47;;;;;;;;;;;;7539:149;;7582:6;:12;;;;;;;;;;;-1:-1:-1;;;;;7582:29:47;;;;;;;;;:36;;-1:-1:-1;;7582:36:47;7614:4;7582:36;;;7664:12;719:10:68;;640:96;7664:12:47;-1:-1:-1;;;;;7637:40:47;7655:7;-1:-1:-1;;;;;7637:40:47;7649:4;7637:40;;;;;;;;;;7461:233;;:::o;14:127:145:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:177;225:13;;-1:-1:-1;;;;;267:31:145;;257:42;;247:70;;313:1;310;303:12;247:70;146:177;;;:::o;328:923::-;393:5;446:3;439:4;431:6;427:17;423:27;413:55;;464:1;461;454:12;413:55;487:13;;519:4;-1:-1:-1;;;;;572:10:145;;;569:36;;;585:18;;:::i;:::-;631:2;628:1;624:10;663:2;657:9;726:2;722:7;717:2;713;709:11;705:25;697:6;693:38;781:6;769:10;766:22;761:2;749:10;746:18;743:46;740:72;;;792:18;;:::i;:::-;828:2;821:22;878:18;;;954:15;;;950:24;;;912:15;;;;-1:-1:-1;986:15:145;;;983:35;;;1014:1;1011;1004:12;983:35;1050:2;1042:6;1038:15;1027:26;;1062:159;1078:6;1073:3;1070:15;1062:159;;;1144:34;1174:3;1144:34;:::i;:::-;1132:47;;1199:12;;;;1095;;;;1062:159;;;1239:6;328:923;-1:-1:-1;;;;;;;328:923:145:o;1256:761::-;1403:6;1411;1419;1427;1480:3;1468:9;1459:7;1455:23;1451:33;1448:53;;;1497:1;1494;1487:12;1448:53;1520:16;;1580:2;1565:18;;1559:25;1520:16;;-1:-1:-1;;;;;;1633:14:145;;;1630:34;;;1660:1;1657;1650:12;1630:34;1683:72;1747:7;1738:6;1727:9;1723:22;1683:72;:::i;:::-;1673:82;;1801:2;1790:9;1786:18;1780:25;1764:41;;1830:2;1820:8;1817:16;1814:36;;;1846:1;1843;1836:12;1814:36;;1869:74;1935:7;1924:8;1913:9;1909:24;1869:74;:::i;:::-;1859:84;;;1962:49;2007:2;1996:9;1992:18;1962:49;:::i;:::-;1952:59;;1256:761;;;;;;;:::o;2022:127::-;2083:10;2078:3;2074:20;2071:1;2064:31;2114:4;2111:1;2104:15;2138:4;2135:1;2128:15;2154:232;2193:3;2214:17;;;2211:140;;2273:10;2268:3;2264:20;2261:1;2254:31;2308:4;2305:1;2298:15;2336:4;2333:1;2326:15;2211:140;-1:-1:-1;2378:1:145;2367:13;;2154:232::o;2391:256::-;119:616:111;;;;;;", + "sourceMap": "119:616:112:-:0;;;534:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;692:8;702:9;713;724:5;3238:55:50;-1:-1:-1;;;;;;;;;;;1162:32:50;3238:13;:55::i;:::-;3303:49;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3303:13:50;:49::i;:::-;3362;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3362:13:50;:49::i;:::-;3421:50;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3421:13:50;:50::i;:::-;3513:46;-1:-1:-1;;;;;;;;;;;3553:4:50;3513:10;:46::i;:::-;-1:-1:-1;;;;;3600:19:50;;;3596:88;;3635:38;-1:-1:-1;;;;;;;;;;;3667:5:50;3635:10;:38::i;:::-;3744:9;3739:165;3763:9;:16;3759:1;:20;3739:165;;;3800:39;-1:-1:-1;;;;;;;;;;;3826:9:50;3836:1;3826:12;;;;;;;;:::i;:::-;;;;;;;3800:10;;;:39;;:::i;:::-;3853:40;-1:-1:-1;;;;;;;;;;;3880:9:50;3890:1;3880:12;;;;;;;;:::i;3853:40::-;3781:3;;;:::i;:::-;;;3739:165;;;;3949:9;3944:111;3968:9;:16;3964:1;:20;3944:111;;;4005:39;-1:-1:-1;;;;;;;;;;;4031:9:50;4041:1;4031:12;;;;;;;;:::i;4005:39::-;3986:3;;;:::i;:::-;;;3944:111;;;-1:-1:-1;4065:9:50;:20;;;4100:27;;;4115:1;2573:25:146;;2629:2;2614:18;;2607:34;;;4100:27:50;;2546:18:146;4100:27:50;;;;;;;3089:1045;;;;534:199:112;;;;119:616;;7046:247:47;7129:25;4478:12;;;;;;;;;;;:22;;;;7185:34;;;;7234:52;;4478:22;;7185:34;;4478:22;;:12;;7234:52;;7129:25;7234:52;7119:174;7046:247;;:::o;6811:110::-;6889:25;6900:4;6906:7;6889:10;:25::i;:::-;6811:110;;:::o;7461:233::-;2981:4;3004:12;;;;;;;;;;;-1:-1:-1;;;;;3004:29:47;;;;;;;;;;;;7539:149;;7582:6;:12;;;;;;;;;;;-1:-1:-1;;;;;7582:29:47;;;;;;;;;:36;;-1:-1:-1;;7582:36:47;7614:4;7582:36;;;7664:12;719:10:68;;640:96;7664:12:47;-1:-1:-1;;;;;7637:40:47;7655:7;-1:-1:-1;;;;;7637:40:47;7649:4;7637:40;;;;;;;;;;7461:233;;:::o;14:127:146:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:177;225:13;;-1:-1:-1;;;;;267:31:146;;257:42;;247:70;;313:1;310;303:12;247:70;146:177;;;:::o;328:923::-;393:5;446:3;439:4;431:6;427:17;423:27;413:55;;464:1;461;454:12;413:55;487:13;;519:4;-1:-1:-1;;;;;572:10:146;;;569:36;;;585:18;;:::i;:::-;631:2;628:1;624:10;663:2;657:9;726:2;722:7;717:2;713;709:11;705:25;697:6;693:38;781:6;769:10;766:22;761:2;749:10;746:18;743:46;740:72;;;792:18;;:::i;:::-;828:2;821:22;878:18;;;954:15;;;950:24;;;912:15;;;;-1:-1:-1;986:15:146;;;983:35;;;1014:1;1011;1004:12;983:35;1050:2;1042:6;1038:15;1027:26;;1062:159;1078:6;1073:3;1070:15;1062:159;;;1144:34;1174:3;1144:34;:::i;:::-;1132:47;;1199:12;;;;1095;;;;1062:159;;;1239:6;328:923;-1:-1:-1;;;;;;;328:923:146:o;1256:761::-;1403:6;1411;1419;1427;1480:3;1468:9;1459:7;1455:23;1451:33;1448:53;;;1497:1;1494;1487:12;1448:53;1520:16;;1580:2;1565:18;;1559:25;1520:16;;-1:-1:-1;;;;;;1633:14:146;;;1630:34;;;1660:1;1657;1650:12;1630:34;1683:72;1747:7;1738:6;1727:9;1723:22;1683:72;:::i;:::-;1673:82;;1801:2;1790:9;1786:18;1780:25;1764:41;;1830:2;1820:8;1817:16;1814:36;;;1846:1;1843;1836:12;1814:36;;1869:74;1935:7;1924:8;1913:9;1909:24;1869:74;:::i;:::-;1859:84;;;1962:49;2007:2;1996:9;1992:18;1962:49;:::i;:::-;1952:59;;1256:761;;;;;;;:::o;2022:127::-;2083:10;2078:3;2074:20;2071:1;2064:31;2114:4;2111:1;2104:15;2138:4;2135:1;2128:15;2154:232;2193:3;2214:17;;;2211:140;;2273:10;2268:3;2264:20;2261:1;2254:31;2308:4;2305:1;2298:15;2336:4;2333:1;2326:15;2211:140;-1:-1:-1;2378:1:146;2367:13;;2154:232::o;2391:256::-;119:616:112;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113c0565b6105f6565b005b3480156101f557600080fd5b50610209610204366004611434565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a236600461145e565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c9565b61076b565b3480156102d357600080fd5b506102f26102e2366004611597565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c9565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c9565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115fe565b610791565b34801561039857600080fd5b506102096103a73660046114c9565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115fe565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c9565b610857565b3480156103f857600080fd5b506101e76104073660046114c9565b61086d565b34801561041857600080fd5b5061025261042736600461145e565b610911565b34801561043857600080fd5b506101e761044736600461166e565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115fe565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b5061025261050436600461171f565b610acb565b34801561051557600080fd5b506102f2610524366004611846565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c9565b610b10565b34801561056157600080fd5b506102526105703660046114c9565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115fe565b610be5565b6101e76105b036600461171f565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118ef565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106789695949392919061197c565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f1e565b61071888888888610fba565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b9565b60405180910390a36107618161108d565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110c6565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610853828261114a565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e9695949392919061197c565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119eb565b8885146109b85760405162461bcd60e51b8152600401610840906119eb565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a2e565b9050602002016020810190610a2b9190611a44565b8d8d86818110610a3d57610a3d611a2e565b905060200201358c8c87818110610a5657610a56611a2e565b9050602002810190610a689190611a5f565b8c8b604051610a7c9695949392919061197c565b60405180910390a3610a8d81611abb565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b65565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b6838361114a565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119eb565b878414610c825760405162461bcd60e51b8152600401610840906119eb565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f1e565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a2e565b9050602002016020810190610cd49190611a44565b905060008a8a84818110610cea57610cea611a2e565b9050602002013590503660008a8a86818110610d0857610d08611a2e565b9050602002810190610d1a9190611a5f565b91509150610d2a84848484610fba565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b9565b60405180910390a35050505080610d7790611abb565b9050610ca3565b50610d888161108d565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c06565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610edc816111af565b610ee78360206111c1565b604051602001610ef8929190611c3d565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cb2565b610f278261076b565b610f435760405162461bcd60e51b815260040161084090611ce5565b801580610f5f5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fd7929190611d2f565b60006040518083038185875af1925050503d8060008114611014576040519150601f19603f3d011682016040523d82523d6000602084013e611019565b606091505b50509050806110865760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110968161076b565b6110b25760405162461bcd60e51b815260040161084090611ce5565b600090815260016020819052604090912055565b6110d08282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111063390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6111548282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606106b06001600160a01b03831660145b606060006111d0836002611d3f565b6111db906002611c06565b6001600160401b038111156111f2576111f26114e2565b6040519080825280601f01601f19166020018201604052801561121c576020820181803683370190505b509050600360fc1b8160008151811061123757611237611a2e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061126657611266611a2e565b60200101906001600160f81b031916908160001a905350600061128a846002611d3f565b611295906001611c06565b90505b600181111561130d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c9576112c9611a2e565b1a60f81b8282815181106112df576112df611a2e565b60200101906001600160f81b031916908160001a90535060049490941c9361130681611d5e565b9050611298565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461137357600080fd5b919050565b60008083601f84011261138a57600080fd5b5081356001600160401b038111156113a157600080fd5b6020830191508360208285010111156113b957600080fd5b9250929050565b600080600080600080600060c0888a0312156113db57600080fd5b6113e48861135c565b96506020880135955060408801356001600160401b0381111561140657600080fd5b6114128a828b01611378565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561144657600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147757600080fd5b6114808761135c565b95506020870135945060408701356001600160401b038111156114a257600080fd5b6114ae89828a01611378565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114db57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611520576115206114e2565b604052919050565b600082601f83011261153957600080fd5b81356001600160401b03811115611552576115526114e2565b611565601f8201601f19166020016114f8565b81815284602083860101111561157a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115ad57600080fd5b6115b68561135c565b93506115c46020860161135c565b92506040850135915060608501356001600160401b038111156115e657600080fd5b6115f287828801611528565b91505092959194509250565b6000806040838503121561161157600080fd5b823591506116216020840161135c565b90509250929050565b60008083601f84011261163c57600080fd5b5081356001600160401b0381111561165357600080fd5b6020830191508360208260051b85010111156113b957600080fd5b600080600080600080600080600060c08a8c03121561168c57600080fd5b89356001600160401b03808211156116a357600080fd5b6116af8d838e0161162a565b909b50995060208c01359150808211156116c857600080fd5b6116d48d838e0161162a565b909950975060408c01359150808211156116ed57600080fd5b506116fa8c828d0161162a565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173b57600080fd5b88356001600160401b038082111561175257600080fd5b61175e8c838d0161162a565b909a50985060208b013591508082111561177757600080fd5b6117838c838d0161162a565b909850965060408b013591508082111561179c57600080fd5b506117a98b828c0161162a565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d857600080fd5b813560206001600160401b038211156117f3576117f36114e2565b8160051b6118028282016114f8565b928352848101820192828101908785111561181c57600080fd5b83870192505b8483101561183b57823582529183019190830190611822565b979650505050505050565b600080600080600060a0868803121561185e57600080fd5b6118678661135c565b94506118756020870161135c565b935060408601356001600160401b038082111561189157600080fd5b61189d89838a016117c7565b945060608801359150808211156118b357600080fd5b6118bf89838a016117c7565b935060808801359150808211156118d557600080fd5b506118e288828901611528565b9150509295509295909350565b600080600080600060a0868803121561190757600080fd5b6119108661135c565b945061191e6020870161135c565b9350604086013592506060860135915060808601356001600160401b0381111561194757600080fd5b6118e288828901611528565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006119a460a083018688611953565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119e1606083018486611953565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a5657600080fd5b61078a8261135c565b6000808335601e19843603018112611a7657600080fd5b8301803591506001600160401b03821115611a9057600080fd5b6020019150368190038213156113b957600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611acd57611acd611aa5565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b585782840389528135601e19883603018112611b0f57600080fd5b870185810190356001600160401b03811115611b2a57600080fd5b803603821315611b3957600080fd5b611b44868284611953565b9a87019a9550505090840190600101611aee565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba6576001600160a01b03611b918461135c565b16825260209283019290910190600101611b78565b5083810360208501528881526001600160fb1b03891115611bc657600080fd5b8860051b9150818a60208301370182810360209081016040850152611bee9082018789611ad4565b60608401959095525050608001529695505050505050565b808201808211156106b0576106b0611aa5565b60005b83811015611c34578181015183820152602001611c1c565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c75816017850160208801611c19565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611ca6816028840160208801611c19565b01602801949350505050565b6020815260008251806020840152611cd1816040850160208701611c19565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d5957611d59611aa5565b500290565b600081611d6d57611d6d611aa5565b50600019019056fea2646970667358221220b844616ba7755911759550aa7ec2f72326fc02dcbea65f7b104671736ad141d464736f6c63430008100033", - "sourceMap": "119:616:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7619:402:50;;;;;;;;;;-1:-1:-1;7619:402:50;;;;;:::i;:::-;;:::i;:::-;;4770:228;;;;;;;;;;-1:-1:-1;4770:228:50;;;;;:::i;:::-;;:::i;:::-;;;1763:14:145;;1756:22;1738:41;;1726:2;1711:18;4770:228:50;;;;;;;;1272:66;;;;;;;;;;;;1312:26;1272:66;;;;;1936:25:145;;;1924:2;1909:18;1272:66:50;1790:177:145;1116:78:50;;;;;;;;;;;;1162:32;1116:78;;10216:459;;;;;;:::i;:::-;;:::i;5580:208::-;;;;;;;;;;-1:-1:-1;5580:208:50;;;;;:::i;:::-;;:::i;13466:200::-;;;;;;;;;;-1:-1:-1;13466:200:50;;;;;:::i;:::-;-1:-1:-1;;;13466:200:50;;;;;;;;;;-1:-1:-1;;;;;;4502:33:145;;;4484:52;;4472:2;4457:18;13466:200:50;4340:202:145;4378:129:47;;;;;;;;;;-1:-1:-1;4378:129:47;;;;;:::i;:::-;4452:7;4478:12;;;;;;;;;;:22;;;;4378:129;5867:136:50;;;;;;;;;;-1:-1:-1;5867:136:50;;;;;:::i;:::-;5933:9;6250:15;;;1470:1;6250:15;;;;;;;;;5961:35;;5867:136;4803:145:47;;;;;;;;;;-1:-1:-1;4803:145:47;;;;;:::i;:::-;;:::i;5154:123:50:-;;;;;;;;;;-1:-1:-1;5154:123:50;;;;;:::i;:::-;;:::i;5912:214:47:-;;;;;;;;;;-1:-1:-1;5912:214:47;;;;;:::i;:::-;;:::i;5359:141:50:-;;;;;;;;;;-1:-1:-1;5359:141:50;;;;;:::i;:::-;;:::i;13156:236::-;;;;;;;;;;-1:-1:-1;13156:236:50;;;;;:::i;:::-;;:::i;6674:284::-;;;;;;;;;;-1:-1:-1;6674:284:50;;;;;:::i;:::-;;:::i;8275:713::-;;;;;;;;;;-1:-1:-1;8275:713:50;;;;;:::i;:::-;;:::i;1200:66::-;;;;;;;;;;;;1240:26;1200:66;;2895:145:47;;;;;;;;;;-1:-1:-1;2895:145:47;;;;;:::i;:::-;;:::i;2027:49::-;;;;;;;;;;-1:-1:-1;2027:49:47;2072:4;2027:49;;1344:68:50;;;;;;;;;;;;1385:27;1344:68;;7074:325;;;;;;;;;;-1:-1:-1;7074:325:50;;;;;:::i;:::-;;:::i;14042:247::-;;;;;;;;;;-1:-1:-1;14042:247:50;;;;;:::i;:::-;-1:-1:-1;;;14042:247:50;;;;;;;;9512:230;;;;;;;;;;-1:-1:-1;9512:230:50;;;;;:::i;:::-;;:::i;6151:121::-;;;;;;;;;;-1:-1:-1;6151:121:50;;;;;:::i;:::-;6214:17;6250:15;;;:11;:15;;;;;;;6151:121;5228:147:47;;;;;;;;;;-1:-1:-1;5228:147:47;;;;;:::i;:::-;;:::i;10935:883:50:-;;;;;;:::i;:::-;;:::i;13742:219::-;;;;;;;;;;-1:-1:-1;13742:219:50;;;;;:::i;:::-;-1:-1:-1;;;13742:219:50;;;;;;;;6458:103;;;;;;;;;;-1:-1:-1;6545:9:50;;6458:103;;7619:402;1240:26;2505:16:47;2516:4;2505:10;:16::i;:::-;7842:10:50::1;7855:53;7869:6;7877:5;7884:4;;7890:11;7903:4;7855:13;:53::i;:::-;7842:66;;7918:20;7928:2;7932:5;7918:9;:20::i;:::-;7971:1;7967:2;7953:61;7974:6;7982:5;7989:4;;7995:11;8008:5;7953:61;;;;;;;;;;;:::i;:::-;;;;;;;;7832:189;7619:402:::0;;;;;;;;:::o;4770:228::-;4879:4;-1:-1:-1;;;;;;4902:49:50;;-1:-1:-1;;;4902:49:50;;:89;;;4955:36;4979:11;4955:23;:36::i;:::-;4895:96;4770:228;-1:-1:-1;;4770:228:50:o;10216:459::-;1312:26;4473:25;4481:4;4495:1;4473:7;:25::i;:::-;4468:87;;4514:30;4525:4;719:10:68;4514::50;:30::i;:::-;10436:10:::1;10449:56;10463:6;10471:5;10478:7;;10487:11;10500:4;10449:13;:56::i;:::-;10436:69;;10516:28;10528:2;10532:11;10516;:28::i;:::-;10554:32;10563:6;10571:5;10578:7;;10554:8;:32::i;:::-;10618:1;10614:2;10601:43;10621:6;10629:5;10636:7;;10601:43;;;;;;;;;:::i;:::-;;;;;;;;10654:14;10665:2;10654:10;:14::i;:::-;10426:249;10216:459:::0;;;;;;;:::o;5580:208::-;5647:10;6250:15;;;:11;:15;;;;;;1470:1;5722:9;:27;:59;;;;;5766:15;5753:9;:28;;5722:59;5715:66;5580:208;-1:-1:-1;;;5580:208:50:o;4803:145:47:-;4452:7;4478:12;;;;;;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;4916:25:::1;4927:4;4933:7;4916:10;:25::i;:::-;4803:145:::0;;;:::o;5154:123:50:-;5216:15;6250;;;:11;:15;;;;;;5216;;5250:16;:20;;5154:123;-1:-1:-1;;5154:123:50:o;5912:214:47:-;-1:-1:-1;;;;;6007:23:47;;719:10:68;6007:23:47;5999:83;;;;-1:-1:-1;;;5999:83:47;;11826:2:145;5999:83:47;;;11808:21:145;11865:2;11845:18;;;11838:30;11904:34;11884:18;;;11877:62;-1:-1:-1;;;11955:18:145;;;11948:45;12010:19;;5999:83:47;;;;;;;;;6093:26;6105:4;6111:7;6093:11;:26::i;:::-;5912:214;;:::o;5359:141:50:-;5428:12;6250:15;;;1470:1;6250:15;;;;;;;;5459:16;6151:121;13156:236;13230:10;13252:4;13230:27;13222:83;;;;-1:-1:-1;;;13222:83:50;;12242:2:145;13222:83:50;;;12224:21:145;12281:2;12261:18;;;12254:30;12320:34;12300:18;;;12293:62;-1:-1:-1;;;12371:18:145;;;12364:41;12422:19;;13222:83:50;12040:407:145;13222:83:50;13335:9;;13320:35;;;12626:25:145;;;12682:2;12667:18;;12660:34;;;13320:35:50;;12599:18:145;13320:35:50;;;;;;;13365:9;:20;13156:236::o;6674:284::-;6859:12;6911:6;6919:5;6926:4;;6932:11;6945:4;6900:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6890:61;;;;;;6883:68;;6674:284;;;;;;;;:::o;8275:713::-;1240:26;2505:16:47;2516:4;2505:10;:16::i;:::-;8541:31:50;;::::1;8533:79;;;;-1:-1:-1::0;;;8533:79:50::1;;;;;;;:::i;:::-;8630:33:::0;;::::1;8622:81;;;;-1:-1:-1::0;;;8622:81:50::1;;;;;;;:::i;:::-;8714:10;8727:64;8746:7;;8755:6;;8763:8;;8773:11;8786:4;8727:18;:64::i;:::-;8714:77;;8801:20;8811:2;8815:5;8801:9;:20::i;:::-;8836:9;8831:151;8851:18:::0;;::::1;8831:151;;;8913:1;8909:2;8895:76;8916:7;;8924:1;8916:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8928:6;;8935:1;8928:9;;;;;;;:::i;:::-;;;;;;;8939:8;;8948:1;8939:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;8952;8965:5;8895:76;;;;;;;;;;;:::i;:::-;;;;;;;;8871:3;::::0;::::1;:::i;:::-;;;8831:151;;;;8523:465;8275:713:::0;;;;;;;;;;:::o;2895:145:47:-;2981:4;3004:12;;;;;;;;;;;-1:-1:-1;;;;;3004:29:47;;;;;;;;;;;;;;;2895:145::o;7074:325:50:-;7294:12;7346:7;;7355:6;;7363:8;;7373:11;7386:4;7335:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7325:67;;;;;;7318:74;;7074:325;;;;;;;;;;:::o;9512:230::-;1385:27;2505:16:47;2516:4;2505:10;:16::i;:::-;9598:22:50::1;9617:2;9598:18;:22::i;:::-;9590:84;;;::::0;-1:-1:-1;;;9590:84:50;;17464:2:145;9590:84:50::1;::::0;::::1;17446:21:145::0;17503:2;17483:18;;;17476:30;17542:34;17522:18;;;17515:62;-1:-1:-1;;;17593:18:145;;;17586:47;17650:19;;9590:84:50::1;17262:413:145::0;9590:84:50::1;9691:15;::::0;;;:11:::1;:15;::::0;;;;;9684:22;;;9722:13;9703:2;;9722:13:::1;::::0;::::1;9512:230:::0;;:::o;5228:147:47:-;4452:7;4478:12;;;;;;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;5342:26:::1;5354:4;5360:7;5342:11;:26::i;10935:883:50:-:0;1312:26;4473:25;4481:4;4495:1;4473:7;:25::i;:::-;4468:87;;4514:30;4525:4;719:10:68;4514::50;:30::i;:::-;11195:31;;::::1;11187:79;;;;-1:-1:-1::0;;;11187:79:50::1;;;;;;;:::i;:::-;11284:33:::0;;::::1;11276:81;;;;-1:-1:-1::0;;;11276:81:50::1;;;;;;;:::i;:::-;11368:10;11381:64;11400:7;;11409:6;;11417:8;;11427:11;11440:4;11381:18;:64::i;:::-;11368:77;;11456:28;11468:2;11472:11;11456;:28::i;:::-;11499:9;11494:294;11514:18:::0;;::::1;11494:294;;;11553:14;11570:7;;11578:1;11570:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11553:27;;11594:13;11610:6;;11617:1;11610:9;;;;;;;:::i;:::-;;;;;;;11594:25;;11633:22;;11658:8;;11667:1;11658:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;11633:36;;;;11683:32;11692:6;11700:5;11707:7;;11683:8;:32::i;:::-;11751:1;11747:2;11734:43;11754:6;11762:5;11769:7;;11734:43;;;;;;;;;:::i;:::-;;;;;;;;11539:249;;;;11534:3;;;;:::i;:::-;;;11494:294;;;;11797:14;11808:2;11797:10;:14::i;:::-;11177:641;10935:883:::0;;;;;;;;;:::o;3334:103:47:-;3400:30;3411:4;719:10:68;4514::50;:30::i;3400::47:-;3334:103;:::o;9089:281:50:-;9162:15;9174:2;9162:11;:15::i;:::-;9161:16;9153:76;;;;-1:-1:-1;;;9153:76:50;;17882:2:145;9153:76:50;;;17864:21:145;17921:2;17901:18;;;17894:30;17960:34;17940:18;;;17933:62;-1:-1:-1;;;18011:18:145;;;18004:45;18066:19;;9153:76:50;17680:411:145;9153:76:50;6545:9;;9247:5;:22;;9239:73;;;;-1:-1:-1;;;9239:73:50;;18298:2:145;9239:73:50;;;18280:21:145;18337:2;18317:18;;;18310:30;18376:34;18356:18;;;18349:62;-1:-1:-1;;;18427:18:145;;;18420:36;18473:19;;9239:73:50;18096:402:145;9239:73:50;9340:23;9358:5;9340:15;:23;:::i;:::-;9322:15;;;;:11;:15;;;;;;:41;;;;-1:-1:-1;9089:281:50:o;2606:202:47:-;2691:4;-1:-1:-1;;;;;;2714:47:47;;-1:-1:-1;;;2714:47:47;;:87;;-1:-1:-1;;;;;;;;;;937:40:71;;;2765:36:47;829:155:71;3718:479:47;3806:22;3814:4;3820:7;3806;:22::i;:::-;3801:390;;3989:28;4009:7;3989:19;:28::i;:::-;4088:38;4116:4;4123:2;4088:19;:38::i;:::-;3896:252;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3896:252:47;;;;;;;;;;-1:-1:-1;;;3844:336:47;;;;;;;:::i;12229:277:50:-;12314:20;12331:2;12314:16;:20::i;:::-;12306:75;;;;-1:-1:-1;;;12306:75:50;;;;;;;:::i;:::-;12399:25;;;:57;;-1:-1:-1;5933:9:50;6250:15;;;1470:1;6250:15;;;;;;;;;5961:35;12428:28;12391:108;;;;-1:-1:-1;;;12391:108:50;;20719:2:145;12391:108:50;;;20701:21:145;20758:2;20738:18;;;20731:30;20797:34;20777:18;;;20770:62;-1:-1:-1;;;20848:18:145;;;20841:36;20894:19;;12391:108:50;20517:402:145;11881:265:50;12009:12;12027:6;-1:-1:-1;;;;;12027:11:50;12046:5;12053:4;;12027:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12008:50;;;12076:7;12068:71;;;;-1:-1:-1;;;12068:71:50;;21402:2:145;12068:71:50;;;21384:21:145;21441:2;21421:18;;;21414:30;21480:34;21460:18;;;21453:62;-1:-1:-1;;;21531:18:145;;;21524:49;21590:19;;12068:71:50;21200:415:145;12068:71:50;11998:148;11881:265;;;;:::o;12588:175::-;12646:20;12663:2;12646:16;:20::i;:::-;12638:75;;;;-1:-1:-1;;;12638:75:50;;;;;;;:::i;:::-;12723:15;;;;1470:1;12723:15;;;;;;;;:33;12588:175::o;7461:233:47:-;7544:22;7552:4;7558:7;7544;:22::i;:::-;7539:149;;7582:6;:12;;;;;;;;;;;-1:-1:-1;;;;;7582:29:47;;;;;;;;;:36;;-1:-1:-1;;7582:36:47;7614:4;7582:36;;;7664:12;719:10:68;;640:96;7664:12:47;-1:-1:-1;;;;;7637:40:47;7655:7;-1:-1:-1;;;;;7637:40:47;7649:4;7637:40;;;;;;;;;;7461:233;;:::o;7865:234::-;7948:22;7956:4;7962:7;7948;:22::i;:::-;7944:149;;;8018:5;7986:12;;;;;;;;;;;-1:-1:-1;;;;;7986:29:47;;;;;;;;;;:37;;-1:-1:-1;;7986:37:47;;;8042:40;719:10:68;;7986:12:47;;8042:40;;8018:5;8042:40;7865:234;;:::o;2102:149:70:-;2160:13;2192:52;-1:-1:-1;;;;;2204:22:70;;311:2;1513:437;1588:13;1613:19;1645:10;1649:6;1645:1;:10;:::i;:::-;:14;;1658:1;1645:14;:::i;:::-;-1:-1:-1;;;;;1635:25:70;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1635:25:70;;1613:47;;-1:-1:-1;;;1670:6:70;1677:1;1670:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1670:15:70;;;;;;;;;-1:-1:-1;;;1695:6:70;1702:1;1695:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1695:15:70;;;;;;;;-1:-1:-1;1725:9:70;1737:10;1741:6;1737:1;:10;:::i;:::-;:14;;1750:1;1737:14;:::i;:::-;1725:26;;1720:128;1757:1;1753;:5;1720:128;;;-1:-1:-1;;;1800:5:70;1808:3;1800:11;1791:21;;;;;;;:::i;:::-;;;;1779:6;1786:1;1779:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1779:33:70;;;;;;;;-1:-1:-1;1836:1:70;1826:11;;;;;1760:3;;;:::i;:::-;;;1720:128;;;-1:-1:-1;1865:10:70;;1857:55;;;;-1:-1:-1;;;1857:55:70;;22136:2:145;1857:55:70;;;22118:21:145;;;22155:18;;;22148:30;22214:34;22194:18;;;22187:62;22266:18;;1857:55:70;21934:356:145;14:173;82:20;;-1:-1:-1;;;;;131:31:145;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:347::-;243:8;253:6;307:3;300:4;292:6;288:17;284:27;274:55;;325:1;322;315:12;274:55;-1:-1:-1;348:20:145;;-1:-1:-1;;;;;380:30:145;;377:50;;;423:1;420;413:12;377:50;460:4;452:6;448:17;436:29;;512:3;505:4;496:6;488;484:19;480:30;477:39;474:59;;;529:1;526;519:12;474:59;192:347;;;;;:::o;544:758::-;659:6;667;675;683;691;699;707;760:3;748:9;739:7;735:23;731:33;728:53;;;777:1;774;767:12;728:53;800:29;819:9;800:29;:::i;:::-;790:39;;876:2;865:9;861:18;848:32;838:42;;931:2;920:9;916:18;903:32;-1:-1:-1;;;;;950:6:145;947:30;944:50;;;990:1;987;980:12;944:50;1029:58;1079:7;1070:6;1059:9;1055:22;1029:58;:::i;:::-;544:758;;;;-1:-1:-1;1106:8:145;1188:2;1173:18;;1160:32;;1239:3;1224:19;;1211:33;;-1:-1:-1;1291:3:145;1276:19;;;1263:33;;-1:-1:-1;544:758:145;-1:-1:-1;;;;544:758:145:o;1307:286::-;1365:6;1418:2;1406:9;1397:7;1393:23;1389:32;1386:52;;;1434:1;1431;1424:12;1386:52;1460:23;;-1:-1:-1;;;;;;1512:32:145;;1502:43;;1492:71;;1559:1;1556;1549:12;1972:689;2078:6;2086;2094;2102;2110;2118;2171:3;2159:9;2150:7;2146:23;2142:33;2139:53;;;2188:1;2185;2178:12;2139:53;2211:29;2230:9;2211:29;:::i;:::-;2201:39;;2287:2;2276:9;2272:18;2259:32;2249:42;;2342:2;2331:9;2327:18;2314:32;-1:-1:-1;;;;;2361:6:145;2358:30;2355:50;;;2401:1;2398;2391:12;2355:50;2440:58;2490:7;2481:6;2470:9;2466:22;2440:58;:::i;:::-;1972:689;;;;-1:-1:-1;2517:8:145;2599:2;2584:18;;2571:32;;2650:3;2635:19;;;2622:33;;-1:-1:-1;1972:689:145;-1:-1:-1;;;;1972:689:145:o;2666:180::-;2725:6;2778:2;2766:9;2757:7;2753:23;2749:32;2746:52;;;2794:1;2791;2784:12;2746:52;-1:-1:-1;2817:23:145;;2666:180;-1:-1:-1;2666:180:145:o;2851:127::-;2912:10;2907:3;2903:20;2900:1;2893:31;2943:4;2940:1;2933:15;2967:4;2964:1;2957:15;2983:275;3054:2;3048:9;3119:2;3100:13;;-1:-1:-1;;3096:27:145;3084:40;;-1:-1:-1;;;;;3139:34:145;;3175:22;;;3136:62;3133:88;;;3201:18;;:::i;:::-;3237:2;3230:22;2983:275;;-1:-1:-1;2983:275:145:o;3263:530::-;3305:5;3358:3;3351:4;3343:6;3339:17;3335:27;3325:55;;3376:1;3373;3366:12;3325:55;3412:6;3399:20;-1:-1:-1;;;;;3434:2:145;3431:26;3428:52;;;3460:18;;:::i;:::-;3504:55;3547:2;3528:13;;-1:-1:-1;;3524:27:145;3553:4;3520:38;3504:55;:::i;:::-;3584:2;3575:7;3568:19;3630:3;3623:4;3618:2;3610:6;3606:15;3602:26;3599:35;3596:55;;;3647:1;3644;3637:12;3596:55;3712:2;3705:4;3697:6;3693:17;3686:4;3677:7;3673:18;3660:55;3760:1;3735:16;;;3753:4;3731:27;3724:38;;;;3739:7;3263:530;-1:-1:-1;;;3263:530:145:o;3798:537::-;3893:6;3901;3909;3917;3970:3;3958:9;3949:7;3945:23;3941:33;3938:53;;;3987:1;3984;3977:12;3938:53;4010:29;4029:9;4010:29;:::i;:::-;4000:39;;4058:38;4092:2;4081:9;4077:18;4058:38;:::i;:::-;4048:48;;4143:2;4132:9;4128:18;4115:32;4105:42;;4198:2;4187:9;4183:18;4170:32;-1:-1:-1;;;;;4217:6:145;4214:30;4211:50;;;4257:1;4254;4247:12;4211:50;4280:49;4321:7;4312:6;4301:9;4297:22;4280:49;:::i;:::-;4270:59;;;3798:537;;;;;;;:::o;4547:254::-;4615:6;4623;4676:2;4664:9;4655:7;4651:23;4647:32;4644:52;;;4692:1;4689;4682:12;4644:52;4728:9;4715:23;4705:33;;4757:38;4791:2;4780:9;4776:18;4757:38;:::i;:::-;4747:48;;4547:254;;;;;:::o;4991:367::-;5054:8;5064:6;5118:3;5111:4;5103:6;5099:17;5095:27;5085:55;;5136:1;5133;5126:12;5085:55;-1:-1:-1;5159:20:145;;-1:-1:-1;;;;;5191:30:145;;5188:50;;;5234:1;5231;5224:12;5188:50;5271:4;5263:6;5259:17;5247:29;;5331:3;5324:4;5314:6;5311:1;5307:14;5299:6;5295:27;5291:38;5288:47;5285:67;;;5348:1;5345;5338:12;5363:1306;5559:6;5567;5575;5583;5591;5599;5607;5615;5623;5676:3;5664:9;5655:7;5651:23;5647:33;5644:53;;;5693:1;5690;5683:12;5644:53;5733:9;5720:23;-1:-1:-1;;;;;5803:2:145;5795:6;5792:14;5789:34;;;5819:1;5816;5809:12;5789:34;5858:70;5920:7;5911:6;5900:9;5896:22;5858:70;:::i;:::-;5947:8;;-1:-1:-1;5832:96:145;-1:-1:-1;6035:2:145;6020:18;;6007:32;;-1:-1:-1;6051:16:145;;;6048:36;;;6080:1;6077;6070:12;6048:36;6119:72;6183:7;6172:8;6161:9;6157:24;6119:72;:::i;:::-;6210:8;;-1:-1:-1;6093:98:145;-1:-1:-1;6298:2:145;6283:18;;6270:32;;-1:-1:-1;6314:16:145;;;6311:36;;;6343:1;6340;6333:12;6311:36;;6382:72;6446:7;6435:8;6424:9;6420:24;6382:72;:::i;:::-;5363:1306;;;;-1:-1:-1;5363:1306:145;;;;6473:8;;6555:2;6540:18;;6527:32;;6606:3;6591:19;;6578:33;;-1:-1:-1;6658:3:145;6643:19;6630:33;;-1:-1:-1;5363:1306:145;-1:-1:-1;;;;5363:1306:145:o;6674:1237::-;6861:6;6869;6877;6885;6893;6901;6909;6917;6970:3;6958:9;6949:7;6945:23;6941:33;6938:53;;;6987:1;6984;6977:12;6938:53;7027:9;7014:23;-1:-1:-1;;;;;7097:2:145;7089:6;7086:14;7083:34;;;7113:1;7110;7103:12;7083:34;7152:70;7214:7;7205:6;7194:9;7190:22;7152:70;:::i;:::-;7241:8;;-1:-1:-1;7126:96:145;-1:-1:-1;7329:2:145;7314:18;;7301:32;;-1:-1:-1;7345:16:145;;;7342:36;;;7374:1;7371;7364:12;7342:36;7413:72;7477:7;7466:8;7455:9;7451:24;7413:72;:::i;:::-;7504:8;;-1:-1:-1;7387:98:145;-1:-1:-1;7592:2:145;7577:18;;7564:32;;-1:-1:-1;7608:16:145;;;7605:36;;;7637:1;7634;7627:12;7605:36;;7676:72;7740:7;7729:8;7718:9;7714:24;7676:72;:::i;:::-;6674:1237;;;;-1:-1:-1;6674:1237:145;;;;7767:8;;7849:2;7834:18;;7821:32;;7900:3;7885:19;7872:33;;-1:-1:-1;6674:1237:145;-1:-1:-1;;;;6674:1237:145:o;7916:712::-;7970:5;8023:3;8016:4;8008:6;8004:17;8000:27;7990:55;;8041:1;8038;8031:12;7990:55;8077:6;8064:20;8103:4;-1:-1:-1;;;;;8122:2:145;8119:26;8116:52;;;8148:18;;:::i;:::-;8194:2;8191:1;8187:10;8217:28;8241:2;8237;8233:11;8217:28;:::i;:::-;8279:15;;;8349;;;8345:24;;;8310:12;;;;8381:15;;;8378:35;;;8409:1;8406;8399:12;8378:35;8445:2;8437:6;8433:15;8422:26;;8457:142;8473:6;8468:3;8465:15;8457:142;;;8539:17;;8527:30;;8490:12;;;;8577;;;;8457:142;;;8617:5;7916:712;-1:-1:-1;;;;;;;7916:712:145:o;8633:943::-;8787:6;8795;8803;8811;8819;8872:3;8860:9;8851:7;8847:23;8843:33;8840:53;;;8889:1;8886;8879:12;8840:53;8912:29;8931:9;8912:29;:::i;:::-;8902:39;;8960:38;8994:2;8983:9;8979:18;8960:38;:::i;:::-;8950:48;;9049:2;9038:9;9034:18;9021:32;-1:-1:-1;;;;;9113:2:145;9105:6;9102:14;9099:34;;;9129:1;9126;9119:12;9099:34;9152:61;9205:7;9196:6;9185:9;9181:22;9152:61;:::i;:::-;9142:71;;9266:2;9255:9;9251:18;9238:32;9222:48;;9295:2;9285:8;9282:16;9279:36;;;9311:1;9308;9301:12;9279:36;9334:63;9389:7;9378:8;9367:9;9363:24;9334:63;:::i;:::-;9324:73;;9450:3;9439:9;9435:19;9422:33;9406:49;;9480:2;9470:8;9467:16;9464:36;;;9496:1;9493;9486:12;9464:36;;9519:51;9562:7;9551:8;9540:9;9536:24;9519:51;:::i;:::-;9509:61;;;8633:943;;;;;;;;:::o;9763:606::-;9867:6;9875;9883;9891;9899;9952:3;9940:9;9931:7;9927:23;9923:33;9920:53;;;9969:1;9966;9959:12;9920:53;9992:29;10011:9;9992:29;:::i;:::-;9982:39;;10040:38;10074:2;10063:9;10059:18;10040:38;:::i;:::-;10030:48;;10125:2;10114:9;10110:18;10097:32;10087:42;;10176:2;10165:9;10161:18;10148:32;10138:42;;10231:3;10220:9;10216:19;10203:33;-1:-1:-1;;;;;10251:6:145;10248:30;10245:50;;;10291:1;10288;10281:12;10245:50;10314:49;10355:7;10346:6;10335:9;10331:22;10314:49;:::i;10374:266::-;10462:6;10457:3;10450:19;10514:6;10507:5;10500:4;10495:3;10491:14;10478:43;-1:-1:-1;10566:1:145;10541:16;;;10559:4;10537:27;;;10530:38;;;;10622:2;10601:15;;;-1:-1:-1;;10597:29:145;10588:39;;;10584:50;;10374:266::o;10645:557::-;10943:1;10939;10934:3;10930:11;10926:19;10918:6;10914:32;10903:9;10896:51;10983:6;10978:2;10967:9;10963:18;10956:34;11026:3;11021:2;11010:9;11006:18;10999:31;10877:4;11047:62;11104:3;11093:9;11089:19;11081:6;11073;11047:62;:::i;:::-;11140:2;11125:18;;11118:34;;;;-1:-1:-1;11183:3:145;11168:19;11161:35;11039:70;10645:557;-1:-1:-1;;;;10645:557:145:o;11207:412::-;11449:1;11445;11440:3;11436:11;11432:19;11424:6;11420:32;11409:9;11402:51;11489:6;11484:2;11473:9;11469:18;11462:34;11532:2;11527;11516:9;11512:18;11505:30;11383:4;11552:61;11609:2;11598:9;11594:18;11586:6;11578;11552:61;:::i;:::-;11544:69;11207:412;-1:-1:-1;;;;;;11207:412:145:o;13267:399::-;13469:2;13451:21;;;13508:2;13488:18;;;13481:30;13547:34;13542:2;13527:18;;13520:62;-1:-1:-1;;;13613:2:145;13598:18;;13591:33;13656:3;13641:19;;13267:399::o;13671:127::-;13732:10;13727:3;13723:20;13720:1;13713:31;13763:4;13760:1;13753:15;13787:4;13784:1;13777:15;13803:186;13862:6;13915:2;13903:9;13894:7;13890:23;13886:32;13883:52;;;13931:1;13928;13921:12;13883:52;13954:29;13973:9;13954:29;:::i;13994:521::-;14071:4;14077:6;14137:11;14124:25;14231:2;14227:7;14216:8;14200:14;14196:29;14192:43;14172:18;14168:68;14158:96;;14250:1;14247;14240:12;14158:96;14277:33;;14329:20;;;-1:-1:-1;;;;;;14361:30:145;;14358:50;;;14404:1;14401;14394:12;14358:50;14437:4;14425:17;;-1:-1:-1;14468:14:145;14464:27;;;14454:38;;14451:58;;;14505:1;14502;14495:12;14520:127;14581:10;14576:3;14572:20;14569:1;14562:31;14612:4;14609:1;14602:15;14636:4;14633:1;14626:15;14652:135;14691:3;14712:17;;;14709:43;;14732:18;;:::i;:::-;-1:-1:-1;14779:1:145;14768:13;;14652:135::o;14792:1067::-;14899:6;14894:3;14887:19;14869:3;14925:4;14966:2;14961:3;14957:12;14991:11;15018;15011:18;;15068:6;15065:1;15061:14;15054:5;15050:26;15038:38;;15099:5;15122:1;15132:701;15146:6;15143:1;15140:13;15132:701;;;15217:5;15211:4;15207:16;15202:3;15195:29;15276:6;15263:20;15366:2;15362:7;15354:5;15338:14;15334:26;15330:40;15310:18;15306:65;15296:93;;15385:1;15382;15375:12;15296:93;15417:30;;15525:16;;;;15476:21;-1:-1:-1;;;;;15557:32:145;;15554:52;;;15602:1;15599;15592:12;15554:52;15655:8;15639:14;15635:29;15626:7;15622:43;15619:63;;;15678:1;15675;15668:12;15619:63;15703:50;15748:4;15738:8;15729:7;15703:50;:::i;:::-;15811:12;;;;15695:58;-1:-1:-1;;;15776:15:145;;;;15168:1;15161:9;15132:701;;;-1:-1:-1;15849:4:145;;14792:1067;-1:-1:-1;;;;;;;14792:1067:145:o;15864:1393::-;16316:3;16329:22;;;16301:19;;16386:22;;;16268:4;16466:6;16439:3;16424:19;;16268:4;16500:235;16514:6;16511:1;16508:13;16500:235;;;-1:-1:-1;;;;;16579:26:145;16598:6;16579:26;:::i;:::-;16575:52;16563:65;;16651:4;16710:15;;;;16675:12;;;;16536:1;16529:9;16500:235;;;-1:-1:-1;16773:19:145;;;16766:4;16751:20;;16744:49;16802:19;;;-1:-1:-1;;;;;16833:31:145;;16830:51;;;16877:1;16874;16867:12;16830:51;16911:6;16908:1;16904:14;16890:28;;16964:6;16956;16949:4;16944:3;16940:14;16927:44;16990:16;17046:18;;;17066:4;17042:29;;;17037:2;17022:18;;17015:57;17089:75;;17150:13;;17142:6;17134;17089:75;:::i;:::-;17195:2;17180:18;;17173:34;;;;-1:-1:-1;;17238:3:145;17223:19;17216:35;17081:83;15864:1393;-1:-1:-1;;;;;;15864:1393:145:o;18503:125::-;18568:9;;;18589:10;;;18586:36;;;18602:18;;:::i;18633:250::-;18718:1;18728:113;18742:6;18739:1;18736:13;18728:113;;;18818:11;;;18812:18;18799:11;;;18792:39;18764:2;18757:10;18728:113;;;-1:-1:-1;;18875:1:145;18857:16;;18850:27;18633:250::o;18888:812::-;19299:25;19294:3;19287:38;19269:3;19354:6;19348:13;19370:75;19438:6;19433:2;19428:3;19424:12;19417:4;19409:6;19405:17;19370:75;:::i;:::-;-1:-1:-1;;;19504:2:145;19464:16;;;19496:11;;;19489:40;19554:13;;19576:76;19554:13;19638:2;19630:11;;19623:4;19611:17;;19576:76;:::i;:::-;19672:17;19691:2;19668:26;;18888:812;-1:-1:-1;;;;18888:812:145:o;19705:396::-;19854:2;19843:9;19836:21;19817:4;19886:6;19880:13;19929:6;19924:2;19913:9;19909:18;19902:34;19945:79;20017:6;20012:2;20001:9;19997:18;19992:2;19984:6;19980:15;19945:79;:::i;:::-;20085:2;20064:15;-1:-1:-1;;20060:29:145;20045:45;;;;20092:2;20041:54;;19705:396;-1:-1:-1;;19705:396:145:o;20106:406::-;20308:2;20290:21;;;20347:2;20327:18;;;20320:30;20386:34;20381:2;20366:18;;20359:62;-1:-1:-1;;;20452:2:145;20437:18;;20430:40;20502:3;20487:19;;20106:406::o;20924:271::-;21107:6;21099;21094:3;21081:33;21063:3;21133:16;;21158:13;;;21133:16;20924:271;-1:-1:-1;20924:271:145:o;21620:168::-;21660:7;21726:1;21722;21718:6;21714:14;21711:1;21708:21;21703:1;21696:9;21689:17;21685:45;21682:71;;;21733:18;;:::i;:::-;-1:-1:-1;21773:9:145;;21620:168::o;21793:136::-;21832:3;21860:5;21850:39;;21869:18;;:::i;:::-;-1:-1:-1;;;21905:18:145;;21793:136::o", + "sourceMap": "119:616:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7619:402:50;;;;;;;;;;-1:-1:-1;7619:402:50;;;;;:::i;:::-;;:::i;:::-;;4770:228;;;;;;;;;;-1:-1:-1;4770:228:50;;;;;:::i;:::-;;:::i;:::-;;;1763:14:146;;1756:22;1738:41;;1726:2;1711:18;4770:228:50;;;;;;;;1272:66;;;;;;;;;;;;1312:26;1272:66;;;;;1936:25:146;;;1924:2;1909:18;1272:66:50;1790:177:146;1116:78:50;;;;;;;;;;;;1162:32;1116:78;;10216:459;;;;;;:::i;:::-;;:::i;5580:208::-;;;;;;;;;;-1:-1:-1;5580:208:50;;;;;:::i;:::-;;:::i;13466:200::-;;;;;;;;;;-1:-1:-1;13466:200:50;;;;;:::i;:::-;-1:-1:-1;;;13466:200:50;;;;;;;;;;-1:-1:-1;;;;;;4502:33:146;;;4484:52;;4472:2;4457:18;13466:200:50;4340:202:146;4378:129:47;;;;;;;;;;-1:-1:-1;4378:129:47;;;;;:::i;:::-;4452:7;4478:12;;;;;;;;;;:22;;;;4378:129;5867:136:50;;;;;;;;;;-1:-1:-1;5867:136:50;;;;;:::i;:::-;5933:9;6250:15;;;1470:1;6250:15;;;;;;;;;5961:35;;5867:136;4803:145:47;;;;;;;;;;-1:-1:-1;4803:145:47;;;;;:::i;:::-;;:::i;5154:123:50:-;;;;;;;;;;-1:-1:-1;5154:123:50;;;;;:::i;:::-;;:::i;5912:214:47:-;;;;;;;;;;-1:-1:-1;5912:214:47;;;;;:::i;:::-;;:::i;5359:141:50:-;;;;;;;;;;-1:-1:-1;5359:141:50;;;;;:::i;:::-;;:::i;13156:236::-;;;;;;;;;;-1:-1:-1;13156:236:50;;;;;:::i;:::-;;:::i;6674:284::-;;;;;;;;;;-1:-1:-1;6674:284:50;;;;;:::i;:::-;;:::i;8275:713::-;;;;;;;;;;-1:-1:-1;8275:713:50;;;;;:::i;:::-;;:::i;1200:66::-;;;;;;;;;;;;1240:26;1200:66;;2895:145:47;;;;;;;;;;-1:-1:-1;2895:145:47;;;;;:::i;:::-;;:::i;2027:49::-;;;;;;;;;;-1:-1:-1;2027:49:47;2072:4;2027:49;;1344:68:50;;;;;;;;;;;;1385:27;1344:68;;7074:325;;;;;;;;;;-1:-1:-1;7074:325:50;;;;;:::i;:::-;;:::i;14042:247::-;;;;;;;;;;-1:-1:-1;14042:247:50;;;;;:::i;:::-;-1:-1:-1;;;14042:247:50;;;;;;;;9512:230;;;;;;;;;;-1:-1:-1;9512:230:50;;;;;:::i;:::-;;:::i;6151:121::-;;;;;;;;;;-1:-1:-1;6151:121:50;;;;;:::i;:::-;6214:17;6250:15;;;:11;:15;;;;;;;6151:121;5228:147:47;;;;;;;;;;-1:-1:-1;5228:147:47;;;;;:::i;:::-;;:::i;10935:883:50:-;;;;;;:::i;:::-;;:::i;13742:219::-;;;;;;;;;;-1:-1:-1;13742:219:50;;;;;:::i;:::-;-1:-1:-1;;;13742:219:50;;;;;;;;6458:103;;;;;;;;;;-1:-1:-1;6545:9:50;;6458:103;;7619:402;1240:26;2505:16:47;2516:4;2505:10;:16::i;:::-;7842:10:50::1;7855:53;7869:6;7877:5;7884:4;;7890:11;7903:4;7855:13;:53::i;:::-;7842:66;;7918:20;7928:2;7932:5;7918:9;:20::i;:::-;7971:1;7967:2;7953:61;7974:6;7982:5;7989:4;;7995:11;8008:5;7953:61;;;;;;;;;;;:::i;:::-;;;;;;;;7832:189;7619:402:::0;;;;;;;;:::o;4770:228::-;4879:4;-1:-1:-1;;;;;;4902:49:50;;-1:-1:-1;;;4902:49:50;;:89;;;4955:36;4979:11;4955:23;:36::i;:::-;4895:96;4770:228;-1:-1:-1;;4770:228:50:o;10216:459::-;1312:26;4473:25;4481:4;4495:1;4473:7;:25::i;:::-;4468:87;;4514:30;4525:4;719:10:68;4514::50;:30::i;:::-;10436:10:::1;10449:56;10463:6;10471:5;10478:7;;10487:11;10500:4;10449:13;:56::i;:::-;10436:69;;10516:28;10528:2;10532:11;10516;:28::i;:::-;10554:32;10563:6;10571:5;10578:7;;10554:8;:32::i;:::-;10618:1;10614:2;10601:43;10621:6;10629:5;10636:7;;10601:43;;;;;;;;;:::i;:::-;;;;;;;;10654:14;10665:2;10654:10;:14::i;:::-;10426:249;10216:459:::0;;;;;;;:::o;5580:208::-;5647:10;6250:15;;;:11;:15;;;;;;1470:1;5722:9;:27;:59;;;;;5766:15;5753:9;:28;;5722:59;5715:66;5580:208;-1:-1:-1;;;5580:208:50:o;4803:145:47:-;4452:7;4478:12;;;;;;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;4916:25:::1;4927:4;4933:7;4916:10;:25::i;:::-;4803:145:::0;;;:::o;5154:123:50:-;5216:15;6250;;;:11;:15;;;;;;5216;;5250:16;:20;;5154:123;-1:-1:-1;;5154:123:50:o;5912:214:47:-;-1:-1:-1;;;;;6007:23:47;;719:10:68;6007:23:47;5999:83;;;;-1:-1:-1;;;5999:83:47;;11826:2:146;5999:83:47;;;11808:21:146;11865:2;11845:18;;;11838:30;11904:34;11884:18;;;11877:62;-1:-1:-1;;;11955:18:146;;;11948:45;12010:19;;5999:83:47;;;;;;;;;6093:26;6105:4;6111:7;6093:11;:26::i;:::-;5912:214;;:::o;5359:141:50:-;5428:12;6250:15;;;1470:1;6250:15;;;;;;;;5459:16;6151:121;13156:236;13230:10;13252:4;13230:27;13222:83;;;;-1:-1:-1;;;13222:83:50;;12242:2:146;13222:83:50;;;12224:21:146;12281:2;12261:18;;;12254:30;12320:34;12300:18;;;12293:62;-1:-1:-1;;;12371:18:146;;;12364:41;12422:19;;13222:83:50;12040:407:146;13222:83:50;13335:9;;13320:35;;;12626:25:146;;;12682:2;12667:18;;12660:34;;;13320:35:50;;12599:18:146;13320:35:50;;;;;;;13365:9;:20;13156:236::o;6674:284::-;6859:12;6911:6;6919:5;6926:4;;6932:11;6945:4;6900:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6890:61;;;;;;6883:68;;6674:284;;;;;;;;:::o;8275:713::-;1240:26;2505:16:47;2516:4;2505:10;:16::i;:::-;8541:31:50;;::::1;8533:79;;;;-1:-1:-1::0;;;8533:79:50::1;;;;;;;:::i;:::-;8630:33:::0;;::::1;8622:81;;;;-1:-1:-1::0;;;8622:81:50::1;;;;;;;:::i;:::-;8714:10;8727:64;8746:7;;8755:6;;8763:8;;8773:11;8786:4;8727:18;:64::i;:::-;8714:77;;8801:20;8811:2;8815:5;8801:9;:20::i;:::-;8836:9;8831:151;8851:18:::0;;::::1;8831:151;;;8913:1;8909:2;8895:76;8916:7;;8924:1;8916:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8928:6;;8935:1;8928:9;;;;;;;:::i;:::-;;;;;;;8939:8;;8948:1;8939:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;8952;8965:5;8895:76;;;;;;;;;;;:::i;:::-;;;;;;;;8871:3;::::0;::::1;:::i;:::-;;;8831:151;;;;8523:465;8275:713:::0;;;;;;;;;;:::o;2895:145:47:-;2981:4;3004:12;;;;;;;;;;;-1:-1:-1;;;;;3004:29:47;;;;;;;;;;;;;;;2895:145::o;7074:325:50:-;7294:12;7346:7;;7355:6;;7363:8;;7373:11;7386:4;7335:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7325:67;;;;;;7318:74;;7074:325;;;;;;;;;;:::o;9512:230::-;1385:27;2505:16:47;2516:4;2505:10;:16::i;:::-;9598:22:50::1;9617:2;9598:18;:22::i;:::-;9590:84;;;::::0;-1:-1:-1;;;9590:84:50;;17464:2:146;9590:84:50::1;::::0;::::1;17446:21:146::0;17503:2;17483:18;;;17476:30;17542:34;17522:18;;;17515:62;-1:-1:-1;;;17593:18:146;;;17586:47;17650:19;;9590:84:50::1;17262:413:146::0;9590:84:50::1;9691:15;::::0;;;:11:::1;:15;::::0;;;;;9684:22;;;9722:13;9703:2;;9722:13:::1;::::0;::::1;9512:230:::0;;:::o;5228:147:47:-;4452:7;4478:12;;;;;;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;5342:26:::1;5354:4;5360:7;5342:11;:26::i;10935:883:50:-:0;1312:26;4473:25;4481:4;4495:1;4473:7;:25::i;:::-;4468:87;;4514:30;4525:4;719:10:68;4514::50;:30::i;:::-;11195:31;;::::1;11187:79;;;;-1:-1:-1::0;;;11187:79:50::1;;;;;;;:::i;:::-;11284:33:::0;;::::1;11276:81;;;;-1:-1:-1::0;;;11276:81:50::1;;;;;;;:::i;:::-;11368:10;11381:64;11400:7;;11409:6;;11417:8;;11427:11;11440:4;11381:18;:64::i;:::-;11368:77;;11456:28;11468:2;11472:11;11456;:28::i;:::-;11499:9;11494:294;11514:18:::0;;::::1;11494:294;;;11553:14;11570:7;;11578:1;11570:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11553:27;;11594:13;11610:6;;11617:1;11610:9;;;;;;;:::i;:::-;;;;;;;11594:25;;11633:22;;11658:8;;11667:1;11658:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;11633:36;;;;11683:32;11692:6;11700:5;11707:7;;11683:8;:32::i;:::-;11751:1;11747:2;11734:43;11754:6;11762:5;11769:7;;11734:43;;;;;;;;;:::i;:::-;;;;;;;;11539:249;;;;11534:3;;;;:::i;:::-;;;11494:294;;;;11797:14;11808:2;11797:10;:14::i;:::-;11177:641;10935:883:::0;;;;;;;;;:::o;3334:103:47:-;3400:30;3411:4;719:10:68;4514::50;:30::i;3400::47:-;3334:103;:::o;9089:281:50:-;9162:15;9174:2;9162:11;:15::i;:::-;9161:16;9153:76;;;;-1:-1:-1;;;9153:76:50;;17882:2:146;9153:76:50;;;17864:21:146;17921:2;17901:18;;;17894:30;17960:34;17940:18;;;17933:62;-1:-1:-1;;;18011:18:146;;;18004:45;18066:19;;9153:76:50;17680:411:146;9153:76:50;6545:9;;9247:5;:22;;9239:73;;;;-1:-1:-1;;;9239:73:50;;18298:2:146;9239:73:50;;;18280:21:146;18337:2;18317:18;;;18310:30;18376:34;18356:18;;;18349:62;-1:-1:-1;;;18427:18:146;;;18420:36;18473:19;;9239:73:50;18096:402:146;9239:73:50;9340:23;9358:5;9340:15;:23;:::i;:::-;9322:15;;;;:11;:15;;;;;;:41;;;;-1:-1:-1;9089:281:50:o;2606:202:47:-;2691:4;-1:-1:-1;;;;;;2714:47:47;;-1:-1:-1;;;2714:47:47;;:87;;-1:-1:-1;;;;;;;;;;937:40:71;;;2765:36:47;829:155:71;3718:479:47;3806:22;3814:4;3820:7;3806;:22::i;:::-;3801:390;;3989:28;4009:7;3989:19;:28::i;:::-;4088:38;4116:4;4123:2;4088:19;:38::i;:::-;3896:252;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3896:252:47;;;;;;;;;;-1:-1:-1;;;3844:336:47;;;;;;;:::i;12229:277:50:-;12314:20;12331:2;12314:16;:20::i;:::-;12306:75;;;;-1:-1:-1;;;12306:75:50;;;;;;;:::i;:::-;12399:25;;;:57;;-1:-1:-1;5933:9:50;6250:15;;;1470:1;6250:15;;;;;;;;;5961:35;12428:28;12391:108;;;;-1:-1:-1;;;12391:108:50;;20719:2:146;12391:108:50;;;20701:21:146;20758:2;20738:18;;;20731:30;20797:34;20777:18;;;20770:62;-1:-1:-1;;;20848:18:146;;;20841:36;20894:19;;12391:108:50;20517:402:146;11881:265:50;12009:12;12027:6;-1:-1:-1;;;;;12027:11:50;12046:5;12053:4;;12027:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12008:50;;;12076:7;12068:71;;;;-1:-1:-1;;;12068:71:50;;21402:2:146;12068:71:50;;;21384:21:146;21441:2;21421:18;;;21414:30;21480:34;21460:18;;;21453:62;-1:-1:-1;;;21531:18:146;;;21524:49;21590:19;;12068:71:50;21200:415:146;12068:71:50;11998:148;11881:265;;;;:::o;12588:175::-;12646:20;12663:2;12646:16;:20::i;:::-;12638:75;;;;-1:-1:-1;;;12638:75:50;;;;;;;:::i;:::-;12723:15;;;;1470:1;12723:15;;;;;;;;:33;12588:175::o;7461:233:47:-;7544:22;7552:4;7558:7;7544;:22::i;:::-;7539:149;;7582:6;:12;;;;;;;;;;;-1:-1:-1;;;;;7582:29:47;;;;;;;;;:36;;-1:-1:-1;;7582:36:47;7614:4;7582:36;;;7664:12;719:10:68;;640:96;7664:12:47;-1:-1:-1;;;;;7637:40:47;7655:7;-1:-1:-1;;;;;7637:40:47;7649:4;7637:40;;;;;;;;;;7461:233;;:::o;7865:234::-;7948:22;7956:4;7962:7;7948;:22::i;:::-;7944:149;;;8018:5;7986:12;;;;;;;;;;;-1:-1:-1;;;;;7986:29:47;;;;;;;;;;:37;;-1:-1:-1;;7986:37:47;;;8042:40;719:10:68;;7986:12:47;;8042:40;;8018:5;8042:40;7865:234;;:::o;2102:149:70:-;2160:13;2192:52;-1:-1:-1;;;;;2204:22:70;;311:2;1513:437;1588:13;1613:19;1645:10;1649:6;1645:1;:10;:::i;:::-;:14;;1658:1;1645:14;:::i;:::-;-1:-1:-1;;;;;1635:25:70;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1635:25:70;;1613:47;;-1:-1:-1;;;1670:6:70;1677:1;1670:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1670:15:70;;;;;;;;;-1:-1:-1;;;1695:6:70;1702:1;1695:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1695:15:70;;;;;;;;-1:-1:-1;1725:9:70;1737:10;1741:6;1737:1;:10;:::i;:::-;:14;;1750:1;1737:14;:::i;:::-;1725:26;;1720:128;1757:1;1753;:5;1720:128;;;-1:-1:-1;;;1800:5:70;1808:3;1800:11;1791:21;;;;;;;:::i;:::-;;;;1779:6;1786:1;1779:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1779:33:70;;;;;;;;-1:-1:-1;1836:1:70;1826:11;;;;;1760:3;;;:::i;:::-;;;1720:128;;;-1:-1:-1;1865:10:70;;1857:55;;;;-1:-1:-1;;;1857:55:70;;22136:2:146;1857:55:70;;;22118:21:146;;;22155:18;;;22148:30;22214:34;22194:18;;;22187:62;22266:18;;1857:55:70;21934:356:146;14:173;82:20;;-1:-1:-1;;;;;131:31:146;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:347::-;243:8;253:6;307:3;300:4;292:6;288:17;284:27;274:55;;325:1;322;315:12;274:55;-1:-1:-1;348:20:146;;-1:-1:-1;;;;;380:30:146;;377:50;;;423:1;420;413:12;377:50;460:4;452:6;448:17;436:29;;512:3;505:4;496:6;488;484:19;480:30;477:39;474:59;;;529:1;526;519:12;474:59;192:347;;;;;:::o;544:758::-;659:6;667;675;683;691;699;707;760:3;748:9;739:7;735:23;731:33;728:53;;;777:1;774;767:12;728:53;800:29;819:9;800:29;:::i;:::-;790:39;;876:2;865:9;861:18;848:32;838:42;;931:2;920:9;916:18;903:32;-1:-1:-1;;;;;950:6:146;947:30;944:50;;;990:1;987;980:12;944:50;1029:58;1079:7;1070:6;1059:9;1055:22;1029:58;:::i;:::-;544:758;;;;-1:-1:-1;1106:8:146;1188:2;1173:18;;1160:32;;1239:3;1224:19;;1211:33;;-1:-1:-1;1291:3:146;1276:19;;;1263:33;;-1:-1:-1;544:758:146;-1:-1:-1;;;;544:758:146:o;1307:286::-;1365:6;1418:2;1406:9;1397:7;1393:23;1389:32;1386:52;;;1434:1;1431;1424:12;1386:52;1460:23;;-1:-1:-1;;;;;;1512:32:146;;1502:43;;1492:71;;1559:1;1556;1549:12;1972:689;2078:6;2086;2094;2102;2110;2118;2171:3;2159:9;2150:7;2146:23;2142:33;2139:53;;;2188:1;2185;2178:12;2139:53;2211:29;2230:9;2211:29;:::i;:::-;2201:39;;2287:2;2276:9;2272:18;2259:32;2249:42;;2342:2;2331:9;2327:18;2314:32;-1:-1:-1;;;;;2361:6:146;2358:30;2355:50;;;2401:1;2398;2391:12;2355:50;2440:58;2490:7;2481:6;2470:9;2466:22;2440:58;:::i;:::-;1972:689;;;;-1:-1:-1;2517:8:146;2599:2;2584:18;;2571:32;;2650:3;2635:19;;;2622:33;;-1:-1:-1;1972:689:146;-1:-1:-1;;;;1972:689:146:o;2666:180::-;2725:6;2778:2;2766:9;2757:7;2753:23;2749:32;2746:52;;;2794:1;2791;2784:12;2746:52;-1:-1:-1;2817:23:146;;2666:180;-1:-1:-1;2666:180:146:o;2851:127::-;2912:10;2907:3;2903:20;2900:1;2893:31;2943:4;2940:1;2933:15;2967:4;2964:1;2957:15;2983:275;3054:2;3048:9;3119:2;3100:13;;-1:-1:-1;;3096:27:146;3084:40;;-1:-1:-1;;;;;3139:34:146;;3175:22;;;3136:62;3133:88;;;3201:18;;:::i;:::-;3237:2;3230:22;2983:275;;-1:-1:-1;2983:275:146:o;3263:530::-;3305:5;3358:3;3351:4;3343:6;3339:17;3335:27;3325:55;;3376:1;3373;3366:12;3325:55;3412:6;3399:20;-1:-1:-1;;;;;3434:2:146;3431:26;3428:52;;;3460:18;;:::i;:::-;3504:55;3547:2;3528:13;;-1:-1:-1;;3524:27:146;3553:4;3520:38;3504:55;:::i;:::-;3584:2;3575:7;3568:19;3630:3;3623:4;3618:2;3610:6;3606:15;3602:26;3599:35;3596:55;;;3647:1;3644;3637:12;3596:55;3712:2;3705:4;3697:6;3693:17;3686:4;3677:7;3673:18;3660:55;3760:1;3735:16;;;3753:4;3731:27;3724:38;;;;3739:7;3263:530;-1:-1:-1;;;3263:530:146:o;3798:537::-;3893:6;3901;3909;3917;3970:3;3958:9;3949:7;3945:23;3941:33;3938:53;;;3987:1;3984;3977:12;3938:53;4010:29;4029:9;4010:29;:::i;:::-;4000:39;;4058:38;4092:2;4081:9;4077:18;4058:38;:::i;:::-;4048:48;;4143:2;4132:9;4128:18;4115:32;4105:42;;4198:2;4187:9;4183:18;4170:32;-1:-1:-1;;;;;4217:6:146;4214:30;4211:50;;;4257:1;4254;4247:12;4211:50;4280:49;4321:7;4312:6;4301:9;4297:22;4280:49;:::i;:::-;4270:59;;;3798:537;;;;;;;:::o;4547:254::-;4615:6;4623;4676:2;4664:9;4655:7;4651:23;4647:32;4644:52;;;4692:1;4689;4682:12;4644:52;4728:9;4715:23;4705:33;;4757:38;4791:2;4780:9;4776:18;4757:38;:::i;:::-;4747:48;;4547:254;;;;;:::o;4991:367::-;5054:8;5064:6;5118:3;5111:4;5103:6;5099:17;5095:27;5085:55;;5136:1;5133;5126:12;5085:55;-1:-1:-1;5159:20:146;;-1:-1:-1;;;;;5191:30:146;;5188:50;;;5234:1;5231;5224:12;5188:50;5271:4;5263:6;5259:17;5247:29;;5331:3;5324:4;5314:6;5311:1;5307:14;5299:6;5295:27;5291:38;5288:47;5285:67;;;5348:1;5345;5338:12;5363:1306;5559:6;5567;5575;5583;5591;5599;5607;5615;5623;5676:3;5664:9;5655:7;5651:23;5647:33;5644:53;;;5693:1;5690;5683:12;5644:53;5733:9;5720:23;-1:-1:-1;;;;;5803:2:146;5795:6;5792:14;5789:34;;;5819:1;5816;5809:12;5789:34;5858:70;5920:7;5911:6;5900:9;5896:22;5858:70;:::i;:::-;5947:8;;-1:-1:-1;5832:96:146;-1:-1:-1;6035:2:146;6020:18;;6007:32;;-1:-1:-1;6051:16:146;;;6048:36;;;6080:1;6077;6070:12;6048:36;6119:72;6183:7;6172:8;6161:9;6157:24;6119:72;:::i;:::-;6210:8;;-1:-1:-1;6093:98:146;-1:-1:-1;6298:2:146;6283:18;;6270:32;;-1:-1:-1;6314:16:146;;;6311:36;;;6343:1;6340;6333:12;6311:36;;6382:72;6446:7;6435:8;6424:9;6420:24;6382:72;:::i;:::-;5363:1306;;;;-1:-1:-1;5363:1306:146;;;;6473:8;;6555:2;6540:18;;6527:32;;6606:3;6591:19;;6578:33;;-1:-1:-1;6658:3:146;6643:19;6630:33;;-1:-1:-1;5363:1306:146;-1:-1:-1;;;;5363:1306:146:o;6674:1237::-;6861:6;6869;6877;6885;6893;6901;6909;6917;6970:3;6958:9;6949:7;6945:23;6941:33;6938:53;;;6987:1;6984;6977:12;6938:53;7027:9;7014:23;-1:-1:-1;;;;;7097:2:146;7089:6;7086:14;7083:34;;;7113:1;7110;7103:12;7083:34;7152:70;7214:7;7205:6;7194:9;7190:22;7152:70;:::i;:::-;7241:8;;-1:-1:-1;7126:96:146;-1:-1:-1;7329:2:146;7314:18;;7301:32;;-1:-1:-1;7345:16:146;;;7342:36;;;7374:1;7371;7364:12;7342:36;7413:72;7477:7;7466:8;7455:9;7451:24;7413:72;:::i;:::-;7504:8;;-1:-1:-1;7387:98:146;-1:-1:-1;7592:2:146;7577:18;;7564:32;;-1:-1:-1;7608:16:146;;;7605:36;;;7637:1;7634;7627:12;7605:36;;7676:72;7740:7;7729:8;7718:9;7714:24;7676:72;:::i;:::-;6674:1237;;;;-1:-1:-1;6674:1237:146;;;;7767:8;;7849:2;7834:18;;7821:32;;7900:3;7885:19;7872:33;;-1:-1:-1;6674:1237:146;-1:-1:-1;;;;6674:1237:146:o;7916:712::-;7970:5;8023:3;8016:4;8008:6;8004:17;8000:27;7990:55;;8041:1;8038;8031:12;7990:55;8077:6;8064:20;8103:4;-1:-1:-1;;;;;8122:2:146;8119:26;8116:52;;;8148:18;;:::i;:::-;8194:2;8191:1;8187:10;8217:28;8241:2;8237;8233:11;8217:28;:::i;:::-;8279:15;;;8349;;;8345:24;;;8310:12;;;;8381:15;;;8378:35;;;8409:1;8406;8399:12;8378:35;8445:2;8437:6;8433:15;8422:26;;8457:142;8473:6;8468:3;8465:15;8457:142;;;8539:17;;8527:30;;8490:12;;;;8577;;;;8457:142;;;8617:5;7916:712;-1:-1:-1;;;;;;;7916:712:146:o;8633:943::-;8787:6;8795;8803;8811;8819;8872:3;8860:9;8851:7;8847:23;8843:33;8840:53;;;8889:1;8886;8879:12;8840:53;8912:29;8931:9;8912:29;:::i;:::-;8902:39;;8960:38;8994:2;8983:9;8979:18;8960:38;:::i;:::-;8950:48;;9049:2;9038:9;9034:18;9021:32;-1:-1:-1;;;;;9113:2:146;9105:6;9102:14;9099:34;;;9129:1;9126;9119:12;9099:34;9152:61;9205:7;9196:6;9185:9;9181:22;9152:61;:::i;:::-;9142:71;;9266:2;9255:9;9251:18;9238:32;9222:48;;9295:2;9285:8;9282:16;9279:36;;;9311:1;9308;9301:12;9279:36;9334:63;9389:7;9378:8;9367:9;9363:24;9334:63;:::i;:::-;9324:73;;9450:3;9439:9;9435:19;9422:33;9406:49;;9480:2;9470:8;9467:16;9464:36;;;9496:1;9493;9486:12;9464:36;;9519:51;9562:7;9551:8;9540:9;9536:24;9519:51;:::i;:::-;9509:61;;;8633:943;;;;;;;;:::o;9763:606::-;9867:6;9875;9883;9891;9899;9952:3;9940:9;9931:7;9927:23;9923:33;9920:53;;;9969:1;9966;9959:12;9920:53;9992:29;10011:9;9992:29;:::i;:::-;9982:39;;10040:38;10074:2;10063:9;10059:18;10040:38;:::i;:::-;10030:48;;10125:2;10114:9;10110:18;10097:32;10087:42;;10176:2;10165:9;10161:18;10148:32;10138:42;;10231:3;10220:9;10216:19;10203:33;-1:-1:-1;;;;;10251:6:146;10248:30;10245:50;;;10291:1;10288;10281:12;10245:50;10314:49;10355:7;10346:6;10335:9;10331:22;10314:49;:::i;10374:266::-;10462:6;10457:3;10450:19;10514:6;10507:5;10500:4;10495:3;10491:14;10478:43;-1:-1:-1;10566:1:146;10541:16;;;10559:4;10537:27;;;10530:38;;;;10622:2;10601:15;;;-1:-1:-1;;10597:29:146;10588:39;;;10584:50;;10374:266::o;10645:557::-;10943:1;10939;10934:3;10930:11;10926:19;10918:6;10914:32;10903:9;10896:51;10983:6;10978:2;10967:9;10963:18;10956:34;11026:3;11021:2;11010:9;11006:18;10999:31;10877:4;11047:62;11104:3;11093:9;11089:19;11081:6;11073;11047:62;:::i;:::-;11140:2;11125:18;;11118:34;;;;-1:-1:-1;11183:3:146;11168:19;11161:35;11039:70;10645:557;-1:-1:-1;;;;10645:557:146:o;11207:412::-;11449:1;11445;11440:3;11436:11;11432:19;11424:6;11420:32;11409:9;11402:51;11489:6;11484:2;11473:9;11469:18;11462:34;11532:2;11527;11516:9;11512:18;11505:30;11383:4;11552:61;11609:2;11598:9;11594:18;11586:6;11578;11552:61;:::i;:::-;11544:69;11207:412;-1:-1:-1;;;;;;11207:412:146:o;13267:399::-;13469:2;13451:21;;;13508:2;13488:18;;;13481:30;13547:34;13542:2;13527:18;;13520:62;-1:-1:-1;;;13613:2:146;13598:18;;13591:33;13656:3;13641:19;;13267:399::o;13671:127::-;13732:10;13727:3;13723:20;13720:1;13713:31;13763:4;13760:1;13753:15;13787:4;13784:1;13777:15;13803:186;13862:6;13915:2;13903:9;13894:7;13890:23;13886:32;13883:52;;;13931:1;13928;13921:12;13883:52;13954:29;13973:9;13954:29;:::i;13994:521::-;14071:4;14077:6;14137:11;14124:25;14231:2;14227:7;14216:8;14200:14;14196:29;14192:43;14172:18;14168:68;14158:96;;14250:1;14247;14240:12;14158:96;14277:33;;14329:20;;;-1:-1:-1;;;;;;14361:30:146;;14358:50;;;14404:1;14401;14394:12;14358:50;14437:4;14425:17;;-1:-1:-1;14468:14:146;14464:27;;;14454:38;;14451:58;;;14505:1;14502;14495:12;14520:127;14581:10;14576:3;14572:20;14569:1;14562:31;14612:4;14609:1;14602:15;14636:4;14633:1;14626:15;14652:135;14691:3;14712:17;;;14709:43;;14732:18;;:::i;:::-;-1:-1:-1;14779:1:146;14768:13;;14652:135::o;14792:1067::-;14899:6;14894:3;14887:19;14869:3;14925:4;14966:2;14961:3;14957:12;14991:11;15018;15011:18;;15068:6;15065:1;15061:14;15054:5;15050:26;15038:38;;15099:5;15122:1;15132:701;15146:6;15143:1;15140:13;15132:701;;;15217:5;15211:4;15207:16;15202:3;15195:29;15276:6;15263:20;15366:2;15362:7;15354:5;15338:14;15334:26;15330:40;15310:18;15306:65;15296:93;;15385:1;15382;15375:12;15296:93;15417:30;;15525:16;;;;15476:21;-1:-1:-1;;;;;15557:32:146;;15554:52;;;15602:1;15599;15592:12;15554:52;15655:8;15639:14;15635:29;15626:7;15622:43;15619:63;;;15678:1;15675;15668:12;15619:63;15703:50;15748:4;15738:8;15729:7;15703:50;:::i;:::-;15811:12;;;;15695:58;-1:-1:-1;;;15776:15:146;;;;15168:1;15161:9;15132:701;;;-1:-1:-1;15849:4:146;;14792:1067;-1:-1:-1;;;;;;;14792:1067:146:o;15864:1393::-;16316:3;16329:22;;;16301:19;;16386:22;;;16268:4;16466:6;16439:3;16424:19;;16268:4;16500:235;16514:6;16511:1;16508:13;16500:235;;;-1:-1:-1;;;;;16579:26:146;16598:6;16579:26;:::i;:::-;16575:52;16563:65;;16651:4;16710:15;;;;16675:12;;;;16536:1;16529:9;16500:235;;;-1:-1:-1;16773:19:146;;;16766:4;16751:20;;16744:49;16802:19;;;-1:-1:-1;;;;;16833:31:146;;16830:51;;;16877:1;16874;16867:12;16830:51;16911:6;16908:1;16904:14;16890:28;;16964:6;16956;16949:4;16944:3;16940:14;16927:44;16990:16;17046:18;;;17066:4;17042:29;;;17037:2;17022:18;;17015:57;17089:75;;17150:13;;17142:6;17134;17089:75;:::i;:::-;17195:2;17180:18;;17173:34;;;;-1:-1:-1;;17238:3:146;17223:19;17216:35;17081:83;15864:1393;-1:-1:-1;;;;;;15864:1393:146:o;18503:125::-;18568:9;;;18589:10;;;18586:36;;;18602:18;;:::i;18633:250::-;18718:1;18728:113;18742:6;18739:1;18736:13;18728:113;;;18818:11;;;18812:18;18799:11;;;18792:39;18764:2;18757:10;18728:113;;;-1:-1:-1;;18875:1:146;18857:16;;18850:27;18633:250::o;18888:812::-;19299:25;19294:3;19287:38;19269:3;19354:6;19348:13;19370:75;19438:6;19433:2;19428:3;19424:12;19417:4;19409:6;19405:17;19370:75;:::i;:::-;-1:-1:-1;;;19504:2:146;19464:16;;;19496:11;;;19489:40;19554:13;;19576:76;19554:13;19638:2;19630:11;;19623:4;19611:17;;19576:76;:::i;:::-;19672:17;19691:2;19668:26;;18888:812;-1:-1:-1;;;;18888:812:146:o;19705:396::-;19854:2;19843:9;19836:21;19817:4;19886:6;19880:13;19929:6;19924:2;19913:9;19909:18;19902:34;19945:79;20017:6;20012:2;20001:9;19997:18;19992:2;19984:6;19980:15;19945:79;:::i;:::-;20085:2;20064:15;-1:-1:-1;;20060:29:146;20045:45;;;;20092:2;20041:54;;19705:396;-1:-1:-1;;19705:396:146:o;20106:406::-;20308:2;20290:21;;;20347:2;20327:18;;;20320:30;20386:34;20381:2;20366:18;;20359:62;-1:-1:-1;;;20452:2:146;20437:18;;20430:40;20502:3;20487:19;;20106:406::o;20924:271::-;21107:6;21099;21094:3;21081:33;21063:3;21133:16;;21158:13;;;21133:16;20924:271;-1:-1:-1;20924:271:146:o;21620:168::-;21660:7;21726:1;21722;21718:6;21714:14;21711:1;21708:21;21703:1;21696:9;21689:17;21685:45;21682:71;;;21733:18;;:::i;:::-;-1:-1:-1;21773:9:146;;21620:168::o;21793:136::-;21832:3;21860:5;21850:39;;21869:18;;:::i;:::-;-1:-1:-1;;;21905:18:146;;21793:136::o", "linkReferences": {} }, "methodIdentifiers": { @@ -1994,22 +1994,22 @@ }, "ast": { "absolutePath": "src/libraries/Timelock.sol", - "id": 44224, + "id": 44298, "exportedSymbols": { "Timelock": [ - 44223 + 44297 ], "TimelockController": [ 32511 ] }, "nodeType": "SourceUnit", - "src": "0:736:111", + "src": "0:736:112", "nodes": [ { - "id": 44197, + "id": 44271, "nodeType": "PragmaDirective", - "src": "0:23:111", + "src": "0:23:112", "nodes": [], "literals": [ "solidity", @@ -2018,24 +2018,24 @@ ] }, { - "id": 44199, + "id": 44273, "nodeType": "ImportDirective", - "src": "25:92:111", + "src": "25:92:112", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol", "file": "openzeppelin-contracts/governance/TimelockController.sol", "nameLocation": "-1:-1:-1", - "scope": 44224, + "scope": 44298, "sourceUnit": 32512, "symbolAliases": [ { "foreign": { - "id": 44198, + "id": 44272, "name": "TimelockController", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 32511, - "src": "33:18:111", + "src": "33:18:112", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2044,26 +2044,26 @@ "unitAlias": "" }, { - "id": 44223, + "id": 44297, "nodeType": "ContractDefinition", - "src": "119:616:111", + "src": "119:616:112", "nodes": [ { - "id": 44222, + "id": 44296, "nodeType": "FunctionDefinition", - "src": "534:199:111", + "src": "534:199:112", "nodes": [], "body": { - "id": 44221, + "id": 44295, "nodeType": "Block", - "src": "731:2:111", + "src": "731:2:112", "nodes": [], "statements": [] }, "documentation": { - "id": 44202, + "id": 44276, "nodeType": "StructuredDocumentation", - "src": "165:364:111", + "src": "165:364:112", "text": " @dev Initializes the contract with the following parameters:\n - `minDelay`: initial minimum delay for operations\n - `proposers`: accounts to be granted proposer and canceller roles\n - `executors`: accounts to be granted executor role\n - `admin`: optional account to be granted admin role; disable with zero address" }, "implemented": true, @@ -2072,85 +2072,85 @@ { "arguments": [ { - "id": 44215, + "id": 44289, "name": "minDelay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44204, - "src": "692:8:111", + "referencedDeclaration": 44278, + "src": "692:8:112", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 44216, + "id": 44290, "name": "proposers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44207, - "src": "702:9:111", + "referencedDeclaration": 44281, + "src": "702:9:112", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { - "id": 44217, + "id": 44291, "name": "executors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44210, - "src": "713:9:111", + "referencedDeclaration": 44284, + "src": "713:9:112", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { - "id": 44218, + "id": 44292, "name": "admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44212, - "src": "724:5:111", + "referencedDeclaration": 44286, + "src": "724:5:112", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], - "id": 44219, + "id": 44293, "kind": "baseConstructorSpecifier", "modifierName": { - "id": 44214, + "id": 44288, "name": "TimelockController", "nameLocations": [ - "673:18:111" + "673:18:112" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32511, - "src": "673:18:111" + "src": "673:18:112" }, "nodeType": "ModifierInvocation", - "src": "673:57:111" + "src": "673:57:112" } ], "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 44213, + "id": 44287, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 44204, + "id": 44278, "mutability": "mutable", "name": "minDelay", - "nameLocation": "563:8:111", + "nameLocation": "563:8:112", "nodeType": "VariableDeclaration", - "scope": 44222, - "src": "555:16:111", + "scope": 44296, + "src": "555:16:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2158,10 +2158,10 @@ "typeString": "uint256" }, "typeName": { - "id": 44203, + "id": 44277, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "555:7:111", + "src": "555:7:112", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2171,13 +2171,13 @@ }, { "constant": false, - "id": 44207, + "id": 44281, "mutability": "mutable", "name": "proposers", - "nameLocation": "598:9:111", + "nameLocation": "598:9:112", "nodeType": "VariableDeclaration", - "scope": 44222, - "src": "581:26:111", + "scope": 44296, + "src": "581:26:112", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2186,19 +2186,19 @@ }, "typeName": { "baseType": { - "id": 44205, + "id": 44279, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:111", + "src": "581:7:112", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 44206, + "id": 44280, "nodeType": "ArrayTypeName", - "src": "581:9:111", + "src": "581:9:112", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -2208,13 +2208,13 @@ }, { "constant": false, - "id": 44210, + "id": 44284, "mutability": "mutable", "name": "executors", - "nameLocation": "634:9:111", + "nameLocation": "634:9:112", "nodeType": "VariableDeclaration", - "scope": 44222, - "src": "617:26:111", + "scope": 44296, + "src": "617:26:112", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2223,19 +2223,19 @@ }, "typeName": { "baseType": { - "id": 44208, + "id": 44282, "name": "address", "nodeType": "ElementaryTypeName", - "src": "617:7:111", + "src": "617:7:112", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 44209, + "id": 44283, "nodeType": "ArrayTypeName", - "src": "617:9:111", + "src": "617:9:112", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -2245,13 +2245,13 @@ }, { "constant": false, - "id": 44212, + "id": 44286, "mutability": "mutable", "name": "admin", - "nameLocation": "661:5:111", + "nameLocation": "661:5:112", "nodeType": "VariableDeclaration", - "scope": 44222, - "src": "653:13:111", + "scope": 44296, + "src": "653:13:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2259,10 +2259,10 @@ "typeString": "address" }, "typeName": { - "id": 44211, + "id": 44285, "name": "address", "nodeType": "ElementaryTypeName", - "src": "653:7:111", + "src": "653:7:112", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2272,15 +2272,15 @@ "visibility": "internal" } ], - "src": "545:127:111" + "src": "545:127:112" }, "returnParameters": { - "id": 44220, + "id": 44294, "nodeType": "ParameterList", "parameters": [], - "src": "731:0:111" + "src": "731:0:112" }, - "scope": 44223, + "scope": 44297, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -2290,18 +2290,18 @@ "baseContracts": [ { "baseName": { - "id": 44200, + "id": 44274, "name": "TimelockController", "nameLocations": [ - "140:18:111" + "140:18:112" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32511, - "src": "140:18:111" + "src": "140:18:112" }, - "id": 44201, + "id": 44275, "nodeType": "InheritanceSpecifier", - "src": "140:18:111" + "src": "140:18:112" } ], "canonicalName": "Timelock", @@ -2309,7 +2309,7 @@ "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 44223, + 44297, 32511, 33071, 34913, @@ -2320,11 +2320,11 @@ 35292 ], "name": "Timelock", - "nameLocation": "128:8:111", - "scope": 44224, + "nameLocation": "128:8:112", + "scope": 44298, "usedErrors": [] } ] }, - "id": 111 + "id": 112 } \ No newline at end of file diff --git a/src/amb/SourceAMB.sol b/src/amb/SourceAMB.sol index 9294a29..9ae9bad 100644 --- a/src/amb/SourceAMB.sol +++ b/src/amb/SourceAMB.sol @@ -13,9 +13,14 @@ import {TelepathyStorage} from "src/amb/TelepathyStorage.sol"; /// @author Succinct Labs /// @notice This contract is the entrypoint for sending messages to other chains. contract SourceAMB is TelepathyStorage, ITelepathyRouter { + error SendingDisabled(); + error CannotSendToSameChain(); + /// @notice Modifier to require that sending is enabled. modifier isSendingEnabled() { - require(sendingEnabled, "Sending is disabled"); + if (!sendingEnabled) { + revert SendingDisabled(); + } _; } @@ -29,7 +34,7 @@ contract SourceAMB is TelepathyStorage, ITelepathyRouter { isSendingEnabled returns (bytes32) { - require(destinationChainId != block.chainid, "Cannot send to same chain"); + if (destinationChainId == block.chainid) revert CannotSendToSameChain(); (bytes memory message, bytes32 messageRoot) = _getMessageAndRoot(destinationChainId, destinationAddress, data); emit SentMessage(nonce++, messageRoot, message); @@ -41,7 +46,7 @@ contract SourceAMB is TelepathyStorage, ITelepathyRouter { isSendingEnabled returns (bytes32) { - require(destinationChainId != block.chainid, "Cannot send to same chain"); + if (destinationChainId == block.chainid) revert CannotSendToSameChain(); (bytes memory message, bytes32 messageRoot) = _getMessageAndRoot(destinationChainId, Bytes32.fromAddress(destinationAddress), data); emit SentMessage(nonce++, messageRoot, message); @@ -60,7 +65,7 @@ contract SourceAMB is TelepathyStorage, ITelepathyRouter { bytes32 destinationAddress, bytes calldata data ) external isSendingEnabled returns (bytes32) { - require(destinationChainId != block.chainid, "Cannot send to same chain"); + if (destinationChainId == block.chainid) revert CannotSendToSameChain(); (bytes memory message, bytes32 messageRoot) = _getMessageAndRoot(destinationChainId, destinationAddress, data); messages[nonce] = messageRoot; @@ -73,7 +78,7 @@ contract SourceAMB is TelepathyStorage, ITelepathyRouter { address destinationAddress, bytes calldata data ) external isSendingEnabled returns (bytes32) { - require(destinationChainId != block.chainid, "Cannot send to same chain"); + if (destinationChainId == block.chainid) revert CannotSendToSameChain(); (bytes memory message, bytes32 messageRoot) = _getMessageAndRoot(destinationChainId, Bytes32.fromAddress(destinationAddress), data); messages[nonce] = messageRoot; diff --git a/src/amb/TargetAMB.sol b/src/amb/TargetAMB.sol index 4de9157..0129919 100644 --- a/src/amb/TargetAMB.sol +++ b/src/amb/TargetAMB.sol @@ -120,8 +120,9 @@ contract TargetAMB is TelepathyStorage, ReentrancyGuardUpgradeable, ITelepathyRe requireLightClientDelay(srcSlot, message.sourceChainId); bytes32 headerRoot = lightClients[message.sourceChainId].headers(srcSlot); require(headerRoot != bytes32(0), "HeaderRoot is missing"); - bool isValid = - SSZ.verifyReceiptsRoot(receiptsRoot, receiptsRootProof, headerRoot, srcSlot, txSlot); + bool isValid = SSZ.verifyReceiptsRoot( + receiptsRoot, receiptsRootProof, headerRoot, srcSlot, txSlot, message.sourceChainId + ); require(isValid, "Invalid receipts root proof"); } diff --git a/src/libraries/BeaconChainForks.sol b/src/libraries/BeaconChainForks.sol new file mode 100644 index 0000000..57f1621 --- /dev/null +++ b/src/libraries/BeaconChainForks.sol @@ -0,0 +1,19 @@ +pragma solidity 0.8.16; + +library BeaconChainForks { + function getCapellaSlot(uint32 sourceChainId) public pure returns (uint256) { + // Returns CAPELLA_FORK_EPOCH * SLOTS_PER_EPOCH for the corresponding beacon chain. + if (sourceChainId == 1) { + // https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/fork.md?plain=1#L30 + return 6209536; + } else if (sourceChainId == 5) { + // https://blog.ethereum.org/2023/03/08/goerli-shapella-announcement + // https://github.com/eth-clients/goerli/blob/main/prater/config.yaml#L43 + return 5193728; + } else { + // We don't know the exact value for Gnosis Chain yet so we return max uint256 + // and fallback to bellatrix logic. + return 2 ** 256 - 1; + } + } +} diff --git a/src/libraries/SimpleSerialize.sol b/src/libraries/SimpleSerialize.sol index e0181d6..29a997a 100644 --- a/src/libraries/SimpleSerialize.sol +++ b/src/libraries/SimpleSerialize.sol @@ -1,5 +1,7 @@ pragma solidity 0.8.16; +import {BeaconChainForks} from "src/libraries/BeaconChainForks.sol"; + struct BeaconBlockHeader { uint64 slot; uint64 proposerIndex; @@ -91,8 +93,21 @@ library SSZ { bytes32[] memory receiptsRootProof, bytes32 headerRoot, uint64 srcSlot, - uint64 txSlot + uint64 txSlot, + uint32 sourceChainId ) internal pure returns (bool) { + uint256 capellaForkSlot = BeaconChainForks.getCapellaSlot(sourceChainId); + + // In Bellatrix we use state.historical_roots, in Capella we use state.historical_summaries + // We use < here because capellaForkSlot is the last slot processed using Bellatrix logic; + // the last batch in state.historical_roots contains the 8192 slots *before* capellaForkSlot. + uint256 stateToHistoricalGIndex = txSlot < capellaForkSlot ? 7 : 27; + + // The list state.historical_summaries is empty at the beginning of Capella + uint256 historicalListIndex = txSlot < capellaForkSlot + ? txSlot / SLOTS_PER_HISTORICAL_ROOT + : (txSlot - capellaForkSlot) / SLOTS_PER_HISTORICAL_ROOT; + uint256 index; if (srcSlot == txSlot) { index = 8 + 3; @@ -104,14 +119,14 @@ library SSZ { index = index * 2 ** 9 + 387; } else if (txSlot < srcSlot) { index = 8 + 3; - index = index * 2 ** 5 + 7; + index = index * 2 ** 5 + stateToHistoricalGIndex; index = index * 2 + 0; - index = index * HISTORICAL_ROOTS_LIMIT + txSlot / SLOTS_PER_HISTORICAL_ROOT; + index = index * HISTORICAL_ROOTS_LIMIT + historicalListIndex; index = index * 2 + 1; index = index * SLOTS_PER_HISTORICAL_ROOT + txSlot % SLOTS_PER_HISTORICAL_ROOT; index = index * 2 ** 9 + 387; } else { - revert("TrustlessAMB: invalid target slot"); + revert("TargetAMB: invalid target slot"); } return isValidMerkleBranch(receiptsRoot, index, receiptsRootProof, headerRoot); } diff --git a/src/pubsub/TelepathyPublisher.sol b/src/pubsub/TelepathyPublisher.sol index f0a1e92..e8410d1 100644 --- a/src/pubsub/TelepathyPublisher.sol +++ b/src/pubsub/TelepathyPublisher.sol @@ -48,8 +48,9 @@ contract TelepathyPublisher is IPublisher, PubSubStorage { bytes32 headerRoot = telepathyRouter.lightClients(subscription.sourceChainId).headers(srcSlot); require(headerRoot != bytes32(0), "HeaderRoot is missing"); - bool isValid = - SSZ.verifyReceiptsRoot(receiptsRoot, receiptsRootProof, headerRoot, srcSlot, txSlot); + bool isValid = SSZ.verifyReceiptsRoot( + receiptsRoot, receiptsRootProof, headerRoot, srcSlot, txSlot, subscription.sourceChainId + ); require(isValid, "Invalid receipts root proof"); (bytes32[] memory eventTopics, bytes memory eventData) = EventProof.parseEvent( diff --git a/test/amb/TargetAMBLog.t.sol b/test/amb/TargetAMBLog.t.sol index 06ebb77..dc60aed 100644 --- a/test/amb/TargetAMBLog.t.sol +++ b/test/amb/TargetAMBLog.t.sol @@ -12,6 +12,9 @@ import {UUPSProxy} from "src/libraries/Proxy.sol"; import {LightClientMock} from "./LightClientMock.sol"; import {SimpleHandler} from "./TargetAMB.t.sol"; import {WrappedInitialize} from "./TargetAMB.t.sol"; +import {BeaconChainForks} from "src/libraries/BeaconChainForks.sol"; +import {MessageEncoding} from "src/libraries/MessageEncoding.sol"; +import {Address} from "src/libraries/Typecast.sol"; // The weird ordering here is because vm.parseJSON requires // alphabetaical ordering of the fields in the struct @@ -187,6 +190,76 @@ contract TargetAMBTest is Test { assertEq(simpleHandler.nonceToDataHash(0), expectedDataHash); } + function test_ExecuteMessageFromLog_WhenFarSlotBellatrixCapella() public { + // This test has tx slot in bellatrix, source slot in capella + ExecuteMessageFromLogParams memory testParams = parseParams("farSlotBellatrixCapella"); + getDefaultContractSetup(testParams); + + (uint64 srcSlot, uint64 txSlot) = abi.decode(testParams.srcSlotTxSlotPack, (uint64, uint64)); + Message memory message = MessageEncoding.decode(testParams.message); + assertTrue(txSlot < BeaconChainForks.getCapellaSlot(message.sourceChainId)); + assertTrue(srcSlot >= BeaconChainForks.getCapellaSlot(message.sourceChainId)); + + SimpleHandler simpleHandlerTemplate = new SimpleHandler(); + address destination = Address.fromBytes32(message.destinationAddress); + vm.etch(address(destination), address(simpleHandlerTemplate).code); + simpleHandler = SimpleHandler(address(destination)); + simpleHandler.setParams(testParams.SOURCE_CHAIN, message.sourceAddress, address(targetAMB)); + + // Execute the message and check that it succeeded + targetAMB.executeMessageFromLog( + testParams.srcSlotTxSlotPack, + testParams.message, + testParams.receiptsRootProof, + testParams.receiptsRoot, + testParams.receiptProof, + testParams.txIndexRLPEncoded, + testParams.logIndex + ); + bytes32 messageRoot = keccak256(testParams.message); + assertTrue(targetAMB.messageStatus(messageRoot) == MessageStatus.EXECUTION_SUCCEEDED); + + // Check that the simpleHandler processed the message correctly + assertEq(simpleHandler.nonce(), 1); + bytes32 expectedDataHash = keccak256(message.data); + assertEq(simpleHandler.nonceToDataHash(0), expectedDataHash); + } + + function test_ExecuteMessageFromLog_WhenFarSlotCapellaCapella() public { + // This test has tx slot in capella, source slot in capella + ExecuteMessageFromLogParams memory testParams = parseParams("farSlotCapellaCapella"); + getDefaultContractSetup(testParams); + + (uint64 srcSlot, uint64 txSlot) = abi.decode(testParams.srcSlotTxSlotPack, (uint64, uint64)); + Message memory message = MessageEncoding.decode(testParams.message); + assertTrue(txSlot >= BeaconChainForks.getCapellaSlot(message.sourceChainId)); + assertTrue(srcSlot >= BeaconChainForks.getCapellaSlot(message.sourceChainId)); + + SimpleHandler simpleHandlerTemplate = new SimpleHandler(); + address destination = Address.fromBytes32(message.destinationAddress); + vm.etch(address(destination), address(simpleHandlerTemplate).code); + simpleHandler = SimpleHandler(address(destination)); + simpleHandler.setParams(testParams.SOURCE_CHAIN, message.sourceAddress, address(targetAMB)); + + // Execute the message and check that it succeeded + targetAMB.executeMessageFromLog( + testParams.srcSlotTxSlotPack, + testParams.message, + testParams.receiptsRootProof, + testParams.receiptsRoot, + testParams.receiptProof, + testParams.txIndexRLPEncoded, + testParams.logIndex + ); + bytes32 messageRoot = keccak256(testParams.message); + assertTrue(targetAMB.messageStatus(messageRoot) == MessageStatus.EXECUTION_SUCCEEDED); + + // Check that the simpleHandler processed the message correctly + assertEq(simpleHandler.nonce(), 1); + bytes32 expectedDataHash = keccak256(message.data); + assertEq(simpleHandler.nonceToDataHash(0), expectedDataHash); + } + function test_ExecuteMessageFromLog_WhenCloseSlotBoundaryConditions() public { // This test is generated using `cli/src/generateTest.ts` uint256[] memory diffs = new uint[](3); diff --git a/test/amb/fixtures/capella/receiptsRootProof_A1.json b/test/amb/fixtures/capella/receiptsRootProof_A1.json new file mode 100644 index 0000000..daaf983 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_A1.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "txSlot": 5163710, + "srcSlot": 5234688, + "receiptsRootProof": [ + "0x38efdeae4da56f106d3f2f4deea7c1ccb1ab248177f843da0ccce230a8e7357f", + "0x28ff71d2214a389ed14fa624cfb6174598abbeeeb8c2fad365c306130e474f75", + "0x3696714404a3336334175fe6d77fc1829880bcf75394ec93cfc18ed15308ba90", + "0xf62f9b9de12f3c71aeb68c2822fd11322086236c0a62edecbc7c767f168946cd", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x2af9d7776232d6b05160d5806b674f40c722358a5e9dfe5dd2e5e1971d543d54", + "0xf329bf50883315f703b14c204e45a46e5f5d555a73ac57749d3526a415f7b61f", + "0x3738a7b5f6db8e91fa3132f9ccfd7682664d0b9c30d51830ffe4bce8d6db81e3", + "0x126a6820072e0a5be2660f35fb1f72fd48e56508c0ed756444cd0f58aff115b7", + "0x6b209d08f8a8f2f256af4973c5adc12e06b0bb3e6f90a436866ebd36e5437c42", + "0x53e65c62c3875559f4b13efbf1b5eede5b7ab60235b30e97e30a7897a5492bc2", + "0xc91267ca963b69e7f31b8f8e3327278d0719c7f0eacad6a8dc60c7ba3d6ac37e", + "0x8f6dea5c9c92d3ff059e88883233406a57a2b7e4069b972557a01aab55b5b0f4", + "0xbc9e23fcd900b2f96683b6ad63c0fed6f827e1ade03db0161b82a52ea5018b01", + "0x132b0910fd96075c194156eb7d658dc4518e9e2a7b74463a81c4828c1774d6f6", + "0xdd5ede4cbe62421968274d27a5c32f483a222e6391299a8dbdd2cc637b260eaa", + "0x3a314b016f181f0026ef3baa5167de550b27a9ca40a52f7f379eb40b2804eee1", + "0xe5c59fbfc86472b3125b7d5c1103571a49265d92b5ee66b04bdee68a9aaba355", + "0x281ae1c0a061c94b77b9e0c220323db824761a67a330e7d4d445c187deac7b4f", + "0xeb6d605c9b9d81f4d366f226d38b6c3bfdf198fa6b9dd83755d5913ddaceb9c3", + "0x1986bc601f005dcdf9f53c38c2aede7217aa0df944d3f1c3bbc6e19fac258c95", + "0x960ba0b6557e62ad9a721a24b15cf4aeac1d96f1fcd4dc13b61abbf8242bcaea", + "0x6c078529a23fdc1209e0790f002f78e7da3913429de54be72b609857bfd3c519", + "0x15798f994c536f13b9400d40a5154ab4181298be8fcc0e0873867f32fea1c91d", + "0xad3af4cd03b142546627c77d70e93717707097fecbf0f6bdae5e8073670d77a0", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0xc48e7a16f9fb51f091781f03173fbcc41349325e069782afaf002f16574c4fd0", + "0x2ba9ded7e2c9dd47683eb7bac5ea78830789560352014e7c92a679209656b1c9", + "0x845b02784a5232104aca0bfd841f0257353723af738d296af7ab6cf156c675c2", + "0x041b88f8fb52598a295967be5c96889f77e6d83f68a12e5d29caaead4da75704", + "0x1e5ccfd62497501750d8b5743341c7dbd91f990492a5f298a79225a127fc63de", + "0x7eebdc9f1a773ceb928c345f11780649de033691c43abec44bd1b25a1cab6091", + "0x2681f0e708d5d2c7f864bb271b85117f22bff0ec502b4d1f5751a4be33dac070", + "0x19995577d8b7ddb282468d73c8f68e619a0392ac7e34c11823c4471205a6706d" + ], + "receiptsRoot": "0xb4f284caa176733573a326cf9b90df880875cab1127f926e464cb5655fe4d661", + "gindex": 101049521929551230, + "sourceChain": 5 +} diff --git a/test/amb/fixtures/capella/receiptsRootProof_A2.json b/test/amb/fixtures/capella/receiptsRootProof_A2.json new file mode 100644 index 0000000..288c054 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_A2.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "txSlot": 5163710, + "srcSlot": 5234689, + "receiptsRootProof": [ + "0x38efdeae4da56f106d3f2f4deea7c1ccb1ab248177f843da0ccce230a8e7357f", + "0x28ff71d2214a389ed14fa624cfb6174598abbeeeb8c2fad365c306130e474f75", + "0x3696714404a3336334175fe6d77fc1829880bcf75394ec93cfc18ed15308ba90", + "0xf62f9b9de12f3c71aeb68c2822fd11322086236c0a62edecbc7c767f168946cd", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x2af9d7776232d6b05160d5806b674f40c722358a5e9dfe5dd2e5e1971d543d54", + "0xf329bf50883315f703b14c204e45a46e5f5d555a73ac57749d3526a415f7b61f", + "0x3738a7b5f6db8e91fa3132f9ccfd7682664d0b9c30d51830ffe4bce8d6db81e3", + "0x126a6820072e0a5be2660f35fb1f72fd48e56508c0ed756444cd0f58aff115b7", + "0x6b209d08f8a8f2f256af4973c5adc12e06b0bb3e6f90a436866ebd36e5437c42", + "0x53e65c62c3875559f4b13efbf1b5eede5b7ab60235b30e97e30a7897a5492bc2", + "0xc91267ca963b69e7f31b8f8e3327278d0719c7f0eacad6a8dc60c7ba3d6ac37e", + "0x8f6dea5c9c92d3ff059e88883233406a57a2b7e4069b972557a01aab55b5b0f4", + "0xbc9e23fcd900b2f96683b6ad63c0fed6f827e1ade03db0161b82a52ea5018b01", + "0x132b0910fd96075c194156eb7d658dc4518e9e2a7b74463a81c4828c1774d6f6", + "0xdd5ede4cbe62421968274d27a5c32f483a222e6391299a8dbdd2cc637b260eaa", + "0x3a314b016f181f0026ef3baa5167de550b27a9ca40a52f7f379eb40b2804eee1", + "0xe5c59fbfc86472b3125b7d5c1103571a49265d92b5ee66b04bdee68a9aaba355", + "0x281ae1c0a061c94b77b9e0c220323db824761a67a330e7d4d445c187deac7b4f", + "0xeb6d605c9b9d81f4d366f226d38b6c3bfdf198fa6b9dd83755d5913ddaceb9c3", + "0x1986bc601f005dcdf9f53c38c2aede7217aa0df944d3f1c3bbc6e19fac258c95", + "0x960ba0b6557e62ad9a721a24b15cf4aeac1d96f1fcd4dc13b61abbf8242bcaea", + "0x6c078529a23fdc1209e0790f002f78e7da3913429de54be72b609857bfd3c519", + "0x15798f994c536f13b9400d40a5154ab4181298be8fcc0e0873867f32fea1c91d", + "0xad3af4cd03b142546627c77d70e93717707097fecbf0f6bdae5e8073670d77a0", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0x1391d5818ff59bd15d405cbc126e64e821da9ecf1fcebc9bd7cd18cf45d0023d", + "0x38e5bc8efe05098ac887085233ba1e113e643710ed7106d87063aef1bfe82a77", + "0x09f17f713fc9708582d5c0fb0b0bdfbb403ceceb787193331dcc68489cc03705", + "0x918ad6b06261685fc21f859fb29c9200e3986f5d2bd455b98449e1c73ea56714", + "0x645becce3fbdf4b42b65443d4dc76da8bcf195fb47289a954ea49b3887effcd0", + "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "0x35d689770bf90ca39acb9ce72e8fd8ed089467dc5a153e736d6ffdda748f421f", + "0x3ae02ae314ec7666b425c61759cbd0832cc69bdc8dc0eccc0e25ff8f0a4d445d" + ], + "receiptsRoot": "0xb4f284caa176733573a326cf9b90df880875cab1127f926e464cb5655fe4d661", + "gindex": 101049521929551230, + "sourceChain": 5 +} diff --git a/test/amb/fixtures/capella/receiptsRootProof_A3.json b/test/amb/fixtures/capella/receiptsRootProof_A3.json new file mode 100644 index 0000000..4bd1812 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_A3.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "txSlot": 5163710, + "srcSlot": 5234690, + "receiptsRootProof": [ + "0x38efdeae4da56f106d3f2f4deea7c1ccb1ab248177f843da0ccce230a8e7357f", + "0x28ff71d2214a389ed14fa624cfb6174598abbeeeb8c2fad365c306130e474f75", + "0x3696714404a3336334175fe6d77fc1829880bcf75394ec93cfc18ed15308ba90", + "0xf62f9b9de12f3c71aeb68c2822fd11322086236c0a62edecbc7c767f168946cd", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x2af9d7776232d6b05160d5806b674f40c722358a5e9dfe5dd2e5e1971d543d54", + "0xf329bf50883315f703b14c204e45a46e5f5d555a73ac57749d3526a415f7b61f", + "0x3738a7b5f6db8e91fa3132f9ccfd7682664d0b9c30d51830ffe4bce8d6db81e3", + "0x126a6820072e0a5be2660f35fb1f72fd48e56508c0ed756444cd0f58aff115b7", + "0x6b209d08f8a8f2f256af4973c5adc12e06b0bb3e6f90a436866ebd36e5437c42", + "0x53e65c62c3875559f4b13efbf1b5eede5b7ab60235b30e97e30a7897a5492bc2", + "0xc91267ca963b69e7f31b8f8e3327278d0719c7f0eacad6a8dc60c7ba3d6ac37e", + "0x8f6dea5c9c92d3ff059e88883233406a57a2b7e4069b972557a01aab55b5b0f4", + "0xbc9e23fcd900b2f96683b6ad63c0fed6f827e1ade03db0161b82a52ea5018b01", + "0x132b0910fd96075c194156eb7d658dc4518e9e2a7b74463a81c4828c1774d6f6", + "0xdd5ede4cbe62421968274d27a5c32f483a222e6391299a8dbdd2cc637b260eaa", + "0x3a314b016f181f0026ef3baa5167de550b27a9ca40a52f7f379eb40b2804eee1", + "0xe5c59fbfc86472b3125b7d5c1103571a49265d92b5ee66b04bdee68a9aaba355", + "0x281ae1c0a061c94b77b9e0c220323db824761a67a330e7d4d445c187deac7b4f", + "0xeb6d605c9b9d81f4d366f226d38b6c3bfdf198fa6b9dd83755d5913ddaceb9c3", + "0x1986bc601f005dcdf9f53c38c2aede7217aa0df944d3f1c3bbc6e19fac258c95", + "0x960ba0b6557e62ad9a721a24b15cf4aeac1d96f1fcd4dc13b61abbf8242bcaea", + "0x6c078529a23fdc1209e0790f002f78e7da3913429de54be72b609857bfd3c519", + "0x15798f994c536f13b9400d40a5154ab4181298be8fcc0e0873867f32fea1c91d", + "0xad3af4cd03b142546627c77d70e93717707097fecbf0f6bdae5e8073670d77a0", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0x25c56f97c114bc8f37d13d1fd3da60f42aa49690f6d36920d9e885de38a5df8c", + "0x8258a7a3f571435d3f8f57bfb08ccb86c294405491fb7000dbe08efbf1b0cc38", + "0x325e08c05ba21797c975102a27b48aac6375ff9d6135e733ff1d298c54cae8b2", + "0x9e44dae90001f891b572e8d97557f22ba669eb64217930d03c351edd6eb33ba8", + "0x90e6769e5098537beab8317fe87b7db462dac3439c37fb30aca7ae6d3a25cacd", + "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "0x30fd4b800919e93245c50f2b5b3d1f91df47b65260bad9dd5a4d818b00e59eb8", + "0x2d6f446289ef937637a4819dffa2c02a0c692e41146f9fc9407bb4b4b740700b" + ], + "receiptsRoot": "0xb4f284caa176733573a326cf9b90df880875cab1127f926e464cb5655fe4d661", + "gindex": 101049521929551230, + "sourceChain": 5 +} diff --git a/test/amb/fixtures/capella/receiptsRootProof_A4.json b/test/amb/fixtures/capella/receiptsRootProof_A4.json new file mode 100644 index 0000000..fb38075 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_A4.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "txSlot": 5163710, + "srcSlot": 5234691, + "receiptsRootProof": [ + "0x38efdeae4da56f106d3f2f4deea7c1ccb1ab248177f843da0ccce230a8e7357f", + "0x28ff71d2214a389ed14fa624cfb6174598abbeeeb8c2fad365c306130e474f75", + "0x3696714404a3336334175fe6d77fc1829880bcf75394ec93cfc18ed15308ba90", + "0xf62f9b9de12f3c71aeb68c2822fd11322086236c0a62edecbc7c767f168946cd", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x2af9d7776232d6b05160d5806b674f40c722358a5e9dfe5dd2e5e1971d543d54", + "0xf329bf50883315f703b14c204e45a46e5f5d555a73ac57749d3526a415f7b61f", + "0x3738a7b5f6db8e91fa3132f9ccfd7682664d0b9c30d51830ffe4bce8d6db81e3", + "0x126a6820072e0a5be2660f35fb1f72fd48e56508c0ed756444cd0f58aff115b7", + "0x6b209d08f8a8f2f256af4973c5adc12e06b0bb3e6f90a436866ebd36e5437c42", + "0x53e65c62c3875559f4b13efbf1b5eede5b7ab60235b30e97e30a7897a5492bc2", + "0xc91267ca963b69e7f31b8f8e3327278d0719c7f0eacad6a8dc60c7ba3d6ac37e", + "0x8f6dea5c9c92d3ff059e88883233406a57a2b7e4069b972557a01aab55b5b0f4", + "0xbc9e23fcd900b2f96683b6ad63c0fed6f827e1ade03db0161b82a52ea5018b01", + "0x132b0910fd96075c194156eb7d658dc4518e9e2a7b74463a81c4828c1774d6f6", + "0xdd5ede4cbe62421968274d27a5c32f483a222e6391299a8dbdd2cc637b260eaa", + "0x3a314b016f181f0026ef3baa5167de550b27a9ca40a52f7f379eb40b2804eee1", + "0xe5c59fbfc86472b3125b7d5c1103571a49265d92b5ee66b04bdee68a9aaba355", + "0x281ae1c0a061c94b77b9e0c220323db824761a67a330e7d4d445c187deac7b4f", + "0xeb6d605c9b9d81f4d366f226d38b6c3bfdf198fa6b9dd83755d5913ddaceb9c3", + "0x1986bc601f005dcdf9f53c38c2aede7217aa0df944d3f1c3bbc6e19fac258c95", + "0x960ba0b6557e62ad9a721a24b15cf4aeac1d96f1fcd4dc13b61abbf8242bcaea", + "0x6c078529a23fdc1209e0790f002f78e7da3913429de54be72b609857bfd3c519", + "0x15798f994c536f13b9400d40a5154ab4181298be8fcc0e0873867f32fea1c91d", + "0xad3af4cd03b142546627c77d70e93717707097fecbf0f6bdae5e8073670d77a0", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0x2e3c16e0c617c4198ee91361427902f8f6a41e4e37c2c1d73f6de85653903227", + "0x3c362720625488e5fffc69a1584eef5414f9722572a95c30b8df8ebc45a6fda8", + "0x5faccb7adf65a62b9bf70fff2bb06c8e5b6cf32626fbdb962b83affe7407460e", + "0xf6940231e7e2e3d3155d1b36944b44976868573e51d8eb2d89e1071580b9afd7", + "0x06a26ec4e2cc38c32bbc906bb2d721a646ba3f89ddd81a3aad55db825a44ff51", + "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "0x6832efb7d452fab7679daa586db5dddeb27e4a11d72d372592f3b0034d17eff6", + "0x33b3376e3527902e1881fe736809f8ad1a4395e7565cdd677f36318131f9eed8" + ], + "receiptsRoot": "0xb4f284caa176733573a326cf9b90df880875cab1127f926e464cb5655fe4d661", + "gindex": 101049521929551230, + "sourceChain": 5 +} diff --git a/test/amb/fixtures/capella/receiptsRootProof_A5.json b/test/amb/fixtures/capella/receiptsRootProof_A5.json new file mode 100644 index 0000000..8f7b476 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_A5.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xc7443f8247b5269d51f03e7211544c2da6b82df547a0005e94e38c1340b74fcf", + "txSlot": 5163710, + "srcSlot": 5234692, + "receiptsRootProof": [ + "0x38efdeae4da56f106d3f2f4deea7c1ccb1ab248177f843da0ccce230a8e7357f", + "0x28ff71d2214a389ed14fa624cfb6174598abbeeeb8c2fad365c306130e474f75", + "0x3696714404a3336334175fe6d77fc1829880bcf75394ec93cfc18ed15308ba90", + "0xf62f9b9de12f3c71aeb68c2822fd11322086236c0a62edecbc7c767f168946cd", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x2af9d7776232d6b05160d5806b674f40c722358a5e9dfe5dd2e5e1971d543d54", + "0xf329bf50883315f703b14c204e45a46e5f5d555a73ac57749d3526a415f7b61f", + "0x3738a7b5f6db8e91fa3132f9ccfd7682664d0b9c30d51830ffe4bce8d6db81e3", + "0x126a6820072e0a5be2660f35fb1f72fd48e56508c0ed756444cd0f58aff115b7", + "0x6b209d08f8a8f2f256af4973c5adc12e06b0bb3e6f90a436866ebd36e5437c42", + "0x53e65c62c3875559f4b13efbf1b5eede5b7ab60235b30e97e30a7897a5492bc2", + "0xc91267ca963b69e7f31b8f8e3327278d0719c7f0eacad6a8dc60c7ba3d6ac37e", + "0x8f6dea5c9c92d3ff059e88883233406a57a2b7e4069b972557a01aab55b5b0f4", + "0xbc9e23fcd900b2f96683b6ad63c0fed6f827e1ade03db0161b82a52ea5018b01", + "0x132b0910fd96075c194156eb7d658dc4518e9e2a7b74463a81c4828c1774d6f6", + "0xdd5ede4cbe62421968274d27a5c32f483a222e6391299a8dbdd2cc637b260eaa", + "0x3a314b016f181f0026ef3baa5167de550b27a9ca40a52f7f379eb40b2804eee1", + "0xe5c59fbfc86472b3125b7d5c1103571a49265d92b5ee66b04bdee68a9aaba355", + "0x281ae1c0a061c94b77b9e0c220323db824761a67a330e7d4d445c187deac7b4f", + "0xeb6d605c9b9d81f4d366f226d38b6c3bfdf198fa6b9dd83755d5913ddaceb9c3", + "0x1986bc601f005dcdf9f53c38c2aede7217aa0df944d3f1c3bbc6e19fac258c95", + "0x960ba0b6557e62ad9a721a24b15cf4aeac1d96f1fcd4dc13b61abbf8242bcaea", + "0x6c078529a23fdc1209e0790f002f78e7da3913429de54be72b609857bfd3c519", + "0x15798f994c536f13b9400d40a5154ab4181298be8fcc0e0873867f32fea1c91d", + "0xad3af4cd03b142546627c77d70e93717707097fecbf0f6bdae5e8073670d77a0", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0xdac789bb567733431c05cb404685e64973b1d77b03da43e808611811cb3dd1e1", + "0x7394c5ecf244a0fd8cf066b6b42c0f155b0ca668bfdbf23fb72b71091f535cf4", + "0x25fa9227e0ec1bdc2d87166463b5fa441eced40776225db6d7441ae9a06a0ed5", + "0x9a2e52f06fb9d39c6f739871d8a20b98a5cf615a21fe34a28c3aebb17ea6b156", + "0x82e4655017930fdc1cf4f6a9f17d5b122bec994452318a0c6e98ddb94e031114", + "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "0xbb2cc794a6b12c85797a89f443a30e90a71153bd65046949adea491b1a8df929", + "0xead4362ba77f18e37d60db25793b561cea4e94ca55d3b13b3dbeed27f86c31e8" + ], + "receiptsRoot": "0xb4f284caa176733573a326cf9b90df880875cab1127f926e464cb5655fe4d661", + "gindex": 101049521929551230, + "sourceChain": 5 +} diff --git a/test/amb/fixtures/capella/receiptsRootProof_B1.json b/test/amb/fixtures/capella/receiptsRootProof_B1.json new file mode 100644 index 0000000..ba7d603 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_B1.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "txSlot": 5193726, + "srcSlot": 5234688, + "receiptsRootProof": [ + "0x6d590033a7de79dc0542f6ec5586082f5409875b347170c22ac960fe6c852cae", + "0xf42bd9c437eddf4f50cfd5b5d0e3b9421ab505b3e1f1e53e07eb98618220996c", + "0x8f35d0b48bcaeeebdb2060fc719e08e83e094fe8395388ccf8ec0d628808409f", + "0xea670910aaf7175202bd070e595c8a910df76da8c04300c08ab90813c975c5fd", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xde45f4463c6470f131aa6cdae0f232f8e1d19d22072a97e69d9fcaaa7f9ec213", + "0x014a95a6003b7b0c7259b6fa2a0af5f4c2bd9a389657584cf8b5e7e337d7665d", + "0x7212c5b33a40f8481ff6c802b78035d72d8b6f284f8e2d2b447c4f269aedd828", + "0x93fd43da10351937e6560e65f3301d7cd1121f4c33f33ffe3ca33d6d9290aead", + "0xf776ebb6176b83b836958e6019d23b4f163c6da6db33df1bb4747b62d5daf775", + "0x7cd098662d0c991103f13d67b34bff5cb5225cb3af99799019c5f94640411f9a", + "0xd243d9dc1b770a44c68fc091469a3bf9d6e26d20bfa4a127cce8cd55439b2078", + "0x157a5ccbf988c0f2e8cfd0825bd5908e601d387b268887f3e5d458d1335f2478", + "0xfc8b04858ea238a177397523f66ca1c8e5111562eb139dc10108270d1ccb8c4c", + "0x535131b27993a59fac042afba3d46e3921915cfb9064c44ce3882ef12906c1fe", + "0x16652c793ac6eefaa917f22502bb7e74015e8c9d15110ee3badf013ba397a710", + "0xec90a50a42bd906ec511e8cc170f073370e6d8fe5cb15c5325fcc83b5d8b3cd4", + "0x5f903f65769bb1fc537b107d909cea9f81696589862b68d904f6bc092bf80139", + "0x33be43f53f0fa346247ffadde31387a7ce3e832c50ce7a64c332b0c3773d34a7", + "0x76fe10e94fa61d3d8476fd6183e9443da25fee5b53e6959b5a9e014caa53cd99", + "0x846820b0fa56b3140e8ef69d25028df18d0fe8940f1cb7504a19e4ae417265a1", + "0x4871ea4996c70a59b640de60ae117b9b5054c7cb1cd2977ed6552342816ee0c6", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x8543ccf63f9622d21e9feb6017bd72cbb074aadb85164e875d4c68f34f9ed5fa", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0xc48e7a16f9fb51f091781f03173fbcc41349325e069782afaf002f16574c4fd0", + "0x2ba9ded7e2c9dd47683eb7bac5ea78830789560352014e7c92a679209656b1c9", + "0x845b02784a5232104aca0bfd841f0257353723af738d296af7ab6cf156c675c2", + "0x041b88f8fb52598a295967be5c96889f77e6d83f68a12e5d29caaead4da75704", + "0x1e5ccfd62497501750d8b5743341c7dbd91f990492a5f298a79225a127fc63de", + "0x7eebdc9f1a773ceb928c345f11780649de033691c43abec44bd1b25a1cab6091", + "0x2681f0e708d5d2c7f864bb271b85117f22bff0ec502b4d1f5751a4be33dac070", + "0x19995577d8b7ddb282468d73c8f68e619a0392ac7e34c11823c4471205a6706d" + ], + "receiptsRoot": "0xa7276152953b4bf47ea6f00fc33879872be199639d138b731292cff5eeda2e6a", + "gindex": 101049521957502340, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_B2.json b/test/amb/fixtures/capella/receiptsRootProof_B2.json new file mode 100644 index 0000000..359adf5 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_B2.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "txSlot": 5193726, + "srcSlot": 5234689, + "receiptsRootProof": [ + "0x6d590033a7de79dc0542f6ec5586082f5409875b347170c22ac960fe6c852cae", + "0xf42bd9c437eddf4f50cfd5b5d0e3b9421ab505b3e1f1e53e07eb98618220996c", + "0x8f35d0b48bcaeeebdb2060fc719e08e83e094fe8395388ccf8ec0d628808409f", + "0xea670910aaf7175202bd070e595c8a910df76da8c04300c08ab90813c975c5fd", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xde45f4463c6470f131aa6cdae0f232f8e1d19d22072a97e69d9fcaaa7f9ec213", + "0x014a95a6003b7b0c7259b6fa2a0af5f4c2bd9a389657584cf8b5e7e337d7665d", + "0x7212c5b33a40f8481ff6c802b78035d72d8b6f284f8e2d2b447c4f269aedd828", + "0x93fd43da10351937e6560e65f3301d7cd1121f4c33f33ffe3ca33d6d9290aead", + "0xf776ebb6176b83b836958e6019d23b4f163c6da6db33df1bb4747b62d5daf775", + "0x7cd098662d0c991103f13d67b34bff5cb5225cb3af99799019c5f94640411f9a", + "0xd243d9dc1b770a44c68fc091469a3bf9d6e26d20bfa4a127cce8cd55439b2078", + "0x157a5ccbf988c0f2e8cfd0825bd5908e601d387b268887f3e5d458d1335f2478", + "0xfc8b04858ea238a177397523f66ca1c8e5111562eb139dc10108270d1ccb8c4c", + "0x535131b27993a59fac042afba3d46e3921915cfb9064c44ce3882ef12906c1fe", + "0x16652c793ac6eefaa917f22502bb7e74015e8c9d15110ee3badf013ba397a710", + "0xec90a50a42bd906ec511e8cc170f073370e6d8fe5cb15c5325fcc83b5d8b3cd4", + "0x5f903f65769bb1fc537b107d909cea9f81696589862b68d904f6bc092bf80139", + "0x33be43f53f0fa346247ffadde31387a7ce3e832c50ce7a64c332b0c3773d34a7", + "0x76fe10e94fa61d3d8476fd6183e9443da25fee5b53e6959b5a9e014caa53cd99", + "0x846820b0fa56b3140e8ef69d25028df18d0fe8940f1cb7504a19e4ae417265a1", + "0x4871ea4996c70a59b640de60ae117b9b5054c7cb1cd2977ed6552342816ee0c6", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x8543ccf63f9622d21e9feb6017bd72cbb074aadb85164e875d4c68f34f9ed5fa", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0x1391d5818ff59bd15d405cbc126e64e821da9ecf1fcebc9bd7cd18cf45d0023d", + "0x38e5bc8efe05098ac887085233ba1e113e643710ed7106d87063aef1bfe82a77", + "0x09f17f713fc9708582d5c0fb0b0bdfbb403ceceb787193331dcc68489cc03705", + "0x918ad6b06261685fc21f859fb29c9200e3986f5d2bd455b98449e1c73ea56714", + "0x645becce3fbdf4b42b65443d4dc76da8bcf195fb47289a954ea49b3887effcd0", + "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "0x35d689770bf90ca39acb9ce72e8fd8ed089467dc5a153e736d6ffdda748f421f", + "0x3ae02ae314ec7666b425c61759cbd0832cc69bdc8dc0eccc0e25ff8f0a4d445d" + ], + "receiptsRoot": "0xa7276152953b4bf47ea6f00fc33879872be199639d138b731292cff5eeda2e6a", + "gindex": 101049521957502340, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_B3.json b/test/amb/fixtures/capella/receiptsRootProof_B3.json new file mode 100644 index 0000000..b75fe5b --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_B3.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "txSlot": 5193726, + "srcSlot": 5234690, + "receiptsRootProof": [ + "0x6d590033a7de79dc0542f6ec5586082f5409875b347170c22ac960fe6c852cae", + "0xf42bd9c437eddf4f50cfd5b5d0e3b9421ab505b3e1f1e53e07eb98618220996c", + "0x8f35d0b48bcaeeebdb2060fc719e08e83e094fe8395388ccf8ec0d628808409f", + "0xea670910aaf7175202bd070e595c8a910df76da8c04300c08ab90813c975c5fd", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xde45f4463c6470f131aa6cdae0f232f8e1d19d22072a97e69d9fcaaa7f9ec213", + "0x014a95a6003b7b0c7259b6fa2a0af5f4c2bd9a389657584cf8b5e7e337d7665d", + "0x7212c5b33a40f8481ff6c802b78035d72d8b6f284f8e2d2b447c4f269aedd828", + "0x93fd43da10351937e6560e65f3301d7cd1121f4c33f33ffe3ca33d6d9290aead", + "0xf776ebb6176b83b836958e6019d23b4f163c6da6db33df1bb4747b62d5daf775", + "0x7cd098662d0c991103f13d67b34bff5cb5225cb3af99799019c5f94640411f9a", + "0xd243d9dc1b770a44c68fc091469a3bf9d6e26d20bfa4a127cce8cd55439b2078", + "0x157a5ccbf988c0f2e8cfd0825bd5908e601d387b268887f3e5d458d1335f2478", + "0xfc8b04858ea238a177397523f66ca1c8e5111562eb139dc10108270d1ccb8c4c", + "0x535131b27993a59fac042afba3d46e3921915cfb9064c44ce3882ef12906c1fe", + "0x16652c793ac6eefaa917f22502bb7e74015e8c9d15110ee3badf013ba397a710", + "0xec90a50a42bd906ec511e8cc170f073370e6d8fe5cb15c5325fcc83b5d8b3cd4", + "0x5f903f65769bb1fc537b107d909cea9f81696589862b68d904f6bc092bf80139", + "0x33be43f53f0fa346247ffadde31387a7ce3e832c50ce7a64c332b0c3773d34a7", + "0x76fe10e94fa61d3d8476fd6183e9443da25fee5b53e6959b5a9e014caa53cd99", + "0x846820b0fa56b3140e8ef69d25028df18d0fe8940f1cb7504a19e4ae417265a1", + "0x4871ea4996c70a59b640de60ae117b9b5054c7cb1cd2977ed6552342816ee0c6", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x8543ccf63f9622d21e9feb6017bd72cbb074aadb85164e875d4c68f34f9ed5fa", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0x25c56f97c114bc8f37d13d1fd3da60f42aa49690f6d36920d9e885de38a5df8c", + "0x8258a7a3f571435d3f8f57bfb08ccb86c294405491fb7000dbe08efbf1b0cc38", + "0x325e08c05ba21797c975102a27b48aac6375ff9d6135e733ff1d298c54cae8b2", + "0x9e44dae90001f891b572e8d97557f22ba669eb64217930d03c351edd6eb33ba8", + "0x90e6769e5098537beab8317fe87b7db462dac3439c37fb30aca7ae6d3a25cacd", + "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "0x30fd4b800919e93245c50f2b5b3d1f91df47b65260bad9dd5a4d818b00e59eb8", + "0x2d6f446289ef937637a4819dffa2c02a0c692e41146f9fc9407bb4b4b740700b" + ], + "receiptsRoot": "0xa7276152953b4bf47ea6f00fc33879872be199639d138b731292cff5eeda2e6a", + "gindex": 101049521957502340, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_B4.json b/test/amb/fixtures/capella/receiptsRootProof_B4.json new file mode 100644 index 0000000..4e112e0 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_B4.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "txSlot": 5193726, + "srcSlot": 5234691, + "receiptsRootProof": [ + "0x6d590033a7de79dc0542f6ec5586082f5409875b347170c22ac960fe6c852cae", + "0xf42bd9c437eddf4f50cfd5b5d0e3b9421ab505b3e1f1e53e07eb98618220996c", + "0x8f35d0b48bcaeeebdb2060fc719e08e83e094fe8395388ccf8ec0d628808409f", + "0xea670910aaf7175202bd070e595c8a910df76da8c04300c08ab90813c975c5fd", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xde45f4463c6470f131aa6cdae0f232f8e1d19d22072a97e69d9fcaaa7f9ec213", + "0x014a95a6003b7b0c7259b6fa2a0af5f4c2bd9a389657584cf8b5e7e337d7665d", + "0x7212c5b33a40f8481ff6c802b78035d72d8b6f284f8e2d2b447c4f269aedd828", + "0x93fd43da10351937e6560e65f3301d7cd1121f4c33f33ffe3ca33d6d9290aead", + "0xf776ebb6176b83b836958e6019d23b4f163c6da6db33df1bb4747b62d5daf775", + "0x7cd098662d0c991103f13d67b34bff5cb5225cb3af99799019c5f94640411f9a", + "0xd243d9dc1b770a44c68fc091469a3bf9d6e26d20bfa4a127cce8cd55439b2078", + "0x157a5ccbf988c0f2e8cfd0825bd5908e601d387b268887f3e5d458d1335f2478", + "0xfc8b04858ea238a177397523f66ca1c8e5111562eb139dc10108270d1ccb8c4c", + "0x535131b27993a59fac042afba3d46e3921915cfb9064c44ce3882ef12906c1fe", + "0x16652c793ac6eefaa917f22502bb7e74015e8c9d15110ee3badf013ba397a710", + "0xec90a50a42bd906ec511e8cc170f073370e6d8fe5cb15c5325fcc83b5d8b3cd4", + "0x5f903f65769bb1fc537b107d909cea9f81696589862b68d904f6bc092bf80139", + "0x33be43f53f0fa346247ffadde31387a7ce3e832c50ce7a64c332b0c3773d34a7", + "0x76fe10e94fa61d3d8476fd6183e9443da25fee5b53e6959b5a9e014caa53cd99", + "0x846820b0fa56b3140e8ef69d25028df18d0fe8940f1cb7504a19e4ae417265a1", + "0x4871ea4996c70a59b640de60ae117b9b5054c7cb1cd2977ed6552342816ee0c6", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x8543ccf63f9622d21e9feb6017bd72cbb074aadb85164e875d4c68f34f9ed5fa", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0x2e3c16e0c617c4198ee91361427902f8f6a41e4e37c2c1d73f6de85653903227", + "0x3c362720625488e5fffc69a1584eef5414f9722572a95c30b8df8ebc45a6fda8", + "0x5faccb7adf65a62b9bf70fff2bb06c8e5b6cf32626fbdb962b83affe7407460e", + "0xf6940231e7e2e3d3155d1b36944b44976868573e51d8eb2d89e1071580b9afd7", + "0x06a26ec4e2cc38c32bbc906bb2d721a646ba3f89ddd81a3aad55db825a44ff51", + "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "0x6832efb7d452fab7679daa586db5dddeb27e4a11d72d372592f3b0034d17eff6", + "0x33b3376e3527902e1881fe736809f8ad1a4395e7565cdd677f36318131f9eed8" + ], + "receiptsRoot": "0xa7276152953b4bf47ea6f00fc33879872be199639d138b731292cff5eeda2e6a", + "gindex": 101049521957502340, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_B5.json b/test/amb/fixtures/capella/receiptsRootProof_B5.json new file mode 100644 index 0000000..26fcfe1 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_B5.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xc7443f8247b5269d51f03e7211544c2da6b82df547a0005e94e38c1340b74fcf", + "txSlot": 5193726, + "srcSlot": 5234692, + "receiptsRootProof": [ + "0x6d590033a7de79dc0542f6ec5586082f5409875b347170c22ac960fe6c852cae", + "0xf42bd9c437eddf4f50cfd5b5d0e3b9421ab505b3e1f1e53e07eb98618220996c", + "0x8f35d0b48bcaeeebdb2060fc719e08e83e094fe8395388ccf8ec0d628808409f", + "0xea670910aaf7175202bd070e595c8a910df76da8c04300c08ab90813c975c5fd", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xde45f4463c6470f131aa6cdae0f232f8e1d19d22072a97e69d9fcaaa7f9ec213", + "0x014a95a6003b7b0c7259b6fa2a0af5f4c2bd9a389657584cf8b5e7e337d7665d", + "0x7212c5b33a40f8481ff6c802b78035d72d8b6f284f8e2d2b447c4f269aedd828", + "0x93fd43da10351937e6560e65f3301d7cd1121f4c33f33ffe3ca33d6d9290aead", + "0xf776ebb6176b83b836958e6019d23b4f163c6da6db33df1bb4747b62d5daf775", + "0x7cd098662d0c991103f13d67b34bff5cb5225cb3af99799019c5f94640411f9a", + "0xd243d9dc1b770a44c68fc091469a3bf9d6e26d20bfa4a127cce8cd55439b2078", + "0x157a5ccbf988c0f2e8cfd0825bd5908e601d387b268887f3e5d458d1335f2478", + "0xfc8b04858ea238a177397523f66ca1c8e5111562eb139dc10108270d1ccb8c4c", + "0x535131b27993a59fac042afba3d46e3921915cfb9064c44ce3882ef12906c1fe", + "0x16652c793ac6eefaa917f22502bb7e74015e8c9d15110ee3badf013ba397a710", + "0xec90a50a42bd906ec511e8cc170f073370e6d8fe5cb15c5325fcc83b5d8b3cd4", + "0x5f903f65769bb1fc537b107d909cea9f81696589862b68d904f6bc092bf80139", + "0x33be43f53f0fa346247ffadde31387a7ce3e832c50ce7a64c332b0c3773d34a7", + "0x76fe10e94fa61d3d8476fd6183e9443da25fee5b53e6959b5a9e014caa53cd99", + "0x846820b0fa56b3140e8ef69d25028df18d0fe8940f1cb7504a19e4ae417265a1", + "0x4871ea4996c70a59b640de60ae117b9b5054c7cb1cd2977ed6552342816ee0c6", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x8543ccf63f9622d21e9feb6017bd72cbb074aadb85164e875d4c68f34f9ed5fa", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0xdac789bb567733431c05cb404685e64973b1d77b03da43e808611811cb3dd1e1", + "0x7394c5ecf244a0fd8cf066b6b42c0f155b0ca668bfdbf23fb72b71091f535cf4", + "0x25fa9227e0ec1bdc2d87166463b5fa441eced40776225db6d7441ae9a06a0ed5", + "0x9a2e52f06fb9d39c6f739871d8a20b98a5cf615a21fe34a28c3aebb17ea6b156", + "0x82e4655017930fdc1cf4f6a9f17d5b122bec994452318a0c6e98ddb94e031114", + "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "0xbb2cc794a6b12c85797a89f443a30e90a71153bd65046949adea491b1a8df929", + "0xead4362ba77f18e37d60db25793b561cea4e94ca55d3b13b3dbeed27f86c31e8" + ], + "receiptsRoot": "0xa7276152953b4bf47ea6f00fc33879872be199639d138b731292cff5eeda2e6a", + "gindex": 101049521957502340, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_C1.json b/test/amb/fixtures/capella/receiptsRootProof_C1.json new file mode 100644 index 0000000..4990ca3 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_C1.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "txSlot": 5193727, + "srcSlot": 5234688, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x060e47daaebc826131b9d52caa9f5b9e68cc500e86c6a30fd0b76a10f49eec2a", + "0x9a455d426aceec41114f6a8a18e64f6cec95fdb5ae7193f6e3ba8efb689d6c77", + "0x5e4506efc4b85f33eca33058b6e6f32f62ba209f396ad7a502357ee07ce8b0a2", + "0x93fd43da10351937e6560e65f3301d7cd1121f4c33f33ffe3ca33d6d9290aead", + "0xf776ebb6176b83b836958e6019d23b4f163c6da6db33df1bb4747b62d5daf775", + "0x7cd098662d0c991103f13d67b34bff5cb5225cb3af99799019c5f94640411f9a", + "0xd243d9dc1b770a44c68fc091469a3bf9d6e26d20bfa4a127cce8cd55439b2078", + "0x157a5ccbf988c0f2e8cfd0825bd5908e601d387b268887f3e5d458d1335f2478", + "0xfc8b04858ea238a177397523f66ca1c8e5111562eb139dc10108270d1ccb8c4c", + "0x535131b27993a59fac042afba3d46e3921915cfb9064c44ce3882ef12906c1fe", + "0x16652c793ac6eefaa917f22502bb7e74015e8c9d15110ee3badf013ba397a710", + "0xec90a50a42bd906ec511e8cc170f073370e6d8fe5cb15c5325fcc83b5d8b3cd4", + "0x5f903f65769bb1fc537b107d909cea9f81696589862b68d904f6bc092bf80139", + "0x33be43f53f0fa346247ffadde31387a7ce3e832c50ce7a64c332b0c3773d34a7", + "0x76fe10e94fa61d3d8476fd6183e9443da25fee5b53e6959b5a9e014caa53cd99", + "0x846820b0fa56b3140e8ef69d25028df18d0fe8940f1cb7504a19e4ae417265a1", + "0x4871ea4996c70a59b640de60ae117b9b5054c7cb1cd2977ed6552342816ee0c6", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x8543ccf63f9622d21e9feb6017bd72cbb074aadb85164e875d4c68f34f9ed5fa", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0xc48e7a16f9fb51f091781f03173fbcc41349325e069782afaf002f16574c4fd0", + "0x2ba9ded7e2c9dd47683eb7bac5ea78830789560352014e7c92a679209656b1c9", + "0x845b02784a5232104aca0bfd841f0257353723af738d296af7ab6cf156c675c2", + "0x041b88f8fb52598a295967be5c96889f77e6d83f68a12e5d29caaead4da75704", + "0x1e5ccfd62497501750d8b5743341c7dbd91f990492a5f298a79225a127fc63de", + "0x7eebdc9f1a773ceb928c345f11780649de033691c43abec44bd1b25a1cab6091", + "0x2681f0e708d5d2c7f864bb271b85117f22bff0ec502b4d1f5751a4be33dac070", + "0x19995577d8b7ddb282468d73c8f68e619a0392ac7e34c11823c4471205a6706d" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 101049521957502850, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_C2.json b/test/amb/fixtures/capella/receiptsRootProof_C2.json new file mode 100644 index 0000000..176b1e1 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_C2.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "txSlot": 5193727, + "srcSlot": 5234689, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x060e47daaebc826131b9d52caa9f5b9e68cc500e86c6a30fd0b76a10f49eec2a", + "0x9a455d426aceec41114f6a8a18e64f6cec95fdb5ae7193f6e3ba8efb689d6c77", + "0x5e4506efc4b85f33eca33058b6e6f32f62ba209f396ad7a502357ee07ce8b0a2", + "0x93fd43da10351937e6560e65f3301d7cd1121f4c33f33ffe3ca33d6d9290aead", + "0xf776ebb6176b83b836958e6019d23b4f163c6da6db33df1bb4747b62d5daf775", + "0x7cd098662d0c991103f13d67b34bff5cb5225cb3af99799019c5f94640411f9a", + "0xd243d9dc1b770a44c68fc091469a3bf9d6e26d20bfa4a127cce8cd55439b2078", + "0x157a5ccbf988c0f2e8cfd0825bd5908e601d387b268887f3e5d458d1335f2478", + "0xfc8b04858ea238a177397523f66ca1c8e5111562eb139dc10108270d1ccb8c4c", + "0x535131b27993a59fac042afba3d46e3921915cfb9064c44ce3882ef12906c1fe", + "0x16652c793ac6eefaa917f22502bb7e74015e8c9d15110ee3badf013ba397a710", + "0xec90a50a42bd906ec511e8cc170f073370e6d8fe5cb15c5325fcc83b5d8b3cd4", + "0x5f903f65769bb1fc537b107d909cea9f81696589862b68d904f6bc092bf80139", + "0x33be43f53f0fa346247ffadde31387a7ce3e832c50ce7a64c332b0c3773d34a7", + "0x76fe10e94fa61d3d8476fd6183e9443da25fee5b53e6959b5a9e014caa53cd99", + "0x846820b0fa56b3140e8ef69d25028df18d0fe8940f1cb7504a19e4ae417265a1", + "0x4871ea4996c70a59b640de60ae117b9b5054c7cb1cd2977ed6552342816ee0c6", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x8543ccf63f9622d21e9feb6017bd72cbb074aadb85164e875d4c68f34f9ed5fa", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0x1391d5818ff59bd15d405cbc126e64e821da9ecf1fcebc9bd7cd18cf45d0023d", + "0x38e5bc8efe05098ac887085233ba1e113e643710ed7106d87063aef1bfe82a77", + "0x09f17f713fc9708582d5c0fb0b0bdfbb403ceceb787193331dcc68489cc03705", + "0x918ad6b06261685fc21f859fb29c9200e3986f5d2bd455b98449e1c73ea56714", + "0x645becce3fbdf4b42b65443d4dc76da8bcf195fb47289a954ea49b3887effcd0", + "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "0x35d689770bf90ca39acb9ce72e8fd8ed089467dc5a153e736d6ffdda748f421f", + "0x3ae02ae314ec7666b425c61759cbd0832cc69bdc8dc0eccc0e25ff8f0a4d445d" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 101049521957502850, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_C3.json b/test/amb/fixtures/capella/receiptsRootProof_C3.json new file mode 100644 index 0000000..16062b4 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_C3.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "txSlot": 5193727, + "srcSlot": 5234690, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x060e47daaebc826131b9d52caa9f5b9e68cc500e86c6a30fd0b76a10f49eec2a", + "0x9a455d426aceec41114f6a8a18e64f6cec95fdb5ae7193f6e3ba8efb689d6c77", + "0x5e4506efc4b85f33eca33058b6e6f32f62ba209f396ad7a502357ee07ce8b0a2", + "0x93fd43da10351937e6560e65f3301d7cd1121f4c33f33ffe3ca33d6d9290aead", + "0xf776ebb6176b83b836958e6019d23b4f163c6da6db33df1bb4747b62d5daf775", + "0x7cd098662d0c991103f13d67b34bff5cb5225cb3af99799019c5f94640411f9a", + "0xd243d9dc1b770a44c68fc091469a3bf9d6e26d20bfa4a127cce8cd55439b2078", + "0x157a5ccbf988c0f2e8cfd0825bd5908e601d387b268887f3e5d458d1335f2478", + "0xfc8b04858ea238a177397523f66ca1c8e5111562eb139dc10108270d1ccb8c4c", + "0x535131b27993a59fac042afba3d46e3921915cfb9064c44ce3882ef12906c1fe", + "0x16652c793ac6eefaa917f22502bb7e74015e8c9d15110ee3badf013ba397a710", + "0xec90a50a42bd906ec511e8cc170f073370e6d8fe5cb15c5325fcc83b5d8b3cd4", + "0x5f903f65769bb1fc537b107d909cea9f81696589862b68d904f6bc092bf80139", + "0x33be43f53f0fa346247ffadde31387a7ce3e832c50ce7a64c332b0c3773d34a7", + "0x76fe10e94fa61d3d8476fd6183e9443da25fee5b53e6959b5a9e014caa53cd99", + "0x846820b0fa56b3140e8ef69d25028df18d0fe8940f1cb7504a19e4ae417265a1", + "0x4871ea4996c70a59b640de60ae117b9b5054c7cb1cd2977ed6552342816ee0c6", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x8543ccf63f9622d21e9feb6017bd72cbb074aadb85164e875d4c68f34f9ed5fa", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0x25c56f97c114bc8f37d13d1fd3da60f42aa49690f6d36920d9e885de38a5df8c", + "0x8258a7a3f571435d3f8f57bfb08ccb86c294405491fb7000dbe08efbf1b0cc38", + "0x325e08c05ba21797c975102a27b48aac6375ff9d6135e733ff1d298c54cae8b2", + "0x9e44dae90001f891b572e8d97557f22ba669eb64217930d03c351edd6eb33ba8", + "0x90e6769e5098537beab8317fe87b7db462dac3439c37fb30aca7ae6d3a25cacd", + "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "0x30fd4b800919e93245c50f2b5b3d1f91df47b65260bad9dd5a4d818b00e59eb8", + "0x2d6f446289ef937637a4819dffa2c02a0c692e41146f9fc9407bb4b4b740700b" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 101049521957502850, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_C4.json b/test/amb/fixtures/capella/receiptsRootProof_C4.json new file mode 100644 index 0000000..bda018e --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_C4.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "txSlot": 5193727, + "srcSlot": 5234691, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x060e47daaebc826131b9d52caa9f5b9e68cc500e86c6a30fd0b76a10f49eec2a", + "0x9a455d426aceec41114f6a8a18e64f6cec95fdb5ae7193f6e3ba8efb689d6c77", + "0x5e4506efc4b85f33eca33058b6e6f32f62ba209f396ad7a502357ee07ce8b0a2", + "0x93fd43da10351937e6560e65f3301d7cd1121f4c33f33ffe3ca33d6d9290aead", + "0xf776ebb6176b83b836958e6019d23b4f163c6da6db33df1bb4747b62d5daf775", + "0x7cd098662d0c991103f13d67b34bff5cb5225cb3af99799019c5f94640411f9a", + "0xd243d9dc1b770a44c68fc091469a3bf9d6e26d20bfa4a127cce8cd55439b2078", + "0x157a5ccbf988c0f2e8cfd0825bd5908e601d387b268887f3e5d458d1335f2478", + "0xfc8b04858ea238a177397523f66ca1c8e5111562eb139dc10108270d1ccb8c4c", + "0x535131b27993a59fac042afba3d46e3921915cfb9064c44ce3882ef12906c1fe", + "0x16652c793ac6eefaa917f22502bb7e74015e8c9d15110ee3badf013ba397a710", + "0xec90a50a42bd906ec511e8cc170f073370e6d8fe5cb15c5325fcc83b5d8b3cd4", + "0x5f903f65769bb1fc537b107d909cea9f81696589862b68d904f6bc092bf80139", + "0x33be43f53f0fa346247ffadde31387a7ce3e832c50ce7a64c332b0c3773d34a7", + "0x76fe10e94fa61d3d8476fd6183e9443da25fee5b53e6959b5a9e014caa53cd99", + "0x846820b0fa56b3140e8ef69d25028df18d0fe8940f1cb7504a19e4ae417265a1", + "0x4871ea4996c70a59b640de60ae117b9b5054c7cb1cd2977ed6552342816ee0c6", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x8543ccf63f9622d21e9feb6017bd72cbb074aadb85164e875d4c68f34f9ed5fa", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0x2e3c16e0c617c4198ee91361427902f8f6a41e4e37c2c1d73f6de85653903227", + "0x3c362720625488e5fffc69a1584eef5414f9722572a95c30b8df8ebc45a6fda8", + "0x5faccb7adf65a62b9bf70fff2bb06c8e5b6cf32626fbdb962b83affe7407460e", + "0xf6940231e7e2e3d3155d1b36944b44976868573e51d8eb2d89e1071580b9afd7", + "0x06a26ec4e2cc38c32bbc906bb2d721a646ba3f89ddd81a3aad55db825a44ff51", + "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "0x6832efb7d452fab7679daa586db5dddeb27e4a11d72d372592f3b0034d17eff6", + "0x33b3376e3527902e1881fe736809f8ad1a4395e7565cdd677f36318131f9eed8" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 101049521957502850, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_C5.json b/test/amb/fixtures/capella/receiptsRootProof_C5.json new file mode 100644 index 0000000..c975ab5 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_C5.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xc7443f8247b5269d51f03e7211544c2da6b82df547a0005e94e38c1340b74fcf", + "txSlot": 5193727, + "srcSlot": 5234692, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x060e47daaebc826131b9d52caa9f5b9e68cc500e86c6a30fd0b76a10f49eec2a", + "0x9a455d426aceec41114f6a8a18e64f6cec95fdb5ae7193f6e3ba8efb689d6c77", + "0x5e4506efc4b85f33eca33058b6e6f32f62ba209f396ad7a502357ee07ce8b0a2", + "0x93fd43da10351937e6560e65f3301d7cd1121f4c33f33ffe3ca33d6d9290aead", + "0xf776ebb6176b83b836958e6019d23b4f163c6da6db33df1bb4747b62d5daf775", + "0x7cd098662d0c991103f13d67b34bff5cb5225cb3af99799019c5f94640411f9a", + "0xd243d9dc1b770a44c68fc091469a3bf9d6e26d20bfa4a127cce8cd55439b2078", + "0x157a5ccbf988c0f2e8cfd0825bd5908e601d387b268887f3e5d458d1335f2478", + "0xfc8b04858ea238a177397523f66ca1c8e5111562eb139dc10108270d1ccb8c4c", + "0x535131b27993a59fac042afba3d46e3921915cfb9064c44ce3882ef12906c1fe", + "0x16652c793ac6eefaa917f22502bb7e74015e8c9d15110ee3badf013ba397a710", + "0xec90a50a42bd906ec511e8cc170f073370e6d8fe5cb15c5325fcc83b5d8b3cd4", + "0x5f903f65769bb1fc537b107d909cea9f81696589862b68d904f6bc092bf80139", + "0x33be43f53f0fa346247ffadde31387a7ce3e832c50ce7a64c332b0c3773d34a7", + "0x76fe10e94fa61d3d8476fd6183e9443da25fee5b53e6959b5a9e014caa53cd99", + "0x846820b0fa56b3140e8ef69d25028df18d0fe8940f1cb7504a19e4ae417265a1", + "0x4871ea4996c70a59b640de60ae117b9b5054c7cb1cd2977ed6552342816ee0c6", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x8543ccf63f9622d21e9feb6017bd72cbb074aadb85164e875d4c68f34f9ed5fa", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0xdac789bb567733431c05cb404685e64973b1d77b03da43e808611811cb3dd1e1", + "0x7394c5ecf244a0fd8cf066b6b42c0f155b0ca668bfdbf23fb72b71091f535cf4", + "0x25fa9227e0ec1bdc2d87166463b5fa441eced40776225db6d7441ae9a06a0ed5", + "0x9a2e52f06fb9d39c6f739871d8a20b98a5cf615a21fe34a28c3aebb17ea6b156", + "0x82e4655017930fdc1cf4f6a9f17d5b122bec994452318a0c6e98ddb94e031114", + "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "0xbb2cc794a6b12c85797a89f443a30e90a71153bd65046949adea491b1a8df929", + "0xead4362ba77f18e37d60db25793b561cea4e94ca55d3b13b3dbeed27f86c31e8" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 101049521957502850, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_D1.json b/test/amb/fixtures/capella/receiptsRootProof_D1.json new file mode 100644 index 0000000..2600208 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_D1.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "txSlot": 5193728, + "srcSlot": 5234688, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0xdf340753dd479de665aa8731490bf5431c01cf9ead9fe935e1b7bfd4572365c5", + "0x1d5ccaad5122b214b20d74082bcbcdd5f9dcf5f3fa59f5c54cfa70df7c6fafae", + "0xab9d547919e9fd3dd86b2f3c6a2d64789f92ad2155203cefa5027df2bb047401", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x7f9e030000000000000000000000000000000000000000000000000000000000", + "0x2ccd4c0f3b7a9dd75275afca43160d1c5cb091dbc63ec5c211163c4f26300e26", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x3f5cb6eb7a581fd204324fd171259305313c3be5599738a7f358be51905bf331", + "0x8faf2d795de802462f471bff6982f40e6c0c35402dae103ce672a5822689ab70", + "0x7eebdc9f1a773ceb928c345f11780649de033691c43abec44bd1b25a1cab6091", + "0x2681f0e708d5d2c7f864bb271b85117f22bff0ec502b4d1f5751a4be33dac070", + "0x19995577d8b7ddb282468d73c8f68e619a0392ac7e34c11823c4471205a6706d" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177533310, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_D2.json b/test/amb/fixtures/capella/receiptsRootProof_D2.json new file mode 100644 index 0000000..f5630a6 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_D2.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "txSlot": 5193728, + "srcSlot": 5234689, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0xdf340753dd479de665aa8731490bf5431c01cf9ead9fe935e1b7bfd4572365c5", + "0x1d5ccaad5122b214b20d74082bcbcdd5f9dcf5f3fa59f5c54cfa70df7c6fafae", + "0xab9d547919e9fd3dd86b2f3c6a2d64789f92ad2155203cefa5027df2bb047401", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x8f9e030000000000000000000000000000000000000000000000000000000000", + "0x7bdb4cdaf93718627d172c72cbf6492d5b56e0d9bb96facd1d72c16ce87192da", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x82d6a7ef37105ae8f113f6d9bd9ceed9619ff3f65b5082717d5cc83943c141f6", + "0x917e8e3fb0a5385a987d1445cd39c60b5aaa16b24452dc9722e71d3a34a1efa7", + "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "0x35d689770bf90ca39acb9ce72e8fd8ed089467dc5a153e736d6ffdda748f421f", + "0x3ae02ae314ec7666b425c61759cbd0832cc69bdc8dc0eccc0e25ff8f0a4d445d" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177533310, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_D3.json b/test/amb/fixtures/capella/receiptsRootProof_D3.json new file mode 100644 index 0000000..2628aa3 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_D3.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "txSlot": 5193728, + "srcSlot": 5234690, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0xdf340753dd479de665aa8731490bf5431c01cf9ead9fe935e1b7bfd4572365c5", + "0x1d5ccaad5122b214b20d74082bcbcdd5f9dcf5f3fa59f5c54cfa70df7c6fafae", + "0xab9d547919e9fd3dd86b2f3c6a2d64789f92ad2155203cefa5027df2bb047401", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x9f9e030000000000000000000000000000000000000000000000000000000000", + "0xf1eefb052bfb0b7f9cab81256284fd38767ee03b91e09281ee4f03a95a338473", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x561198e350fecd72cac99ad07ba372610971567427ea2ff08469ed315a2b0562", + "0x530d76be7d36aba97928ca271c15a5cfee57fa6ad8fcae74986f2a9b2a3190e6", + "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "0x30fd4b800919e93245c50f2b5b3d1f91df47b65260bad9dd5a4d818b00e59eb8", + "0x2d6f446289ef937637a4819dffa2c02a0c692e41146f9fc9407bb4b4b740700b" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177533310, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_D4.json b/test/amb/fixtures/capella/receiptsRootProof_D4.json new file mode 100644 index 0000000..5ffd5b5 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_D4.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "txSlot": 5193728, + "srcSlot": 5234691, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0xdf340753dd479de665aa8731490bf5431c01cf9ead9fe935e1b7bfd4572365c5", + "0x1d5ccaad5122b214b20d74082bcbcdd5f9dcf5f3fa59f5c54cfa70df7c6fafae", + "0xab9d547919e9fd3dd86b2f3c6a2d64789f92ad2155203cefa5027df2bb047401", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xaf9e030000000000000000000000000000000000000000000000000000000000", + "0x3811043d28f0c37ed22ed038ecaa35d788a13572ef108509802f544408ea5d0a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x441f7d23a43cdfd6f072306e6878d70defa8a1c6d55e29fcfe03d2564ae1d921", + "0xe0f2db52d8bce1514560d2d9d9321fe402855554e2b32372e461f1505cf2c1b5", + "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "0x6832efb7d452fab7679daa586db5dddeb27e4a11d72d372592f3b0034d17eff6", + "0x33b3376e3527902e1881fe736809f8ad1a4395e7565cdd677f36318131f9eed8" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177533310, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_D5.json b/test/amb/fixtures/capella/receiptsRootProof_D5.json new file mode 100644 index 0000000..e143d0e --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_D5.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xc7443f8247b5269d51f03e7211544c2da6b82df547a0005e94e38c1340b74fcf", + "txSlot": 5193728, + "srcSlot": 5234692, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0xdf340753dd479de665aa8731490bf5431c01cf9ead9fe935e1b7bfd4572365c5", + "0x1d5ccaad5122b214b20d74082bcbcdd5f9dcf5f3fa59f5c54cfa70df7c6fafae", + "0xab9d547919e9fd3dd86b2f3c6a2d64789f92ad2155203cefa5027df2bb047401", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xbf9e030000000000000000000000000000000000000000000000000000000000", + "0x58d36ca60b37111285c86242c619496a7eb62d2a5b91702550936fb1e307272a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x46cd824083fd56d878c0bcd58ac7293035581fdd82c850aed691d1f224f444ad", + "0x2d2f542fadcb40b44ff0a0a849f33b2e216fe406b4433e7afd611a024a150063", + "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "0xbb2cc794a6b12c85797a89f443a30e90a71153bd65046949adea491b1a8df929", + "0xead4362ba77f18e37d60db25793b561cea4e94ca55d3b13b3dbeed27f86c31e8" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177533310, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_E1.json b/test/amb/fixtures/capella/receiptsRootProof_E1.json new file mode 100644 index 0000000..7942fe1 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_E1.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "txSlot": 5193729, + "srcSlot": 5234688, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0x3c648b2cf9707b80bfb9f2d80fa6950ed53a9ff7f58ddbec8ca70629df7a531e", + "0xecb9321488abbb8d72ce9b1d70bd32bd0a8d701c96394b4af7e34afc7ee03012", + "0xab9d547919e9fd3dd86b2f3c6a2d64789f92ad2155203cefa5027df2bb047401", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x7f9e030000000000000000000000000000000000000000000000000000000000", + "0x2ccd4c0f3b7a9dd75275afca43160d1c5cb091dbc63ec5c211163c4f26300e26", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x3f5cb6eb7a581fd204324fd171259305313c3be5599738a7f358be51905bf331", + "0x8faf2d795de802462f471bff6982f40e6c0c35402dae103ce672a5822689ab70", + "0x7eebdc9f1a773ceb928c345f11780649de033691c43abec44bd1b25a1cab6091", + "0x2681f0e708d5d2c7f864bb271b85117f22bff0ec502b4d1f5751a4be33dac070", + "0x19995577d8b7ddb282468d73c8f68e619a0392ac7e34c11823c4471205a6706d" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177533820, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_E2.json b/test/amb/fixtures/capella/receiptsRootProof_E2.json new file mode 100644 index 0000000..5d1167f --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_E2.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "txSlot": 5193729, + "srcSlot": 5234689, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0x3c648b2cf9707b80bfb9f2d80fa6950ed53a9ff7f58ddbec8ca70629df7a531e", + "0xecb9321488abbb8d72ce9b1d70bd32bd0a8d701c96394b4af7e34afc7ee03012", + "0xab9d547919e9fd3dd86b2f3c6a2d64789f92ad2155203cefa5027df2bb047401", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x8f9e030000000000000000000000000000000000000000000000000000000000", + "0x7bdb4cdaf93718627d172c72cbf6492d5b56e0d9bb96facd1d72c16ce87192da", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x82d6a7ef37105ae8f113f6d9bd9ceed9619ff3f65b5082717d5cc83943c141f6", + "0x917e8e3fb0a5385a987d1445cd39c60b5aaa16b24452dc9722e71d3a34a1efa7", + "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "0x35d689770bf90ca39acb9ce72e8fd8ed089467dc5a153e736d6ffdda748f421f", + "0x3ae02ae314ec7666b425c61759cbd0832cc69bdc8dc0eccc0e25ff8f0a4d445d" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177533820, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_E3.json b/test/amb/fixtures/capella/receiptsRootProof_E3.json new file mode 100644 index 0000000..f36cd74 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_E3.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "txSlot": 5193729, + "srcSlot": 5234690, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0x3c648b2cf9707b80bfb9f2d80fa6950ed53a9ff7f58ddbec8ca70629df7a531e", + "0xecb9321488abbb8d72ce9b1d70bd32bd0a8d701c96394b4af7e34afc7ee03012", + "0xab9d547919e9fd3dd86b2f3c6a2d64789f92ad2155203cefa5027df2bb047401", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x9f9e030000000000000000000000000000000000000000000000000000000000", + "0xf1eefb052bfb0b7f9cab81256284fd38767ee03b91e09281ee4f03a95a338473", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x561198e350fecd72cac99ad07ba372610971567427ea2ff08469ed315a2b0562", + "0x530d76be7d36aba97928ca271c15a5cfee57fa6ad8fcae74986f2a9b2a3190e6", + "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "0x30fd4b800919e93245c50f2b5b3d1f91df47b65260bad9dd5a4d818b00e59eb8", + "0x2d6f446289ef937637a4819dffa2c02a0c692e41146f9fc9407bb4b4b740700b" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177533820, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_E4.json b/test/amb/fixtures/capella/receiptsRootProof_E4.json new file mode 100644 index 0000000..4a1df07 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_E4.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "txSlot": 5193729, + "srcSlot": 5234691, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0x3c648b2cf9707b80bfb9f2d80fa6950ed53a9ff7f58ddbec8ca70629df7a531e", + "0xecb9321488abbb8d72ce9b1d70bd32bd0a8d701c96394b4af7e34afc7ee03012", + "0xab9d547919e9fd3dd86b2f3c6a2d64789f92ad2155203cefa5027df2bb047401", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xaf9e030000000000000000000000000000000000000000000000000000000000", + "0x3811043d28f0c37ed22ed038ecaa35d788a13572ef108509802f544408ea5d0a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x441f7d23a43cdfd6f072306e6878d70defa8a1c6d55e29fcfe03d2564ae1d921", + "0xe0f2db52d8bce1514560d2d9d9321fe402855554e2b32372e461f1505cf2c1b5", + "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "0x6832efb7d452fab7679daa586db5dddeb27e4a11d72d372592f3b0034d17eff6", + "0x33b3376e3527902e1881fe736809f8ad1a4395e7565cdd677f36318131f9eed8" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177533820, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_E5.json b/test/amb/fixtures/capella/receiptsRootProof_E5.json new file mode 100644 index 0000000..f852330 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_E5.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xc7443f8247b5269d51f03e7211544c2da6b82df547a0005e94e38c1340b74fcf", + "txSlot": 5193729, + "srcSlot": 5234692, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0x3c648b2cf9707b80bfb9f2d80fa6950ed53a9ff7f58ddbec8ca70629df7a531e", + "0xecb9321488abbb8d72ce9b1d70bd32bd0a8d701c96394b4af7e34afc7ee03012", + "0xab9d547919e9fd3dd86b2f3c6a2d64789f92ad2155203cefa5027df2bb047401", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xbf9e030000000000000000000000000000000000000000000000000000000000", + "0x58d36ca60b37111285c86242c619496a7eb62d2a5b91702550936fb1e307272a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x46cd824083fd56d878c0bcd58ac7293035581fdd82c850aed691d1f224f444ad", + "0x2d2f542fadcb40b44ff0a0a849f33b2e216fe406b4433e7afd611a024a150063", + "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "0xbb2cc794a6b12c85797a89f443a30e90a71153bd65046949adea491b1a8df929", + "0xead4362ba77f18e37d60db25793b561cea4e94ca55d3b13b3dbeed27f86c31e8" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177533820, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_F1.json b/test/amb/fixtures/capella/receiptsRootProof_F1.json new file mode 100644 index 0000000..f106aeb --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_F1.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "txSlot": 5193730, + "srcSlot": 5234688, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0x8f617f260ccfc5acb2b07345e72c9bea818ccc2f33cd93db1c6dc37649d0cad6", + "0xc5b61e96f6d559b71023464d9bd51a480d5c91bc86bf1cd5f56866da31f585fb", + "0x9c7e6532126ab039d6818679818d9ab94f14ebb4d64f0f370d39e793861ffeaf", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x7f9e030000000000000000000000000000000000000000000000000000000000", + "0x2ccd4c0f3b7a9dd75275afca43160d1c5cb091dbc63ec5c211163c4f26300e26", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x3f5cb6eb7a581fd204324fd171259305313c3be5599738a7f358be51905bf331", + "0x8faf2d795de802462f471bff6982f40e6c0c35402dae103ce672a5822689ab70", + "0x7eebdc9f1a773ceb928c345f11780649de033691c43abec44bd1b25a1cab6091", + "0x2681f0e708d5d2c7f864bb271b85117f22bff0ec502b4d1f5751a4be33dac070", + "0x19995577d8b7ddb282468d73c8f68e619a0392ac7e34c11823c4471205a6706d" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177534340, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_F2.json b/test/amb/fixtures/capella/receiptsRootProof_F2.json new file mode 100644 index 0000000..d24c603 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_F2.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "txSlot": 5193730, + "srcSlot": 5234689, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0x8f617f260ccfc5acb2b07345e72c9bea818ccc2f33cd93db1c6dc37649d0cad6", + "0xc5b61e96f6d559b71023464d9bd51a480d5c91bc86bf1cd5f56866da31f585fb", + "0x9c7e6532126ab039d6818679818d9ab94f14ebb4d64f0f370d39e793861ffeaf", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x8f9e030000000000000000000000000000000000000000000000000000000000", + "0x7bdb4cdaf93718627d172c72cbf6492d5b56e0d9bb96facd1d72c16ce87192da", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x82d6a7ef37105ae8f113f6d9bd9ceed9619ff3f65b5082717d5cc83943c141f6", + "0x917e8e3fb0a5385a987d1445cd39c60b5aaa16b24452dc9722e71d3a34a1efa7", + "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "0x35d689770bf90ca39acb9ce72e8fd8ed089467dc5a153e736d6ffdda748f421f", + "0x3ae02ae314ec7666b425c61759cbd0832cc69bdc8dc0eccc0e25ff8f0a4d445d" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177534340, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_F3.json b/test/amb/fixtures/capella/receiptsRootProof_F3.json new file mode 100644 index 0000000..c10d5dd --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_F3.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "txSlot": 5193730, + "srcSlot": 5234690, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0x8f617f260ccfc5acb2b07345e72c9bea818ccc2f33cd93db1c6dc37649d0cad6", + "0xc5b61e96f6d559b71023464d9bd51a480d5c91bc86bf1cd5f56866da31f585fb", + "0x9c7e6532126ab039d6818679818d9ab94f14ebb4d64f0f370d39e793861ffeaf", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x9f9e030000000000000000000000000000000000000000000000000000000000", + "0xf1eefb052bfb0b7f9cab81256284fd38767ee03b91e09281ee4f03a95a338473", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x561198e350fecd72cac99ad07ba372610971567427ea2ff08469ed315a2b0562", + "0x530d76be7d36aba97928ca271c15a5cfee57fa6ad8fcae74986f2a9b2a3190e6", + "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "0x30fd4b800919e93245c50f2b5b3d1f91df47b65260bad9dd5a4d818b00e59eb8", + "0x2d6f446289ef937637a4819dffa2c02a0c692e41146f9fc9407bb4b4b740700b" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177534340, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_F4.json b/test/amb/fixtures/capella/receiptsRootProof_F4.json new file mode 100644 index 0000000..8bfa4ea --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_F4.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "txSlot": 5193730, + "srcSlot": 5234691, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0x8f617f260ccfc5acb2b07345e72c9bea818ccc2f33cd93db1c6dc37649d0cad6", + "0xc5b61e96f6d559b71023464d9bd51a480d5c91bc86bf1cd5f56866da31f585fb", + "0x9c7e6532126ab039d6818679818d9ab94f14ebb4d64f0f370d39e793861ffeaf", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xaf9e030000000000000000000000000000000000000000000000000000000000", + "0x3811043d28f0c37ed22ed038ecaa35d788a13572ef108509802f544408ea5d0a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x441f7d23a43cdfd6f072306e6878d70defa8a1c6d55e29fcfe03d2564ae1d921", + "0xe0f2db52d8bce1514560d2d9d9321fe402855554e2b32372e461f1505cf2c1b5", + "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "0x6832efb7d452fab7679daa586db5dddeb27e4a11d72d372592f3b0034d17eff6", + "0x33b3376e3527902e1881fe736809f8ad1a4395e7565cdd677f36318131f9eed8" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177534340, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_F5.json b/test/amb/fixtures/capella/receiptsRootProof_F5.json new file mode 100644 index 0000000..0797aee --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_F5.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xc7443f8247b5269d51f03e7211544c2da6b82df547a0005e94e38c1340b74fcf", + "txSlot": 5193730, + "srcSlot": 5234692, + "receiptsRootProof": [ + "0x3fda6e74a8fab99eeadf1602504dc13c7fc6034eb373ed0dca3db21153d0af5f", + "0x898e65be9644afee1bf234313ad9583b7ebcb57c36c48c5ee486cfd45d9b9742", + "0x008c792cdc4406b71db7bbadf98e1ed1cbdbdba01e8237341eaa713c4b8c8e65", + "0xd188570378ad4fca6148586b6d195d5725301ef71273938aef330499f03abf92", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x58fbb7280f8860daa2f31ef9f468a59437bde138603d3d07b75312eb1a27981b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x90389e943b69db4602dca3f814a1a93c8f6e6c8b0e5fc6ddc1c561c2f55c7705", + "0x8f617f260ccfc5acb2b07345e72c9bea818ccc2f33cd93db1c6dc37649d0cad6", + "0xc5b61e96f6d559b71023464d9bd51a480d5c91bc86bf1cd5f56866da31f585fb", + "0x9c7e6532126ab039d6818679818d9ab94f14ebb4d64f0f370d39e793861ffeaf", + "0x7e8f479ddad6a0f6bbd1140a8d6df5a62d4fa7b695f432a7eb02a66d3f6c9392", + "0x30a03fefce8cf834a86b31782a45cc7abc6c9bc000c2bd9245c04541a5ac0219", + "0x7a0b6cd50c49d0c07b9b91e2b2386322fa38dd1a6bbe8a5ce689cb03861eebed", + "0xf72edc494ee26945ee1d9d46aca0aa419204820288d04186e76cda1a669f4e84", + "0xa167adc1724a62104fb7829481945d40a628f5221251473bd69289469839c7bb", + "0x2ad4c91f1538d94f86b271aa115efe16c48ffcb266829d8d4e8a470df2a32718", + "0x8a6e10a5875022e9d3be8f7199bf810e4dfb267e84749675db4a78316efb302b", + "0xacf943f60e3955c640a41f91ddf01d086ea6e7616fec369440d163e111d05db9", + "0x2c53764ef512e59801e616cc012cad9f74f1d429309d3ef8fde63d9bde413974", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xbf9e030000000000000000000000000000000000000000000000000000000000", + "0x58d36ca60b37111285c86242c619496a7eb62d2a5b91702550936fb1e307272a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x46cd824083fd56d878c0bcd58ac7293035581fdd82c850aed691d1f224f444ad", + "0x2d2f542fadcb40b44ff0a0a849f33b2e216fe406b4433e7afd611a024a150063", + "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "0xbb2cc794a6b12c85797a89f443a30e90a71153bd65046949adea491b1a8df929", + "0xead4362ba77f18e37d60db25793b561cea4e94ca55d3b13b3dbeed27f86c31e8" + ], + "receiptsRoot": "0x853976120a04dffb972314e86e6e2251a95c19160135dcd93e34640c98fb9eaf", + "gindex": 106679016177534340, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_G1.json b/test/amb/fixtures/capella/receiptsRootProof_G1.json new file mode 100644 index 0000000..b9a040c --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_G1.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "txSlot": 5201919, + "srcSlot": 5234688, + "receiptsRootProof": [ + "0x698ff75d668abdafde07247bc71f06a4e9ac4f2f0cfe777c6642d56977554ed9", + "0x9ccd17ca51596db527b5c2dc675071ec617905faa27a0958626e3a41a529c67d", + "0x90ec8b155af29cbf78100523f4e6e057946a339f57ea07b5618f7f28f80bd1d4", + "0x4d5217b426f1814c54c290b31b79cf185e69778753076193d3d5fc88276a7735", + "0x947e010000000000000000000000000000000000000000000000000000000000", + "0x3011fc3c965effdebfa32bf9d9282e5e5c782a85d47bd564177dc4f16f0f0c78", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x5e5920cbd4d7775e3350c7ae875132222bed02543a72683f43f414d1c46c225c", + "0x460920fcaff8aacd7f9d769d353d9db0b3cfad7c9e1acfc31a0282ab626d7627", + "0x88cd60dbbe2db08faf23622be1ba22d887aa934d89f072345da8f5947b853af3", + "0x3922a1e19b3cd1db3ffddf6166b71db70e34a196430ef769c20326b870dd6740", + "0xc47c01beb16bf4354c4eeaa3fbc91c311a950de16dbd4cab4d980779fadd7f92", + "0xeac57caf1230dc7f786cd9727c1469bc4cb2e4fcda178c1508d9bf60eb661b16", + "0x5c09bbfdb1b0b98befafb9751b23e04cabdaa6997abf335710605620db66f97d", + "0x4eb150692f6b44b71f421bbab4321ed4639aa8cb83ba87c12aa0179b7ed8957b", + "0x7fc208d5f11d8ef0bd70103be32b347d65a4d898132fe2ed6a60b43299dcac1f", + "0xbba7fd9ef04f6282ba3254c7b3b3e81c9df85e257475082f15b7494e48cdf292", + "0x9d6e917332a8160411e65445df19936615f903aea0fd66cd2e7d3ea39a3465d4", + "0x0794988ab2eeb3f231d717a3c6ade5c7b6f2bbe009f427592fce75f6bbe0acde", + "0x4735f5b0e07c8d991cd10b394e5d8e6d6462788aaebd23b0b98892229bf72d7f", + "0xa43f625f7a23a7e0c3f686a00127f952dcd2b853f242865a77d63c30bc8204ce", + "0x6a13b0c05709708eb7f7953d16b95fa98bf37c14442a151044627c4473f0fd9b", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x7f9e030000000000000000000000000000000000000000000000000000000000", + "0x2ccd4c0f3b7a9dd75275afca43160d1c5cb091dbc63ec5c211163c4f26300e26", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x3f5cb6eb7a581fd204324fd171259305313c3be5599738a7f358be51905bf331", + "0x8faf2d795de802462f471bff6982f40e6c0c35402dae103ce672a5822689ab70", + "0x7eebdc9f1a773ceb928c345f11780649de033691c43abec44bd1b25a1cab6091", + "0x2681f0e708d5d2c7f864bb271b85117f22bff0ec502b4d1f5751a4be33dac070", + "0x19995577d8b7ddb282468d73c8f68e619a0392ac7e34c11823c4471205a6706d" + ], + "receiptsRoot": "0x2204681ead8d5aaf1244dbe5f1acc802cc2e927721cb0271a45c99d573c13200", + "gindex": 106679016181727100, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_G2.json b/test/amb/fixtures/capella/receiptsRootProof_G2.json new file mode 100644 index 0000000..27a8103 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_G2.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "txSlot": 5201919, + "srcSlot": 5234689, + "receiptsRootProof": [ + "0x698ff75d668abdafde07247bc71f06a4e9ac4f2f0cfe777c6642d56977554ed9", + "0x9ccd17ca51596db527b5c2dc675071ec617905faa27a0958626e3a41a529c67d", + "0x90ec8b155af29cbf78100523f4e6e057946a339f57ea07b5618f7f28f80bd1d4", + "0x4d5217b426f1814c54c290b31b79cf185e69778753076193d3d5fc88276a7735", + "0x947e010000000000000000000000000000000000000000000000000000000000", + "0x3011fc3c965effdebfa32bf9d9282e5e5c782a85d47bd564177dc4f16f0f0c78", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x5e5920cbd4d7775e3350c7ae875132222bed02543a72683f43f414d1c46c225c", + "0x460920fcaff8aacd7f9d769d353d9db0b3cfad7c9e1acfc31a0282ab626d7627", + "0x88cd60dbbe2db08faf23622be1ba22d887aa934d89f072345da8f5947b853af3", + "0x3922a1e19b3cd1db3ffddf6166b71db70e34a196430ef769c20326b870dd6740", + "0xc47c01beb16bf4354c4eeaa3fbc91c311a950de16dbd4cab4d980779fadd7f92", + "0xeac57caf1230dc7f786cd9727c1469bc4cb2e4fcda178c1508d9bf60eb661b16", + "0x5c09bbfdb1b0b98befafb9751b23e04cabdaa6997abf335710605620db66f97d", + "0x4eb150692f6b44b71f421bbab4321ed4639aa8cb83ba87c12aa0179b7ed8957b", + "0x7fc208d5f11d8ef0bd70103be32b347d65a4d898132fe2ed6a60b43299dcac1f", + "0xbba7fd9ef04f6282ba3254c7b3b3e81c9df85e257475082f15b7494e48cdf292", + "0x9d6e917332a8160411e65445df19936615f903aea0fd66cd2e7d3ea39a3465d4", + "0x0794988ab2eeb3f231d717a3c6ade5c7b6f2bbe009f427592fce75f6bbe0acde", + "0x4735f5b0e07c8d991cd10b394e5d8e6d6462788aaebd23b0b98892229bf72d7f", + "0xa43f625f7a23a7e0c3f686a00127f952dcd2b853f242865a77d63c30bc8204ce", + "0x6a13b0c05709708eb7f7953d16b95fa98bf37c14442a151044627c4473f0fd9b", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x8f9e030000000000000000000000000000000000000000000000000000000000", + "0x7bdb4cdaf93718627d172c72cbf6492d5b56e0d9bb96facd1d72c16ce87192da", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x82d6a7ef37105ae8f113f6d9bd9ceed9619ff3f65b5082717d5cc83943c141f6", + "0x917e8e3fb0a5385a987d1445cd39c60b5aaa16b24452dc9722e71d3a34a1efa7", + "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "0x35d689770bf90ca39acb9ce72e8fd8ed089467dc5a153e736d6ffdda748f421f", + "0x3ae02ae314ec7666b425c61759cbd0832cc69bdc8dc0eccc0e25ff8f0a4d445d" + ], + "receiptsRoot": "0x2204681ead8d5aaf1244dbe5f1acc802cc2e927721cb0271a45c99d573c13200", + "gindex": 106679016181727100, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_G3.json b/test/amb/fixtures/capella/receiptsRootProof_G3.json new file mode 100644 index 0000000..95f3129 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_G3.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "txSlot": 5201919, + "srcSlot": 5234690, + "receiptsRootProof": [ + "0x698ff75d668abdafde07247bc71f06a4e9ac4f2f0cfe777c6642d56977554ed9", + "0x9ccd17ca51596db527b5c2dc675071ec617905faa27a0958626e3a41a529c67d", + "0x90ec8b155af29cbf78100523f4e6e057946a339f57ea07b5618f7f28f80bd1d4", + "0x4d5217b426f1814c54c290b31b79cf185e69778753076193d3d5fc88276a7735", + "0x947e010000000000000000000000000000000000000000000000000000000000", + "0x3011fc3c965effdebfa32bf9d9282e5e5c782a85d47bd564177dc4f16f0f0c78", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x5e5920cbd4d7775e3350c7ae875132222bed02543a72683f43f414d1c46c225c", + "0x460920fcaff8aacd7f9d769d353d9db0b3cfad7c9e1acfc31a0282ab626d7627", + "0x88cd60dbbe2db08faf23622be1ba22d887aa934d89f072345da8f5947b853af3", + "0x3922a1e19b3cd1db3ffddf6166b71db70e34a196430ef769c20326b870dd6740", + "0xc47c01beb16bf4354c4eeaa3fbc91c311a950de16dbd4cab4d980779fadd7f92", + "0xeac57caf1230dc7f786cd9727c1469bc4cb2e4fcda178c1508d9bf60eb661b16", + "0x5c09bbfdb1b0b98befafb9751b23e04cabdaa6997abf335710605620db66f97d", + "0x4eb150692f6b44b71f421bbab4321ed4639aa8cb83ba87c12aa0179b7ed8957b", + "0x7fc208d5f11d8ef0bd70103be32b347d65a4d898132fe2ed6a60b43299dcac1f", + "0xbba7fd9ef04f6282ba3254c7b3b3e81c9df85e257475082f15b7494e48cdf292", + "0x9d6e917332a8160411e65445df19936615f903aea0fd66cd2e7d3ea39a3465d4", + "0x0794988ab2eeb3f231d717a3c6ade5c7b6f2bbe009f427592fce75f6bbe0acde", + "0x4735f5b0e07c8d991cd10b394e5d8e6d6462788aaebd23b0b98892229bf72d7f", + "0xa43f625f7a23a7e0c3f686a00127f952dcd2b853f242865a77d63c30bc8204ce", + "0x6a13b0c05709708eb7f7953d16b95fa98bf37c14442a151044627c4473f0fd9b", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x9f9e030000000000000000000000000000000000000000000000000000000000", + "0xf1eefb052bfb0b7f9cab81256284fd38767ee03b91e09281ee4f03a95a338473", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x561198e350fecd72cac99ad07ba372610971567427ea2ff08469ed315a2b0562", + "0x530d76be7d36aba97928ca271c15a5cfee57fa6ad8fcae74986f2a9b2a3190e6", + "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "0x30fd4b800919e93245c50f2b5b3d1f91df47b65260bad9dd5a4d818b00e59eb8", + "0x2d6f446289ef937637a4819dffa2c02a0c692e41146f9fc9407bb4b4b740700b" + ], + "receiptsRoot": "0x2204681ead8d5aaf1244dbe5f1acc802cc2e927721cb0271a45c99d573c13200", + "gindex": 106679016181727100, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_G4.json b/test/amb/fixtures/capella/receiptsRootProof_G4.json new file mode 100644 index 0000000..46d36bf --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_G4.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "txSlot": 5201919, + "srcSlot": 5234691, + "receiptsRootProof": [ + "0x698ff75d668abdafde07247bc71f06a4e9ac4f2f0cfe777c6642d56977554ed9", + "0x9ccd17ca51596db527b5c2dc675071ec617905faa27a0958626e3a41a529c67d", + "0x90ec8b155af29cbf78100523f4e6e057946a339f57ea07b5618f7f28f80bd1d4", + "0x4d5217b426f1814c54c290b31b79cf185e69778753076193d3d5fc88276a7735", + "0x947e010000000000000000000000000000000000000000000000000000000000", + "0x3011fc3c965effdebfa32bf9d9282e5e5c782a85d47bd564177dc4f16f0f0c78", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x5e5920cbd4d7775e3350c7ae875132222bed02543a72683f43f414d1c46c225c", + "0x460920fcaff8aacd7f9d769d353d9db0b3cfad7c9e1acfc31a0282ab626d7627", + "0x88cd60dbbe2db08faf23622be1ba22d887aa934d89f072345da8f5947b853af3", + "0x3922a1e19b3cd1db3ffddf6166b71db70e34a196430ef769c20326b870dd6740", + "0xc47c01beb16bf4354c4eeaa3fbc91c311a950de16dbd4cab4d980779fadd7f92", + "0xeac57caf1230dc7f786cd9727c1469bc4cb2e4fcda178c1508d9bf60eb661b16", + "0x5c09bbfdb1b0b98befafb9751b23e04cabdaa6997abf335710605620db66f97d", + "0x4eb150692f6b44b71f421bbab4321ed4639aa8cb83ba87c12aa0179b7ed8957b", + "0x7fc208d5f11d8ef0bd70103be32b347d65a4d898132fe2ed6a60b43299dcac1f", + "0xbba7fd9ef04f6282ba3254c7b3b3e81c9df85e257475082f15b7494e48cdf292", + "0x9d6e917332a8160411e65445df19936615f903aea0fd66cd2e7d3ea39a3465d4", + "0x0794988ab2eeb3f231d717a3c6ade5c7b6f2bbe009f427592fce75f6bbe0acde", + "0x4735f5b0e07c8d991cd10b394e5d8e6d6462788aaebd23b0b98892229bf72d7f", + "0xa43f625f7a23a7e0c3f686a00127f952dcd2b853f242865a77d63c30bc8204ce", + "0x6a13b0c05709708eb7f7953d16b95fa98bf37c14442a151044627c4473f0fd9b", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xaf9e030000000000000000000000000000000000000000000000000000000000", + "0x3811043d28f0c37ed22ed038ecaa35d788a13572ef108509802f544408ea5d0a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x441f7d23a43cdfd6f072306e6878d70defa8a1c6d55e29fcfe03d2564ae1d921", + "0xe0f2db52d8bce1514560d2d9d9321fe402855554e2b32372e461f1505cf2c1b5", + "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "0x6832efb7d452fab7679daa586db5dddeb27e4a11d72d372592f3b0034d17eff6", + "0x33b3376e3527902e1881fe736809f8ad1a4395e7565cdd677f36318131f9eed8" + ], + "receiptsRoot": "0x2204681ead8d5aaf1244dbe5f1acc802cc2e927721cb0271a45c99d573c13200", + "gindex": 106679016181727100, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_G5.json b/test/amb/fixtures/capella/receiptsRootProof_G5.json new file mode 100644 index 0000000..af5cb68 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_G5.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xc7443f8247b5269d51f03e7211544c2da6b82df547a0005e94e38c1340b74fcf", + "txSlot": 5201919, + "srcSlot": 5234692, + "receiptsRootProof": [ + "0x698ff75d668abdafde07247bc71f06a4e9ac4f2f0cfe777c6642d56977554ed9", + "0x9ccd17ca51596db527b5c2dc675071ec617905faa27a0958626e3a41a529c67d", + "0x90ec8b155af29cbf78100523f4e6e057946a339f57ea07b5618f7f28f80bd1d4", + "0x4d5217b426f1814c54c290b31b79cf185e69778753076193d3d5fc88276a7735", + "0x947e010000000000000000000000000000000000000000000000000000000000", + "0x3011fc3c965effdebfa32bf9d9282e5e5c782a85d47bd564177dc4f16f0f0c78", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x5e5920cbd4d7775e3350c7ae875132222bed02543a72683f43f414d1c46c225c", + "0x460920fcaff8aacd7f9d769d353d9db0b3cfad7c9e1acfc31a0282ab626d7627", + "0x88cd60dbbe2db08faf23622be1ba22d887aa934d89f072345da8f5947b853af3", + "0x3922a1e19b3cd1db3ffddf6166b71db70e34a196430ef769c20326b870dd6740", + "0xc47c01beb16bf4354c4eeaa3fbc91c311a950de16dbd4cab4d980779fadd7f92", + "0xeac57caf1230dc7f786cd9727c1469bc4cb2e4fcda178c1508d9bf60eb661b16", + "0x5c09bbfdb1b0b98befafb9751b23e04cabdaa6997abf335710605620db66f97d", + "0x4eb150692f6b44b71f421bbab4321ed4639aa8cb83ba87c12aa0179b7ed8957b", + "0x7fc208d5f11d8ef0bd70103be32b347d65a4d898132fe2ed6a60b43299dcac1f", + "0xbba7fd9ef04f6282ba3254c7b3b3e81c9df85e257475082f15b7494e48cdf292", + "0x9d6e917332a8160411e65445df19936615f903aea0fd66cd2e7d3ea39a3465d4", + "0x0794988ab2eeb3f231d717a3c6ade5c7b6f2bbe009f427592fce75f6bbe0acde", + "0x4735f5b0e07c8d991cd10b394e5d8e6d6462788aaebd23b0b98892229bf72d7f", + "0xa43f625f7a23a7e0c3f686a00127f952dcd2b853f242865a77d63c30bc8204ce", + "0x6a13b0c05709708eb7f7953d16b95fa98bf37c14442a151044627c4473f0fd9b", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xbf9e030000000000000000000000000000000000000000000000000000000000", + "0x58d36ca60b37111285c86242c619496a7eb62d2a5b91702550936fb1e307272a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x46cd824083fd56d878c0bcd58ac7293035581fdd82c850aed691d1f224f444ad", + "0x2d2f542fadcb40b44ff0a0a849f33b2e216fe406b4433e7afd611a024a150063", + "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "0xbb2cc794a6b12c85797a89f443a30e90a71153bd65046949adea491b1a8df929", + "0xead4362ba77f18e37d60db25793b561cea4e94ca55d3b13b3dbeed27f86c31e8" + ], + "receiptsRoot": "0x2204681ead8d5aaf1244dbe5f1acc802cc2e927721cb0271a45c99d573c13200", + "gindex": 106679016181727100, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_H1.json b/test/amb/fixtures/capella/receiptsRootProof_H1.json new file mode 100644 index 0000000..146a843 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_H1.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "txSlot": 5201920, + "srcSlot": 5234688, + "receiptsRootProof": [ + "0x3805895f4a084e3d31cadb939db92b0b1b150091f5ad8acbede650d1138985af", + "0x809a033770c54f76459c8e1e496ff30694a3b2e9165b1311c83a2e262966a1cc", + "0x11c3afec5a74b4b0fa77b82762120e71754da38c50c3b0d7916321a9701d124f", + "0x341fdb22be430a1932775bec743edf07b23d48e43a0301894d1140d6414fa900", + "0xa47e010000000000000000000000000000000000000000000000000000000000", + "0x9b50363dd9773cf89f857f0bb692fcef21b0a6e754586b9bb5e538b85eaa7f53", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x9436724c319e5cadc5fcb81185e9370cb90f74de8e55feabb7e418804ae9fbea", + "0xd933ac6c5aab1b80527360ebb6fe2d29e0c80a6955858e017969d4517917f931", + "0xa7ff084bb6084a71a7bebddec2435518e79130d55d3bb9218c743f1cabb52d53", + "0x732ad1860f24dcaadfa887b87e23b3ad029e5640ce0dea696b3c20847e405808", + "0xf87d87a4f24964995f40aefe21560223067a5de2cece75c3ee089f38d6c3387b", + "0x8fcf8a7b2d60ae2579381210b83fd289ed599917dce5adf6fe5b2fdc42f10f52", + "0xcd14cb94ed736274f8485c900c76f80453589728dd1b038e36a35f0f3dead1f7", + "0x48da71a3cff29aa9e7bcc12a385aa49a8de050a55bde7bee5e9308226f442042", + "0x5b7a84888097192fa480ee65065224931a1ebc5746d155c2a493cdb04b51e3db", + "0x57667208677bfdc81663b62479bf719a27c80148763ba1f9d08cd2b01586ef19", + "0x9d67a20dab29bcabcd2e80da0e9dc848f0bcb6dab61b462f58e7bf6104012237", + "0xf33b797dac11c34354043cf98cd1e6f9e3aca10dc03b37c13e94c0e2b47e0381", + "0x92e91fdc27f954d393b00880dfc248662640da9e7f00d9b2aad2a7d368ffb4ea", + "0xe112b477f98b0536c5d3cf58bc5894336441b673cdc821c4cc76d60129b03095", + "0x8e91f24d449e8570d4ae62292cf7f187a3bcf9a33718e1dba291559d41da0658", + "0x36f1aa3c25d98d4ae690310a763ad6ad060065b20f3eda7cc74acee630c4bc59", + "0x3b033f1f8ce03c07cd97eb59c69ee27c052ab89649d253a34c2e623f92901e18", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x7f9e030000000000000000000000000000000000000000000000000000000000", + "0x2ccd4c0f3b7a9dd75275afca43160d1c5cb091dbc63ec5c211163c4f26300e26", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x3f5cb6eb7a581fd204324fd171259305313c3be5599738a7f358be51905bf331", + "0x8faf2d795de802462f471bff6982f40e6c0c35402dae103ce672a5822689ab70", + "0x7eebdc9f1a773ceb928c345f11780649de033691c43abec44bd1b25a1cab6091", + "0x2681f0e708d5d2c7f864bb271b85117f22bff0ec502b4d1f5751a4be33dac070", + "0x19995577d8b7ddb282468d73c8f68e619a0392ac7e34c11823c4471205a6706d" + ], + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "gindex": 106679016185921920, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_H2.json b/test/amb/fixtures/capella/receiptsRootProof_H2.json new file mode 100644 index 0000000..d1a06a4 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_H2.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "txSlot": 5201920, + "srcSlot": 5234689, + "receiptsRootProof": [ + "0x3805895f4a084e3d31cadb939db92b0b1b150091f5ad8acbede650d1138985af", + "0x809a033770c54f76459c8e1e496ff30694a3b2e9165b1311c83a2e262966a1cc", + "0x11c3afec5a74b4b0fa77b82762120e71754da38c50c3b0d7916321a9701d124f", + "0x341fdb22be430a1932775bec743edf07b23d48e43a0301894d1140d6414fa900", + "0xa47e010000000000000000000000000000000000000000000000000000000000", + "0x9b50363dd9773cf89f857f0bb692fcef21b0a6e754586b9bb5e538b85eaa7f53", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x9436724c319e5cadc5fcb81185e9370cb90f74de8e55feabb7e418804ae9fbea", + "0xd933ac6c5aab1b80527360ebb6fe2d29e0c80a6955858e017969d4517917f931", + "0xa7ff084bb6084a71a7bebddec2435518e79130d55d3bb9218c743f1cabb52d53", + "0x732ad1860f24dcaadfa887b87e23b3ad029e5640ce0dea696b3c20847e405808", + "0xf87d87a4f24964995f40aefe21560223067a5de2cece75c3ee089f38d6c3387b", + "0x8fcf8a7b2d60ae2579381210b83fd289ed599917dce5adf6fe5b2fdc42f10f52", + "0xcd14cb94ed736274f8485c900c76f80453589728dd1b038e36a35f0f3dead1f7", + "0x48da71a3cff29aa9e7bcc12a385aa49a8de050a55bde7bee5e9308226f442042", + "0x5b7a84888097192fa480ee65065224931a1ebc5746d155c2a493cdb04b51e3db", + "0x57667208677bfdc81663b62479bf719a27c80148763ba1f9d08cd2b01586ef19", + "0x9d67a20dab29bcabcd2e80da0e9dc848f0bcb6dab61b462f58e7bf6104012237", + "0xf33b797dac11c34354043cf98cd1e6f9e3aca10dc03b37c13e94c0e2b47e0381", + "0x92e91fdc27f954d393b00880dfc248662640da9e7f00d9b2aad2a7d368ffb4ea", + "0xe112b477f98b0536c5d3cf58bc5894336441b673cdc821c4cc76d60129b03095", + "0x8e91f24d449e8570d4ae62292cf7f187a3bcf9a33718e1dba291559d41da0658", + "0x36f1aa3c25d98d4ae690310a763ad6ad060065b20f3eda7cc74acee630c4bc59", + "0x3b033f1f8ce03c07cd97eb59c69ee27c052ab89649d253a34c2e623f92901e18", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x8f9e030000000000000000000000000000000000000000000000000000000000", + "0x7bdb4cdaf93718627d172c72cbf6492d5b56e0d9bb96facd1d72c16ce87192da", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x82d6a7ef37105ae8f113f6d9bd9ceed9619ff3f65b5082717d5cc83943c141f6", + "0x917e8e3fb0a5385a987d1445cd39c60b5aaa16b24452dc9722e71d3a34a1efa7", + "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "0x35d689770bf90ca39acb9ce72e8fd8ed089467dc5a153e736d6ffdda748f421f", + "0x3ae02ae314ec7666b425c61759cbd0832cc69bdc8dc0eccc0e25ff8f0a4d445d" + ], + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "gindex": 106679016185921920, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_H3.json b/test/amb/fixtures/capella/receiptsRootProof_H3.json new file mode 100644 index 0000000..91c3944 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_H3.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "txSlot": 5201920, + "srcSlot": 5234690, + "receiptsRootProof": [ + "0x3805895f4a084e3d31cadb939db92b0b1b150091f5ad8acbede650d1138985af", + "0x809a033770c54f76459c8e1e496ff30694a3b2e9165b1311c83a2e262966a1cc", + "0x11c3afec5a74b4b0fa77b82762120e71754da38c50c3b0d7916321a9701d124f", + "0x341fdb22be430a1932775bec743edf07b23d48e43a0301894d1140d6414fa900", + "0xa47e010000000000000000000000000000000000000000000000000000000000", + "0x9b50363dd9773cf89f857f0bb692fcef21b0a6e754586b9bb5e538b85eaa7f53", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x9436724c319e5cadc5fcb81185e9370cb90f74de8e55feabb7e418804ae9fbea", + "0xd933ac6c5aab1b80527360ebb6fe2d29e0c80a6955858e017969d4517917f931", + "0xa7ff084bb6084a71a7bebddec2435518e79130d55d3bb9218c743f1cabb52d53", + "0x732ad1860f24dcaadfa887b87e23b3ad029e5640ce0dea696b3c20847e405808", + "0xf87d87a4f24964995f40aefe21560223067a5de2cece75c3ee089f38d6c3387b", + "0x8fcf8a7b2d60ae2579381210b83fd289ed599917dce5adf6fe5b2fdc42f10f52", + "0xcd14cb94ed736274f8485c900c76f80453589728dd1b038e36a35f0f3dead1f7", + "0x48da71a3cff29aa9e7bcc12a385aa49a8de050a55bde7bee5e9308226f442042", + "0x5b7a84888097192fa480ee65065224931a1ebc5746d155c2a493cdb04b51e3db", + "0x57667208677bfdc81663b62479bf719a27c80148763ba1f9d08cd2b01586ef19", + "0x9d67a20dab29bcabcd2e80da0e9dc848f0bcb6dab61b462f58e7bf6104012237", + "0xf33b797dac11c34354043cf98cd1e6f9e3aca10dc03b37c13e94c0e2b47e0381", + "0x92e91fdc27f954d393b00880dfc248662640da9e7f00d9b2aad2a7d368ffb4ea", + "0xe112b477f98b0536c5d3cf58bc5894336441b673cdc821c4cc76d60129b03095", + "0x8e91f24d449e8570d4ae62292cf7f187a3bcf9a33718e1dba291559d41da0658", + "0x36f1aa3c25d98d4ae690310a763ad6ad060065b20f3eda7cc74acee630c4bc59", + "0x3b033f1f8ce03c07cd97eb59c69ee27c052ab89649d253a34c2e623f92901e18", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x9f9e030000000000000000000000000000000000000000000000000000000000", + "0xf1eefb052bfb0b7f9cab81256284fd38767ee03b91e09281ee4f03a95a338473", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x561198e350fecd72cac99ad07ba372610971567427ea2ff08469ed315a2b0562", + "0x530d76be7d36aba97928ca271c15a5cfee57fa6ad8fcae74986f2a9b2a3190e6", + "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "0x30fd4b800919e93245c50f2b5b3d1f91df47b65260bad9dd5a4d818b00e59eb8", + "0x2d6f446289ef937637a4819dffa2c02a0c692e41146f9fc9407bb4b4b740700b" + ], + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "gindex": 106679016185921920, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_H4.json b/test/amb/fixtures/capella/receiptsRootProof_H4.json new file mode 100644 index 0000000..306472d --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_H4.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "txSlot": 5201920, + "srcSlot": 5234691, + "receiptsRootProof": [ + "0x3805895f4a084e3d31cadb939db92b0b1b150091f5ad8acbede650d1138985af", + "0x809a033770c54f76459c8e1e496ff30694a3b2e9165b1311c83a2e262966a1cc", + "0x11c3afec5a74b4b0fa77b82762120e71754da38c50c3b0d7916321a9701d124f", + "0x341fdb22be430a1932775bec743edf07b23d48e43a0301894d1140d6414fa900", + "0xa47e010000000000000000000000000000000000000000000000000000000000", + "0x9b50363dd9773cf89f857f0bb692fcef21b0a6e754586b9bb5e538b85eaa7f53", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x9436724c319e5cadc5fcb81185e9370cb90f74de8e55feabb7e418804ae9fbea", + "0xd933ac6c5aab1b80527360ebb6fe2d29e0c80a6955858e017969d4517917f931", + "0xa7ff084bb6084a71a7bebddec2435518e79130d55d3bb9218c743f1cabb52d53", + "0x732ad1860f24dcaadfa887b87e23b3ad029e5640ce0dea696b3c20847e405808", + "0xf87d87a4f24964995f40aefe21560223067a5de2cece75c3ee089f38d6c3387b", + "0x8fcf8a7b2d60ae2579381210b83fd289ed599917dce5adf6fe5b2fdc42f10f52", + "0xcd14cb94ed736274f8485c900c76f80453589728dd1b038e36a35f0f3dead1f7", + "0x48da71a3cff29aa9e7bcc12a385aa49a8de050a55bde7bee5e9308226f442042", + "0x5b7a84888097192fa480ee65065224931a1ebc5746d155c2a493cdb04b51e3db", + "0x57667208677bfdc81663b62479bf719a27c80148763ba1f9d08cd2b01586ef19", + "0x9d67a20dab29bcabcd2e80da0e9dc848f0bcb6dab61b462f58e7bf6104012237", + "0xf33b797dac11c34354043cf98cd1e6f9e3aca10dc03b37c13e94c0e2b47e0381", + "0x92e91fdc27f954d393b00880dfc248662640da9e7f00d9b2aad2a7d368ffb4ea", + "0xe112b477f98b0536c5d3cf58bc5894336441b673cdc821c4cc76d60129b03095", + "0x8e91f24d449e8570d4ae62292cf7f187a3bcf9a33718e1dba291559d41da0658", + "0x36f1aa3c25d98d4ae690310a763ad6ad060065b20f3eda7cc74acee630c4bc59", + "0x3b033f1f8ce03c07cd97eb59c69ee27c052ab89649d253a34c2e623f92901e18", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xaf9e030000000000000000000000000000000000000000000000000000000000", + "0x3811043d28f0c37ed22ed038ecaa35d788a13572ef108509802f544408ea5d0a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x441f7d23a43cdfd6f072306e6878d70defa8a1c6d55e29fcfe03d2564ae1d921", + "0xe0f2db52d8bce1514560d2d9d9321fe402855554e2b32372e461f1505cf2c1b5", + "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "0x6832efb7d452fab7679daa586db5dddeb27e4a11d72d372592f3b0034d17eff6", + "0x33b3376e3527902e1881fe736809f8ad1a4395e7565cdd677f36318131f9eed8" + ], + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "gindex": 106679016185921920, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_H5.json b/test/amb/fixtures/capella/receiptsRootProof_H5.json new file mode 100644 index 0000000..3fa372f --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_H5.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xc7443f8247b5269d51f03e7211544c2da6b82df547a0005e94e38c1340b74fcf", + "txSlot": 5201920, + "srcSlot": 5234692, + "receiptsRootProof": [ + "0x3805895f4a084e3d31cadb939db92b0b1b150091f5ad8acbede650d1138985af", + "0x809a033770c54f76459c8e1e496ff30694a3b2e9165b1311c83a2e262966a1cc", + "0x11c3afec5a74b4b0fa77b82762120e71754da38c50c3b0d7916321a9701d124f", + "0x341fdb22be430a1932775bec743edf07b23d48e43a0301894d1140d6414fa900", + "0xa47e010000000000000000000000000000000000000000000000000000000000", + "0x9b50363dd9773cf89f857f0bb692fcef21b0a6e754586b9bb5e538b85eaa7f53", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x9436724c319e5cadc5fcb81185e9370cb90f74de8e55feabb7e418804ae9fbea", + "0xd933ac6c5aab1b80527360ebb6fe2d29e0c80a6955858e017969d4517917f931", + "0xa7ff084bb6084a71a7bebddec2435518e79130d55d3bb9218c743f1cabb52d53", + "0x732ad1860f24dcaadfa887b87e23b3ad029e5640ce0dea696b3c20847e405808", + "0xf87d87a4f24964995f40aefe21560223067a5de2cece75c3ee089f38d6c3387b", + "0x8fcf8a7b2d60ae2579381210b83fd289ed599917dce5adf6fe5b2fdc42f10f52", + "0xcd14cb94ed736274f8485c900c76f80453589728dd1b038e36a35f0f3dead1f7", + "0x48da71a3cff29aa9e7bcc12a385aa49a8de050a55bde7bee5e9308226f442042", + "0x5b7a84888097192fa480ee65065224931a1ebc5746d155c2a493cdb04b51e3db", + "0x57667208677bfdc81663b62479bf719a27c80148763ba1f9d08cd2b01586ef19", + "0x9d67a20dab29bcabcd2e80da0e9dc848f0bcb6dab61b462f58e7bf6104012237", + "0xf33b797dac11c34354043cf98cd1e6f9e3aca10dc03b37c13e94c0e2b47e0381", + "0x92e91fdc27f954d393b00880dfc248662640da9e7f00d9b2aad2a7d368ffb4ea", + "0xe112b477f98b0536c5d3cf58bc5894336441b673cdc821c4cc76d60129b03095", + "0x8e91f24d449e8570d4ae62292cf7f187a3bcf9a33718e1dba291559d41da0658", + "0x36f1aa3c25d98d4ae690310a763ad6ad060065b20f3eda7cc74acee630c4bc59", + "0x3b033f1f8ce03c07cd97eb59c69ee27c052ab89649d253a34c2e623f92901e18", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xbf9e030000000000000000000000000000000000000000000000000000000000", + "0x58d36ca60b37111285c86242c619496a7eb62d2a5b91702550936fb1e307272a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x46cd824083fd56d878c0bcd58ac7293035581fdd82c850aed691d1f224f444ad", + "0x2d2f542fadcb40b44ff0a0a849f33b2e216fe406b4433e7afd611a024a150063", + "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "0xbb2cc794a6b12c85797a89f443a30e90a71153bd65046949adea491b1a8df929", + "0xead4362ba77f18e37d60db25793b561cea4e94ca55d3b13b3dbeed27f86c31e8" + ], + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "gindex": 106679016185921920, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_I1.json b/test/amb/fixtures/capella/receiptsRootProof_I1.json new file mode 100644 index 0000000..58802d7 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_I1.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "txSlot": 5201921, + "srcSlot": 5234688, + "receiptsRootProof": [ + "0xd3ba42d758cda7f365c4ae189829d8eb72a32b7f05301a1a94eda656642eab09", + "0x66b4cbf430f8b4054140ab0c1af35684db00504bf00979b552c84acc7c970cb8", + "0x90d3ed6ac3ad5dd23e7fadbec08a463e6c2208c83594841386cf1b5d0389269b", + "0x2104b0f130851a6a274e0e1ebeeb18cc8ccf955ff08a60911aa1638aa43a99fa", + "0xb47e010000000000000000000000000000000000000000000000000000000000", + "0x99d94fa99456ffcc3de5d273f10dab704edd2e7b2b2de3ad78971cae3046f222", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xa3f46ca47fdfd42318eba210340e2c984d18e3430a3b400d8e57c95524ae9c4c", + "0xc29467ea8f4303bf9a9ec809c20660c02b1ed193d5c68098b547269dcf80693f", + "0xff29b0e4d7bae77cab61abe45dda5ce7ad05158e3bbf74776fc67740f49f8115", + "0x732ad1860f24dcaadfa887b87e23b3ad029e5640ce0dea696b3c20847e405808", + "0xf87d87a4f24964995f40aefe21560223067a5de2cece75c3ee089f38d6c3387b", + "0x8fcf8a7b2d60ae2579381210b83fd289ed599917dce5adf6fe5b2fdc42f10f52", + "0xcd14cb94ed736274f8485c900c76f80453589728dd1b038e36a35f0f3dead1f7", + "0x48da71a3cff29aa9e7bcc12a385aa49a8de050a55bde7bee5e9308226f442042", + "0x5b7a84888097192fa480ee65065224931a1ebc5746d155c2a493cdb04b51e3db", + "0x57667208677bfdc81663b62479bf719a27c80148763ba1f9d08cd2b01586ef19", + "0x9d67a20dab29bcabcd2e80da0e9dc848f0bcb6dab61b462f58e7bf6104012237", + "0xf33b797dac11c34354043cf98cd1e6f9e3aca10dc03b37c13e94c0e2b47e0381", + "0x92e91fdc27f954d393b00880dfc248662640da9e7f00d9b2aad2a7d368ffb4ea", + "0xe112b477f98b0536c5d3cf58bc5894336441b673cdc821c4cc76d60129b03095", + "0x8e91f24d449e8570d4ae62292cf7f187a3bcf9a33718e1dba291559d41da0658", + "0x36f1aa3c25d98d4ae690310a763ad6ad060065b20f3eda7cc74acee630c4bc59", + "0x3b033f1f8ce03c07cd97eb59c69ee27c052ab89649d253a34c2e623f92901e18", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x7f9e030000000000000000000000000000000000000000000000000000000000", + "0x2ccd4c0f3b7a9dd75275afca43160d1c5cb091dbc63ec5c211163c4f26300e26", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x3f5cb6eb7a581fd204324fd171259305313c3be5599738a7f358be51905bf331", + "0x8faf2d795de802462f471bff6982f40e6c0c35402dae103ce672a5822689ab70", + "0x7eebdc9f1a773ceb928c345f11780649de033691c43abec44bd1b25a1cab6091", + "0x2681f0e708d5d2c7f864bb271b85117f22bff0ec502b4d1f5751a4be33dac070", + "0x19995577d8b7ddb282468d73c8f68e619a0392ac7e34c11823c4471205a6706d" + ], + "receiptsRoot": "0x3ba2c946e56e05dd5d0d6eb04bb3caf01fa67fdcd80587e352b637f7a7cd6c06", + "gindex": 106679016185922430, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_I2.json b/test/amb/fixtures/capella/receiptsRootProof_I2.json new file mode 100644 index 0000000..903d521 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_I2.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "txSlot": 5201921, + "srcSlot": 5234689, + "receiptsRootProof": [ + "0xd3ba42d758cda7f365c4ae189829d8eb72a32b7f05301a1a94eda656642eab09", + "0x66b4cbf430f8b4054140ab0c1af35684db00504bf00979b552c84acc7c970cb8", + "0x90d3ed6ac3ad5dd23e7fadbec08a463e6c2208c83594841386cf1b5d0389269b", + "0x2104b0f130851a6a274e0e1ebeeb18cc8ccf955ff08a60911aa1638aa43a99fa", + "0xb47e010000000000000000000000000000000000000000000000000000000000", + "0x99d94fa99456ffcc3de5d273f10dab704edd2e7b2b2de3ad78971cae3046f222", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xa3f46ca47fdfd42318eba210340e2c984d18e3430a3b400d8e57c95524ae9c4c", + "0xc29467ea8f4303bf9a9ec809c20660c02b1ed193d5c68098b547269dcf80693f", + "0xff29b0e4d7bae77cab61abe45dda5ce7ad05158e3bbf74776fc67740f49f8115", + "0x732ad1860f24dcaadfa887b87e23b3ad029e5640ce0dea696b3c20847e405808", + "0xf87d87a4f24964995f40aefe21560223067a5de2cece75c3ee089f38d6c3387b", + "0x8fcf8a7b2d60ae2579381210b83fd289ed599917dce5adf6fe5b2fdc42f10f52", + "0xcd14cb94ed736274f8485c900c76f80453589728dd1b038e36a35f0f3dead1f7", + "0x48da71a3cff29aa9e7bcc12a385aa49a8de050a55bde7bee5e9308226f442042", + "0x5b7a84888097192fa480ee65065224931a1ebc5746d155c2a493cdb04b51e3db", + "0x57667208677bfdc81663b62479bf719a27c80148763ba1f9d08cd2b01586ef19", + "0x9d67a20dab29bcabcd2e80da0e9dc848f0bcb6dab61b462f58e7bf6104012237", + "0xf33b797dac11c34354043cf98cd1e6f9e3aca10dc03b37c13e94c0e2b47e0381", + "0x92e91fdc27f954d393b00880dfc248662640da9e7f00d9b2aad2a7d368ffb4ea", + "0xe112b477f98b0536c5d3cf58bc5894336441b673cdc821c4cc76d60129b03095", + "0x8e91f24d449e8570d4ae62292cf7f187a3bcf9a33718e1dba291559d41da0658", + "0x36f1aa3c25d98d4ae690310a763ad6ad060065b20f3eda7cc74acee630c4bc59", + "0x3b033f1f8ce03c07cd97eb59c69ee27c052ab89649d253a34c2e623f92901e18", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x8f9e030000000000000000000000000000000000000000000000000000000000", + "0x7bdb4cdaf93718627d172c72cbf6492d5b56e0d9bb96facd1d72c16ce87192da", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x82d6a7ef37105ae8f113f6d9bd9ceed9619ff3f65b5082717d5cc83943c141f6", + "0x917e8e3fb0a5385a987d1445cd39c60b5aaa16b24452dc9722e71d3a34a1efa7", + "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "0x35d689770bf90ca39acb9ce72e8fd8ed089467dc5a153e736d6ffdda748f421f", + "0x3ae02ae314ec7666b425c61759cbd0832cc69bdc8dc0eccc0e25ff8f0a4d445d" + ], + "receiptsRoot": "0x3ba2c946e56e05dd5d0d6eb04bb3caf01fa67fdcd80587e352b637f7a7cd6c06", + "gindex": 106679016185922430, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_I3.json b/test/amb/fixtures/capella/receiptsRootProof_I3.json new file mode 100644 index 0000000..9395702 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_I3.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "txSlot": 5201921, + "srcSlot": 5234690, + "receiptsRootProof": [ + "0xd3ba42d758cda7f365c4ae189829d8eb72a32b7f05301a1a94eda656642eab09", + "0x66b4cbf430f8b4054140ab0c1af35684db00504bf00979b552c84acc7c970cb8", + "0x90d3ed6ac3ad5dd23e7fadbec08a463e6c2208c83594841386cf1b5d0389269b", + "0x2104b0f130851a6a274e0e1ebeeb18cc8ccf955ff08a60911aa1638aa43a99fa", + "0xb47e010000000000000000000000000000000000000000000000000000000000", + "0x99d94fa99456ffcc3de5d273f10dab704edd2e7b2b2de3ad78971cae3046f222", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xa3f46ca47fdfd42318eba210340e2c984d18e3430a3b400d8e57c95524ae9c4c", + "0xc29467ea8f4303bf9a9ec809c20660c02b1ed193d5c68098b547269dcf80693f", + "0xff29b0e4d7bae77cab61abe45dda5ce7ad05158e3bbf74776fc67740f49f8115", + "0x732ad1860f24dcaadfa887b87e23b3ad029e5640ce0dea696b3c20847e405808", + "0xf87d87a4f24964995f40aefe21560223067a5de2cece75c3ee089f38d6c3387b", + "0x8fcf8a7b2d60ae2579381210b83fd289ed599917dce5adf6fe5b2fdc42f10f52", + "0xcd14cb94ed736274f8485c900c76f80453589728dd1b038e36a35f0f3dead1f7", + "0x48da71a3cff29aa9e7bcc12a385aa49a8de050a55bde7bee5e9308226f442042", + "0x5b7a84888097192fa480ee65065224931a1ebc5746d155c2a493cdb04b51e3db", + "0x57667208677bfdc81663b62479bf719a27c80148763ba1f9d08cd2b01586ef19", + "0x9d67a20dab29bcabcd2e80da0e9dc848f0bcb6dab61b462f58e7bf6104012237", + "0xf33b797dac11c34354043cf98cd1e6f9e3aca10dc03b37c13e94c0e2b47e0381", + "0x92e91fdc27f954d393b00880dfc248662640da9e7f00d9b2aad2a7d368ffb4ea", + "0xe112b477f98b0536c5d3cf58bc5894336441b673cdc821c4cc76d60129b03095", + "0x8e91f24d449e8570d4ae62292cf7f187a3bcf9a33718e1dba291559d41da0658", + "0x36f1aa3c25d98d4ae690310a763ad6ad060065b20f3eda7cc74acee630c4bc59", + "0x3b033f1f8ce03c07cd97eb59c69ee27c052ab89649d253a34c2e623f92901e18", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x9f9e030000000000000000000000000000000000000000000000000000000000", + "0xf1eefb052bfb0b7f9cab81256284fd38767ee03b91e09281ee4f03a95a338473", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x561198e350fecd72cac99ad07ba372610971567427ea2ff08469ed315a2b0562", + "0x530d76be7d36aba97928ca271c15a5cfee57fa6ad8fcae74986f2a9b2a3190e6", + "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "0x30fd4b800919e93245c50f2b5b3d1f91df47b65260bad9dd5a4d818b00e59eb8", + "0x2d6f446289ef937637a4819dffa2c02a0c692e41146f9fc9407bb4b4b740700b" + ], + "receiptsRoot": "0x3ba2c946e56e05dd5d0d6eb04bb3caf01fa67fdcd80587e352b637f7a7cd6c06", + "gindex": 106679016185922430, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_I4.json b/test/amb/fixtures/capella/receiptsRootProof_I4.json new file mode 100644 index 0000000..d0d99f2 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_I4.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "txSlot": 5201921, + "srcSlot": 5234691, + "receiptsRootProof": [ + "0xd3ba42d758cda7f365c4ae189829d8eb72a32b7f05301a1a94eda656642eab09", + "0x66b4cbf430f8b4054140ab0c1af35684db00504bf00979b552c84acc7c970cb8", + "0x90d3ed6ac3ad5dd23e7fadbec08a463e6c2208c83594841386cf1b5d0389269b", + "0x2104b0f130851a6a274e0e1ebeeb18cc8ccf955ff08a60911aa1638aa43a99fa", + "0xb47e010000000000000000000000000000000000000000000000000000000000", + "0x99d94fa99456ffcc3de5d273f10dab704edd2e7b2b2de3ad78971cae3046f222", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xa3f46ca47fdfd42318eba210340e2c984d18e3430a3b400d8e57c95524ae9c4c", + "0xc29467ea8f4303bf9a9ec809c20660c02b1ed193d5c68098b547269dcf80693f", + "0xff29b0e4d7bae77cab61abe45dda5ce7ad05158e3bbf74776fc67740f49f8115", + "0x732ad1860f24dcaadfa887b87e23b3ad029e5640ce0dea696b3c20847e405808", + "0xf87d87a4f24964995f40aefe21560223067a5de2cece75c3ee089f38d6c3387b", + "0x8fcf8a7b2d60ae2579381210b83fd289ed599917dce5adf6fe5b2fdc42f10f52", + "0xcd14cb94ed736274f8485c900c76f80453589728dd1b038e36a35f0f3dead1f7", + "0x48da71a3cff29aa9e7bcc12a385aa49a8de050a55bde7bee5e9308226f442042", + "0x5b7a84888097192fa480ee65065224931a1ebc5746d155c2a493cdb04b51e3db", + "0x57667208677bfdc81663b62479bf719a27c80148763ba1f9d08cd2b01586ef19", + "0x9d67a20dab29bcabcd2e80da0e9dc848f0bcb6dab61b462f58e7bf6104012237", + "0xf33b797dac11c34354043cf98cd1e6f9e3aca10dc03b37c13e94c0e2b47e0381", + "0x92e91fdc27f954d393b00880dfc248662640da9e7f00d9b2aad2a7d368ffb4ea", + "0xe112b477f98b0536c5d3cf58bc5894336441b673cdc821c4cc76d60129b03095", + "0x8e91f24d449e8570d4ae62292cf7f187a3bcf9a33718e1dba291559d41da0658", + "0x36f1aa3c25d98d4ae690310a763ad6ad060065b20f3eda7cc74acee630c4bc59", + "0x3b033f1f8ce03c07cd97eb59c69ee27c052ab89649d253a34c2e623f92901e18", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xaf9e030000000000000000000000000000000000000000000000000000000000", + "0x3811043d28f0c37ed22ed038ecaa35d788a13572ef108509802f544408ea5d0a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x441f7d23a43cdfd6f072306e6878d70defa8a1c6d55e29fcfe03d2564ae1d921", + "0xe0f2db52d8bce1514560d2d9d9321fe402855554e2b32372e461f1505cf2c1b5", + "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "0x6832efb7d452fab7679daa586db5dddeb27e4a11d72d372592f3b0034d17eff6", + "0x33b3376e3527902e1881fe736809f8ad1a4395e7565cdd677f36318131f9eed8" + ], + "receiptsRoot": "0x3ba2c946e56e05dd5d0d6eb04bb3caf01fa67fdcd80587e352b637f7a7cd6c06", + "gindex": 106679016185922430, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_I5.json b/test/amb/fixtures/capella/receiptsRootProof_I5.json new file mode 100644 index 0000000..98c71ff --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_I5.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xc7443f8247b5269d51f03e7211544c2da6b82df547a0005e94e38c1340b74fcf", + "txSlot": 5201921, + "srcSlot": 5234692, + "receiptsRootProof": [ + "0xd3ba42d758cda7f365c4ae189829d8eb72a32b7f05301a1a94eda656642eab09", + "0x66b4cbf430f8b4054140ab0c1af35684db00504bf00979b552c84acc7c970cb8", + "0x90d3ed6ac3ad5dd23e7fadbec08a463e6c2208c83594841386cf1b5d0389269b", + "0x2104b0f130851a6a274e0e1ebeeb18cc8ccf955ff08a60911aa1638aa43a99fa", + "0xb47e010000000000000000000000000000000000000000000000000000000000", + "0x99d94fa99456ffcc3de5d273f10dab704edd2e7b2b2de3ad78971cae3046f222", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xa3f46ca47fdfd42318eba210340e2c984d18e3430a3b400d8e57c95524ae9c4c", + "0xc29467ea8f4303bf9a9ec809c20660c02b1ed193d5c68098b547269dcf80693f", + "0xff29b0e4d7bae77cab61abe45dda5ce7ad05158e3bbf74776fc67740f49f8115", + "0x732ad1860f24dcaadfa887b87e23b3ad029e5640ce0dea696b3c20847e405808", + "0xf87d87a4f24964995f40aefe21560223067a5de2cece75c3ee089f38d6c3387b", + "0x8fcf8a7b2d60ae2579381210b83fd289ed599917dce5adf6fe5b2fdc42f10f52", + "0xcd14cb94ed736274f8485c900c76f80453589728dd1b038e36a35f0f3dead1f7", + "0x48da71a3cff29aa9e7bcc12a385aa49a8de050a55bde7bee5e9308226f442042", + "0x5b7a84888097192fa480ee65065224931a1ebc5746d155c2a493cdb04b51e3db", + "0x57667208677bfdc81663b62479bf719a27c80148763ba1f9d08cd2b01586ef19", + "0x9d67a20dab29bcabcd2e80da0e9dc848f0bcb6dab61b462f58e7bf6104012237", + "0xf33b797dac11c34354043cf98cd1e6f9e3aca10dc03b37c13e94c0e2b47e0381", + "0x92e91fdc27f954d393b00880dfc248662640da9e7f00d9b2aad2a7d368ffb4ea", + "0xe112b477f98b0536c5d3cf58bc5894336441b673cdc821c4cc76d60129b03095", + "0x8e91f24d449e8570d4ae62292cf7f187a3bcf9a33718e1dba291559d41da0658", + "0x36f1aa3c25d98d4ae690310a763ad6ad060065b20f3eda7cc74acee630c4bc59", + "0x3b033f1f8ce03c07cd97eb59c69ee27c052ab89649d253a34c2e623f92901e18", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xbf9e030000000000000000000000000000000000000000000000000000000000", + "0x58d36ca60b37111285c86242c619496a7eb62d2a5b91702550936fb1e307272a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x46cd824083fd56d878c0bcd58ac7293035581fdd82c850aed691d1f224f444ad", + "0x2d2f542fadcb40b44ff0a0a849f33b2e216fe406b4433e7afd611a024a150063", + "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "0xbb2cc794a6b12c85797a89f443a30e90a71153bd65046949adea491b1a8df929", + "0xead4362ba77f18e37d60db25793b561cea4e94ca55d3b13b3dbeed27f86c31e8" + ], + "receiptsRoot": "0x3ba2c946e56e05dd5d0d6eb04bb3caf01fa67fdcd80587e352b637f7a7cd6c06", + "gindex": 106679016185922430, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_J1.json b/test/amb/fixtures/capella/receiptsRootProof_J1.json new file mode 100644 index 0000000..2478bb0 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_J1.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "txSlot": 5210115, + "srcSlot": 5234688, + "receiptsRootProof": [ + "0x157856827a42d97ed77926965911c3b9e66c654310fe2842ae1b0d165896011b", + "0x30035e311d7cb5a3b54dac4901ae26ea85a0ef584a3c627f6a24a20508280cc7", + "0x09d8a29c404323ae4efdba12d1f8a5efbe5188d7360080b5d9d86f4ce0882e33", + "0x07a1a2f46f3b78656ad928edca95872bfc72df64970a01b232de52b6277407cb", + "0xea10030000000000000000000000000000000000000000000000000000000000", + "0x1a1109802e3562e51f28698889ba65356b563aaffe7334504724292e2368c372", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xd82351663ac287f9af8380cdf1b914760e41d47f418a76d684900a217b40f3dc", + "0xa611f1df9d439d4a9d380499724ec3b0add409cc2425847581566565bc1f24fa", + "0xa6e666ecc86ef1ddf0ac56571c4ff8779c2d468521045b49d9a08d7579d254ab", + "0x050c5b38c16bd657a6c09ebf433915d81a64dc27650476605a03d56096e5fa7e", + "0xd49d9233075e595a2e5420aacb59abb71ede4827324ad1f6c06ebe2d9582ad94", + "0x0b04e8961a5dbcfd183e8489bb00dfcc227b9faf8219856fff89becf9feb8232", + "0x5c31d6d30a7cd7baa92fabeda8153e45e03f5ec39fab3a76257ac1988676f2bf", + "0x282f2d58b74a74028ae22ab2bd807e9c880cc178064f71542c3a90c0e3996b6f", + "0x290ec462a6533d5e37c6bffeddbc37980cc1120f15f2cdd5d590f1faecb159b3", + "0x9de9711c4d7c94d6c634d3caca96a13b9db64e78b8e20543d4d42a5fa4c8e1fd", + "0x8a804dd9f64806c4bd12639324fb657ca26012326509d9687baec02a62d0c843", + "0x514d6cc4f5ccae28252ab2a2849ad2212eb358fd617efb327c60443dcdea3cd4", + "0x73a1e022fe21b85959a67e0d8025b8552b9d66ccfbb86160d91909a7d5a4b535", + "0x30478f610910fd17d292106f350613d0723d76783ea0dd3c442d9452814b61e6", + "0x67429d5590e4f1d49835440d8ef223d6378739c3c7b17432c4f4360d5483ed5b", + "0xb6d63faeb216034814e9303c8546ab90314523bcd040058849d7f1e29232a22d", + "0xd98593273981fa9ec07391f98e742517b6c2647c93523c52b987569ebedeaa20", + "0x8159e30759c57d30871ceae07faa86f6e86b3821bccb82dc72965887e954bb9c", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x7f9e030000000000000000000000000000000000000000000000000000000000", + "0x2ccd4c0f3b7a9dd75275afca43160d1c5cb091dbc63ec5c211163c4f26300e26", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x3f5cb6eb7a581fd204324fd171259305313c3be5599738a7f358be51905bf331", + "0x8faf2d795de802462f471bff6982f40e6c0c35402dae103ce672a5822689ab70", + "0x7eebdc9f1a773ceb928c345f11780649de033691c43abec44bd1b25a1cab6091", + "0x2681f0e708d5d2c7f864bb271b85117f22bff0ec502b4d1f5751a4be33dac070", + "0x19995577d8b7ddb282468d73c8f68e619a0392ac7e34c11823c4471205a6706d" + ], + "receiptsRoot": "0x26d3f98e02b4de931ab97dcd7aed459f91555f61e7bb8cf13a57dc04c8b51852", + "gindex": 106679016194312060, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_J2.json b/test/amb/fixtures/capella/receiptsRootProof_J2.json new file mode 100644 index 0000000..7364093 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_J2.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "txSlot": 5210115, + "srcSlot": 5234689, + "receiptsRootProof": [ + "0x157856827a42d97ed77926965911c3b9e66c654310fe2842ae1b0d165896011b", + "0x30035e311d7cb5a3b54dac4901ae26ea85a0ef584a3c627f6a24a20508280cc7", + "0x09d8a29c404323ae4efdba12d1f8a5efbe5188d7360080b5d9d86f4ce0882e33", + "0x07a1a2f46f3b78656ad928edca95872bfc72df64970a01b232de52b6277407cb", + "0xea10030000000000000000000000000000000000000000000000000000000000", + "0x1a1109802e3562e51f28698889ba65356b563aaffe7334504724292e2368c372", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xd82351663ac287f9af8380cdf1b914760e41d47f418a76d684900a217b40f3dc", + "0xa611f1df9d439d4a9d380499724ec3b0add409cc2425847581566565bc1f24fa", + "0xa6e666ecc86ef1ddf0ac56571c4ff8779c2d468521045b49d9a08d7579d254ab", + "0x050c5b38c16bd657a6c09ebf433915d81a64dc27650476605a03d56096e5fa7e", + "0xd49d9233075e595a2e5420aacb59abb71ede4827324ad1f6c06ebe2d9582ad94", + "0x0b04e8961a5dbcfd183e8489bb00dfcc227b9faf8219856fff89becf9feb8232", + "0x5c31d6d30a7cd7baa92fabeda8153e45e03f5ec39fab3a76257ac1988676f2bf", + "0x282f2d58b74a74028ae22ab2bd807e9c880cc178064f71542c3a90c0e3996b6f", + "0x290ec462a6533d5e37c6bffeddbc37980cc1120f15f2cdd5d590f1faecb159b3", + "0x9de9711c4d7c94d6c634d3caca96a13b9db64e78b8e20543d4d42a5fa4c8e1fd", + "0x8a804dd9f64806c4bd12639324fb657ca26012326509d9687baec02a62d0c843", + "0x514d6cc4f5ccae28252ab2a2849ad2212eb358fd617efb327c60443dcdea3cd4", + "0x73a1e022fe21b85959a67e0d8025b8552b9d66ccfbb86160d91909a7d5a4b535", + "0x30478f610910fd17d292106f350613d0723d76783ea0dd3c442d9452814b61e6", + "0x67429d5590e4f1d49835440d8ef223d6378739c3c7b17432c4f4360d5483ed5b", + "0xb6d63faeb216034814e9303c8546ab90314523bcd040058849d7f1e29232a22d", + "0xd98593273981fa9ec07391f98e742517b6c2647c93523c52b987569ebedeaa20", + "0x8159e30759c57d30871ceae07faa86f6e86b3821bccb82dc72965887e954bb9c", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x8f9e030000000000000000000000000000000000000000000000000000000000", + "0x7bdb4cdaf93718627d172c72cbf6492d5b56e0d9bb96facd1d72c16ce87192da", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x82d6a7ef37105ae8f113f6d9bd9ceed9619ff3f65b5082717d5cc83943c141f6", + "0x917e8e3fb0a5385a987d1445cd39c60b5aaa16b24452dc9722e71d3a34a1efa7", + "0x4e04619a03fdcd0ed1eaf61022da09ee135999b6e5951c2f69ac6a4a28662d31", + "0x35d689770bf90ca39acb9ce72e8fd8ed089467dc5a153e736d6ffdda748f421f", + "0x3ae02ae314ec7666b425c61759cbd0832cc69bdc8dc0eccc0e25ff8f0a4d445d" + ], + "receiptsRoot": "0x26d3f98e02b4de931ab97dcd7aed459f91555f61e7bb8cf13a57dc04c8b51852", + "gindex": 106679016194312060, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_J3.json b/test/amb/fixtures/capella/receiptsRootProof_J3.json new file mode 100644 index 0000000..29befae --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_J3.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "txSlot": 5210115, + "srcSlot": 5234690, + "receiptsRootProof": [ + "0x157856827a42d97ed77926965911c3b9e66c654310fe2842ae1b0d165896011b", + "0x30035e311d7cb5a3b54dac4901ae26ea85a0ef584a3c627f6a24a20508280cc7", + "0x09d8a29c404323ae4efdba12d1f8a5efbe5188d7360080b5d9d86f4ce0882e33", + "0x07a1a2f46f3b78656ad928edca95872bfc72df64970a01b232de52b6277407cb", + "0xea10030000000000000000000000000000000000000000000000000000000000", + "0x1a1109802e3562e51f28698889ba65356b563aaffe7334504724292e2368c372", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xd82351663ac287f9af8380cdf1b914760e41d47f418a76d684900a217b40f3dc", + "0xa611f1df9d439d4a9d380499724ec3b0add409cc2425847581566565bc1f24fa", + "0xa6e666ecc86ef1ddf0ac56571c4ff8779c2d468521045b49d9a08d7579d254ab", + "0x050c5b38c16bd657a6c09ebf433915d81a64dc27650476605a03d56096e5fa7e", + "0xd49d9233075e595a2e5420aacb59abb71ede4827324ad1f6c06ebe2d9582ad94", + "0x0b04e8961a5dbcfd183e8489bb00dfcc227b9faf8219856fff89becf9feb8232", + "0x5c31d6d30a7cd7baa92fabeda8153e45e03f5ec39fab3a76257ac1988676f2bf", + "0x282f2d58b74a74028ae22ab2bd807e9c880cc178064f71542c3a90c0e3996b6f", + "0x290ec462a6533d5e37c6bffeddbc37980cc1120f15f2cdd5d590f1faecb159b3", + "0x9de9711c4d7c94d6c634d3caca96a13b9db64e78b8e20543d4d42a5fa4c8e1fd", + "0x8a804dd9f64806c4bd12639324fb657ca26012326509d9687baec02a62d0c843", + "0x514d6cc4f5ccae28252ab2a2849ad2212eb358fd617efb327c60443dcdea3cd4", + "0x73a1e022fe21b85959a67e0d8025b8552b9d66ccfbb86160d91909a7d5a4b535", + "0x30478f610910fd17d292106f350613d0723d76783ea0dd3c442d9452814b61e6", + "0x67429d5590e4f1d49835440d8ef223d6378739c3c7b17432c4f4360d5483ed5b", + "0xb6d63faeb216034814e9303c8546ab90314523bcd040058849d7f1e29232a22d", + "0xd98593273981fa9ec07391f98e742517b6c2647c93523c52b987569ebedeaa20", + "0x8159e30759c57d30871ceae07faa86f6e86b3821bccb82dc72965887e954bb9c", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0x9f9e030000000000000000000000000000000000000000000000000000000000", + "0xf1eefb052bfb0b7f9cab81256284fd38767ee03b91e09281ee4f03a95a338473", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x561198e350fecd72cac99ad07ba372610971567427ea2ff08469ed315a2b0562", + "0x530d76be7d36aba97928ca271c15a5cfee57fa6ad8fcae74986f2a9b2a3190e6", + "0xe67fa2da6add30ae573ec5316614d5b8602d82199abc5de58ce691e4acca5e76", + "0x30fd4b800919e93245c50f2b5b3d1f91df47b65260bad9dd5a4d818b00e59eb8", + "0x2d6f446289ef937637a4819dffa2c02a0c692e41146f9fc9407bb4b4b740700b" + ], + "receiptsRoot": "0x26d3f98e02b4de931ab97dcd7aed459f91555f61e7bb8cf13a57dc04c8b51852", + "gindex": 106679016194312060, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_J4.json b/test/amb/fixtures/capella/receiptsRootProof_J4.json new file mode 100644 index 0000000..ee472a2 --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_J4.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "txSlot": 5210115, + "srcSlot": 5234691, + "receiptsRootProof": [ + "0x157856827a42d97ed77926965911c3b9e66c654310fe2842ae1b0d165896011b", + "0x30035e311d7cb5a3b54dac4901ae26ea85a0ef584a3c627f6a24a20508280cc7", + "0x09d8a29c404323ae4efdba12d1f8a5efbe5188d7360080b5d9d86f4ce0882e33", + "0x07a1a2f46f3b78656ad928edca95872bfc72df64970a01b232de52b6277407cb", + "0xea10030000000000000000000000000000000000000000000000000000000000", + "0x1a1109802e3562e51f28698889ba65356b563aaffe7334504724292e2368c372", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xd82351663ac287f9af8380cdf1b914760e41d47f418a76d684900a217b40f3dc", + "0xa611f1df9d439d4a9d380499724ec3b0add409cc2425847581566565bc1f24fa", + "0xa6e666ecc86ef1ddf0ac56571c4ff8779c2d468521045b49d9a08d7579d254ab", + "0x050c5b38c16bd657a6c09ebf433915d81a64dc27650476605a03d56096e5fa7e", + "0xd49d9233075e595a2e5420aacb59abb71ede4827324ad1f6c06ebe2d9582ad94", + "0x0b04e8961a5dbcfd183e8489bb00dfcc227b9faf8219856fff89becf9feb8232", + "0x5c31d6d30a7cd7baa92fabeda8153e45e03f5ec39fab3a76257ac1988676f2bf", + "0x282f2d58b74a74028ae22ab2bd807e9c880cc178064f71542c3a90c0e3996b6f", + "0x290ec462a6533d5e37c6bffeddbc37980cc1120f15f2cdd5d590f1faecb159b3", + "0x9de9711c4d7c94d6c634d3caca96a13b9db64e78b8e20543d4d42a5fa4c8e1fd", + "0x8a804dd9f64806c4bd12639324fb657ca26012326509d9687baec02a62d0c843", + "0x514d6cc4f5ccae28252ab2a2849ad2212eb358fd617efb327c60443dcdea3cd4", + "0x73a1e022fe21b85959a67e0d8025b8552b9d66ccfbb86160d91909a7d5a4b535", + "0x30478f610910fd17d292106f350613d0723d76783ea0dd3c442d9452814b61e6", + "0x67429d5590e4f1d49835440d8ef223d6378739c3c7b17432c4f4360d5483ed5b", + "0xb6d63faeb216034814e9303c8546ab90314523bcd040058849d7f1e29232a22d", + "0xd98593273981fa9ec07391f98e742517b6c2647c93523c52b987569ebedeaa20", + "0x8159e30759c57d30871ceae07faa86f6e86b3821bccb82dc72965887e954bb9c", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xaf9e030000000000000000000000000000000000000000000000000000000000", + "0x3811043d28f0c37ed22ed038ecaa35d788a13572ef108509802f544408ea5d0a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x441f7d23a43cdfd6f072306e6878d70defa8a1c6d55e29fcfe03d2564ae1d921", + "0xe0f2db52d8bce1514560d2d9d9321fe402855554e2b32372e461f1505cf2c1b5", + "0x8b08bc62b6c434e8374cd3ff793d05443a974d84f05f1b354ff2ad79b8a78fe2", + "0x6832efb7d452fab7679daa586db5dddeb27e4a11d72d372592f3b0034d17eff6", + "0x33b3376e3527902e1881fe736809f8ad1a4395e7565cdd677f36318131f9eed8" + ], + "receiptsRoot": "0x26d3f98e02b4de931ab97dcd7aed459f91555f61e7bb8cf13a57dc04c8b51852", + "gindex": 106679016194312060, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/capella/receiptsRootProof_J5.json b/test/amb/fixtures/capella/receiptsRootProof_J5.json new file mode 100644 index 0000000..3ba599b --- /dev/null +++ b/test/amb/fixtures/capella/receiptsRootProof_J5.json @@ -0,0 +1,66 @@ +{ + "headerRoot": "0xc7443f8247b5269d51f03e7211544c2da6b82df547a0005e94e38c1340b74fcf", + "txSlot": 5210115, + "srcSlot": 5234692, + "receiptsRootProof": [ + "0x157856827a42d97ed77926965911c3b9e66c654310fe2842ae1b0d165896011b", + "0x30035e311d7cb5a3b54dac4901ae26ea85a0ef584a3c627f6a24a20508280cc7", + "0x09d8a29c404323ae4efdba12d1f8a5efbe5188d7360080b5d9d86f4ce0882e33", + "0x07a1a2f46f3b78656ad928edca95872bfc72df64970a01b232de52b6277407cb", + "0xea10030000000000000000000000000000000000000000000000000000000000", + "0x1a1109802e3562e51f28698889ba65356b563aaffe7334504724292e2368c372", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xd82351663ac287f9af8380cdf1b914760e41d47f418a76d684900a217b40f3dc", + "0xa611f1df9d439d4a9d380499724ec3b0add409cc2425847581566565bc1f24fa", + "0xa6e666ecc86ef1ddf0ac56571c4ff8779c2d468521045b49d9a08d7579d254ab", + "0x050c5b38c16bd657a6c09ebf433915d81a64dc27650476605a03d56096e5fa7e", + "0xd49d9233075e595a2e5420aacb59abb71ede4827324ad1f6c06ebe2d9582ad94", + "0x0b04e8961a5dbcfd183e8489bb00dfcc227b9faf8219856fff89becf9feb8232", + "0x5c31d6d30a7cd7baa92fabeda8153e45e03f5ec39fab3a76257ac1988676f2bf", + "0x282f2d58b74a74028ae22ab2bd807e9c880cc178064f71542c3a90c0e3996b6f", + "0x290ec462a6533d5e37c6bffeddbc37980cc1120f15f2cdd5d590f1faecb159b3", + "0x9de9711c4d7c94d6c634d3caca96a13b9db64e78b8e20543d4d42a5fa4c8e1fd", + "0x8a804dd9f64806c4bd12639324fb657ca26012326509d9687baec02a62d0c843", + "0x514d6cc4f5ccae28252ab2a2849ad2212eb358fd617efb327c60443dcdea3cd4", + "0x73a1e022fe21b85959a67e0d8025b8552b9d66ccfbb86160d91909a7d5a4b535", + "0x30478f610910fd17d292106f350613d0723d76783ea0dd3c442d9452814b61e6", + "0x67429d5590e4f1d49835440d8ef223d6378739c3c7b17432c4f4360d5483ed5b", + "0xb6d63faeb216034814e9303c8546ab90314523bcd040058849d7f1e29232a22d", + "0xd98593273981fa9ec07391f98e742517b6c2647c93523c52b987569ebedeaa20", + "0x8159e30759c57d30871ceae07faa86f6e86b3821bccb82dc72965887e954bb9c", + "0xa1a10abc4cee9e27f2ccb34cb3edaa2c732016816ffc771f4ad94269acb7e51c", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0500000000000000000000000000000000000000000000000000000000000000", + "0xbf9e030000000000000000000000000000000000000000000000000000000000", + "0x58d36ca60b37111285c86242c619496a7eb62d2a5b91702550936fb1e307272a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x46cd824083fd56d878c0bcd58ac7293035581fdd82c850aed691d1f224f444ad", + "0x2d2f542fadcb40b44ff0a0a849f33b2e216fe406b4433e7afd611a024a150063", + "0x4b7bab8391016e6917f921360e58246962eced31d823f49b9a227120ef53ce77", + "0xbb2cc794a6b12c85797a89f443a30e90a71153bd65046949adea491b1a8df929", + "0xead4362ba77f18e37d60db25793b561cea4e94ca55d3b13b3dbeed27f86c31e8" + ], + "receiptsRoot": "0x26d3f98e02b4de931ab97dcd7aed459f91555f61e7bb8cf13a57dc04c8b51852", + "gindex": 106679016194312060, + "sourceChain": 5 +} \ No newline at end of file diff --git a/test/amb/fixtures/farSlotBellatrixCapella.json b/test/amb/fixtures/farSlotBellatrixCapella.json new file mode 100644 index 0000000..5e8094e --- /dev/null +++ b/test/amb/fixtures/farSlotBellatrixCapella.json @@ -0,0 +1,76 @@ +{ + "SOURCE_CHAIN": 5, + "DEST_CHAIN": 137, + "sourceAMBAddress": "0x68cb68162524661Ae764112726A7e494a0848f23", + "sourceMessageSender": "0xe465E2f45Ac2F28c158FAe23Ef9F054610219c5f", + "srcSlotTxSlotPack": "0x00000000000000000000000000000000000000000000000000000000005053d600000000000000000000000000000000000000000000000000000000004ef766", + "message": "0x010000000000000c5400000005e465e2f45ac2f28c158fae23ef9f054610219c5f00000089000000000000000000000000473e84fe3f4b5fa98350819ad24b986098f33bdb1efc4b95738d6339", + "receiptsRootProof": [ + "0xe60eb698888c6926ec06eab61e5faa4977e90fad61b0cf877f1d3bcb700be4cd", + "0x7e7061cc241f23e57e7578b3cdfacfcf76fcd39be438d463bf857f66a3202e5a", + "0xeac378d107e7d8a6e4e9f505b5398e66088c11ce1ede3e7b5e4cb1732786e439", + "0xba4415c12fce907b60ffc51ecd128a9379b180710170240f5bedab700426a2d6", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0xb527d40e2f92512b100319616dc17d460cae67ca993e5ddfbd2f3317305ec125", + "0xd5824d956c25b2e865d885ee014f398e6bea132c1e0e7dd0ed9775946ac69788", + "0x38bdb06691e6f5f007f0e51dbba102ec862975410fde71628338f0697d41c3fe", + "0xc01502a7cab09727a9db1d5746878b5da85d9bc38d7f56c5b3a5f599e783fc81", + "0xce7d3d53987d47de3ee50db9e940701a0dfaaa0c49a198652a8e01f6a26e3f4a", + "0x5ce14a3ac58dc46ef24a499806cc8e32be5b69f7b159d778fb17261a08afe554", + "0xaa0e9b3d2857aac11582c1f6a2c74e837b6d34f42064113459252f82f0399968", + "0x8682f6a5f778ba997ffb5253068fc407040b251855140889a283a2a043f27c3d", + "0xf48201f9871029b201da9ef90619c6f36cedf937fa6bcf877ff419f9c672803d", + "0x7477a4a38458f3a05a44d900c88e3feeefd0e2943f2af12433d2dea9d0538d0d", + "0xcd447d5ea6623c8cb599bf652ee251575704479e649402d72b326b044f10917d", + "0xbc5560b2723274747130f4673dbe642dac1326e5e8206dc9b729ce4cc6d2739d", + "0x40e67d238ce86ed1a5402f608c8c0fe3bfc3a3720ba494942ef4743b8da16d0f", + "0x71c2d5edcf0da0850da3966e141dd11343f7c4c1ae0f8ea3be2e3c9f70b9627b", + "0xb202f10732bfebd7d1fd5df58bf272bf9876e8cd825e93277c3c614abb543c8a", + "0xdf386509767f8e31ed4ff5fe220b8a6b89ce17cbb3102e6c07131656b9ca77f4", + "0x90b2e2998d365afd646d22cd68a52a4f759a9eb85dbfeba2de0520478ca8c641", + "0x6c078529a23fdc1209e0790f002f78e7da3913429de54be72b609857bfd3c519", + "0x15798f994c536f13b9400d40a5154ab4181298be8fcc0e0873867f32fea1c91d", + "0xad3af4cd03b142546627c77d70e93717707097fecbf0f6bdae5e8073670d77a0", + "0xf84e3e3368515b86cacac3f4b53664759296c7c938a61f6ab8cfcb1cf4c053fc", + "0x0f282914d74eae81eb970b236e24563a566a4d6b89a9851c0d8704135ef6eb84", + "0xe5407aa25ebcdab80cd9eb88e5b2e48c23e44ac3944579c033ae41648d065107", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x78f5dadc2d6f4ee31b3359539f7de697e0c7b000f76b180056c616995b0f5c15", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x7a02000000000000000000000000000000000000000000000000000000000000", + "0x411ba07266b884fb63d24f567f7e7f676296a1d59e564556635863552fe07484", + "0x1481159f09a57949a8c788ec6b66d0f9c1f5bb998a458154a6d5c6b041b2f11d", + "0x34d21755d10760ae87dcd6ae962ff3ff12c7b043ece8480969506c61a3d987fb", + "0x9a789654822f4e044fb9fc577450c856c6c409c5474acab2ae21e13e6f95418d", + "0x45557c70f871b32f2cb0bb17080184aca86496df7f5c0031e353222f73749f15", + "0x6126cc11fd4445725ce2f6429664f651ef34ee61c9a7c0e4d10cf9a2f08b546d", + "0xcb8df2ac8b80b110caed22626cdc34a69c48a4f306a43bb6e38e60f56608402e", + "0xb1f23482d361f6fa83f8f4e48aa66cb1bf31436463264d0c3093bffc1aaeaa3c" + ], + "receiptsRoot": "0x1a27b402c3f76a8e08fdab2b08f523dba97f5d517be7fc171c1e6c219ff26ca3", + "receiptProof": [ + "0xf8d1a064db7e4aa972b72d7e28378a0f1b06275d2ab7294cdc72c125188c52e7896ab0a0cab58bfd4b9b0f0356667ade5b2aae9b30a4784aa7a5717f70ca3923f7edd2efa0a9a2ea6327721357c3c1068db6aa4dac16393da8f8ecfc05fe0b40d9d026e457a0572b46b86655a36fea8900324a12d87772384404dc50c11fc0eb5c1986d5152fa0395f1585420b349e38fd4d36def16608d52508b782c5efd54db2b51d31ae4b25808080a0e58215be848c1293dd381210359d84485553000a82b67410406d183b42adbbdd8080808080808080", + "0xf901f180a0d9673d2d9fc051cd0c137eb6e8e6fa792ca02465188c3408c86625d76f6396a0a07c090d611d8c0584d82defa26f3117b412adee799bc734d08fc97bbfeb44dbd0a00e3cd7410f4721fa77ea74cee25168a4398bdf92b621fb79e74376cb648f6f4da00b96fa432987dec177d9bc230e299b0c99c0dfc3895f10c9a206afc076b60845a0b6f638dd99a211fdbb321d90bd2beb4e4e66282b4fc27deffe00ce4937c4ca50a074f89ef02d55f3f4e364347af2e04998c5cd20a45f14b14b1372f15d94109a27a0413bac26b9bdd366732b158a74086314eea24e3aafb2217c45f9cb27b6fcac15a068d4a08551449dd76d3989ad5f9870b42b4322aa39f2d6db528bc8ef0307c6e6a0c520362ce3b9f95ce172548dc28a9f16e48fdb12ed2f4cf98599a3a6505acfe2a02a94599ac699fb4d69a7cecf63c58ca8e2bc6e8f2047cda0d1b340772531b8b3a063ee175b9c7901986e5c137980ddb686507d7f2dffdc21f6761cb7b1840c8337a027c4877ab6d2276941ffc42d60e8115e90d72046ab61be6122b37a61e41bad66a0e70e3f97844226fc3e5bd37dcfc3f7f0b53052b0f00ee5a27bc48be0c44b88c1a077286b3ffa5fcfb27e76b3efb29cd594caa8d3a62c924651e499c7953884fcb4a0f9f2a19161bb6ff56a66a71a7d510f96a61e292e98aeb33762e1003f651a7a5880", + "0xf9023220b9022e02f9022a0183033362b9010000002000000000000000000000000000000000000800000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002000000000000000000000010000000000000400000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000020000000000000000000000000200000000000000000000000000000000000000000000f9011ff9011c9468cb68162524661ae764112726a7e494a0848f23f863a0e5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffaca00000000000000000000000000000000000000000000000000000000000000c54a00f39743ceb4db08cb3a498860e44d49ee8235a00f2a5f3d74765524de28b2ca2b8a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004d010000000000000c5400000005e465e2f45ac2f28c158fae23ef9f054610219c5f00000089000000000000000000000000473e84fe3f4b5fa98350819ad24b986098f33bdb1efc4b95738d633900000000000000000000000000000000000000" + ], + "txIndexRLPEncoded": "0x08", + "logIndex": 0, + "sourceSlot": 5264342, + "headerRoot": "0x99edd8cad7bc505865b2c71523ba4d0285e19bf509218db20413c97f3f47dadf" +} diff --git a/test/amb/fixtures/farSlotCapellaCapella.json b/test/amb/fixtures/farSlotCapellaCapella.json new file mode 100644 index 0000000..7b92305 --- /dev/null +++ b/test/amb/fixtures/farSlotCapellaCapella.json @@ -0,0 +1,76 @@ +{ + "SOURCE_CHAIN": 5, + "DEST_CHAIN": 100, + "sourceAMBAddress": "0x41EA857C32c8Cb42EEFa00AF67862eCFf4eB795a", + "sourceMessageSender": "0xe465E2f45Ac2F28c158FAe23Ef9F054610219c5f", + "srcSlotTxSlotPack": "0x00000000000000000000000000000000000000000000000000000000005053d600000000000000000000000000000000000000000000000000000000004f46fd", + "message": "0x0100000000000000010000000563eac3ccaf89a50cbd6446d01058ca8dbaf5c87100000064000000000000000000000000df6f9938b56b470b6a0d096f8ca955eac51565372753756363696e637420697320617765736f6d652e205468697320697320746865206669727374206d6573736167652c20686f706566756c6c792e270a2d203078333566336435336234666531636265353938313036383762623262303739353737386438363035662028302e3438206745544829", + "receiptsRootProof": [ + "0x197e5b999b6667393953ad8acf312a2ced42d6d6788ef5d57afd3576f32cfd42", + "0x735fe459e792cce7495ed6095d791f7afb4d9ca521c45d7f0da9ac2f6ddf4224", + "0xf297eff9ca113e1d81f1fa0f4d9ce1125a19876632e5539e5949cba0ad2fb272", + "0x48cb57a46c4b1d7bc3a5e0ba95c214d8dcd53e053ee21245bd246c58d5374a1a", + "0x4f4c000000000000000000000000000000000000000000000000000000000000", + "0x38f341ec884fa581df917b719e28bd883050a711b2be2800b56fc066a4797b9d", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x7dae5ea0821e8e241199d527be74a164c59d16011b025692630b1ab1ff48df45", + "0x6362cb4f09c10406d0e1f3a2d5f4c97e130e19827a33eb4ce460013271209f74", + "0xdef724fe82a96aa2b0cfb22ed4221b468700d5246d381cefd3254ecd785a58c4", + "0x7b171c2ed0abbe2baa838953b7d49ea2840c58d1c3f01e8cb298dc00b081e61c", + "0x5f71cedd69d6c8169ff7e69bfde907271a489813378166e8203bd13b472b6174", + "0xeb3d731a71e6abad71549acf50364849a2f4a1c51e379173e2a02c8b9630f1cb", + "0x8781023907e148e5ac8d9a1e2a118d69013b005f05de4ff8a7389b6ba01ddbc7", + "0xad41e38184689985a165673679ffc57ee80f2cae31591510bf5333919bf14745", + "0x18162896a136cf1c143248fe76ea1b6f69ec856338fcc85c32a76ff9ef980579", + "0xcac2aa8430404b927490cf85d02cdbe58086596ac1ffd03c7614375336eb5ad3", + "0x47cce86942e48d1797075927c4935b4edc587cf1e08fe622b2f445a9760d4bd7", + "0x745a514693a1c6dc3d24eca0f64e4b285b6eaf1b3e1683a756a3d25c894efa52", + "0x9a3a6bb8d76a6c82959efa34b34f3d0d2a09ad440d0dbdf9f603b3ca3f163bdd", + "0xb1d45de4c6254075a2f2815c8d8a184085d27a23b325c74b51a6dc482e55f223", + "0x333418e2597951562976b28124a9c4c63c24ebb2139fea8b508ac0c3acb0c35a", + "0x303f9b58591f5762564115d8bf20f3da448cba47e8ec7bbe52faa1dec1167a31", + "0xf6d8bf733061b86fe35544aadc14a853b7088fbb69378d93bf0867547ed79f7e", + "0x8cb57e0c2f19d7e862e92c9293babd74f17c3fa29260025e230a302f38850294", + "0x8f202520d7a20f8065912991f49663b15c19481effda23ed4d0770ee68745dda", + "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0800000000000000000000000000000000000000000000000000000000000000", + "0x6b3d050000000000000000000000000000000000000000000000000000000000", + "0x4b547262f9fe2c1862edd56e4e74eb910f6cca7459ef5e4c7979f2cff8eaa5d8", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x619594fe78a4e7e6701b0437be28d36373bf1ca6017f8aa0dc5afb77e51dd970", + "0x6231c3cecd833d31e49588a5004f021971a0c0d569b57c00b41e637ffa79bd4d", + "0x6126cc11fd4445725ce2f6429664f651ef34ee61c9a7c0e4d10cf9a2f08b546d", + "0xcb8df2ac8b80b110caed22626cdc34a69c48a4f306a43bb6e38e60f56608402e", + "0xb1f23482d361f6fa83f8f4e48aa66cb1bf31436463264d0c3093bffc1aaeaa3c" + ], + "receiptsRoot": "0x5b175867513ddcf33cdeae33fdba7ca75afc2deefafae8bf8d5fe71fc1a1f788", + "receiptProof": [ + "0xf90131a09a3f0a393436e83e572171bd0583d3b52b38508b2c3316778b337f1238ca73e0a00e927d453bfef02cc61c95a2198a58073262e465cd057af13cae09aa2bb0de52a0d3f29e090b30ebd00650650593649ed7d767acb77f3f83e40c482ff638f2152ca0d9eb03a2e8a06b8b2435c45c40e232d5cce58c56c57026bdaa3ec22327cf441da0fda387b30f6079172030221d281bcdc9c6f65635e68b09d38d556b3bc6241a87a019835ec86d01a7dafa7de8ae33f5ef2b4c9466f0ef96f49468d4c5f3361ed02ea0d31e19ccb4834148be83d3e6c80f1df3406c02f5c74e8fa602e38c95e750e92da05d2f6e1ddb8dd11bd59eadff1a095d4f563ac7a2beea7ed269a937c8b2eca96da096711f22c8940d6ab4ceec7d33eff9db706f19b54c6d3820af8a2c3096287b458080808080808080", + "0xf90211a0439b8541998d54720246f345f1e702ec07a44ffeb853d9ef4980f05eb36a658da0b38efe6f25f7bc3655e89ac1aee21027df80b5f05f4cf9ecca7553f99354d4c2a07ae91cb7edb5c864fd535e4a51d405ded0107e042911c4187796d41d6e77cef0a08929f37dd618b14bf7f6575af13de9edf0bed9778998ba7491ea021be0a76e5ca0dfa75cb9c6d9b43c9c60792baa430767e54117e11945abbb150b8bc242f98552a04d49967565bea3b3dddd01f1470c46530d2b38257fae577aa45bd028ec5c23c2a0a82807a1d8ae117f1c7fbc49c4e87a2816f0d4aa2c1682ef3fae184910aaa9cba0ae276446a8df6179a8a7cfb91ad9a1e2e2cb0b99d7a7909bd55c6b2591110780a009d00ae0c2a47e50874af518e635ef1b312225b49e68113789eba2edad36eaaca050b424abeb59d55153775b23f570e0c73dc2872ea13bf6d79fdba998b4b742d7a0bcb9ed72debf9f3203541d0bc774cb3a4dc49d8669485c4375d211b7e440ac16a0aa6e0fdb1100787b6a0d75b6ab7c6b1816a7d4b4d350e4b870ee9b3af57b5ce3a05814ac570331ad9af2b42a015aa2871e2d0f119636c26771e99aaeea0727e8b7a07b58b963fdfeb30a438787f538ae550ba1b01f439cafe63d03248e3cffccb80ba0d01660791f12da6ddbaedf174ce4107e87b9f40e71491ac7bb7ae539e808bf4aa0f8d000278e858fa75ce2a5e9152bdc03166a5dd083cdc5445fefe19be7bc4c7880", + "0xf9029320b9028f02f9028b01838d6730b9010000000000000000000000000000000001000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000001000000000000000040000002000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000010000000020040000000000000000000000000000000000000000000000000000000000000000000f90180f9017d9441ea857c32c8cb42eefa00af67862ecff4eb795af863a0e5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffaca00000000000000000000000000000000000000000000000000000000000000001a0b892056b47787be5686a6a6cdd27621ecac10964f5f9d26b0c62d9d18ed3b434b90100000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000ba0100000000000000010000000563eac3ccaf89a50cbd6446d01058ca8dbaf5c87100000064000000000000000000000000df6f9938b56b470b6a0d096f8ca955eac51565372753756363696e637420697320617765736f6d652e205468697320697320746865206669727374206d6573736167652c20686f706566756c6c792e270a2d203078333566336435336234666531636265353938313036383762623262303739353737386438363035662028302e3438206745544829000000000000" + ], + "txIndexRLPEncoded": "0x64", + "logIndex": 0, + "sourceSlot": 5264342, + "headerRoot": "0x99edd8cad7bc505865b2c71523ba4d0285e19bf509218db20413c97f3f47dadf" +} \ No newline at end of file diff --git a/test/libraries/SimpleSerialize.t.sol b/test/libraries/SimpleSerialize.t.sol index 5d84155..6b4e4f8 100644 --- a/test/libraries/SimpleSerialize.t.sol +++ b/test/libraries/SimpleSerialize.t.sol @@ -5,7 +5,33 @@ import "forge-std/Test.sol"; import {SSZ} from "src/libraries/SimpleSerialize.sol"; +// The weird ordering here is because vm.parseJSON requires +// alphabetical ordering of the fields in the struct +struct ReceiptsRootProof { + uint256 gindex; + bytes32 headerRoot; + bytes32 receiptsRoot; + bytes32[] receiptsRootProof; + uint32 sourceChain; + uint64 srcSlot; + uint64 txSlot; +} + contract SSZTest is Test { + // Loads fixtures generated with scripts/src/contracts/generateCapellaSSZFixtures.ts + function loadReceiptsRootProof(string memory filename) + internal + view + returns (ReceiptsRootProof memory) + { + string memory root = vm.projectRoot(); + string memory path = string.concat(root, "/test/amb/fixtures/", filename, ".json"); + string memory file = vm.readFile(path); + bytes memory parsed = vm.parseJson(file); + ReceiptsRootProof memory params = abi.decode(parsed, (ReceiptsRootProof)); + return params; + } + function setUp() public {} function test_FinalityProof_WhenEthereum() public { @@ -113,4 +139,29 @@ contract SSZTest is Test { function test_ReceiptRootProof_WhenFarSlots() public pure { // TODO } + + function test_ReceiptRootProof_WhenCapellaFixtures() public { + // iterate letters A-J + for (uint8 i = 65; i <= 74; i++) { + // iterate numbers 1-5 + for (uint8 j = 1; j <= 5; j++) { + // get filename like receiptsRootProof_A1.json + string memory filename = string( + abi.encodePacked("capella/receiptsRootProof_", bytes1(i), bytes1(j + 48)) + ); + + ReceiptsRootProof memory json = loadReceiptsRootProof(filename); + + bool verified = SSZ.verifyReceiptsRoot( + json.receiptsRoot, + json.receiptsRootProof, + json.headerRoot, + json.srcSlot, + json.txSlot, + json.sourceChain + ); + assertTrue(verified); + } + } + } } From 89938824afec4212c1a3fbc64442c3339c81d2a0 Mon Sep 17 00:00:00 2001 From: Chris T Date: Wed, 5 Apr 2023 23:11:06 -0700 Subject: [PATCH 07/18] deploy (#300) GitOrigin-RevId: 7ed5c5611ad23f58c40c40f908011087994221c5 --- .../DrillLightClient.json | 12 +++---- .../DrillTelepathyRouter.json | 36 +++++-------------- out/LightClient.sol/LightClient.json | 12 +++---- out/TargetAMB.sol/TargetAMB.json | 36 +++++-------------- out/TelepathyPubSub.sol/TelepathyPubSub.json | 36 +++++-------------- .../TelepathyPublisher.json | 36 +++++-------------- out/TelepathyRouter.sol/TelepathyRouter.json | 36 +++++-------------- .../TelepathySubscriber.json | 12 +++---- out/TelepathyValidator.sol/IBasicHomeAMB.json | 8 ++--- .../TelepathyValidator.json | 12 +++---- src/libraries/BeaconChainForks.sol | 2 +- 11 files changed, 74 insertions(+), 164 deletions(-) diff --git a/out/DrillLightClient.sol/DrillLightClient.json b/out/DrillLightClient.sol/DrillLightClient.json index 5b3574d..874ebab 100644 --- a/out/DrillLightClient.sol/DrillLightClient.json +++ b/out/DrillLightClient.sol/DrillLightClient.json @@ -550,12 +550,12 @@ } ], "bytecode": { - "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004eb538038062004eb5833981016040819052620000459162000264565b6000608081905260a081905260c081905260e0819052610100819052610120819052808080808080806200007a8180620000ae565b50505050505050506200009c620000966200012d60201b60201c565b62000131565b620000a78162000183565b5062000296565b60008281526005602052604090205415801590620000da57506000828152600560205260409020548114155b15620000ee5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200018d62000206565b6001600160a01b038116620001f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620002038162000131565b50565b6006546001600160a01b03163314620002625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001ef565b565b6000602082840312156200027757600080fd5b81516001600160a01b03811681146200028f57600080fd5b9392505050565b60805160a05160c05160e0516101005161012051614bb3620003026000396000818161031c01526109ba0152600061022201526000818161014101526109e50152600081816101980152610dd401526000818161037c0152610df8015260006102c20152614bb36000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea264697066735822122017945066ca6c713004947a77e2bb2320465ad725456bc0d1a314008a03241ebd64736f6c63430008100033", + "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004eb538038062004eb5833981016040819052620000459162000264565b6000608081905260a081905260c081905260e0819052610100819052610120819052808080808080806200007a8180620000ae565b50505050505050506200009c620000966200012d60201b60201c565b62000131565b620000a78162000183565b5062000296565b60008281526005602052604090205415801590620000da57506000828152600560205260409020548114155b15620000ee5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200018d62000206565b6001600160a01b038116620001f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620002038162000131565b50565b6006546001600160a01b03163314620002625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001ef565b565b6000602082840312156200027757600080fd5b81516001600160a01b03811681146200028f57600080fd5b9392505050565b60805160a05160c05160e0516101005161012051614bb3620003026000396000818161031c01526109ba0152600061022201526000818161014101526109e50152600081816101980152610dd401526000818161037c0152610df8015260006102c20152614bb36000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea2646970667358221220f185b75d8b4ea2d0c2c1848a92033223914f4d1711f268c520e83f23fc79c18564736f6c63430008100033", "sourceMap": "289:466:5:-:0;;;1711:29:114;;;-1:-1:-1;;1711:29:114;1736:4;1711:29;;;;;1824:23;345:118:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;386:1;2873:47:114;;;;2930:26;;;;2966:33;;;;3009;;;;3052:31;;;;3093:38;;;;386:1:5;;;;;;;3141:68:114;386:1:5;;3141:24:114;:68::i;:::-;2573:643;;;;;;;;936:32:49;955:12;:10;;;:12;;:::i;:::-;936:18;:32::i;:::-;430:26:5::2;448:7:::0;430:17:::2;:26::i;:::-;345:118:::0;289:466;;9106:393:114;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;640:96:68:-;719:10;;640:96::o;2433:187:49:-;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;511:2:146;2161:73:49::1;::::0;::::1;493:21:146::0;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:146;;;633:36;686:19;;2161:73:49::1;;;;;;;;;2244:28;2263:8:::0;2244:18:::1;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;918:2:146;1414:68:49;;;900:21:146;;;937:18;;;930:30;996:34;976:18;;;969:62;1048:18;;1414:68:49;716:356:146;1414:68:49;1359:130::o;14:290:146:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:146;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:146:o;716:356::-;289:466:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea264697066735822122017945066ca6c713004947a77e2bb2320465ad725456bc0d1a314008a03241ebd64736f6c63430008100033", + "object": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea2646970667358221220f185b75d8b4ea2d0c2c1848a92033223914f4d1711f268c520e83f23fc79c18564736f6c63430008100033", "sourceMap": "289:466:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:41:114;;;;;;;;160:25:146;;;148:2;133:18;1170:41:114;;;;;;;;1711:29;;;;;;;;;;;;361:14:146;;354:22;336:41;;324:2;309:18;1711:29:114;196:187:146;1123:41:114;;;;;603:150:5;;;;;;:::i;:::-;;:::i;:::-;;4310:457:114;;;;;;:::i;:::-;;:::i;1918:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1831:101:49;;;:::i;26374:712:115:-;;;;;;:::i;:::-;;:::i;1217:39:114:-;;;;;;;;5817:10:146;5805:23;;;5787:42;;5775:2;5760:18;1217:39:114;5643:192:146;2218:54:114;;;;;;:::i;:::-;;;;;;;;;;;;;;2076:45;;;;;;:::i;:::-;;;;;;;;;;;;;;1201:85:49;1273:6;;1201:85;;-1:-1:-1;;;;;1273:6:49;;;5986:51:146;;5974:2;5959:18;1201:85:49;5840:203:146;1824:23:114;;;;;;1026:48;;;;;2365:57;;;;;;:::i;:::-;;;;;;;;;;;;;;3551:577;;;;;;:::i;:::-;;:::i;1262:42::-;;;;;;;;6472:6:146;6460:19;;;6442:38;;6430:2;6415:18;1262:42:114;6298:188:146;469:128:5;;;;;;:::i;:::-;;:::i;11270:699:116:-;;;;;;:::i;:::-;;:::i;1080:37:114:-;;;;;2081:198:49;;;;;;:::i;:::-;;:::i;603:150:5:-;1094:13:49;:11;:13::i;:::-;711:35:5::1;::::0;740:5;;731:7;;711:35:::1;::::0;;;::::1;603:150:::0;;:::o;4310:457:114:-;4414:11;;4378:33;4452:24;4414:11;4452;:24::i;:::-;4435:41;;4486:21;4510:48;4533:10;:24;;;4510:22;:48::i;:::-;4486:72;-1:-1:-1;4568:18:114;4589:17;4486:72;4605:1;4589:17;:::i;:::-;4568:38;;4617:27;4637:6;4617:19;:27::i;:::-;4659:9;4655:106;;;4684:66;4709:10;4721:6;:28;;;4684:24;:66::i;:::-;4368:399;;;;4310:457;:::o;1831:101:49:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;26374:712:115:-;26552:6;26570:24;;:::i;:::-;26614:33;;;;;;;;26636:4;;26614:33;;26636:4;26642;;;;26614:33;;;;26604:43;;;26667:61;;;;;;;26690:4;;:7;26667:61;;;;;;26699:4;;:7;;;26667:61;;;;;;;;;;;;;26710:4;;;;;:7;26667:61;;26719:4;:7;;;26667:61;;;;-1:-1:-1;;;26667:61:115;26657:7;;;:71;26748:33;;;;;;;26770:4;;26748:33;;26776:4;;;;26748:33;;;;26738:7;;;:43;26822:24;;26833:12;26822:24;;;;;;;;;-1:-1:-1;;26822:24:115;;;;;;;;;;;-1:-1:-1;26822:24:115;26791:55;;26861:9;26856:93;26880:12;26876:1;:16;26856:93;;;26930:5;26936:1;26930:8;;;;;;;:::i;:::-;;;;;26913:11;26925:1;26913:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;26894:3;;;;:::i;:::-;;;;26856:93;;;;26962:32;26975:11;26988:5;26962:12;:32::i;:::-;26998:1;26962:37;26958:122;;27022:4;27015:11;;;;;;26958:122;27064:5;27057:12;;;;26374:712;;;;;;;:::o;3551:577:114:-;3615:14;3632:19;3644:6;3632:11;:19::i;:::-;3685;;3615:36;;-1:-1:-1;3666:16:114;:14;:16::i;:::-;:38;3662:115;;;3720:46;;-1:-1:-1;;;3720:46:114;;8686:2:146;3720:46:114;;;8668:21:146;8725:2;8705:18;;;8698:30;8764:34;8744:18;;;8737:62;-1:-1:-1;;;8815:18:146;;;8808:34;8859:19;;3720:46:114;;;;;;;;3662:115;3814:4;;3791:6;:20;;;:27;3787:102;;;3834:44;;-1:-1:-1;;;3834:44:114;;9091:2:146;3834:44:114;;;9073:21:146;9130:2;9110:18;;;9103:30;9169:34;9149:18;;;9142:62;-1:-1:-1;;;9220:18:146;;;9213:32;9262:19;;3834:44:114;8889:398:146;3787:102:114;3903:9;3899:223;;;3928:119;3958:6;:20;;;3980:6;:26;;;4008:6;:25;;;3928:12;:119::i;:::-;3605:523;3551:577;:::o;3899:223::-;4078:33;;-1:-1:-1;;;4078:33:114;;9494:2:146;4078:33:114;;;9476:21:146;9533:2;9513:18;;;9506:30;9572:25;9552:18;;;9545:53;9615:18;;4078:33:114;9292:347:146;469:128:5;1094:13:49;:11;:13::i;:::-;566:24:5::1;::::0;584:5;;577;;566:24:::1;::::0;;;::::1;469:128:::0;;:::o;11270:699:116:-;11445:6;11463:22;;:::i;:::-;11505:31;;;;;;;;11525:4;;11505:31;;11525:4;11531;;;;11505:31;;;;11495:41;;;11556:59;;;;;;;11577:4;;:7;11556:59;;;;;;11586:4;;:7;;;11556:59;;;;;;;;;;;;;11597:4;;;;;:7;11556:59;;11606:4;:7;;;11556:59;;;;-1:-1:-1;;;11556:59:116;11546:7;;;:69;11635:31;;;;;;;11655:4;;11635:31;;11661:4;;;;11635:31;;;;11625:7;;;:41;11707:24;;11533:1;11707:24;;;;;;;;;-1:-1:-1;;11707:24:116;;;;;;11525:4;11707:24;;;;;-1:-1:-1;11707:24:116;11676:55;;11746:9;11741:93;11765:12;11761:1;:16;11741:93;;;11815:5;11821:1;11815:8;;;;;;;:::i;:::-;;;;;11798:11;11810:1;11798:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;11779:3;;;;:::i;:::-;;;;11741:93;;;;11847:30;11858:11;11871:5;11847:10;:30::i;2081:198:49:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;9846:2:146;2161:73:49::1;::::0;::::1;9828:21:146::0;9885:2;9865:18;;;9858:30;9924:34;9904:18;;;9897:62;-1:-1:-1;;;9975:18:146;;;9968:36;10021:19;;2161:73:49::1;9644:402:146::0;2161:73:49::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;10253:2:146;1414:68:49;;;10235:21:146;;;10272:18;;;10265:30;10331:34;10311:18;;;10304:62;10383:18;;1414:68:49;10051:356:146;4850:556:114;4925:4;4941:21;4965:43;4988:6;:19;;;4965:22;:43::i;:::-;5023:37;;;;:22;:37;;;;;;4941:67;;-1:-1:-1;5023:42:114;5019:286;;5081:63;;-1:-1:-1;;;5081:63:114;;10614:2:146;5081:63:114;;;10596:21:146;10653:2;10633:18;;;10626:30;10692:34;10672:18;;;10665:62;-1:-1:-1;;;10743:18:146;;;10736:51;10804:19;;5081:63:114;10412:417:146;5019:286:114;1371:2;5165:6;:20;;;:54;5161:144;;;5235:59;;-1:-1:-1;;;5235:59:114;;11036:2:146;5235:59:114;;;11018:21:146;11075:2;11055:18;;;11048:30;11114:34;11094:18;;;11087:62;-1:-1:-1;;;11165:18:146;;;11158:47;11222:19;;5235:59:114;10834:413:146;5161:144:114;5315:25;5333:6;5315:17;:25::i;:::-;-1:-1:-1;;5358:20:114;;;:41;5381:18;5358:41;-1:-1:-1;5358:41:114;4850:556::o;7603:125::-;7672:7;7698:23;7705:16;7698:4;:23;:::i;:::-;7691:30;7603:125;-1:-1:-1;;7603:125:114:o;6655:882::-;6769:12;;;;6791:25;;:::i;:::-;6869:23;;;;6827:31;6903:183;6927:2;6923:1;:6;6903:183;;;6971:32;6997:6;6971:23;:32;:::i;:::-;6950:6;6957:10;6966:1;6957:6;:10;:::i;:::-;6950:18;;;;;;;:::i;:::-;;;;:53;7043:32;7069:6;7043:23;:32;:::i;:::-;7017:58;-1:-1:-1;6931:3:114;;;;:::i;:::-;;;;6903:183;;;-1:-1:-1;7140:11:114;;:31;;;7095:34;7182:188;7206:2;7202:1;:6;7182:188;;;7246:35;7275:6;7246:26;:35;:::i;:::-;7229:6;7236;7241:1;7236:2;:6;:::i;:::-;7229:14;;;;;;;:::i;:::-;;;;:52;7324:35;7353:6;7324:26;:35;:::i;:::-;7295:64;-1:-1:-1;7210:3:114;;;;:::i;:::-;;;;7182:188;;;-1:-1:-1;7427:28:114;;;;7400:57;;:18;:57::i;:::-;7379:10;;;:79;7495:7;;7386:2;7504:7;;;7513;;;;7477:52;;7495:7;7504;7379:6;7477:17;:52::i;:::-;7469:61;;;;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;2433:187:49:-;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;25166:1155:115:-;25285:7;25349:77;25285:7;25467:20;:18;:20::i;:::-;25436:51;;25525:2;:5;;;:12;25505:5;:12;25520:1;25505:16;;;;:::i;:::-;:32;25497:63;;;;-1:-1:-1;;;25497:63:115;;11961:2:146;25497:63:115;;;11943:21:146;12000:2;11980:18;;;11973:30;-1:-1:-1;;;12019:18:146;;;12012:48;12077:18;;25497:63:115;11759:342:146;25497:63:115;25653:27;;;;;;;;;25617:33;25653:27;;;;;;;;;25690:240;25714:5;:12;25710:1;:16;25690:240;;;25766:18;25755:5;25761:1;25755:8;;;;;;;;:::i;:::-;;;;;;;:29;25747:73;;;;-1:-1:-1;;;25747:73:115;;12308:2:146;25747:73:115;;;12290:21:146;12347:2;12327:18;;;12320:30;12386:33;12366:18;;;12359:61;12437:18;;25747:73:115;12106:355:146;25747:73:115;25841:78;25864:4;25870:48;25895:2;:5;;;25901:1;25905;25901:5;;;;:::i;:::-;25895:12;;;;;;;;:::i;:::-;;;;;;;25909:5;25915:1;25909:8;;;;;;;;:::i;:::-;;;;;;;25870:24;:48::i;:::-;25841:22;:78::i;:::-;25834:85;-1:-1:-1;25728:3:115;;;;:::i;:::-;;;;25690:240;;;;25946:38;25969:4;25975:2;:5;;;25981:1;25975:8;;;;;;;;:::i;:::-;;;;;;;25946:22;:38::i;:::-;25939:45;;26012:265;26056:29;26077:5;:7;;;26056:20;:29::i;:::-;26103:5;:7;;;26128:2;:8;;;26154:2;:8;;;26180:4;26202:2;:9;;;26229:5;:7;;;26254:2;:9;;;26012:26;:265::i;:::-;25994:302;;26295:1;26288:8;;;;;;;25994:302;-1:-1:-1;26313:1:115;;25166:1155;-1:-1:-1;;;;;25166:1155:115:o;7818:133:114:-;7867:7;7928:16;7894:30;7912:12;7894:15;:30;:::i;:::-;7893:51;;;;:::i;:::-;7886:58;;7818:133;:::o;8310:721::-;8463:1;8438:13;;;:7;:13;;;;;;:27;8434:170;;8485:13;;;;:7;:13;;;;;;:36;;8481:93;;8554:5;8541:18;;-1:-1:-1;;8541:18:114;;;8481:93;8310:721;;;:::o;8434:170::-;8654:1;8617:25;;;:19;:25;;;;;;:39;8613:193;;8676:25;;;;:19;:25;;;;;;:47;;8672:104;;8756:5;8743:18;;-1:-1:-1;;8743:18:114;;;8310:721;;;:::o;8613:193::-;8816:4;:11;;;8837:13;;;;:7;:13;;;;;;;;:35;;;8882:19;:25;;;;;:46;;;8938:10;:16;;;;;;8957:15;8938:34;;8987:37;8853:19;;8823:4;;8987:37;;8837:13;8987:37;8310:721;;;:::o;10084:1133:116:-;10199:7;10263:77;10199:7;10379:18;:16;:18::i;:::-;10350:47;;10435:2;:5;;;:12;10415:5;:12;10430:1;10415:16;;;;:::i;:::-;:32;10407:63;;;;-1:-1:-1;;;10407:63:116;;11961:2:146;10407:63:116;;;11943:21:146;12000:2;11980:18;;;11973:30;-1:-1:-1;;;12019:18:146;;;12012:48;12077:18;;10407:63:116;11759:342:146;10407:63:116;10561:25;;;;;;;;;10527:31;10561:25;;;;;;;;;10596:236;10620:5;:12;10616:1;:16;10596:236;;;10672:18;10661:5;10667:1;10661:8;;;;;;;;:::i;:::-;;;;;;;:29;10653:73;;;;-1:-1:-1;;;10653:73:116;;12308:2:146;10653:73:116;;;12290:21:146;12347:2;12327:18;;;12320:30;12386:33;12366:18;;;12359:61;12437:18;;10653:73:116;12106:355:146;10653:73:116;10747:74;10768:4;10774:46;10797:2;:5;;;10803:1;10807;10803:5;;;;:::i;10747:74::-;10740:81;-1:-1:-1;10634:3:116;;;;:::i;:::-;;;;10596:236;;;;10848:36;10869:4;10875:2;:5;;;10881:1;10875:8;;;;;;;;:::i;10848:36::-;10841:43;;10912:261;10954:27;10973:5;:7;;;10954:18;:27::i;:::-;10999:5;:7;;;11024:2;:8;;;11050:2;:8;;;11076:4;11098:2;:9;;;11125:5;:7;;;11150:2;:9;;;10912:24;:261::i;5509:1064:114:-;5591:22;5616:39;5635:6;:19;;;5616:18;:39::i;:::-;5591:64;;5665:23;5691:40;5710:6;:20;;;5691:18;:40::i;:::-;5665:66;;5741:23;5767:40;5786:6;:20;;;5767:18;:40::i;:::-;5741:66;;5817:21;5841:43;5864:6;:19;;;5841:22;:43::i;:::-;5894:29;5926:37;;;:22;:37;;;;;;;;;6004:45;;;;;12623:19:146;;;12658:12;;;12651:28;;;5926:37:114;;-1:-1:-1;5997:53:114;;12695:12:146;;6004:45:114;;;-1:-1:-1;;6004:45:114;;;;;;;;;;5997:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5993:57;;6064:51;6084:1;6087:6;:26;;;6071:43;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6071:43:114;;;;-1:-1:-1;;6071:43:114;;;;;;;;;;6064:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6060:55;;6129:40;6149:1;6152:15;6136:32;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6136:32:114;;;;-1:-1:-1;;6136:32:114;;;;;;;;;;6129:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6125:44;;6183:50;6203:1;6206:6;:25;;;6190:42;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6190:42:114;;;;-1:-1:-1;;6190:42:114;;;;;;;;;;6183:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:54;;6247:46;6267:1;6270:21;6254:38;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6254:38:114;;;;-1:-1:-1;;6254:38:114;;;;;;;;;;6247:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6243:50;-1:-1:-1;6303:9:114;6323:30;6243:50;6323:18;:30::i;:::-;6315:39;-1:-1:-1;6373:23:114;6395:1;-1:-1:-1;;;6373:23:114;:::i;:::-;6436:12;;;;6458:39;;;;;;;;;6368:29;;;;6458:39;;;6531:7;;6540;;;;6549;;;;6368:29;;6436:12;;6515:50;;6531:7;;6458:39;6515:15;:50::i;:::-;6507:59;;;;;;5581:992;;;;;;;;;5509:1064;:::o;385:892:110:-;443:7;637:1;562;566:66;562:70;561:77;;543:1;468;472:66;468:70;467:77;;466:173;462:177;;825:2;750:1;754:66;750:70;749:78;;730:2;655:1;659:66;655:70;654:78;;653:175;649:179;;1014:2;939:1;943:66;939:70;938:78;;919:2;844:1;848:66;844:70;843:78;;842:175;838:179;;1203:2;1128:1;1132:66;1128:70;1127:78;;1108:2;1033:1;-1:-1:-1;;1033:70:110;1032:78;;1031:175;1027:179;;1239:3;1234:1;:8;;1226:3;1221:1;:8;;1220:23;1216:27;;1268:1;1260:10;;1253:17;;385:892;;;:::o;7822:17338:115:-;7875:28;;:::i;:::-;7926:212;;;;;;;;7961:77;7926:212;;8052:76;7926:212;;;;;;;;7915:223;;;8160:465;;;;;;;;8213:76;8160:465;;;;;;8307:76;8160:465;;;;;;;;;;;;;;;;;;8429:77;8160:465;;8524:77;8160:465;;;;-1:-1:-1;;;8160:465:115;8149:8;;;:476;;;;8647:465;;;;;;;8700:77;8647:465;;;;;;8795:77;8647:465;;;;;;;;;;;;;8918:76;8647:465;;9012:76;8647:465;;;;-1:-1:-1;;;8647:465:115;8635:9;;;:477;9134:463;;;;;;;9187:76;9134:463;;;;;;9281:77;9134:463;;;;;;;;;;;;;9404:75;9134:463;;9497:76;9134:463;;;;-1:-1:-1;;;9134:463:115;9122:9;;;:475;9615:31;;9643:2;9615:31;;;;;;;;;;9643:2;9615:31;;;-1:-1:-1;;;;;;;;;;;;;;;;;9615:31:115;;;;;;;;;;;;-1:-1:-1;;9607:5:115;;;:39;;;9668:211;;;;;;;;;9703:76;9668:211;;9793:76;9668:211;;;;9657:5;;:8;;-1:-1:-1;;9657:8:115;;;;:::i;:::-;;;;;;:222;;;;9901:213;;;;;;;;9936:77;9901:213;;;;10027:77;9901:213;;;9890:2;:5;;;9896:1;9890:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10136:213;;;;;;;;10171:77;10136:213;;;;10262:77;10136:213;;;10125:2;:5;;;10131:1;10125:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10371:210;;;;;;;;10406:75;10371:210;;;;10495:76;10371:210;;;10360:2;:5;;;10366:1;10360:8;;;;;;;;:::i;:::-;;;;;;:221;;;;10603:212;;;;;;;;10638:77;10603:212;;;;10729:76;10603:212;;;10592:2;:5;;;10598:1;10592:8;;;;;;;;:::i;:::-;;;;;;:223;;;;10837:211;;;;;;;;10872:77;10837:211;;;;10963:75;10837:211;;;10826:2;:5;;;10832:1;10826:8;;;;;;;;:::i;:::-;;;;;;:222;;;;11070:213;;;;;;;;11105:77;11070:213;;;;11196:77;11070:213;;;11059:2;:5;;;11065:1;11059:8;;;;;;;;:::i;:::-;;;;;;:224;;;;11305:212;;;;;;;;11340:77;11305:212;;;;11431:76;11305:212;;;11294:2;:5;;;11300:1;11294:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11539:212;;;;;;;;11574:77;11539:212;;;;11665:76;11539:212;;;11528:2;:5;;;11534:1;11528:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11773:211;;;;;;;;11808:76;11773:211;;;;11898:76;11773:211;;;11762:2;:5;;;11768:1;11762:8;;;;;;;;:::i;:::-;;;;;;:222;;;;12007:212;;;;;;;;12042:77;12007:212;;;;12133:76;12007:212;;;11995:2;:5;;;12001:2;11995:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12242:213;;;;;;;;12277:77;12242:213;;;;12368:77;12242:213;;;12230:2;:5;;;12236:2;12230:9;;;;;;;;:::i;:::-;;;;;;:225;;;;12478:211;;;;;;;;12513:76;12478:211;;;;12603:76;12478:211;;;12466:2;:5;;;12472:2;12466:9;;;;;;;;:::i;:::-;;;;;;:223;;;;12712:212;;;;;;;;12747:76;12712:212;;;;12837:77;12712:212;;;12700:2;:5;;;12706:2;12700:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12947:211;;;;;;;;12982:76;12947:211;;;;13072:76;12947:211;;;12935:2;:5;;;12941:2;12935:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13181:213;;;;;;;;13216:77;13181:213;;;;13307:77;13181:213;;;13169:2;:5;;;13175:2;13169:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13417:213;;;;;;;;13452:77;13417:213;;;;13543:77;13417:213;;;13405:2;:5;;;13411:2;13405:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13653:211;;;;;;;;13688:76;13653:211;;;;13778:76;13653:211;;;13641:2;:5;;;13647:2;13641:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13887:212;;;;;;;;13922:76;13887:212;;;;14012:77;13887:212;;;13875:2;:5;;;13881:2;13875:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14122:212;;;;;;;;14157:77;14122:212;;;;14248:76;14122:212;;;14110:2;:5;;;14116:2;14110:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14357:211;;;;;;;;14392:77;14357:211;;;;14483:75;14357:211;;;14345:2;:5;;;14351:2;14345:9;;;;;;;;:::i;:::-;;;;;;:223;;;;14591:213;;;;;;;;14626:77;14591:213;;;;14717:77;14591:213;;;14579:2;:5;;;14585:2;14579:9;;;;;;;;:::i;:::-;;;;;;:225;;;;14827:213;;;;;;;;14862:77;14827:213;;;;14953:77;14827:213;;;14815:2;:5;;;14821:2;14815:9;;;;;;;;:::i;:::-;;;;;;:225;;;;15063:210;;;;;;;;15098:75;15063:210;;;;15187:76;15063:210;;;15051:2;:5;;;15057:2;15051:9;;;;;;;;:::i;:::-;;;;;;:222;;;;15296:212;;;;;;;;15331:77;15296:212;;;;15422:76;15296:212;;;15284:2;:5;;;15290:2;15284:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15531:212;;;;;;;;15566:76;15531:212;;;;15656:77;15531:212;;;15519:2;:5;;;15525:2;15519:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15766:212;;;;;;;;15801:77;15766:212;;;;15892:76;15766:212;;;15754:2;:5;;;15760:2;15754:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16001:213;;;;;;;;16036:77;16001:213;;;;16127:77;16001:213;;;15989:2;:5;;;15995:2;15989:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16237:213;;;;;;;;16272:77;16237:213;;;;16363:77;16237:213;;;16225:2;:5;;;16231:2;16225:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16473:213;;;;;;;;16508:77;16473:213;;;;16599:77;16473:213;;;16461:2;:5;;;16467:2;16461:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16709:212;;;;;;;;16744:76;16709:212;;;;16834:77;16709:212;;;16697:2;:5;;;16703:2;16697:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16944:213;;;;;;;;16979:77;16944:213;;;;17070:77;16944:213;;;16932:2;:5;;;16938:2;16932:9;;;;;;;;:::i;:::-;;;;;;:225;;;;17180:211;;;;;;;;17215:76;17180:211;;;;17305:76;17180:211;;;17168:2;:5;;;17174:2;17168:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17414:212;;;;;;;;17449:77;17414:212;;;;17540:76;17414:212;;;17402:2;:5;;;17408:2;17402:9;;;;;;;;:::i;:::-;;;;;;:224;;;;17649:211;;;;;;;;17684:76;17649:211;;;;17774:76;17649:211;;;17637:2;:5;;;17643:2;17637:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17883:212;;;;;;;;17918:77;17883:212;;;;18009:76;17883:212;;;17871:2;:5;;;17877:2;17871:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18118:212;;;;;;;;18153:76;18118:212;;;;18243:77;18118:212;;;18106:2;:5;;;18112:2;18106:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18353:213;;;;;;;;18388:77;18353:213;;;;18479:77;18353:213;;;18341:2;:5;;;18347:2;18341:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18589:213;;;;;;;;18624:77;18589:213;;;;18715:77;18589:213;;;18577:2;:5;;;18583:2;18577:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18825:213;;;;;;;;18860:77;18825:213;;;;18951:77;18825:213;;;18813:2;:5;;;18819:2;18813:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19061:211;;;;;;;;19096:77;19061:211;;;;19187:75;19061:211;;;19049:2;:5;;;19055:2;19049:9;;;;;;;;:::i;:::-;;;;;;:223;;;;19295:213;;;;;;;;19330:77;19295:213;;;;19421:77;19295:213;;;19283:2;:5;;;19289:2;19283:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19531:213;;;;;;;;19566:77;19531:213;;;;19657:77;19531:213;;;19519:2;:5;;;19525:2;19519:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19767:212;;;;;;;;19802:76;19767:212;;;;19892:77;19767:212;;;19755:2;:5;;;19761:2;19755:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20002:211;;;;;;;;20037:76;20002:211;;;;20127:76;20002:211;;;19990:2;:5;;;19996:2;19990:9;;;;;;;;:::i;:::-;;;;;;:223;;;;20236:212;;;;;;;;20271:77;20236:212;;;;20362:76;20236:212;;;20224:2;:5;;;20230:2;20224:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20471:212;;;;;;;;20506:77;20471:212;;;;20597:76;20471:212;;;20459:2;:5;;;20465:2;20459:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20706:213;;;;;;;;20741:77;20706:213;;;;20832:77;20706:213;;;20694:2;:5;;;20700:2;20694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;20942:212;;;;;;;;20977:77;20942:212;;;;21068:76;20942:212;;;20930:2;:5;;;20936:2;20930:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21177:212;;;;;;;;21212:76;21177:212;;;;21302:77;21177:212;;;21165:2;:5;;;21171:2;21165:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21412:213;;;;;;;;21447:77;21412:213;;;;21538:77;21412:213;;;21400:2;:5;;;21406:2;21400:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21648:213;;;;;;;;21683:77;21648:213;;;;21774:77;21648:213;;;21636:2;:5;;;21642:2;21636:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21884:211;;;;;;;;21919:76;21884:211;;;;22009:76;21884:211;;;21872:2;:5;;;21878:2;21872:9;;;;;;;;:::i;:::-;;;;;;:223;;;;22118:213;;;;;;;;22153:77;22118:213;;;;22244:77;22118:213;;;22106:2;:5;;;22112:2;22106:9;;;;;;;;:::i;:::-;;;;;;:225;;;;22354:212;;;;;;;;22389:76;22354:212;;;;22479:77;22354:212;;;22342:2;:5;;;22348:2;22342:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22589:212;;;;;;;;22624:76;22589:212;;;;22714:77;22589:212;;;22577:2;:5;;;22583:2;22577:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22824:212;;;;;;;;22859:76;22824:212;;;;22949:77;22824:212;;;22812:2;:5;;;22818:2;22812:9;;;;;;;;:::i;:::-;;;;;;:224;;;;23059:211;;;;;;;;23094:77;23059:211;;;;23185:75;23059:211;;;23047:2;:5;;;23053:2;23047:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23293:213;;;;;;;;23328:77;23293:213;;;;23419:77;23293:213;;;23281:2;:5;;;23287:2;23281:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23529:213;;;;;;;;23564:77;23529:213;;;;23655:77;23529:213;;;23517:2;:5;;;23523:2;23517:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23765:211;;;;;;;;23800:76;23765:211;;;;23890:76;23765:211;;;23753:2;:5;;;23759:2;23753:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23999:212;;;;;;;;24034:76;23999:212;;;;24124:77;23999:212;;;23987:2;:5;;;23993:2;23987:9;;;;;;;;:::i;:::-;;;;;;:224;;;;24234:213;;;;;;;;24269:77;24234:213;;;;24360:77;24234:213;;;24222:2;:5;;;24228:2;24222:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24470:213;;;;;;;;24505:77;24470:213;;;;24596:77;24470:213;;;24458:2;:5;;;24464:2;24458:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24706:213;;;;;;;;24741:77;24706:213;;;;24832:77;24706:213;;;24694:2;:5;;;24700:2;24694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24942:211;;;;;;;;24977:76;24942:211;;;;25067:76;24942:211;;;24930:2;:5;;;24936:2;24930:9;;;;;;;;:::i;:::-;;;;;;:223;;;;7822:17338;:::o;3929:557::-;-1:-1:-1;;;;;;;;;;;;;;;;;4029:23:115;;:::i;:::-;4073:3;;4062:14;;:8;4097:3;;;;4086:8;;;:14;4110:8;;;:12;;;-1:-1:-1;4300:4:115;4297:1;4291:4;4062:14;4281:1;4274:4;4267:5;4263:16;4252:53;4241:64;-1:-1:-1;4241:64:115;;4375:47;4402:20;4411:9;4375:47;;4449:7;4441:38;;;;-1:-1:-1;;;4441:38:115;;13526:2:146;4441:38:115;;;13508:21:146;13565:2;13545:18;;;13538:30;-1:-1:-1;;;13584:18:146;;;13577:48;13642:18;;4441:38:115;13324:342:146;4441:38:115;4019:467;;3929:557;;;;:::o;3151:622::-;-1:-1:-1;;;;;;;;;;;;;;;;;3286:23:115;;:::i;:::-;3330:4;;3319:15;;:8;3355:4;;;;3344:8;;;:15;3380:4;;3369:8;;;:15;3405:4;;;3394:8;;;;:15;;;;-1:-1:-1;;3584:1:115;3578:4;3319:15;3568:1;3561:4;3554:5;3550:16;3539:53;3528:64;-1:-1:-1;3528:64:115;;3662:47;3689:20;3698:9;3662:47;;3736:7;3728:38;;;;-1:-1:-1;;;3728:38:115;;13873:2:146;3728:38:115;;;13855:21:146;13912:2;13892:18;;;13885:30;-1:-1:-1;;;13931:18:146;;;13924:48;13989:18;;3728:38:115;13671:342:146;2742:357:115;-1:-1:-1;;;;;;;;;;;;;;;;;2982:3:115;;2891:77;;2982:8;:20;;;;-1:-1:-1;2994:3:115;;;;:8;2982:20;2978:71;;;-1:-1:-1;;3025:13:115;;;;;;;;;-1:-1:-1;3025:13:115;;;;;;;;2742:357;-1:-1:-1;2742:357:115:o;2978:71::-;3065:27;;;;;;;;3073:1;:3;;;3065:27;;;;3089:1;3083;:3;;;:7;;;;:::i;:::-;3078:13;;:1;:13;:::i;:::-;3065:27;;3058:34;2742:357;-1:-1:-1;;;2742:357:115:o;6832:568::-;7137:16;;;7151:1;7137:16;;;;;;;;;7099:4;;;;7137:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7137:16:115;;;;;;;;;;;;-1:-1:-1;;7185:16:115;;;7199:1;7185:16;;;;;;;;;7115:38;;-1:-1:-1;7163:19:115;;7185:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7163:38;;7219:2;7211;7214:1;7211:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7239:2;7231;7234:1;7231:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7259:2;7251;7254:1;7251:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7279:2;7271;7274:1;7271:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7299:2;7291;7294:1;7291:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7319:2;7311;7314:1;7311:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7339:2;7331;7334:1;7331:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7359:2;7351;7354:1;7351:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7378:15;7386:2;7390;7378:7;:15::i;:::-;7371:22;6832:568;-1:-1:-1;;;;;;;;;;;6832:568:115:o;7796:2282:116:-;7847:26;;:::i;:::-;7896:210;;;;;;;;7929:77;7896:210;;8020:76;7896:210;;;;;;;;7885:221;;;8128:463;;;;;;;;8179:76;8128:463;;;;;;8273:76;8128:463;;;;;;;;;;;;;;;;;;8395:77;8128:463;;8490:77;8128:463;;;;-1:-1:-1;;;8128:463:116;8117:8;;;:474;;;;8613:463;;;;;;;8664:77;8613:463;;;;;;8759:77;8613:463;;;;;;;;;;;;;8882:76;8613:463;;8976:76;8613:463;;;;-1:-1:-1;;;8613:463:116;8601:9;;;:475;9098:462;;;;;;;9149:76;9098:462;;;;;;9243:77;9098:462;;;;;;;;;;;;;9366:76;9098:462;;9460:76;9098:462;;;;-1:-1:-1;;;9098:462:116;9086:9;;;:474;9578:28;;9604:1;9578:28;;;;;;;;;9604:1;9578:28;;;-1:-1:-1;;;;;;;;;;;;;;;;;9578:28:116;;;;;;;;;;;;-1:-1:-1;;9570:5:116;;;:36;;;9628:210;;;;;;;;;9661:77;9628:210;;9752:76;9628:210;;;;9617:5;;:8;;-1:-1:-1;;9617:8:116;;;;:::i;:::-;;;;;;:221;;;;9860:211;;;;;;;;9893:77;9860:211;;;;9984:77;9860:211;;;9849:2;:5;;;9855:1;9849:8;;;;;;;;:::i;6830:568::-;7135:16;;;7149:1;7135:16;;;;;;;;;7097:4;;;;7135:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7135:16:116;;;;;;;;;;;;-1:-1:-1;;7183:16:116;;;7197:1;7183:16;;;;;;;;;7113:38;;-1:-1:-1;7161:19:116;;7183:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7161:38;;7217:2;7209;7212:1;7209:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7237:2;7229;7232:1;7229:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7257:2;7249;7252:1;7249:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7277:2;7269;7272:1;7269:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7297:2;7289;7292:1;7289:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7317:2;7309;7312:1;7309:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7337:2;7329;7332:1;7329:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7357:2;7349;7352:1;7349:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7376:15;7384:2;7388;7376:7;:15::i;4698:1073:115:-;4780:4;4817:2;:9;4804:2;:9;:22;4796:57;;;;-1:-1:-1;;;4796:57:115;;14220:2:146;4796:57:115;;;14202:21:146;14259:2;14239:18;;;14232:30;-1:-1:-1;;;14278:18:146;;;14271:52;14340:18;;4796:57:115;14018:346:146;4796:57:115;4882:9;;4863:16;4921:12;4882:9;4932:1;4921:12;:::i;:::-;4901:32;;4943:22;4979:9;4968:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4968:21:115;;4943:46;;5004:9;4999:302;5023:8;5019:1;:12;4999:302;;;5071:2;5074:1;5071:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5052:5;5058:1;5062;5058:5;;;;:::i;:::-;:9;;5066:1;5058:9;:::i;:::-;5052:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5111:2;5114:1;5111:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5092:5;5098:1;5102;5098:5;;;;:::i;:::-;:9;;5106:1;5098:9;:::i;:::-;5092:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5151:2;5154:1;5151:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5132:5;5138;:1;5142;5138:5;:::i;:::-;:9;;5146:1;5138:9;:::i;:::-;5132:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5194:2;5197:1;5194:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5175:5;5181;:1;5185;5181:5;:::i;:::-;:9;;5189:1;5181:9;:::i;:::-;5175:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5237:2;5240:1;5237:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5245:1;5237:10;;;;;;;:::i;:::-;;;;;5218:5;5224;:1;5228;5224:5;:::i;:::-;:9;;5232:1;5224:9;:::i;:::-;5218:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5280:2;5283:1;5280:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5288:1;5280:10;;;;;;;:::i;:::-;;;;;5261:5;5267;:1;5271;5267:5;:::i;:::-;:9;;5275:1;5267:9;:::i;:::-;5261:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5033:3;;;;:::i;:::-;;;;4999:302;;;;5310:21;;:::i;:::-;5341:12;5554:4;5549:3;5542:4;5531:9;5527:20;5520:4;5513:5;5509:16;5506:1;5499:4;5492:5;5488:16;5477:82;5450:109;-1:-1:-1;5450:109:115;;5629:47;5656:20;5665:9;5629:47;;5703:7;5695:41;;;;-1:-1:-1;;;5695:41:115;;14744:2:146;5695:41:115;;;14726:21:146;14783:2;14763:18;;;14756:30;-1:-1:-1;;;14802:18:146;;;14795:51;14863:18;;5695:41:115;14542:345:146;5695:41:115;-1:-1:-1;5753:6:115;:11;;;;-1:-1:-1;;;;;;4698:1073:115:o;4696::116:-;4778:4;4815:2;:9;4802:2;:9;:22;4794:57;;;;-1:-1:-1;;;4794:57:116;;14220:2:146;4794:57:116;;;14202:21:146;14259:2;14239:18;;;14232:30;-1:-1:-1;;;14278:18:146;;;14271:52;14340:18;;4794:57:116;14018:346:146;4794:57:116;4880:9;;4861:16;4919:12;4880:9;4930:1;4919:12;:::i;:::-;4899:32;;4941:22;4977:9;4966:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4966:21:116;;4941:46;;5002:9;4997:302;5021:8;5017:1;:12;4997:302;;;5069:2;5072:1;5069:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5050:5;5056:1;5060;5056:5;;;;:::i;:::-;:9;;5064:1;5056:9;:::i;:::-;5050:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5109:2;5112:1;5109:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5090:5;5096:1;5100;5096:5;;;;:::i;:::-;:9;;5104:1;5096:9;:::i;:::-;5090:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5149:2;5152:1;5149:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5130:5;5136;:1;5140;5136:5;:::i;:::-;:9;;5144:1;5136:9;:::i;:::-;5130:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5192:2;5195:1;5192:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5173:5;5179;:1;5183;5179:5;:::i;:::-;:9;;5187:1;5179:9;:::i;:::-;5173:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5235:2;5238:1;5235:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5243:1;5235:10;;;;;;;:::i;:::-;;;;;5216:5;5222;:1;5226;5222:5;:::i;:::-;:9;;5230:1;5222:9;:::i;:::-;5216:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5278:2;5281:1;5278:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5286:1;5278:10;;;;;;;:::i;:::-;;;;;5259:5;5265;:1;5269;5265:5;:::i;:::-;:9;;5273:1;5265:9;:::i;:::-;5259:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5031:3;;;;:::i;:::-;;;;4997:302;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;388:248:146:-;456:6;464;517:2;505:9;496:7;492:23;488:32;485:52;;;533:1;530;523:12;485:52;-1:-1:-1;;556:23:146;;;626:2;611:18;;;598:32;;-1:-1:-1;388:248:146:o;641:127::-;702:10;697:3;693:20;690:1;683:31;733:4;730:1;723:15;757:4;754:1;747:15;773:246;840:2;834:9;;;870:15;;915:18;900:34;;936:22;;;897:62;894:88;;;962:18;;:::i;:::-;998:2;991:22;773:246;:::o;1024:479::-;1074:5;1127:3;1120:4;1112:6;1108:17;1104:27;1094:55;;1145:1;1142;1135:12;1094:55;1169:17;;:::i;:::-;1208:3;1246:2;1238:6;1234:15;1272:3;1264:6;1261:15;1258:35;;;1289:1;1286;1279:12;1258:35;1313:6;1328:146;1344:6;1339:3;1336:15;1328:146;;;1412:17;;1400:30;;1459:4;1450:14;;;;1361;1328:146;;;-1:-1:-1;1492:5:146;;1024:479;-1:-1:-1;;;;;1024:479:146:o;1508:501::-;1564:5;1617:3;1610:4;1602:6;1598:17;1594:27;1584:55;;1635:1;1632;1625:12;1584:55;1659:17;;:::i;:::-;1698:3;1736;1728:6;1724:16;1763:3;1755:6;1752:15;1749:35;;;1780:1;1777;1770:12;1749:35;1804:6;1819:161;1835:6;1830:3;1827:15;1819:161;;;1901:34;1931:3;1926;1901:34;:::i;:::-;1889:47;;1965:4;1956:14;;;;1861:2;1852:12;1819:161;;2014:605;2073:5;2121:6;2109:9;2104:3;2100:19;2096:32;2093:52;;;2141:1;2138;2131:12;2093:52;2174:2;2168:9;2216:4;2208:6;2204:17;2287:6;2275:10;2272:22;2251:18;2239:10;2236:34;2233:62;2230:88;;;2298:18;;:::i;:::-;2334:2;2327:22;2367:6;-1:-1:-1;2367:6:146;2397:40;2433:3;2422:9;2397:40;:::i;:::-;2389:6;2382:56;2473:55;2524:3;2519:2;2508:9;2504:18;2473:55;:::i;:::-;2466:4;2458:6;2454:17;2447:82;2562:50;2608:3;2602;2591:9;2587:19;2562:50;:::i;:::-;2557:2;2549:6;2545:15;2538:75;;2014:605;;;;:::o;2624:773::-;2686:5;2734:6;2722:9;2717:3;2713:19;2709:32;2706:52;;;2754:1;2751;2744:12;2706:52;2787:2;2781:9;2829:4;2821:6;2817:17;2900:6;2888:10;2885:22;2864:18;2852:10;2849:34;2846:62;2843:88;;;2911:18;;:::i;:::-;2951:10;2947:2;2940:22;;2980:6;2971:15;;3023:9;3010:23;3002:6;2995:39;3095:2;3084:9;3080:18;3067:32;3062:2;3054:6;3050:15;3043:57;3161:2;3150:9;3146:18;3133:32;3128:2;3120:6;3116:15;3109:57;3227:2;3216:9;3212:18;3199:32;3194:2;3186:6;3182:15;3175:57;3294:3;3283:9;3279:19;3266:33;3260:3;3252:6;3248:16;3241:59;3334:56;3386:3;3380;3369:9;3365:19;3334:56;:::i;:::-;3328:3;3320:6;3316:16;3309:82;;2624:773;;;;:::o;3402:714::-;3497:6;3550:3;3538:9;3529:7;3525:23;3521:33;3518:53;;;3567:1;3564;3557:12;3518:53;3600:2;3594:9;3642:4;3634:6;3630:17;3713:6;3701:10;3698:22;3677:18;3665:10;3662:34;3659:62;3656:88;;;3724:18;;:::i;:::-;3760:2;3753:22;3799:53;3844:7;3833:9;3799:53;:::i;:::-;3791:6;3784:69;3916:3;3905:9;3901:19;3888:33;3881:4;3873:6;3869:17;3862:60;3983:3;3972:9;3968:19;3955:33;3950:2;3942:6;3938:15;3931:58;4024:60;4076:7;4070:3;4059:9;4055:19;4024:60;:::i;:::-;4017:4;4005:17;;3998:87;4009:6;3402:714;-1:-1:-1;;;3402:714:146:o;4121:180::-;4180:6;4233:2;4221:9;4212:7;4208:23;4204:32;4201:52;;;4249:1;4246;4239:12;4201:52;-1:-1:-1;4272:23:146;;4121:180;-1:-1:-1;4121:180:146:o;4488:1150::-;4690:6;4698;4706;4714;4745:4;4790:2;4778:9;4769:7;4765:23;4761:32;4758:52;;;4806:1;4803;4796:12;4758:52;4829:44;4865:7;4854:9;4829:44;:::i;:::-;4819:54;;4892:59;4943:7;4938:2;4927:9;4923:18;4892:59;:::i;:::-;4882:69;;4970:54;5016:7;5010:3;4999:9;4995:19;4970:54;:::i;:::-;4960:64;;5068:7;5062:3;5051:9;5047:19;5043:33;5033:61;;5090:1;5087;5080:12;5033:61;5123:2;5117:9;5165:4;5157:6;5153:17;5236:6;5224:10;5221:22;5200:18;5188:10;5185:34;5182:62;5179:88;;;5247:18;;:::i;:::-;5283:2;5276:22;5347:18;;;;5318:6;5377:19;;;5374:39;;;5409:1;5406;5399:12;5374:39;5448:3;5437:9;5433:19;5461:146;5477:6;5472:3;5469:15;5461:146;;;5545:17;;5533:30;;5592:4;5583:14;;;;5494;5461:146;;;5465:3;;5626:6;5616:16;;;;4488:1150;;;;;;;:::o;6048:245::-;6141:6;6194:3;6182:9;6173:7;6169:23;6165:33;6162:53;;;6211:1;6208;6201:12;6162:53;6234;6279:7;6268:9;6234:53;:::i;:::-;6224:63;6048:245;-1:-1:-1;;;6048:245:146:o;6491:1163::-;6692:6;6700;6708;6716;6747:3;6791:2;6779:9;6770:7;6766:23;6762:32;6759:52;;;6807:1;6804;6797:12;6759:52;6830:44;6866:7;6855:9;6830:44;:::i;:::-;6820:54;;6893:59;6944:7;6939:2;6928:9;6924:18;6893:59;:::i;:::-;6883:69;;6971:54;7017:7;7011:3;7000:9;6996:19;6971:54;:::i;:::-;6961:64;;7069:7;7063:3;7052:9;7048:19;7044:33;7034:61;;7091:1;7088;7081:12;7034:61;7124:2;7118:9;7146:2;7187;7179:6;7175:15;7256:6;7244:10;7241:22;7220:18;7208:10;7205:34;7202:62;7199:88;;;7267:18;;:::i;:::-;7303:2;7296:22;7367:18;;;;7338:6;7397:19;;;7394:39;;;7429:1;7426;7419:12;7394:39;7468:3;7457:9;7453:19;7481:142;7497:6;7492:3;7489:15;7481:142;;;7563:17;;7551:30;;7601:12;;;;7514;;7481:142;;;-1:-1:-1;6491:1163:146;;;;-1:-1:-1;6491:1163:146;;-1:-1:-1;7642:6:146;-1:-1:-1;;;;6491:1163:146:o;7659:286::-;7718:6;7771:2;7759:9;7750:7;7746:23;7742:32;7739:52;;;7787:1;7784;7777:12;7739:52;7813:23;;-1:-1:-1;;;;;7865:31:146;;7855:42;;7845:70;;7911:1;7908;7901:12;7950:127;8011:10;8006:3;8002:20;7999:1;7992:31;8042:4;8039:1;8032:15;8066:4;8063:1;8056:15;8082:125;8147:9;;;8168:10;;;8165:36;;;8181:18;;:::i;8212:127::-;8273:10;8268:3;8264:20;8261:1;8254:31;8304:4;8301:1;8294:15;8328:4;8325:1;8318:15;8344:135;8383:3;8404:17;;;8401:43;;8424:18;;:::i;:::-;-1:-1:-1;8471:1:146;8460:13;;8344:135::o;11252:127::-;11313:10;11308:3;11304:20;11301:1;11294:31;11344:4;11341:1;11334:15;11368:4;11365:1;11358:15;11384:120;11424:1;11450;11440:35;;11455:18;;:::i;:::-;-1:-1:-1;11489:9:146;;11384:120::o;11509:112::-;11541:1;11567;11557:35;;11572:18;;:::i;:::-;-1:-1:-1;11606:9:146;;11509:112::o;11626:128::-;11693:9;;;11714:11;;;11711:37;;;11728:18;;:::i;12718:412::-;12847:3;12885:6;12879:13;12910:1;12920:129;12934:6;12931:1;12928:13;12920:129;;;13032:4;13016:14;;;13012:25;;13006:32;12993:11;;;12986:53;12949:12;12920:129;;;-1:-1:-1;13104:1:146;13068:16;;13093:13;;;-1:-1:-1;13068:16:146;12718:412;-1:-1:-1;12718:412:146:o;13135:184::-;13205:6;13258:2;13246:9;13237:7;13233:23;13229:32;13226:52;;;13274:1;13271;13264:12;13226:52;-1:-1:-1;13297:16:146;;13135:184;-1:-1:-1;13135:184:146:o;14369:168::-;14409:7;14475:1;14471;14467:6;14463:14;14460:1;14457:21;14452:1;14445:9;14438:17;14434:45;14431:71;;;14482:18;;:::i;:::-;-1:-1:-1;14522:9:146;;14369:168::o", "linkReferences": {}, "immutableReferences": { @@ -636,7 +636,7 @@ "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": "7227d785", "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": "e5b708fe" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_slot\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeHeadUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeSyncCommitteeUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"DrillLightClient\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillLightClient.sol\":\"DrillLightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillLightClient.sol\":{\"keccak256\":\"0x858baa5e6eadc452f96414ffdab698a5901c22d9153e36cdbb849dd9acf68cd0\",\"urls\":[\"bzz-raw://e3a1bc6eff225e20dc011129ca8edb5f46802f0f3b7610e6180f8b6f053c8823\",\"dweb:/ipfs/QmYAVhKMcgk1MsWyC9qRJuf9JLjUytSQQBcVGZoqL1TqAw\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_slot\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeHeadUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeSyncCommitteeUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"DrillLightClient\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillLightClient.sol\":\"DrillLightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillLightClient.sol\":{\"keccak256\":\"0x858baa5e6eadc452f96414ffdab698a5901c22d9153e36cdbb849dd9acf68cd0\",\"urls\":[\"bzz-raw://e3a1bc6eff225e20dc011129ca8edb5f46802f0f3b7610e6180f8b6f053c8823\",\"dweb:/ipfs/QmYAVhKMcgk1MsWyC9qRJuf9JLjUytSQQBcVGZoqL1TqAw\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -1301,10 +1301,10 @@ "license": "MIT" }, "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", "urls": [ - "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", - "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", + "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" ], "license": null }, diff --git a/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json b/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json index b3e1d86..6618beb 100644 --- a/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json +++ b/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json @@ -377,32 +377,14 @@ } ], "bytecode": { - "object": "0x60806040523480156200001157600080fd5b5060405162003fae38038062003fae833981016040819052620000349162000083565b606580546001600160a01b039384166001600160a01b03199182161790915560668054929093169116179055620000bb565b80516001600160a01b03811681146200007e57600080fd5b919050565b600080604083850312156200009757600080fd5b620000a28362000066565b9150620000b26020840162000066565b90509250929050565b613ee380620000cb6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b6101256101133660046135e9565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b610146366004613604565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e610179366004613764565b6102f7565b005b6101a361018e366004613861565b60076020526000908152604090205460ff1681565b60405161012f9190613890565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f2366004613604565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d610233366004613604565b6004602052600090815260409020546001600160a01b031681565b61017e61025c3660046138b8565b6105ca565b61012561026f366004613861565b60096020526000908152604090205481565b61017e6108ed565b61029c610297366004613861565b610906565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613970565b610940565b610125607881565b6102ff6109a7565b60008061030c8b8b610a00565b9150915061031d8260400151610c6a565b61032a8260400151610d9c565b6000808e8e81019061033c91906139f5565b9150915061034e828560400151610df8565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd9190613a28565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104728b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890611031565b9050806104c15760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105268787906104d79190613a41565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026112ad565b905081811461056f5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105b182828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166092505050565b50506105bd6001603355565b5050505050505050505050565b6105d26109a7565b6000806105df8888610a00565b915091506105f08260400151610c6a565b6105fd8260400151610d9c565b61060b898360400151610df8565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107c25760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107219190613a28565b905060008190036107745760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a8610781898b613a41565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611807565b600083815260096020526040902081905592506107d49050565b60008181526009602052604090205491505b6000846020015160016040516020016108029291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084a82856108458a8c613a41565b611903565b90508481146108935760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d882828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166092505050565b50506108e46001603355565b50505050505050565b6065546001600160a01b0316331461090457600080fd5b565b6003818154811061091657600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095757600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610998929190613b14565b60405180910390a45050505050565b6002603354036109f95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7d85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061199f92505050565b905060008585604051610a91929190613b38565b60405190819003902090506000808281526007602052604090205460ff166002811115610ac057610ac061387a565b14610b0d5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b555760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9f5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610bea575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c5d5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610cd05760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190613b48565b610d995760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d995760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e5e5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb9190613a28565b600003610f3a5760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190613a28565b610fce9042613b7b565b9050607881101561102c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af415801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110af9190613a28565b9050600081856001600160401b0316106110ca57601b6110cd565b60075b60ff169050600082866001600160401b031610611109576120006110fa846001600160401b038916613b7b565b6111049190613ba4565b61111e565b61111e6120006001600160401b038816613ba4565b90506000866001600160401b0316886001600160401b03160361115d5750600b61114a81610200613bb8565b61115690610183613bd7565b9050611292565b61200061116a888a613bea565b6001600160401b0316116111cc5750600b611186816020613bb8565b611191906006613bd7565b90506111a86120006001600160401b038916613c11565b6111b461200083613bb8565b6111be9190613bd7565b905061114a81610200613bb8565b876001600160401b0316876001600160401b0316101561124a5750600b826111f5826020613bb8565b6111ff9190613bd7565b905061120c816002613bb8565b611217906000613bd7565b905081611228630100000083613bb8565b6112329190613bd7565b905061123f816002613bb8565b611191906001613bd7565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f7400006044820152606401610420565b61129e8b828c8c611a64565b9b9a5050505050505050505050565b6000806112bb878a8a611a7e565b90506000816000815181106112d2576112d2613c25565b01602001516001600160f81b03191690506000600160f81b8214806113045750600160f91b6001600160f81b03198316145b1561131157506001611376565b600360fe1b6001600160f81b031983161061132e57506000611376565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516113989190613b7b565b81526020016113a78585613bd7565b9052905060006113b68261231e565b905080516004146114025760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b60006114278260038151811061141a5761141a613c25565b602002602001015161231e565b905080518c106114795760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b6000611490828e8151811061141a5761141a613c25565b905080516003146114ee5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b60006115138260008151811061150657611506613c25565b6020026020010151612543565b90508c6001600160a01b0316816001600160a01b0316146115865760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b600061159e8360018151811061141a5761141a613c25565b90508c6115c4826000815181106115b7576115b7613c25565b60200260200101516125b7565b146116275760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b611649818d8151811061163c5761163c613c25565b60200260200101516125be565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161168f93929190613c3b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116e19190613c6b565b6000604051808303816000865af19150503d806000811461171e576040519150601f19603f3d011682016040523d82523d6000602084013e611723565b606091505b50805191955093506000925060200390506117655760008280602001905181019061174e9190613c87565b6001600160e01b031916631dee306b60e11b149150505b82801561176f5750805b15611792576000858152600760205260409020805460ff191660021790556117ac565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe894787876040516117f7929190613b14565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006118718260405160200161185b91815260200190565b6040516020818303038152906040528786611a7e565b905060008151116118bd5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b60006118d06118cb836126c1565b61231e565b905080516004146118e057600080fd5b6118f6816002815181106115b7576115b7613c25565b93505050505b9392505050565b6000806119328560405160200161191c91815260200190565b6040516020818303038152906040528486611a7e565b905060008151116119855760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b611996611991826126c1565b6125b7565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091611a53918a9190611a4e908290613b7b565b612714565b60c088015250949695505050505050565b600080611a72868686612800565b90921495945050505050565b60606000845111611ac95760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b6000611ad48461298f565b90506000611ae186612a7d565b9050600084604051602001611af891815260200190565b60405160208183030381529060405290506000805b84518110156122c7576000858281518110611b2a57611b2a613c25565b602002602001015190508451831115611b9c5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611c3b5780518051602091820120604051611bea92611bc492910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611c365760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611d31565b805151602011611cc15780518051602091820120604051611c6592611bc492910190815260200190565b611c365760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611d315760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611d3d60106001613bd7565b81602001515103611eea5784518303611e82576000611d798260200151601081518110611d6c57611d6c613c25565b6020026020010151612b97565b90506000815111611df25760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611e009190613b7b565b8314611e745760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b96506118fc95505050505050565b6000858481518110611e9657611e96613c25565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611ec157611ec1613c25565b60200260200101519050611ed481612cba565b9550611ee1600186613bd7565b945050506122b4565b60028160200151510361225b576000611f0282612cdf565b9050600081600081518110611f1957611f19613c25565b016020015160f81c90506000611f30600283613cb1565b611f3b906002613cd3565b90506000611f4c848360ff16612d03565b90506000611f5a8a89612d03565b90506000611f688383612d39565b905080835114611fe05760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611ff5575060ff85166003145b1561219b57808251146120705760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b600061208c8860200151600181518110611d6c57611d6c613c25565b905060008151116121055760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d516121139190613b7b565b89146121875760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c506118fc9b505050505050505050505050565b60ff851615806121ae575060ff85166001145b156121ed576121da87602001516001815181106121cd576121cd613c25565b6020026020010151612cba565b99506121e6818a613bd7565b9850612250565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b5050505050506122b4565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b50806122bf81613cec565b915050611b0d565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b6060600080600061232e85612db8565b9194509250905060018160018111156123495761234961387a565b146123bc5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516123c88385613bd7565b146124305760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816124495790505090506000845b8751811015612537576000806124bc6040518060400160405280858d600001516124a09190613b7b565b8152602001858d602001516124b59190613bd7565b9052612db8565b5091509150604051806040016040528083836124d89190613bd7565b8152602001848c602001516124ed9190613bd7565b81525085858151811061250257612502613c25565b6020908102919091010152612518600185613bd7565b93506125248183613bd7565b61252e9084613bd7565b92505050612476565b50815295945050505050565b805160009060010361255757506000919050565b81516015146125a85760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b6125b1826125b7565b92915050565b60006125b1825b60006021826000015111156126155760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600080600061262385612db8565b91945092509050600081600181111561263e5761263e61387a565b1461268b5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600083866020015161269d9190613bd7565b805190915060208410156126b75760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126f65760405162461bcd60e51b815260040161042090613d05565b50604080518082019091528151815260209182019181019190915290565b60608161272281601f613bd7565b10156127405760405162461bcd60e51b815260040161042090613d75565b61274a8284613bd7565b8451101561278e5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b6060821580156127ad57604051915060008252602082016040526127f7565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127e65780518352602092830192016127ce565b5050858452601f01601f1916604052505b50949350505050565b600082825160016128119190613bd7565b61281c906002613e81565b1161282657600080fd5b8360005b846001146127f75761283d600286613c11565b6001036128dc57600284828151811061285857612858613c25565b60200260200101518360405160200161287b929190918252602082015260400190565b60408051601f198184030181529082905261289591613c6b565b602060405180830381855afa1580156128b2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128d59190613a28565b9150612970565b6002828583815181106128f1576128f1613c25565b6020026020010151604051602001612913929190918252602082015260400190565b60408051601f198184030181529082905261292d91613c6b565b602060405180830381855afa15801561294a573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061296d9190613a28565b91505b61297b600286613ba4565b94508061298781613cec565b91505061282a565b80516060906000816001600160401b038111156129ae576129ae6136af565b6040519080825280602002602001820160405280156129f357816020015b60408051808201909152606080825260208201528152602001906001900390816129cc5790505b50905060005b82811015612a75576040518060400160405280868381518110612a1e57612a1e613c25565b60200260200101518152602001612a4d878481518110612a4057612a40613c25565b602002602001015161347b565b815250828281518110612a6257612a62613c25565b60209081029190910101526001016129f9565b509392505050565b80516060906000612a8f826002613bb8565b6001600160401b03811115612aa657612aa66136af565b6040519080825280601f01601f191660200182016040528015612ad0576020820181803683370190505b5090506000805b83811015612b8d57858181518110612af157612af1613c25565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612b19836002613bb8565b81518110612b2957612b29613c25565b60200101906001600160f81b031916908160001a905350600f60f81b821683612b53836002613bb8565b612b5e906001613bd7565b81518110612b6e57612b6e613c25565b60200101906001600160f81b031916908160001a905350600101612ad7565b5090949350505050565b60606000806000612ba785612db8565b919450925090506000816001811115612bc257612bc261387a565b14612c355760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612c3f8284613bd7565b855114612cab5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b61199685602001518484613489565b60606020826000015110612cd657612cd182612b97565b6125b1565b6125b182613529565b60606125b1612cfe8360200151600081518110611d6c57611d6c613c25565b612a7d565b606082518210612d2257506040805160208101909152600081526125b1565b6118fc8383848651612d349190613b7b565b61353f565b60008060008351855110612d4e578351612d51565b84515b90505b8082108015612da85750838281518110612d7057612d70613c25565b602001015160f81c60f81b6001600160f81b031916858381518110612d9757612d97613c25565b01602001516001600160f81b031916145b15612a7557816001019150612d54565b600080600080846000015111612de05760405162461bcd60e51b815260040161042090613d05565b6020840151805160001a607f8111612e05576000600160009450945094505050613474565b60b78111612f62576000612e1a608083613b7b565b905080876000015111612e9a5760405162461bcd60e51b815260206004820152604e6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612ec75750600160ff1b6001600160f81b0319821610155b612f4f5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b5060019550935060009250613474915050565b60bf81116131a3576000612f7760b783613b7b565b905080876000015111612ffa5760405162461bcd60e51b81526020600482015260516024820152600080516020613e8e83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b03191660008190036130815760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c603781116131045760405162461bcd60e51b81526020600482015260486024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b61310e8184613bd7565b8951116131865760405162461bcd60e51b815260206004820152604c6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b613191836001613bd7565b97509550600094506134749350505050565b60f781116132455760006131b860c083613b7b565b9050808760000151116132345760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b600195509350849250613474915050565b600061325260f783613b7b565b9050808760000151116132d15760405162461bcd60e51b815260206004820152604d6024820152600080516020613e8e83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b03191660008190036133565760405162461bcd60e51b81526020600482015260486024820152600080516020613e8e83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116133d75760405162461bcd60e51b81526020600482015260466024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133e18184613bd7565b8951116134575760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613462836001613bd7565b97509550600194506134749350505050565b9193909250565b60606125b16118cb836126c1565b60606000826001600160401b038111156134a5576134a56136af565b6040519080825280601f01601f1916602001820160405280156134cf576020820181803683370190505b509050826000036134e15790506118fc565b60006134ed8587613bd7565b90506020820160005b8581101561350e5782810151828201526020016134f6565b8581111561351d576000868301525b50919695505050505050565b60606125b1826020015160008460000151613489565b60608182601f0110156135645760405162461bcd60e51b815260040161042090613d75565b8282840110156135865760405162461bcd60e51b815260040161042090613d75565b8183018451101561278e5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b03811681146135e457600080fd5b919050565b6000602082840312156135fb57600080fd5b6118fc826135cd565b60006020828403121561361657600080fd5b813563ffffffff811681146118fc57600080fd5b60008083601f84011261363c57600080fd5b5081356001600160401b0381111561365357600080fd5b602083019150836020828501011115610c6357600080fd5b60008083601f84011261367d57600080fd5b5081356001600160401b0381111561369457600080fd5b6020830191508360208260051b8501011115610c6357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156136ed576136ed6136af565b604052919050565b600082601f83011261370657600080fd5b81356001600160401b0381111561371f5761371f6136af565b613732601f8201601f19166020016136c5565b81815284602083860101111561374757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561378557600080fd5b6001600160401b03808d35111561379b57600080fd5b6137a88e8e358f0161362a565b909c509a5060208d01358110156137be57600080fd5b6137ce8e60208f01358f0161362a565b909a50985060408d01358110156137e457600080fd5b6137f48e60408f01358f0161366b565b909850965060608d0135955060808d013581101561381157600080fd5b6138218e60808f01358f0161366b565b909550935060a08d013581101561383757600080fd5b506138488d60a08e01358e016136f5565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561387357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106138b257634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156138d357600080fd5b6138dc886135cd565b965060208801356001600160401b03808211156138f857600080fd5b6139048b838c0161362a565b909850965060408a013591508082111561391d57600080fd5b6139298b838c0161366b565b909650945060608a013591508082111561394257600080fd5b5061394f8a828b0161366b565b989b979a50959850939692959293505050565b8015158114610d9957600080fd5b600080600080600060a0868803121561398857600080fd5b853561ffff8116811461399a57600080fd5b94506139a8602087016135cd565b93506040860135925060608601356001600160401b038111156139ca57600080fd5b6139d6888289016136f5565b92505060808601356139e781613962565b809150509295509295909350565b60008060408385031215613a0857600080fd5b613a11836135cd565b9150613a1f602084016135cd565b90509250929050565b600060208284031215613a3a57600080fd5b5051919050565b60006001600160401b0380841115613a5b57613a5b6136af565b8360051b6020613a6c8183016136c5565b868152918501918181019036841115613a8457600080fd5b865b84811015613ab857803586811115613a9e5760008081fd5b613aaa36828b016136f5565b845250918301918301613a86565b50979650505050505050565b60005b83811015613adf578181015183820152602001613ac7565b50506000910152565b60008151808452613b00816020860160208601613ac4565b601f01601f19169290920160200192915050565b604081526000613b276040830185613ae8565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613b5a57600080fd5b81516118fc81613962565b634e487b7160e01b600052601160045260246000fd5b818103818111156125b1576125b1613b65565b634e487b7160e01b600052601260045260246000fd5b600082613bb357613bb3613b8e565b500490565b6000816000190483118215151615613bd257613bd2613b65565b500290565b808201808211156125b1576125b1613b65565b6001600160401b03828116828216039080821115613c0a57613c0a613b65565b5092915050565b600082613c2057613c20613b8e565b500690565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061199690830184613ae8565b60008251613c7d818460208701613ac4565b9190910192915050565b600060208284031215613c9957600080fd5b81516001600160e01b0319811681146118fc57600080fd5b600060ff831680613cc457613cc4613b8e565b8060ff84160691505092915050565b60ff82811682821603908111156125b1576125b1613b65565b600060018201613cfe57613cfe613b65565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613dd8578160001904821115613dbe57613dbe613b65565b80851615613dcb57918102915b93841c9390800290613da2565b509250929050565b600082613def575060016125b1565b81613dfc575060006125b1565b8160018114613e125760028114613e1c57613e38565b60019150506125b1565b60ff841115613e2d57613e2d613b65565b50506001821b6125b1565b5060208310610133831016604e8410600b8410161715613e5b575081810a6125b1565b613e658383613d9d565b8060001904821115613e7957613e79613b65565b029392505050565b60006118fc8383613de056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212204d4990e12509e4c48efc701e947e64e5e407fb367cf36719c09908aab28dc2d964736f6c63430008100033", + "object": "0x60806040523480156200001157600080fd5b5060405162003f7738038062003f77833981016040819052620000349162000083565b606580546001600160a01b039384166001600160a01b03199182161790915560668054929093169116179055620000bb565b80516001600160a01b03811681146200007e57600080fd5b919050565b600080604083850312156200009757600080fd5b620000a28362000066565b9150620000b26020840162000066565b90509250929050565b613eac80620000cb6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b6101256101133660046135b2565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b6101463660046135cd565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e61017936600461372d565b6102f7565b005b6101a361018e36600461382a565b60076020526000908152604090205460ff1681565b60405161012f9190613859565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f23660046135cd565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d6102333660046135cd565b6004602052600090815260409020546001600160a01b031681565b61017e61025c366004613881565b6105ca565b61012561026f36600461382a565b60096020526000908152604090205481565b61017e6108ed565b61029c61029736600461382a565b610906565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613939565b610940565b610125607881565b6102ff6109a7565b60008061030c8b8b610a00565b9150915061031d8260400151610c6a565b61032a8260400151610d9c565b6000808e8e81019061033c91906139be565b9150915061034e828560400151610df8565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd91906139f1565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104728b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890611031565b9050806104c15760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105268787906104d79190613a0a565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261123b565b905081811461056f5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105b182828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115ee92505050565b50506105bd6001603355565b5050505050505050505050565b6105d26109a7565b6000806105df8888610a00565b915091506105f08260400151610c6a565b6105fd8260400151610d9c565b61060b898360400151610df8565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107c25760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072191906139f1565b905060008190036107745760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a8610781898b613a0a565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611795565b600083815260096020526040902081905592506107d49050565b60008181526009602052604090205491505b6000846020015160016040516020016108029291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084a82856108458a8c613a0a565b611891565b90508481146108935760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d882828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115ee92505050565b50506108e46001603355565b50505050505050565b6065546001600160a01b0316331461090457600080fd5b565b6003818154811061091657600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095757600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610998929190613add565b60405180910390a45050505050565b6002603354036109f95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7d85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061192d92505050565b905060008585604051610a91929190613b01565b60405190819003902090506000808281526007602052604090205460ff166002811115610ac057610ac0613843565b14610b0d5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b555760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9f5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610bea575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c5d5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610cd05760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190613b11565b610d995760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d995760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e5e5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb91906139f1565b600003610f3a5760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc491906139f1565b610fce9042613b44565b9050607881101561102c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b60008061103d836119f2565b9050600081856001600160401b03161061105857601b61105b565b60075b60ff169050600082866001600160401b03161061109757612000611088846001600160401b038916613b44565b6110929190613b6d565b6110ac565b6110ac6120006001600160401b038816613b6d565b90506000866001600160401b0316886001600160401b0316036110eb5750600b6110d881610200613b81565b6110e490610183613ba0565b9050611220565b6120006110f8888a613bb3565b6001600160401b03161161115a5750600b611114816020613b81565b61111f906006613ba0565b90506111366120006001600160401b038916613bda565b61114261200083613b81565b61114c9190613ba0565b90506110d881610200613b81565b876001600160401b0316876001600160401b031610156111d85750600b82611183826020613b81565b61118d9190613ba0565b905061119a816002613b81565b6111a5906000613ba0565b9050816111b6630100000083613b81565b6111c09190613ba0565b90506111cd816002613b81565b61111f906001613ba0565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f7400006044820152606401610420565b61122c8b828c8c611a32565b9b9a5050505050505050505050565b600080611249878a8a611a4c565b905060008160008151811061126057611260613bee565b01602001516001600160f81b03191690506000600160f81b8214806112925750600160f91b6001600160f81b03198316145b1561129f57506001611304565b600360fe1b6001600160f81b03198316106112bc57506000611304565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516113269190613b44565b81526020016113358585613ba0565b905290506000611344826122ec565b905080516004146113905760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b60006113b5826003815181106113a8576113a8613bee565b60200260200101516122ec565b905080518c106114075760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b600061141e828e815181106113a8576113a8613bee565b9050805160031461147c5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b60006114a18260008151811061149457611494613bee565b6020026020010151612511565b90508c6001600160a01b0316816001600160a01b0316146115145760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b600061152c836001815181106113a8576113a8613bee565b90508c6115528260008151811061154557611545613bee565b6020026020010151612585565b146115b55760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b6115d7818d815181106115ca576115ca613bee565b602002602001015161258c565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161161d93929190613c04565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b03168260405161166f9190613c34565b6000604051808303816000865af19150503d80600081146116ac576040519150601f19603f3d011682016040523d82523d6000602084013e6116b1565b606091505b50805191955093506000925060200390506116f3576000828060200190518101906116dc9190613c50565b6001600160e01b031916631dee306b60e11b149150505b8280156116fd5750805b15611720576000858152600760205260409020805460ff1916600217905561173a565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051611785929190613add565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117ff826040516020016117e991815260200190565b6040516020818303038152906040528786611a4c565b9050600081511161184b5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b600061185e6118598361268f565b6122ec565b9050805160041461186e57600080fd5b6118848160028151811061154557611545613bee565b93505050505b9392505050565b6000806118c0856040516020016118aa91815260200190565b6040516020818303038152906040528486611a4c565b905060008151116119135760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b61192461191f8261268f565b612585565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916119e1918a91906119dc908290613b44565b6126e2565b60c088015250949695505050505050565b60008163ffffffff16600103611a0c5750625ec000919050565b8163ffffffff16600503611a245750624f4000919050565b50600019919050565b919050565b600080611a408686866127ce565b90921495945050505050565b60606000845111611a975760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b6000611aa28461295d565b90506000611aaf86612a4b565b9050600084604051602001611ac691815260200190565b60405160208183030381529060405290506000805b8451811015612295576000858281518110611af857611af8613bee565b602002602001015190508451831115611b6a5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611c095780518051602091820120604051611bb892611b9292910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611c045760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611cff565b805151602011611c8f5780518051602091820120604051611c3392611b9292910190815260200190565b611c045760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611cff5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611d0b60106001613ba0565b81602001515103611eb85784518303611e50576000611d478260200151601081518110611d3a57611d3a613bee565b6020026020010151612b65565b90506000815111611dc05760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611dce9190613b44565b8314611e425760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b965061188a95505050505050565b6000858481518110611e6457611e64613bee565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611e8f57611e8f613bee565b60200260200101519050611ea281612c88565b9550611eaf600186613ba0565b94505050612282565b600281602001515103612229576000611ed082612cad565b9050600081600081518110611ee757611ee7613bee565b016020015160f81c90506000611efe600283613c7a565b611f09906002613c9c565b90506000611f1a848360ff16612cd1565b90506000611f288a89612cd1565b90506000611f368383612d07565b905080835114611fae5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611fc3575060ff85166003145b15612169578082511461203e5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b600061205a8860200151600181518110611d3a57611d3a613bee565b905060008151116120d35760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d516120e19190613b44565b89146121555760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c5061188a9b505050505050505050505050565b60ff8516158061217c575060ff85166001145b156121bb576121a8876020015160018151811061219b5761219b613bee565b6020026020010151612c88565b99506121b4818a613ba0565b985061221e565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b505050505050612282565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b508061228d81613cb5565b915050611adb565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b606060008060006122fc85612d86565b91945092509050600181600181111561231757612317613843565b1461238a5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516123968385613ba0565b146123fe5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816124175790505090506000845b87518110156125055760008061248a6040518060400160405280858d6000015161246e9190613b44565b8152602001858d602001516124839190613ba0565b9052612d86565b5091509150604051806040016040528083836124a69190613ba0565b8152602001848c602001516124bb9190613ba0565b8152508585815181106124d0576124d0613bee565b60209081029190910101526124e6600185613ba0565b93506124f28183613ba0565b6124fc9084613ba0565b92505050612444565b50815295945050505050565b805160009060010361252557506000919050565b81516015146125765760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b61257f82612585565b92915050565b600061257f825b60006021826000015111156125e35760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b60008060006125f185612d86565b91945092509050600081600181111561260c5761260c613843565b146126595760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600083866020015161266b9190613ba0565b805190915060208410156126855760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126c45760405162461bcd60e51b815260040161042090613cce565b50604080518082019091528151815260209182019181019190915290565b6060816126f081601f613ba0565b101561270e5760405162461bcd60e51b815260040161042090613d3e565b6127188284613ba0565b8451101561275c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b60608215801561277b57604051915060008252602082016040526127c5565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127b457805183526020928301920161279c565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127df9190613ba0565b6127ea906002613e4a565b116127f457600080fd5b8360005b846001146127c55761280b600286613bda565b6001036128aa57600284828151811061282657612826613bee565b602002602001015183604051602001612849929190918252602082015260400190565b60408051601f198184030181529082905261286391613c34565b602060405180830381855afa158015612880573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128a391906139f1565b915061293e565b6002828583815181106128bf576128bf613bee565b60200260200101516040516020016128e1929190918252602082015260400190565b60408051601f19818403018152908290526128fb91613c34565b602060405180830381855afa158015612918573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061293b91906139f1565b91505b612949600286613b6d565b94508061295581613cb5565b9150506127f8565b80516060906000816001600160401b0381111561297c5761297c613678565b6040519080825280602002602001820160405280156129c157816020015b604080518082019091526060808252602082015281526020019060019003908161299a5790505b50905060005b82811015612a435760405180604001604052808683815181106129ec576129ec613bee565b60200260200101518152602001612a1b878481518110612a0e57612a0e613bee565b6020026020010151613449565b815250828281518110612a3057612a30613bee565b60209081029190910101526001016129c7565b509392505050565b80516060906000612a5d826002613b81565b6001600160401b03811115612a7457612a74613678565b6040519080825280601f01601f191660200182016040528015612a9e576020820181803683370190505b5090506000805b83811015612b5b57858181518110612abf57612abf613bee565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612ae7836002613b81565b81518110612af757612af7613bee565b60200101906001600160f81b031916908160001a905350600f60f81b821683612b21836002613b81565b612b2c906001613ba0565b81518110612b3c57612b3c613bee565b60200101906001600160f81b031916908160001a905350600101612aa5565b5090949350505050565b60606000806000612b7585612d86565b919450925090506000816001811115612b9057612b90613843565b14612c035760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612c0d8284613ba0565b855114612c795760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b61192485602001518484613457565b60606020826000015110612ca457612c9f82612b65565b61257f565b61257f826134f7565b606061257f612ccc8360200151600081518110611d3a57611d3a613bee565b612a4b565b606082518210612cf0575060408051602081019091526000815261257f565b61188a8383848651612d029190613b44565b61350d565b60008060008351855110612d1c578351612d1f565b84515b90505b8082108015612d765750838281518110612d3e57612d3e613bee565b602001015160f81c60f81b6001600160f81b031916858381518110612d6557612d65613bee565b01602001516001600160f81b031916145b15612a4357816001019150612d22565b600080600080846000015111612dae5760405162461bcd60e51b815260040161042090613cce565b6020840151805160001a607f8111612dd3576000600160009450945094505050613442565b60b78111612f30576000612de8608083613b44565b905080876000015111612e685760405162461bcd60e51b815260206004820152604e6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612e955750600160ff1b6001600160f81b0319821610155b612f1d5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b5060019550935060009250613442915050565b60bf8111613171576000612f4560b783613b44565b905080876000015111612fc85760405162461bcd60e51b81526020600482015260516024820152600080516020613e5783398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b031916600081900361304f5760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c603781116130d25760405162461bcd60e51b81526020600482015260486024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b6130dc8184613ba0565b8951116131545760405162461bcd60e51b815260206004820152604c6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b61315f836001613ba0565b97509550600094506134429350505050565b60f7811161321357600061318660c083613b44565b9050808760000151116132025760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b600195509350849250613442915050565b600061322060f783613b44565b90508087600001511161329f5760405162461bcd60e51b815260206004820152604d6024820152600080516020613e5783398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b03191660008190036133245760405162461bcd60e51b81526020600482015260486024820152600080516020613e5783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116133a55760405162461bcd60e51b81526020600482015260466024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133af8184613ba0565b8951116134255760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613430836001613ba0565b97509550600194506134429350505050565b9193909250565b606061257f6118598361268f565b60606000826001600160401b0381111561347357613473613678565b6040519080825280601f01601f19166020018201604052801561349d576020820181803683370190505b509050826000036134af57905061188a565b60006134bb8587613ba0565b90506020820160005b858110156134dc5782810151828201526020016134c4565b858111156134eb576000868301525b50919695505050505050565b606061257f826020015160008460000151613457565b60608182601f0110156135325760405162461bcd60e51b815260040161042090613d3e565b8282840110156135545760405162461bcd60e51b815260040161042090613d3e565b8183018451101561275c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b0381168114611a2d57600080fd5b6000602082840312156135c457600080fd5b61188a8261359b565b6000602082840312156135df57600080fd5b813563ffffffff8116811461188a57600080fd5b60008083601f84011261360557600080fd5b5081356001600160401b0381111561361c57600080fd5b602083019150836020828501011115610c6357600080fd5b60008083601f84011261364657600080fd5b5081356001600160401b0381111561365d57600080fd5b6020830191508360208260051b8501011115610c6357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156136b6576136b6613678565b604052919050565b600082601f8301126136cf57600080fd5b81356001600160401b038111156136e8576136e8613678565b6136fb601f8201601f191660200161368e565b81815284602083860101111561371057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561374e57600080fd5b6001600160401b03808d35111561376457600080fd5b6137718e8e358f016135f3565b909c509a5060208d013581101561378757600080fd5b6137978e60208f01358f016135f3565b909a50985060408d01358110156137ad57600080fd5b6137bd8e60408f01358f01613634565b909850965060608d0135955060808d01358110156137da57600080fd5b6137ea8e60808f01358f01613634565b909550935060a08d013581101561380057600080fd5b506138118d60a08e01358e016136be565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561383c57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061387b57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561389c57600080fd5b6138a58861359b565b965060208801356001600160401b03808211156138c157600080fd5b6138cd8b838c016135f3565b909850965060408a01359150808211156138e657600080fd5b6138f28b838c01613634565b909650945060608a013591508082111561390b57600080fd5b506139188a828b01613634565b989b979a50959850939692959293505050565b8015158114610d9957600080fd5b600080600080600060a0868803121561395157600080fd5b853561ffff8116811461396357600080fd5b94506139716020870161359b565b93506040860135925060608601356001600160401b0381111561399357600080fd5b61399f888289016136be565b92505060808601356139b08161392b565b809150509295509295909350565b600080604083850312156139d157600080fd5b6139da8361359b565b91506139e86020840161359b565b90509250929050565b600060208284031215613a0357600080fd5b5051919050565b60006001600160401b0380841115613a2457613a24613678565b8360051b6020613a3581830161368e565b868152918501918181019036841115613a4d57600080fd5b865b84811015613a8157803586811115613a675760008081fd5b613a7336828b016136be565b845250918301918301613a4f565b50979650505050505050565b60005b83811015613aa8578181015183820152602001613a90565b50506000910152565b60008151808452613ac9816020860160208601613a8d565b601f01601f19169290920160200192915050565b604081526000613af06040830185613ab1565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613b2357600080fd5b815161188a8161392b565b634e487b7160e01b600052601160045260246000fd5b8181038181111561257f5761257f613b2e565b634e487b7160e01b600052601260045260246000fd5b600082613b7c57613b7c613b57565b500490565b6000816000190483118215151615613b9b57613b9b613b2e565b500290565b8082018082111561257f5761257f613b2e565b6001600160401b03828116828216039080821115613bd357613bd3613b2e565b5092915050565b600082613be957613be9613b57565b500690565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061192490830184613ab1565b60008251613c46818460208701613a8d565b9190910192915050565b600060208284031215613c6257600080fd5b81516001600160e01b03198116811461188a57600080fd5b600060ff831680613c8d57613c8d613b57565b8060ff84160691505092915050565b60ff828116828216039081111561257f5761257f613b2e565b600060018201613cc757613cc7613b2e565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613da1578160001904821115613d8757613d87613b2e565b80851615613d9457918102915b93841c9390800290613d6b565b509250929050565b600082613db85750600161257f565b81613dc55750600061257f565b8160018114613ddb5760028114613de557613e01565b600191505061257f565b60ff841115613df657613df6613b2e565b50506001821b61257f565b5060208310610133831016604e8410600b8410161715613e24575081810a61257f565b613e2e8383613d66565b8060001904821115613e4257613e42613b2e565b029392505050565b600061188a8383613da956fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220418e21fd21f00c03501eb83d3e8cf77d73d9b90e1d81aa2d267111b90aa70bf364736f6c63430008100033", "sourceMap": "399:626:6:-:0;;;510:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:8;:20;;-1:-1:-1;;;;;569:20:6;;;-1:-1:-1;;;;;;569:20:6;;;;;;;599:7;:18;;;;;;;;;;;399:626;;14:177:146;93:13;;-1:-1:-1;;;;;135:31:146;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;:::-;399:626:6;;;;;;", - "linkReferences": { - "src/libraries/BeaconChainForks.sol": { - "BeaconChainForks": [ - { - "start": 4380, - "length": 20 - } - ] - } - } + "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b6101256101133660046135e9565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b610146366004613604565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e610179366004613764565b6102f7565b005b6101a361018e366004613861565b60076020526000908152604090205460ff1681565b60405161012f9190613890565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f2366004613604565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d610233366004613604565b6004602052600090815260409020546001600160a01b031681565b61017e61025c3660046138b8565b6105ca565b61012561026f366004613861565b60096020526000908152604090205481565b61017e6108ed565b61029c610297366004613861565b610906565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613970565b610940565b610125607881565b6102ff6109a7565b60008061030c8b8b610a00565b9150915061031d8260400151610c6a565b61032a8260400151610d9c565b6000808e8e81019061033c91906139f5565b9150915061034e828560400151610df8565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd9190613a28565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104728b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890611031565b9050806104c15760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105268787906104d79190613a41565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026112ad565b905081811461056f5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105b182828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166092505050565b50506105bd6001603355565b5050505050505050505050565b6105d26109a7565b6000806105df8888610a00565b915091506105f08260400151610c6a565b6105fd8260400151610d9c565b61060b898360400151610df8565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107c25760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107219190613a28565b905060008190036107745760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a8610781898b613a41565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611807565b600083815260096020526040902081905592506107d49050565b60008181526009602052604090205491505b6000846020015160016040516020016108029291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084a82856108458a8c613a41565b611903565b90508481146108935760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d882828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166092505050565b50506108e46001603355565b50505050505050565b6065546001600160a01b0316331461090457600080fd5b565b6003818154811061091657600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095757600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610998929190613b14565b60405180910390a45050505050565b6002603354036109f95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7d85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061199f92505050565b905060008585604051610a91929190613b38565b60405190819003902090506000808281526007602052604090205460ff166002811115610ac057610ac061387a565b14610b0d5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b555760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9f5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610bea575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c5d5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610cd05760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190613b48565b610d995760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d995760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e5e5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb9190613a28565b600003610f3a5760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190613a28565b610fce9042613b7b565b9050607881101561102c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af415801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110af9190613a28565b9050600081856001600160401b0316106110ca57601b6110cd565b60075b60ff169050600082866001600160401b031610611109576120006110fa846001600160401b038916613b7b565b6111049190613ba4565b61111e565b61111e6120006001600160401b038816613ba4565b90506000866001600160401b0316886001600160401b03160361115d5750600b61114a81610200613bb8565b61115690610183613bd7565b9050611292565b61200061116a888a613bea565b6001600160401b0316116111cc5750600b611186816020613bb8565b611191906006613bd7565b90506111a86120006001600160401b038916613c11565b6111b461200083613bb8565b6111be9190613bd7565b905061114a81610200613bb8565b876001600160401b0316876001600160401b0316101561124a5750600b826111f5826020613bb8565b6111ff9190613bd7565b905061120c816002613bb8565b611217906000613bd7565b905081611228630100000083613bb8565b6112329190613bd7565b905061123f816002613bb8565b611191906001613bd7565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f7400006044820152606401610420565b61129e8b828c8c611a64565b9b9a5050505050505050505050565b6000806112bb878a8a611a7e565b90506000816000815181106112d2576112d2613c25565b01602001516001600160f81b03191690506000600160f81b8214806113045750600160f91b6001600160f81b03198316145b1561131157506001611376565b600360fe1b6001600160f81b031983161061132e57506000611376565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516113989190613b7b565b81526020016113a78585613bd7565b9052905060006113b68261231e565b905080516004146114025760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b60006114278260038151811061141a5761141a613c25565b602002602001015161231e565b905080518c106114795760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b6000611490828e8151811061141a5761141a613c25565b905080516003146114ee5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b60006115138260008151811061150657611506613c25565b6020026020010151612543565b90508c6001600160a01b0316816001600160a01b0316146115865760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b600061159e8360018151811061141a5761141a613c25565b90508c6115c4826000815181106115b7576115b7613c25565b60200260200101516125b7565b146116275760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b611649818d8151811061163c5761163c613c25565b60200260200101516125be565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161168f93929190613c3b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116e19190613c6b565b6000604051808303816000865af19150503d806000811461171e576040519150601f19603f3d011682016040523d82523d6000602084013e611723565b606091505b50805191955093506000925060200390506117655760008280602001905181019061174e9190613c87565b6001600160e01b031916631dee306b60e11b149150505b82801561176f5750805b15611792576000858152600760205260409020805460ff191660021790556117ac565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe894787876040516117f7929190613b14565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006118718260405160200161185b91815260200190565b6040516020818303038152906040528786611a7e565b905060008151116118bd5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b60006118d06118cb836126c1565b61231e565b905080516004146118e057600080fd5b6118f6816002815181106115b7576115b7613c25565b93505050505b9392505050565b6000806119328560405160200161191c91815260200190565b6040516020818303038152906040528486611a7e565b905060008151116119855760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b611996611991826126c1565b6125b7565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091611a53918a9190611a4e908290613b7b565b612714565b60c088015250949695505050505050565b600080611a72868686612800565b90921495945050505050565b60606000845111611ac95760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b6000611ad48461298f565b90506000611ae186612a7d565b9050600084604051602001611af891815260200190565b60405160208183030381529060405290506000805b84518110156122c7576000858281518110611b2a57611b2a613c25565b602002602001015190508451831115611b9c5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611c3b5780518051602091820120604051611bea92611bc492910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611c365760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611d31565b805151602011611cc15780518051602091820120604051611c6592611bc492910190815260200190565b611c365760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611d315760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611d3d60106001613bd7565b81602001515103611eea5784518303611e82576000611d798260200151601081518110611d6c57611d6c613c25565b6020026020010151612b97565b90506000815111611df25760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611e009190613b7b565b8314611e745760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b96506118fc95505050505050565b6000858481518110611e9657611e96613c25565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611ec157611ec1613c25565b60200260200101519050611ed481612cba565b9550611ee1600186613bd7565b945050506122b4565b60028160200151510361225b576000611f0282612cdf565b9050600081600081518110611f1957611f19613c25565b016020015160f81c90506000611f30600283613cb1565b611f3b906002613cd3565b90506000611f4c848360ff16612d03565b90506000611f5a8a89612d03565b90506000611f688383612d39565b905080835114611fe05760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611ff5575060ff85166003145b1561219b57808251146120705760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b600061208c8860200151600181518110611d6c57611d6c613c25565b905060008151116121055760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d516121139190613b7b565b89146121875760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c506118fc9b505050505050505050505050565b60ff851615806121ae575060ff85166001145b156121ed576121da87602001516001815181106121cd576121cd613c25565b6020026020010151612cba565b99506121e6818a613bd7565b9850612250565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b5050505050506122b4565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b50806122bf81613cec565b915050611b0d565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b6060600080600061232e85612db8565b9194509250905060018160018111156123495761234961387a565b146123bc5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516123c88385613bd7565b146124305760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816124495790505090506000845b8751811015612537576000806124bc6040518060400160405280858d600001516124a09190613b7b565b8152602001858d602001516124b59190613bd7565b9052612db8565b5091509150604051806040016040528083836124d89190613bd7565b8152602001848c602001516124ed9190613bd7565b81525085858151811061250257612502613c25565b6020908102919091010152612518600185613bd7565b93506125248183613bd7565b61252e9084613bd7565b92505050612476565b50815295945050505050565b805160009060010361255757506000919050565b81516015146125a85760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b6125b1826125b7565b92915050565b60006125b1825b60006021826000015111156126155760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600080600061262385612db8565b91945092509050600081600181111561263e5761263e61387a565b1461268b5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600083866020015161269d9190613bd7565b805190915060208410156126b75760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126f65760405162461bcd60e51b815260040161042090613d05565b50604080518082019091528151815260209182019181019190915290565b60608161272281601f613bd7565b10156127405760405162461bcd60e51b815260040161042090613d75565b61274a8284613bd7565b8451101561278e5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b6060821580156127ad57604051915060008252602082016040526127f7565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127e65780518352602092830192016127ce565b5050858452601f01601f1916604052505b50949350505050565b600082825160016128119190613bd7565b61281c906002613e81565b1161282657600080fd5b8360005b846001146127f75761283d600286613c11565b6001036128dc57600284828151811061285857612858613c25565b60200260200101518360405160200161287b929190918252602082015260400190565b60408051601f198184030181529082905261289591613c6b565b602060405180830381855afa1580156128b2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128d59190613a28565b9150612970565b6002828583815181106128f1576128f1613c25565b6020026020010151604051602001612913929190918252602082015260400190565b60408051601f198184030181529082905261292d91613c6b565b602060405180830381855afa15801561294a573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061296d9190613a28565b91505b61297b600286613ba4565b94508061298781613cec565b91505061282a565b80516060906000816001600160401b038111156129ae576129ae6136af565b6040519080825280602002602001820160405280156129f357816020015b60408051808201909152606080825260208201528152602001906001900390816129cc5790505b50905060005b82811015612a75576040518060400160405280868381518110612a1e57612a1e613c25565b60200260200101518152602001612a4d878481518110612a4057612a40613c25565b602002602001015161347b565b815250828281518110612a6257612a62613c25565b60209081029190910101526001016129f9565b509392505050565b80516060906000612a8f826002613bb8565b6001600160401b03811115612aa657612aa66136af565b6040519080825280601f01601f191660200182016040528015612ad0576020820181803683370190505b5090506000805b83811015612b8d57858181518110612af157612af1613c25565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612b19836002613bb8565b81518110612b2957612b29613c25565b60200101906001600160f81b031916908160001a905350600f60f81b821683612b53836002613bb8565b612b5e906001613bd7565b81518110612b6e57612b6e613c25565b60200101906001600160f81b031916908160001a905350600101612ad7565b5090949350505050565b60606000806000612ba785612db8565b919450925090506000816001811115612bc257612bc261387a565b14612c355760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612c3f8284613bd7565b855114612cab5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b61199685602001518484613489565b60606020826000015110612cd657612cd182612b97565b6125b1565b6125b182613529565b60606125b1612cfe8360200151600081518110611d6c57611d6c613c25565b612a7d565b606082518210612d2257506040805160208101909152600081526125b1565b6118fc8383848651612d349190613b7b565b61353f565b60008060008351855110612d4e578351612d51565b84515b90505b8082108015612da85750838281518110612d7057612d70613c25565b602001015160f81c60f81b6001600160f81b031916858381518110612d9757612d97613c25565b01602001516001600160f81b031916145b15612a7557816001019150612d54565b600080600080846000015111612de05760405162461bcd60e51b815260040161042090613d05565b6020840151805160001a607f8111612e05576000600160009450945094505050613474565b60b78111612f62576000612e1a608083613b7b565b905080876000015111612e9a5760405162461bcd60e51b815260206004820152604e6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612ec75750600160ff1b6001600160f81b0319821610155b612f4f5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b5060019550935060009250613474915050565b60bf81116131a3576000612f7760b783613b7b565b905080876000015111612ffa5760405162461bcd60e51b81526020600482015260516024820152600080516020613e8e83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b03191660008190036130815760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c603781116131045760405162461bcd60e51b81526020600482015260486024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b61310e8184613bd7565b8951116131865760405162461bcd60e51b815260206004820152604c6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b613191836001613bd7565b97509550600094506134749350505050565b60f781116132455760006131b860c083613b7b565b9050808760000151116132345760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b600195509350849250613474915050565b600061325260f783613b7b565b9050808760000151116132d15760405162461bcd60e51b815260206004820152604d6024820152600080516020613e8e83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b03191660008190036133565760405162461bcd60e51b81526020600482015260486024820152600080516020613e8e83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116133d75760405162461bcd60e51b81526020600482015260466024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133e18184613bd7565b8951116134575760405162461bcd60e51b815260206004820152604a6024820152600080516020613e8e83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613462836001613bd7565b97509550600194506134749350505050565b9193909250565b60606125b16118cb836126c1565b60606000826001600160401b038111156134a5576134a56136af565b6040519080825280601f01601f1916602001820160405280156134cf576020820181803683370190505b509050826000036134e15790506118fc565b60006134ed8587613bd7565b90506020820160005b8581101561350e5782810151828201526020016134f6565b8581111561351d576000868301525b50919695505050505050565b60606125b1826020015160008460000151613489565b60608182601f0110156135645760405162461bcd60e51b815260040161042090613d75565b8282840110156135865760405162461bcd60e51b815260040161042090613d75565b8183018451101561278e5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b03811681146135e457600080fd5b919050565b6000602082840312156135fb57600080fd5b6118fc826135cd565b60006020828403121561361657600080fd5b813563ffffffff811681146118fc57600080fd5b60008083601f84011261363c57600080fd5b5081356001600160401b0381111561365357600080fd5b602083019150836020828501011115610c6357600080fd5b60008083601f84011261367d57600080fd5b5081356001600160401b0381111561369457600080fd5b6020830191508360208260051b8501011115610c6357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156136ed576136ed6136af565b604052919050565b600082601f83011261370657600080fd5b81356001600160401b0381111561371f5761371f6136af565b613732601f8201601f19166020016136c5565b81815284602083860101111561374757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561378557600080fd5b6001600160401b03808d35111561379b57600080fd5b6137a88e8e358f0161362a565b909c509a5060208d01358110156137be57600080fd5b6137ce8e60208f01358f0161362a565b909a50985060408d01358110156137e457600080fd5b6137f48e60408f01358f0161366b565b909850965060608d0135955060808d013581101561381157600080fd5b6138218e60808f01358f0161366b565b909550935060a08d013581101561383757600080fd5b506138488d60a08e01358e016136f5565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561387357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106138b257634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156138d357600080fd5b6138dc886135cd565b965060208801356001600160401b03808211156138f857600080fd5b6139048b838c0161362a565b909850965060408a013591508082111561391d57600080fd5b6139298b838c0161366b565b909650945060608a013591508082111561394257600080fd5b5061394f8a828b0161366b565b989b979a50959850939692959293505050565b8015158114610d9957600080fd5b600080600080600060a0868803121561398857600080fd5b853561ffff8116811461399a57600080fd5b94506139a8602087016135cd565b93506040860135925060608601356001600160401b038111156139ca57600080fd5b6139d6888289016136f5565b92505060808601356139e781613962565b809150509295509295909350565b60008060408385031215613a0857600080fd5b613a11836135cd565b9150613a1f602084016135cd565b90509250929050565b600060208284031215613a3a57600080fd5b5051919050565b60006001600160401b0380841115613a5b57613a5b6136af565b8360051b6020613a6c8183016136c5565b868152918501918181019036841115613a8457600080fd5b865b84811015613ab857803586811115613a9e5760008081fd5b613aaa36828b016136f5565b845250918301918301613a86565b50979650505050505050565b60005b83811015613adf578181015183820152602001613ac7565b50506000910152565b60008151808452613b00816020860160208601613ac4565b601f01601f19169290920160200192915050565b604081526000613b276040830185613ae8565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613b5a57600080fd5b81516118fc81613962565b634e487b7160e01b600052601160045260246000fd5b818103818111156125b1576125b1613b65565b634e487b7160e01b600052601260045260246000fd5b600082613bb357613bb3613b8e565b500490565b6000816000190483118215151615613bd257613bd2613b65565b500290565b808201808211156125b1576125b1613b65565b6001600160401b03828116828216039080821115613c0a57613c0a613b65565b5092915050565b600082613c2057613c20613b8e565b500690565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061199690830184613ae8565b60008251613c7d818460208701613ac4565b9190910192915050565b600060208284031215613c9957600080fd5b81516001600160e01b0319811681146118fc57600080fd5b600060ff831680613cc457613cc4613b8e565b8060ff84160691505092915050565b60ff82811682821603908111156125b1576125b1613b65565b600060018201613cfe57613cfe613b65565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613dd8578160001904821115613dbe57613dbe613b65565b80851615613dcb57918102915b93841c9390800290613da2565b509250929050565b600082613def575060016125b1565b81613dfc575060006125b1565b8160018114613e125760028114613e1c57613e38565b60019150506125b1565b60ff841115613e2d57613e2d613b65565b50506001821b6125b1565b5060208310610133831016604e8410600b8410161715613e5b575081810a6125b1565b613e658383613d9d565b8060001904821115613e7957613e79613b65565b029392505050565b60006118fc8383613de056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212204d4990e12509e4c48efc701e947e64e5e407fb367cf36719c09908aab28dc2d964736f6c63430008100033", - "sourceMap": "399:626:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:146;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:146;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:146;4866:1928:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:146;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:146;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:146;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:146;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;630:83:6;;;:::i;879:30:103:-;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:146;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:146;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:146;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:146;719:304:6;;;;;;:::i;:::-;;:::i;924:58:100:-;;973:9;924:58;;4866:1928;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:146;;5661:52:100;;::::1;7526:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;9330:2:146;5727:58:100::1;::::0;::::1;9312:21:146::0;9369:2;9349:18;;;9342:30;-1:-1:-1;;;9388:18:146;;;9381:51;9449:18;;5727:58:100::1;;;;;;;;;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;9680:2:146;5965:47:100::1;::::0;::::1;9662:21:146::0;9719:2;9699:18;;;9692:30;9758:29;9738:18;;;9731:57;9805:18;;5965:47:100::1;9478:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;10975:2:146;6648:67:100::1;::::0;::::1;10957:21:146::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:146;;;11026:51;11094:18;;6648:67:100::1;10773:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;11342:3:146;11320:16;;;;-1:-1:-1;;;;;;11316:43:146;2955:82:100;;::::1;11304:56:146::0;11415:3;11393:16;;;-1:-1:-1;;;;;;11389:51:146;11376:11;;;11369:72;11479:2;11475:15;-1:-1:-1;;11475:15:146;11457:12;;;11450:75;2955:82:100;;;;;;;;;11541:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:146;;3301:61:100;;::::1;7526:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;11766:2:146;3380:67:100::1;::::0;::::1;11748:21:146::0;11805:2;11785:18;;;11778:30;11844:33;11824:18;;;11817:61;11895:18;;3380:67:100::1;11564:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;12114:31:146;;;;12096:50;;12177:2;12162:18;;12155:34;12084:2;12069:18;;11924:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:146::0;3826:80:100;;;;;;;;;498:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10975:2:146;4090:31:100::1;::::0;::::1;10957:21:146::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:146;;;11026:51;11094:18;;4090:31:100::1;10773:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;630:83:6:-;697:8;;-1:-1:-1;;;;;697:8:6;683:10;:22;675:31;;;;;;630:83::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;719:304:6:-;931:7;;-1:-1:-1;;;;;931:7:6;917:10;:21;909:30;;;;;;988:8;980:6;-1:-1:-1;;;;;954:62:6;970:8;954:62;;;998:8;1008:7;954:62;;;;;;;:::i;:::-;;;;;;;;719:304;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;13235:2:146;2704:63:39;;;13217:21:146;13274:2;13254:18;;;13247:30;13313:33;13293:18;;;13286:61;13364:18;;2704:63:39;13033:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;13871:2:146;8369:35:100;;;13853:21:146;13910:2;13890:18;;;13883:30;13949:27;13929:18;;;13922:55;13994:18;;8369:35:100;13669:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;14225:2:146;8484:22:100;;;14207:21:146;14264:2;14244:18;;;14237:30;-1:-1:-1;;;14283:18:146;;;14276:42;14335:18;;8484:22:100;14023:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;14566:2:146;8569:24:100;;;14548:21:146;14605:2;14585:18;;;14578:30;-1:-1:-1;;;14624:18:146;;;14617:44;14678:18;;8569:24:100;14364:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;14909:2:146;8779:65:100;;;14891:21:146;14948:2;14928:18;;;14921:30;14987:34;14967:18;;;14960:62;15058:25;15038:18;;;15031:53;15101:19;;8779:65:100;14707:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;15333:2:146;6959:81:100;;;15315:21:146;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:146;;;15384:54;15455:18;;6959:81:100;15131:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;15936:2:146;7050:76:100;;;15918:21:146;15975:2;15955:18;;;15948:30;16014:31;15994:18;;;15987:59;16063:18;;7050:76:100;15734:353:146;7050:76:100;6880:253;:::o;7194:121::-;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;16294:2:146;7260:48:100;;;16276:21:146;16333:2;16313:18;;;16306:30;-1:-1:-1;;;16352:18:146;;;16345:49;16411:18;;7260:48:100;16092:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;15333:2:146;7471:81:100;;;15315:21:146;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:146;;;15384:54;15455:18;;7471:81:100;15131:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;7544:31:146;;7570:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;7499:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;16831:2:146;7562:86:100;;;16813:21:146;16870:2;16850:18;;;16843:30;16909:32;16889:18;;;16882:60;16959:18;;7562:86:100;16629:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;7544:31:146;;7698:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;7499:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;17455:2:146;7746:84:100;;;17437:21:146;17494:2;17474:18;;;17467:30;17533:34;17513:18;;;17506:62;-1:-1:-1;;;17584:18:146;;;17577:32;17626:19;;7746:84:100;17253:398:146;7746:84:100;7461:376;7385:452;;:::o;3094:1947:110:-;3372:46;;-1:-1:-1;;;3372:46:110;;;7347:23:146;;3372:46:110;;;7329:42:146;3330:4:110;;;;3372:16;;:31;;7302:18:146;;3372:46:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;18928:2:146;4896:40:110;;;18910:21:146;18967:2;18947:18;;;18940:30;19006:32;18986:18;;;18979:60;19056:18;;4896:40:110;18726:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;19419:2:146;2652:38:111;;;19401:21:146;19458:2;19438:18;;;19431:30;19497;19477:18;;;19470:58;19545:18;;2652:38:111;19217:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;19776:2:146;3233:58:111;;;19758:21:146;19815:2;19795:18;;;19788:30;-1:-1:-1;;;19834:18:146;;;19827:52;19896:18;;3233:58:111;19574:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;20127:2:146;3450:58:111;;;20109:21:146;20166:2;20146:18;;;20139:30;20205:25;20185:18;;;20178:53;20248:18;;3450:58:111;19925:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;20479:2:146;3594:70:111;;;20461:21:146;20518:2;20498:18;;;20491:30;20557:34;20537:18;;;20530:62;-1:-1:-1;;;20608:18:146;;;20601:32;20650:19;;3594:70:111;20277:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;20882:2:146;3803:85:111;;;20864:21:146;20921:2;20901:18;;;20894:30;20960:34;20940:18;;;20933:62;-1:-1:-1;;;21011:18:146;;;21004:37;21058:19;;3803:85:111;20680:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;21290:2:146;4057:142:111;;;21272:21:146;21329:2;21309:18;;;21302:30;21368:34;21348:18;;;21341:62;-1:-1:-1;;;21419:18:146;;;21412:43;21472:19;;4057:142:111;21088:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;735:581:111:-;927:33;;-1:-1:-1;;22643:2:146;22639:15;;;22635:53;927:33:111;;;22623:66:146;872:7:111;;;;22705:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;22857:19:146;;22901:2;22892:12;;22728:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;23117:2:146;1072:58:111;;;23099:21:146;23156:2;23136:18;;;23129:30;-1:-1:-1;;;23175:18:146;;;23168:52;23237:18;;1072:58:111;22915:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;22857:19:146;;22901:2;22892:12;;22728:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;23468:2:146;601:65:111;;;23450:21:146;23507:2;23487:18;;;23480:30;23546;23526:18;;;23519:58;23594:18;;601:65:111;23266:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;23825:2:146;3101:49:77;;;23807:21:146;23864:2;23844:18;;;23837:30;-1:-1:-1;;;23883:18:146;;;23876:51;23944:18;;3101:49:77;23623:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;22857:19:146;;22901:2;22892:12;;22728:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;24175:2:146;3636:134:77;;;24157:21:146;24214:2;24194:18;;;24187:30;24253:34;24233:18;;;24226:62;-1:-1:-1;;;24304:18:146;;;24297:44;24358:19;;3636:134:77;23973:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;22857:19:146;;;22901:2;22892:12;;22728:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;24590:2:146;3893:176:77;;;24572:21:146;24629:2;24609:18;;;24602:30;24668:31;24648:18;;;24641:59;24717:18;;3893:176:77;24388:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;22857:19:146;;;22901:2;22892:12;;22728:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;24948:2:146;4222:186:77;;;24930:21:146;24987:2;24967:18;;;24960:30;25026:34;25006:18;;;24999:62;-1:-1:-1;;;25077:18:146;;;25070:37;25124:19;;4222:186:77;24746:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;25356:2:146;4509:156:77;;;25338:21:146;25395:2;25375:18;;;25368:30;25434:34;25414:18;;;25407:62;-1:-1:-1;;;25485:18:146;;;25478:36;25531:19;;4509:156:77;25154:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;25763:2:146;5384:158:77;;;25745:21:146;25802:2;25782:18;;;25775:30;25841:34;25821:18;;;25814:62;25912:29;25892:18;;;25885:57;25959:19;;5384:158:77;25561:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;26191:2:146;5626:162:77;;;26173:21:146;26230:2;26210:18;;;26203:30;26269:34;26249:18;;;26242:62;26340:28;26320:18;;;26313:56;26386:19;;5626:162:77;25989:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;26936:2:146;7009:171:77;;;26918:21:146;26975:2;26955:18;;;26948:30;27014:34;26994:18;;;26987:62;27085:28;27065:18;;;27058:56;27131:19;;7009:171:77;26734:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;27363:2:146;7843:185:77;;;27345:21:146;27402:2;27382:18;;;27375:30;27441:34;27421:18;;;27414:62;27512:31;27492:18;;;27485:59;27561:19;;7843:185:77;27161:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;27793:2:146;8463:156:77;;;27775:21:146;27832:2;27812:18;;;27805:30;27871:34;27851:18;;;27844:62;27942:27;27922:18;;;27915:55;27987:19;;8463:156:77;27591:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;28219:2:146;8703:160:77;;;28201:21:146;28258:2;28238:18;;;28231:30;28297:34;28277:18;;;28270:62;28368:26;28348:18;;;28341:54;28412:19;;8703:160:77;28017:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;28644:2:146;9439:60:77;;;28626:21:146;28683:2;28663:18;;;28656:30;28722:34;28702:18;;;28695:62;-1:-1:-1;;;28773:18:146;;;28766:48;28831:19;;9439:60:77;28442:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;29063:2:146;9556:50:77;;;29045:21:146;29102:2;29082:18;;;29075:30;29141:34;29121:18;;;29114:62;-1:-1:-1;;;29192:18:146;;;29185:38;29240:19;;9556:50:77;28861:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;29612:2:146;9641:47:77;;;29594:21:146;29651:2;29631:18;;;29624:30;29690:34;29670:18;;;29663:62;-1:-1:-1;;;29741:18:146;;;29734:35;29786:19;;9641:47:77;29410:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;30018:2:146;2161:136:75;;;30000:21:146;30057:2;30037:18;;;30030:30;30096:34;30076:18;;;30069:62;30167:26;30147:18;;;30140:54;30211:19;;2161:136:75;29816:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;30443:2:146;2308:134:75;;;30425:21:146;30482:2;30462:18;;;30455:30;30521:34;30501:18;;;30494:62;-1:-1:-1;;;30572:18:146;;;30565:48;30630:19;;2308:134:75;30241:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;30862:2:146;12579:55:75;;;30844:21:146;30901:2;30881:18;;;30874:30;30940:28;30920:18;;;30913:56;30986:18;;12579:55:75;30660:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;31217:2:146;11438:55:75;;;31199:21:146;31256:2;31236:18;;;31229:30;31295:28;31275:18;;;31268:56;31341:18;;11438:55:75;31015:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;31217:2:146;11598:72:75;;;31199:21:146;31256:2;31236:18;;;31229:30;31295:28;31275:18;;;31268:56;31341:18;;11598:72:75;31015:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;32398:2:146;409:63:108;;;32380:21:146;32437:2;32417:18;;;32410:30;-1:-1:-1;;;32456:18:146;;;32449:47;32513:18;;409:63:108;32196:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;34073:19:146;;;34117:2;34108:12;;34101:28;34154:2;34145:12;;33916:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;34073:19:146;;;34117:2;34108:12;;34101:28;34154:2;34145:12;;33916:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;34370:2:146;4505:137:75;;;34352:21:146;34409:2;34389:18;;;34382:30;34448:34;34428:18;;;34421:62;34519:27;34499:18;;;34492:55;34564:19;;4505:137:75;34168:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;34796:2:146;4653:136:75;;;34778:21:146;34835:2;34815:18;;;34808:30;34874:34;34854:18;;;34847:62;-1:-1:-1;;;34925:18:146;;;34918:50;34985:19;;4653:136:75;34594:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;35217:2:146;6699:156:75;;;35199:21:146;35256:2;35236:18;;;35229:30;-1:-1:-1;;;;;;;;;;;35275:18:146;;;35268:62;35366:34;35346:18;;;35339:62;-1:-1:-1;;;35417:19:146;;;35410:45;35472:19;;6699:156:75;35015:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;35704:2:146;7025:177:75;;;35686:21:146;35743:2;35723:18;;;35716:30;35782:34;35762:18;;;35755:62;35853:34;35833:18;;;35826:62;-1:-1:-1;;;35904:19:146;;;35897:44;35958:19;;7025:177:75;35502:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;36190:2:146;7387:164:75;;;36172:21:146;36229:2;36209:18;;;36202:30;-1:-1:-1;;;;;;;;;;;36248:18:146;;;36241:62;36339:34;36319:18;;;36312:62;-1:-1:-1;;;36390:19:146;;;36383:48;36448:19;;7387:164:75;35988:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;36680:2:146;7721:159:75;;;36662:21:146;36719:2;36699:18;;;36692:30;-1:-1:-1;;;;;;;;;;;36738:18:146;;;36731:62;36829:34;36809:18;;;36802:62;-1:-1:-1;;;36880:19:146;;;36873:41;36931:19;;7721:159:75;36478:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;37163:2:146;8042:142:75;;;37145:21:146;37202:2;37182:18;;;37175:30;-1:-1:-1;;;;;;;;;;;37221:18:146;;;37214:62;37312:34;37292:18;;;37285:62;-1:-1:-1;;;37363:19:146;;;37356:39;37412:19;;8042:142:75;36961:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;37644:2:146;8199:168:75;;;37626:21:146;37683:2;37663:18;;;37656:30;-1:-1:-1;;;;;;;;;;;37702:18:146;;;37695:62;37793:34;37773:18;;;37766:62;-1:-1:-1;;;37844:19:146;;;37837:43;37897:19;;8199:168:75;37442:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;38129:2:146;8617:153:75;;;38111:21:146;38168:2;38148:18;;;38141:30;-1:-1:-1;;;;;;;;;;;38187:18:146;;;38180:62;38278:34;38258:18;;;38251:62;-1:-1:-1;;;38329:19:146;;;38322:41;38380:19;;8617:153:75;37927:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;38612:2:146;8935:161:75;;;38594:21:146;38651:2;38631:18;;;38624:30;-1:-1:-1;;;;;;;;;;;38670:18:146;;;38663:62;38761:34;38741:18;;;38734:62;-1:-1:-1;;;38812:19:146;;;38805:44;38866:19;;8935:161:75;38410:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;39098:2:146;9266:157:75;;;39080:21:146;39137:2;39117:18;;;39110:30;-1:-1:-1;;;;;;;;;;;39156:18:146;;;39149:62;39247:34;39227:18;;;39220:62;-1:-1:-1;;;39298:19:146;;;39291:39;39347:19;;9266:157:75;38896:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;39579:2:146;9588:141:75;;;39561:21:146;39618:2;39598:18;;;39591:30;-1:-1:-1;;;;;;;;;;;39637:18:146;;;39630:62;39728:34;39708:18;;;39701:62;-1:-1:-1;;;39779:19:146;;;39772:37;39826:19;;9588:141:75;39377:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;40058:2:146;9744:168:75;;;40040:21:146;40097:2;40077:18;;;40070:30;-1:-1:-1;;;;;;;;;;;40116:18:146;;;40109:62;40207:34;40187:18;;;40180:62;-1:-1:-1;;;40258:19:146;;;40251:41;40309:19;;9744:168:75;39856:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;32398:2:146;989:63:74;;;32380:21:146;32437:2;32417:18;;;32410:30;-1:-1:-1;;;32456:18:146;;;32449:47;32513:18;;989:63:74;32196:341:146;14:171;81:20;;-1:-1:-1;;;;;130:30:146;;120:41;;110:69;;175:1;172;165:12;110:69;14:171;;;:::o;190:184::-;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:146;;-1:-1:-1;;;;;1222:30:146;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:146;;-1:-1:-1;;;;;1586:30:146;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:146;1991:40;;-1:-1:-1;;;;;2046:34:146;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:146:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:146;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:146;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:146:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:146;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:146;-1:-1:-1;3373:2:146;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:146;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:146;-1:-1:-1;3615:2:146;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:146;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:146;-1:-1:-1;3873:2:146;3858:18;;3845:32;;-1:-1:-1;3920:3:146;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:146;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:146;-1:-1:-1;4176:3:146;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:146;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:146;;4362:180;-1:-1:-1;4362:180:146:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:146;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:146;-1:-1:-1;6516:2:146;6501:18;;6488:32;;-1:-1:-1;6532:16:146;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:146;-1:-1:-1;6779:2:146;6764:18;;6751:32;;-1:-1:-1;6795:16:146;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:146;;-1:-1:-1;5840:1155:146;;;;6837:98;;-1:-1:-1;;;5840:1155:146:o;7587:118::-;7673:5;7666:13;7659:21;7652:5;7649:32;7639:60;;7695:1;7692;7685:12;7710:757;7809:6;7817;7825;7833;7841;7894:3;7882:9;7873:7;7869:23;7865:33;7862:53;;;7911:1;7908;7901:12;7862:53;7950:9;7937:23;8000:6;7993:5;7989:18;7982:5;7979:29;7969:57;;8022:1;8019;8012:12;7969:57;8045:5;-1:-1:-1;8069:37:146;8102:2;8087:18;;8069:37;:::i;:::-;8059:47;;8153:2;8142:9;8138:18;8125:32;8115:42;;8208:2;8197:9;8193:18;8180:32;-1:-1:-1;;;;;8227:6:146;8224:30;8221:50;;;8267:1;8264;8257:12;8221:50;8290:49;8331:7;8322:6;8311:9;8307:22;8290:49;:::i;:::-;8280:59;;;8391:3;8380:9;8376:19;8363:33;8405:30;8427:7;8405:30;:::i;:::-;8454:7;8444:17;;;7710:757;;;;;;;;:::o;8472:256::-;8538:6;8546;8599:2;8587:9;8578:7;8574:23;8570:32;8567:52;;;8615:1;8612;8605:12;8567:52;8638:28;8656:9;8638:28;:::i;:::-;8628:38;;8685:37;8718:2;8707:9;8703:18;8685:37;:::i;:::-;8675:47;;8472:256;;;;;:::o;8939:184::-;9009:6;9062:2;9050:9;9041:7;9037:23;9033:32;9030:52;;;9078:1;9075;9068:12;9030:52;-1:-1:-1;9101:16:146;;8939:184;-1:-1:-1;8939:184:146:o;9834:934::-;9970:9;-1:-1:-1;;;;;10045:2:146;10037:6;10034:14;10031:40;;;10051:18;;:::i;:::-;10097:6;10094:1;10090:14;10123:4;10147:28;10171:2;10167;10163:11;10147:28;:::i;:::-;10209:19;;;10279:14;;;;10244:12;;;;10316:14;10305:26;;10302:46;;;10344:1;10341;10334:12;10302:46;10368:5;10382:353;10398:6;10393:3;10390:15;10382:353;;;10484:3;10471:17;10520:2;10507:11;10504:19;10501:109;;;10564:1;10593:2;10589;10582:14;10501:109;10635:57;10677:14;10663:11;10656:5;10652:23;10635:57;:::i;:::-;10623:70;;-1:-1:-1;10713:12:146;;;;10415;;10382:353;;;-1:-1:-1;10757:5:146;9834:934;-1:-1:-1;;;;;;;9834:934:146:o;12200:250::-;12285:1;12295:113;12309:6;12306:1;12303:13;12295:113;;;12385:11;;;12379:18;12366:11;;;12359:39;12331:2;12324:10;12295:113;;;-1:-1:-1;;12442:1:146;12424:16;;12417:27;12200:250::o;12455:270::-;12496:3;12534:5;12528:12;12561:6;12556:3;12549:19;12577:76;12646:6;12639:4;12634:3;12630:14;12623:4;12616:5;12612:16;12577:76;:::i;:::-;12707:2;12686:15;-1:-1:-1;;12682:29:146;12673:39;;;;12714:4;12669:50;;12455:270;-1:-1:-1;;12455:270:146:o;12730:298::-;12899:2;12888:9;12881:21;12862:4;12919:44;12959:2;12948:9;12944:18;12936:6;12919:44;:::i;:::-;12911:52;;13013:6;13006:14;12999:22;12994:2;12983:9;12979:18;12972:50;12730:298;;;;;:::o;13393:271::-;13576:6;13568;13563:3;13550:33;13532:3;13602:16;;13627:13;;;13602:16;13393:271;-1:-1:-1;13393:271:146:o;15484:245::-;15551:6;15604:2;15592:9;15583:7;15579:23;15575:32;15572:52;;;15620:1;15617;15610:12;15572:52;15652:9;15646:16;15671:28;15693:5;15671:28;:::i;16988:127::-;17049:10;17044:3;17040:20;17037:1;17030:31;17080:4;17077:1;17070:15;17104:4;17101:1;17094:15;17120:128;17187:9;;;17208:11;;;17205:37;;;17222:18;;:::i;17861:127::-;17922:10;17917:3;17913:20;17910:1;17903:31;17953:4;17950:1;17943:15;17977:4;17974:1;17967:15;17993:120;18033:1;18059;18049:35;;18064:18;;:::i;:::-;-1:-1:-1;18098:9:146;;17993:120::o;18118:168::-;18158:7;18224:1;18220;18216:6;18212:14;18209:1;18206:21;18201:1;18194:9;18187:17;18183:45;18180:71;;;18231:18;;:::i;:::-;-1:-1:-1;18271:9:146;;18118:168::o;18291:125::-;18356:9;;;18377:10;;;18374:36;;;18390:18;;:::i;18421:183::-;-1:-1:-1;;;;;18540:10:146;;;18528;;;18524:27;;18563:12;;;18560:38;;;18578:18;;:::i;:::-;18560:38;18421:183;;;;:::o;18609:112::-;18641:1;18667;18657:35;;18672:18;;:::i;:::-;-1:-1:-1;18706:9:146;;18609:112::o;19085:127::-;19146:10;19141:3;19137:20;19134:1;19127:31;19177:4;19174:1;19167:15;19201:4;19198:1;19191:15;21502:400;21715:10;21703:23;;21685:42;;-1:-1:-1;;;;;21763:32:146;;21758:2;21743:18;;21736:60;21832:2;21827;21812:18;;21805:30;;;-1:-1:-1;;21852:44:146;;21877:18;;21869:6;21852:44;:::i;21907:287::-;22036:3;22074:6;22068:13;22090:66;22149:6;22144:3;22137:4;22129:6;22125:17;22090:66;:::i;:::-;22172:16;;;;;21907:287;-1:-1:-1;;21907:287:146:o;22199:290::-;22268:6;22321:2;22309:9;22300:7;22296:23;22292:32;22289:52;;;22337:1;22334;22327:12;22289:52;22363:16;;-1:-1:-1;;;;;;22408:32:146;;22398:43;;22388:71;;22455:1;22452;22445:12;26416:157;26446:1;26480:4;26477:1;26473:12;26504:3;26494:37;;26511:18;;:::i;:::-;26563:3;26556:4;26553:1;26549:12;26545:22;26540:27;;;26416:157;;;;:::o;26578:151::-;26668:4;26661:12;;;26647;;;26643:31;;26686:14;;26683:40;;;26703:18;;:::i;29270:135::-;29309:3;29330:17;;;29327:43;;29350:18;;:::i;:::-;-1:-1:-1;29397:1:146;29386:13;;29270:135::o;31370:478::-;31572:2;31554:21;;;31611:2;31591:18;;;31584:30;31650:34;31645:2;31630:18;;31623:62;31721:34;31716:2;31701:18;;31694:62;-1:-1:-1;;;31787:3:146;31772:19;;31765:41;31838:3;31823:19;;31370:478::o;31853:338::-;32055:2;32037:21;;;32094:2;32074:18;;;32067:30;-1:-1:-1;;;32128:2:146;32113:18;;32106:44;32182:2;32167:18;;31853:338::o;32542:422::-;32631:1;32674:5;32631:1;32688:270;32709:7;32699:8;32696:21;32688:270;;;32768:4;32764:1;32760:6;32756:17;32750:4;32747:27;32744:53;;;32777:18;;:::i;:::-;32827:7;32817:8;32813:22;32810:55;;;32847:16;;;;32810:55;32926:22;;;;32886:15;;;;32688:270;;;32692:3;32542:422;;;;;:::o;32969:806::-;33018:5;33048:8;33038:80;;-1:-1:-1;33089:1:146;33103:5;;33038:80;33137:4;33127:76;;-1:-1:-1;33174:1:146;33188:5;;33127:76;33219:4;33237:1;33232:59;;;;33305:1;33300:130;;;;33212:218;;33232:59;33262:1;33253:10;;33276:5;;;33300:130;33337:3;33327:8;33324:17;33321:43;;;33344:18;;:::i;:::-;-1:-1:-1;;33400:1:146;33386:16;;33415:5;;33212:218;;33514:2;33504:8;33501:16;33495:3;33489:4;33486:13;33482:36;33476:2;33466:8;33463:16;33458:2;33452:4;33449:12;33445:35;33442:77;33439:159;;;-1:-1:-1;33551:19:146;;;33583:5;;33439:159;33630:34;33655:8;33649:4;33630:34;:::i;:::-;33700:6;33696:1;33692:6;33688:19;33679:7;33676:32;33673:58;;;33711:18;;:::i;:::-;33749:20;;32969:806;-1:-1:-1;;;32969:806:146:o;33780:131::-;33840:5;33869:36;33896:8;33890:4;33869:36;:::i", - "linkReferences": { - "src/libraries/BeaconChainForks.sol": { - "BeaconChainForks": [ - { - "start": 4177, - "length": 20 - } - ] - } - } + "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b6101256101133660046135b2565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b6101463660046135cd565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e61017936600461372d565b6102f7565b005b6101a361018e36600461382a565b60076020526000908152604090205460ff1681565b60405161012f9190613859565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f23660046135cd565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d6102333660046135cd565b6004602052600090815260409020546001600160a01b031681565b61017e61025c366004613881565b6105ca565b61012561026f36600461382a565b60096020526000908152604090205481565b61017e6108ed565b61029c61029736600461382a565b610906565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613939565b610940565b610125607881565b6102ff6109a7565b60008061030c8b8b610a00565b9150915061031d8260400151610c6a565b61032a8260400151610d9c565b6000808e8e81019061033c91906139be565b9150915061034e828560400151610df8565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd91906139f1565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104728b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890611031565b9050806104c15760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105268787906104d79190613a0a565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261123b565b905081811461056f5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105b182828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115ee92505050565b50506105bd6001603355565b5050505050505050505050565b6105d26109a7565b6000806105df8888610a00565b915091506105f08260400151610c6a565b6105fd8260400151610d9c565b61060b898360400151610df8565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107c25760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072191906139f1565b905060008190036107745760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a8610781898b613a0a565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611795565b600083815260096020526040902081905592506107d49050565b60008181526009602052604090205491505b6000846020015160016040516020016108029291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084a82856108458a8c613a0a565b611891565b90508481146108935760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d882828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115ee92505050565b50506108e46001603355565b50505050505050565b6065546001600160a01b0316331461090457600080fd5b565b6003818154811061091657600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095757600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610998929190613add565b60405180910390a45050505050565b6002603354036109f95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7d85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061192d92505050565b905060008585604051610a91929190613b01565b60405190819003902090506000808281526007602052604090205460ff166002811115610ac057610ac0613843565b14610b0d5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b555760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9f5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610bea575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c5d5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610cd05760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190613b11565b610d995760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d995760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e5e5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb91906139f1565b600003610f3a5760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc491906139f1565b610fce9042613b44565b9050607881101561102c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b60008061103d836119f2565b9050600081856001600160401b03161061105857601b61105b565b60075b60ff169050600082866001600160401b03161061109757612000611088846001600160401b038916613b44565b6110929190613b6d565b6110ac565b6110ac6120006001600160401b038816613b6d565b90506000866001600160401b0316886001600160401b0316036110eb5750600b6110d881610200613b81565b6110e490610183613ba0565b9050611220565b6120006110f8888a613bb3565b6001600160401b03161161115a5750600b611114816020613b81565b61111f906006613ba0565b90506111366120006001600160401b038916613bda565b61114261200083613b81565b61114c9190613ba0565b90506110d881610200613b81565b876001600160401b0316876001600160401b031610156111d85750600b82611183826020613b81565b61118d9190613ba0565b905061119a816002613b81565b6111a5906000613ba0565b9050816111b6630100000083613b81565b6111c09190613ba0565b90506111cd816002613b81565b61111f906001613ba0565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f7400006044820152606401610420565b61122c8b828c8c611a32565b9b9a5050505050505050505050565b600080611249878a8a611a4c565b905060008160008151811061126057611260613bee565b01602001516001600160f81b03191690506000600160f81b8214806112925750600160f91b6001600160f81b03198316145b1561129f57506001611304565b600360fe1b6001600160f81b03198316106112bc57506000611304565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516113269190613b44565b81526020016113358585613ba0565b905290506000611344826122ec565b905080516004146113905760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b60006113b5826003815181106113a8576113a8613bee565b60200260200101516122ec565b905080518c106114075760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b600061141e828e815181106113a8576113a8613bee565b9050805160031461147c5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b60006114a18260008151811061149457611494613bee565b6020026020010151612511565b90508c6001600160a01b0316816001600160a01b0316146115145760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b600061152c836001815181106113a8576113a8613bee565b90508c6115528260008151811061154557611545613bee565b6020026020010151612585565b146115b55760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b6115d7818d815181106115ca576115ca613bee565b602002602001015161258c565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161161d93929190613c04565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b03168260405161166f9190613c34565b6000604051808303816000865af19150503d80600081146116ac576040519150601f19603f3d011682016040523d82523d6000602084013e6116b1565b606091505b50805191955093506000925060200390506116f3576000828060200190518101906116dc9190613c50565b6001600160e01b031916631dee306b60e11b149150505b8280156116fd5750805b15611720576000858152600760205260409020805460ff1916600217905561173a565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051611785929190613add565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117ff826040516020016117e991815260200190565b6040516020818303038152906040528786611a4c565b9050600081511161184b5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b600061185e6118598361268f565b6122ec565b9050805160041461186e57600080fd5b6118848160028151811061154557611545613bee565b93505050505b9392505050565b6000806118c0856040516020016118aa91815260200190565b6040516020818303038152906040528486611a4c565b905060008151116119135760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b61192461191f8261268f565b612585565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916119e1918a91906119dc908290613b44565b6126e2565b60c088015250949695505050505050565b60008163ffffffff16600103611a0c5750625ec000919050565b8163ffffffff16600503611a245750624f4000919050565b50600019919050565b919050565b600080611a408686866127ce565b90921495945050505050565b60606000845111611a975760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b6000611aa28461295d565b90506000611aaf86612a4b565b9050600084604051602001611ac691815260200190565b60405160208183030381529060405290506000805b8451811015612295576000858281518110611af857611af8613bee565b602002602001015190508451831115611b6a5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611c095780518051602091820120604051611bb892611b9292910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611c045760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611cff565b805151602011611c8f5780518051602091820120604051611c3392611b9292910190815260200190565b611c045760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611cff5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611d0b60106001613ba0565b81602001515103611eb85784518303611e50576000611d478260200151601081518110611d3a57611d3a613bee565b6020026020010151612b65565b90506000815111611dc05760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611dce9190613b44565b8314611e425760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b965061188a95505050505050565b6000858481518110611e6457611e64613bee565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611e8f57611e8f613bee565b60200260200101519050611ea281612c88565b9550611eaf600186613ba0565b94505050612282565b600281602001515103612229576000611ed082612cad565b9050600081600081518110611ee757611ee7613bee565b016020015160f81c90506000611efe600283613c7a565b611f09906002613c9c565b90506000611f1a848360ff16612cd1565b90506000611f288a89612cd1565b90506000611f368383612d07565b905080835114611fae5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611fc3575060ff85166003145b15612169578082511461203e5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b600061205a8860200151600181518110611d3a57611d3a613bee565b905060008151116120d35760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d516120e19190613b44565b89146121555760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c5061188a9b505050505050505050505050565b60ff8516158061217c575060ff85166001145b156121bb576121a8876020015160018151811061219b5761219b613bee565b6020026020010151612c88565b99506121b4818a613ba0565b985061221e565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b505050505050612282565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b508061228d81613cb5565b915050611adb565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b606060008060006122fc85612d86565b91945092509050600181600181111561231757612317613843565b1461238a5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516123968385613ba0565b146123fe5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816124175790505090506000845b87518110156125055760008061248a6040518060400160405280858d6000015161246e9190613b44565b8152602001858d602001516124839190613ba0565b9052612d86565b5091509150604051806040016040528083836124a69190613ba0565b8152602001848c602001516124bb9190613ba0565b8152508585815181106124d0576124d0613bee565b60209081029190910101526124e6600185613ba0565b93506124f28183613ba0565b6124fc9084613ba0565b92505050612444565b50815295945050505050565b805160009060010361252557506000919050565b81516015146125765760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b61257f82612585565b92915050565b600061257f825b60006021826000015111156125e35760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b60008060006125f185612d86565b91945092509050600081600181111561260c5761260c613843565b146126595760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600083866020015161266b9190613ba0565b805190915060208410156126855760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126c45760405162461bcd60e51b815260040161042090613cce565b50604080518082019091528151815260209182019181019190915290565b6060816126f081601f613ba0565b101561270e5760405162461bcd60e51b815260040161042090613d3e565b6127188284613ba0565b8451101561275c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b60608215801561277b57604051915060008252602082016040526127c5565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127b457805183526020928301920161279c565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127df9190613ba0565b6127ea906002613e4a565b116127f457600080fd5b8360005b846001146127c55761280b600286613bda565b6001036128aa57600284828151811061282657612826613bee565b602002602001015183604051602001612849929190918252602082015260400190565b60408051601f198184030181529082905261286391613c34565b602060405180830381855afa158015612880573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128a391906139f1565b915061293e565b6002828583815181106128bf576128bf613bee565b60200260200101516040516020016128e1929190918252602082015260400190565b60408051601f19818403018152908290526128fb91613c34565b602060405180830381855afa158015612918573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061293b91906139f1565b91505b612949600286613b6d565b94508061295581613cb5565b9150506127f8565b80516060906000816001600160401b0381111561297c5761297c613678565b6040519080825280602002602001820160405280156129c157816020015b604080518082019091526060808252602082015281526020019060019003908161299a5790505b50905060005b82811015612a435760405180604001604052808683815181106129ec576129ec613bee565b60200260200101518152602001612a1b878481518110612a0e57612a0e613bee565b6020026020010151613449565b815250828281518110612a3057612a30613bee565b60209081029190910101526001016129c7565b509392505050565b80516060906000612a5d826002613b81565b6001600160401b03811115612a7457612a74613678565b6040519080825280601f01601f191660200182016040528015612a9e576020820181803683370190505b5090506000805b83811015612b5b57858181518110612abf57612abf613bee565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612ae7836002613b81565b81518110612af757612af7613bee565b60200101906001600160f81b031916908160001a905350600f60f81b821683612b21836002613b81565b612b2c906001613ba0565b81518110612b3c57612b3c613bee565b60200101906001600160f81b031916908160001a905350600101612aa5565b5090949350505050565b60606000806000612b7585612d86565b919450925090506000816001811115612b9057612b90613843565b14612c035760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612c0d8284613ba0565b855114612c795760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b61192485602001518484613457565b60606020826000015110612ca457612c9f82612b65565b61257f565b61257f826134f7565b606061257f612ccc8360200151600081518110611d3a57611d3a613bee565b612a4b565b606082518210612cf0575060408051602081019091526000815261257f565b61188a8383848651612d029190613b44565b61350d565b60008060008351855110612d1c578351612d1f565b84515b90505b8082108015612d765750838281518110612d3e57612d3e613bee565b602001015160f81c60f81b6001600160f81b031916858381518110612d6557612d65613bee565b01602001516001600160f81b031916145b15612a4357816001019150612d22565b600080600080846000015111612dae5760405162461bcd60e51b815260040161042090613cce565b6020840151805160001a607f8111612dd3576000600160009450945094505050613442565b60b78111612f30576000612de8608083613b44565b905080876000015111612e685760405162461bcd60e51b815260206004820152604e6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612e955750600160ff1b6001600160f81b0319821610155b612f1d5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b5060019550935060009250613442915050565b60bf8111613171576000612f4560b783613b44565b905080876000015111612fc85760405162461bcd60e51b81526020600482015260516024820152600080516020613e5783398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b031916600081900361304f5760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c603781116130d25760405162461bcd60e51b81526020600482015260486024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b6130dc8184613ba0565b8951116131545760405162461bcd60e51b815260206004820152604c6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b61315f836001613ba0565b97509550600094506134429350505050565b60f7811161321357600061318660c083613b44565b9050808760000151116132025760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b600195509350849250613442915050565b600061322060f783613b44565b90508087600001511161329f5760405162461bcd60e51b815260206004820152604d6024820152600080516020613e5783398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b03191660008190036133245760405162461bcd60e51b81526020600482015260486024820152600080516020613e5783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116133a55760405162461bcd60e51b81526020600482015260466024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133af8184613ba0565b8951116134255760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613430836001613ba0565b97509550600194506134429350505050565b9193909250565b606061257f6118598361268f565b60606000826001600160401b0381111561347357613473613678565b6040519080825280601f01601f19166020018201604052801561349d576020820181803683370190505b509050826000036134af57905061188a565b60006134bb8587613ba0565b90506020820160005b858110156134dc5782810151828201526020016134c4565b858111156134eb576000868301525b50919695505050505050565b606061257f826020015160008460000151613457565b60608182601f0110156135325760405162461bcd60e51b815260040161042090613d3e565b8282840110156135545760405162461bcd60e51b815260040161042090613d3e565b8183018451101561275c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b0381168114611a2d57600080fd5b6000602082840312156135c457600080fd5b61188a8261359b565b6000602082840312156135df57600080fd5b813563ffffffff8116811461188a57600080fd5b60008083601f84011261360557600080fd5b5081356001600160401b0381111561361c57600080fd5b602083019150836020828501011115610c6357600080fd5b60008083601f84011261364657600080fd5b5081356001600160401b0381111561365d57600080fd5b6020830191508360208260051b8501011115610c6357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156136b6576136b6613678565b604052919050565b600082601f8301126136cf57600080fd5b81356001600160401b038111156136e8576136e8613678565b6136fb601f8201601f191660200161368e565b81815284602083860101111561371057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561374e57600080fd5b6001600160401b03808d35111561376457600080fd5b6137718e8e358f016135f3565b909c509a5060208d013581101561378757600080fd5b6137978e60208f01358f016135f3565b909a50985060408d01358110156137ad57600080fd5b6137bd8e60408f01358f01613634565b909850965060608d0135955060808d01358110156137da57600080fd5b6137ea8e60808f01358f01613634565b909550935060a08d013581101561380057600080fd5b506138118d60a08e01358e016136be565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561383c57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061387b57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561389c57600080fd5b6138a58861359b565b965060208801356001600160401b03808211156138c157600080fd5b6138cd8b838c016135f3565b909850965060408a01359150808211156138e657600080fd5b6138f28b838c01613634565b909650945060608a013591508082111561390b57600080fd5b506139188a828b01613634565b989b979a50959850939692959293505050565b8015158114610d9957600080fd5b600080600080600060a0868803121561395157600080fd5b853561ffff8116811461396357600080fd5b94506139716020870161359b565b93506040860135925060608601356001600160401b0381111561399357600080fd5b61399f888289016136be565b92505060808601356139b08161392b565b809150509295509295909350565b600080604083850312156139d157600080fd5b6139da8361359b565b91506139e86020840161359b565b90509250929050565b600060208284031215613a0357600080fd5b5051919050565b60006001600160401b0380841115613a2457613a24613678565b8360051b6020613a3581830161368e565b868152918501918181019036841115613a4d57600080fd5b865b84811015613a8157803586811115613a675760008081fd5b613a7336828b016136be565b845250918301918301613a4f565b50979650505050505050565b60005b83811015613aa8578181015183820152602001613a90565b50506000910152565b60008151808452613ac9816020860160208601613a8d565b601f01601f19169290920160200192915050565b604081526000613af06040830185613ab1565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613b2357600080fd5b815161188a8161392b565b634e487b7160e01b600052601160045260246000fd5b8181038181111561257f5761257f613b2e565b634e487b7160e01b600052601260045260246000fd5b600082613b7c57613b7c613b57565b500490565b6000816000190483118215151615613b9b57613b9b613b2e565b500290565b8082018082111561257f5761257f613b2e565b6001600160401b03828116828216039080821115613bd357613bd3613b2e565b5092915050565b600082613be957613be9613b57565b500690565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061192490830184613ab1565b60008251613c46818460208701613a8d565b9190910192915050565b600060208284031215613c6257600080fd5b81516001600160e01b03198116811461188a57600080fd5b600060ff831680613c8d57613c8d613b57565b8060ff84160691505092915050565b60ff828116828216039081111561257f5761257f613b2e565b600060018201613cc757613cc7613b2e565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613da1578160001904821115613d8757613d87613b2e565b80851615613d9457918102915b93841c9390800290613d6b565b509250929050565b600082613db85750600161257f565b81613dc55750600061257f565b8160018114613ddb5760028114613de557613e01565b600191505061257f565b60ff841115613df657613df6613b2e565b50506001821b61257f565b5060208310610133831016604e8410600b8410161715613e24575081810a61257f565b613e2e8383613d66565b8060001904821115613e4257613e42613b2e565b029392505050565b600061188a8383613da956fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220418e21fd21f00c03501eb83d3e8cf77d73d9b90e1d81aa2d267111b90aa70bf364736f6c63430008100033", + "sourceMap": "399:626:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:146;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:146;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:146;4866:1928:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:146;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:146;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:146;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:146;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;630:83:6;;;:::i;879:30:103:-;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:146;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:146;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:146;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:146;719:304:6;;;;;;:::i;:::-;;:::i;924:58:100:-;;973:9;924:58;;4866:1928;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:146;;5661:52:100;;::::1;7526:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;9330:2:146;5727:58:100::1;::::0;::::1;9312:21:146::0;9369:2;9349:18;;;9342:30;-1:-1:-1;;;9388:18:146;;;9381:51;9449:18;;5727:58:100::1;;;;;;;;;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;9680:2:146;5965:47:100::1;::::0;::::1;9662:21:146::0;9719:2;9699:18;;;9692:30;9758:29;9738:18;;;9731:57;9805:18;;5965:47:100::1;9478:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;10975:2:146;6648:67:100::1;::::0;::::1;10957:21:146::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:146;;;11026:51;11094:18;;6648:67:100::1;10773:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;11342:3:146;11320:16;;;;-1:-1:-1;;;;;;11316:43:146;2955:82:100;;::::1;11304:56:146::0;11415:3;11393:16;;;-1:-1:-1;;;;;;11389:51:146;11376:11;;;11369:72;11479:2;11475:15;-1:-1:-1;;11475:15:146;11457:12;;;11450:75;2955:82:100;;;;;;;;;11541:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:146;;3301:61:100;;::::1;7526:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;11766:2:146;3380:67:100::1;::::0;::::1;11748:21:146::0;11805:2;11785:18;;;11778:30;11844:33;11824:18;;;11817:61;11895:18;;3380:67:100::1;11564:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;12114:31:146;;;;12096:50;;12177:2;12162:18;;12155:34;12084:2;12069:18;;11924:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:146::0;3826:80:100;;;;;;;;;498:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10975:2:146;4090:31:100::1;::::0;::::1;10957:21:146::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:146;;;11026:51;11094:18;;4090:31:100::1;10773:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;630:83:6:-;697:8;;-1:-1:-1;;;;;697:8:6;683:10;:22;675:31;;;;;;630:83::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;719:304:6:-;931:7;;-1:-1:-1;;;;;931:7:6;917:10;:21;909:30;;;;;;988:8;980:6;-1:-1:-1;;;;;954:62:6;970:8;954:62;;;998:8;1008:7;954:62;;;;;;;:::i;:::-;;;;;;;;719:304;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;13235:2:146;2704:63:39;;;13217:21:146;13274:2;13254:18;;;13247:30;13313:33;13293:18;;;13286:61;13364:18;;2704:63:39;13033:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;13871:2:146;8369:35:100;;;13853:21:146;13910:2;13890:18;;;13883:30;13949:27;13929:18;;;13922:55;13994:18;;8369:35:100;13669:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;14225:2:146;8484:22:100;;;14207:21:146;14264:2;14244:18;;;14237:30;-1:-1:-1;;;14283:18:146;;;14276:42;14335:18;;8484:22:100;14023:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;14566:2:146;8569:24:100;;;14548:21:146;14605:2;14585:18;;;14578:30;-1:-1:-1;;;14624:18:146;;;14617:44;14678:18;;8569:24:100;14364:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;14909:2:146;8779:65:100;;;14891:21:146;14948:2;14928:18;;;14921:30;14987:34;14967:18;;;14960:62;15058:25;15038:18;;;15031:53;15101:19;;8779:65:100;14707:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;15333:2:146;6959:81:100;;;15315:21:146;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:146;;;15384:54;15455:18;;6959:81:100;15131:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;15936:2:146;7050:76:100;;;15918:21:146;15975:2;15955:18;;;15948:30;16014:31;15994:18;;;15987:59;16063:18;;7050:76:100;15734:353:146;7050:76:100;6880:253;:::o;7194:121::-;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;16294:2:146;7260:48:100;;;16276:21:146;16333:2;16313:18;;;16306:30;-1:-1:-1;;;16352:18:146;;;16345:49;16411:18;;7260:48:100;16092:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;15333:2:146;7471:81:100;;;15315:21:146;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:146;;;15384:54;15455:18;;7471:81:100;15131:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;7544:31:146;;7570:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;7499:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;16831:2:146;7562:86:100;;;16813:21:146;16870:2;16850:18;;;16843:30;16909:32;16889:18;;;16882:60;16959:18;;7562:86:100;16629:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;7544:31:146;;7698:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;7499:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;17455:2:146;7746:84:100;;;17437:21:146;17494:2;17474:18;;;17467:30;17533:34;17513:18;;;17506:62;-1:-1:-1;;;17584:18:146;;;17577:32;17626:19;;7746:84:100;17253:398:146;7746:84:100;7461:376;7385:452;;:::o;3094:1947:110:-;3330:4;3346:23;3372:46;3404:13;3372:31;:46::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;18723:2:146;4896:40:110;;;18705:21:146;18762:2;18742:18;;;18735:30;18801:32;18781:18;;;18774:60;18851:18;;4896:40:110;18521:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;19214:2:146;2652:38:111;;;19196:21:146;19253:2;19233:18;;;19226:30;19292;19272:18;;;19265:58;19340:18;;2652:38:111;19012:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;19571:2:146;3233:58:111;;;19553:21:146;19610:2;19590:18;;;19583:30;-1:-1:-1;;;19629:18:146;;;19622:52;19691:18;;3233:58:111;19369:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;19922:2:146;3450:58:111;;;19904:21:146;19961:2;19941:18;;;19934:30;20000:25;19980:18;;;19973:53;20043:18;;3450:58:111;19720:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;20274:2:146;3594:70:111;;;20256:21:146;20313:2;20293:18;;;20286:30;20352:34;20332:18;;;20325:62;-1:-1:-1;;;20403:18:146;;;20396:32;20445:19;;3594:70:111;20072:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;20677:2:146;3803:85:111;;;20659:21:146;20716:2;20696:18;;;20689:30;20755:34;20735:18;;;20728:62;-1:-1:-1;;;20806:18:146;;;20799:37;20853:19;;3803:85:111;20475:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;21085:2:146;4057:142:111;;;21067:21:146;21124:2;21104:18;;;21097:30;21163:34;21143:18;;;21136:62;-1:-1:-1;;;21214:18:146;;;21207:43;21267:19;;4057:142:111;20883:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;735:581:111:-;927:33;;-1:-1:-1;;22438:2:146;22434:15;;;22430:53;927:33:111;;;22418:66:146;872:7:111;;;;22500:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;22652:19:146;;22696:2;22687:12;;22523:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;22912:2:146;1072:58:111;;;22894:21:146;22951:2;22931:18;;;22924:30;-1:-1:-1;;;22970:18:146;;;22963:52;23032:18;;1072:58:111;22710:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;22652:19:146;;22696:2;22687:12;;22523:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;23263:2:146;601:65:111;;;23245:21:146;23302:2;23282:18;;;23275:30;23341;23321:18;;;23314:58;23389:18;;601:65:111;23061:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;56:776:107:-;125:7;240:13;:18;;257:1;240:18;236:590;;-1:-1:-1;383:7:107;;56:776;-1:-1:-1;56:776:107:o;236:590::-;411:13;:18;;428:1;411:18;407:419;;-1:-1:-1;619:7:107;;56:776;-1:-1:-1;56:776:107:o;407:419::-;-1:-1:-1;;;803:12:107;56:776;-1:-1:-1;56:776:107:o;407:419::-;56:776;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;23620:2:146;3101:49:77;;;23602:21:146;23659:2;23639:18;;;23632:30;-1:-1:-1;;;23678:18:146;;;23671:51;23739:18;;3101:49:77;23418:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;22652:19:146;;22696:2;22687:12;;22523:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;23970:2:146;3636:134:77;;;23952:21:146;24009:2;23989:18;;;23982:30;24048:34;24028:18;;;24021:62;-1:-1:-1;;;24099:18:146;;;24092:44;24153:19;;3636:134:77;23768:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;22652:19:146;;;22696:2;22687:12;;22523:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;24385:2:146;3893:176:77;;;24367:21:146;24424:2;24404:18;;;24397:30;24463:31;24443:18;;;24436:59;24512:18;;3893:176:77;24183:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;22652:19:146;;;22696:2;22687:12;;22523:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;24743:2:146;4222:186:77;;;24725:21:146;24782:2;24762:18;;;24755:30;24821:34;24801:18;;;24794:62;-1:-1:-1;;;24872:18:146;;;24865:37;24919:19;;4222:186:77;24541:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;25151:2:146;4509:156:77;;;25133:21:146;25190:2;25170:18;;;25163:30;25229:34;25209:18;;;25202:62;-1:-1:-1;;;25280:18:146;;;25273:36;25326:19;;4509:156:77;24949:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;25558:2:146;5384:158:77;;;25540:21:146;25597:2;25577:18;;;25570:30;25636:34;25616:18;;;25609:62;25707:29;25687:18;;;25680:57;25754:19;;5384:158:77;25356:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;25986:2:146;5626:162:77;;;25968:21:146;26025:2;26005:18;;;25998:30;26064:34;26044:18;;;26037:62;26135:28;26115:18;;;26108:56;26181:19;;5626:162:77;25784:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;26731:2:146;7009:171:77;;;26713:21:146;26770:2;26750:18;;;26743:30;26809:34;26789:18;;;26782:62;26880:28;26860:18;;;26853:56;26926:19;;7009:171:77;26529:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;27158:2:146;7843:185:77;;;27140:21:146;27197:2;27177:18;;;27170:30;27236:34;27216:18;;;27209:62;27307:31;27287:18;;;27280:59;27356:19;;7843:185:77;26956:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;27588:2:146;8463:156:77;;;27570:21:146;27627:2;27607:18;;;27600:30;27666:34;27646:18;;;27639:62;27737:27;27717:18;;;27710:55;27782:19;;8463:156:77;27386:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;28014:2:146;8703:160:77;;;27996:21:146;28053:2;28033:18;;;28026:30;28092:34;28072:18;;;28065:62;28163:26;28143:18;;;28136:54;28207:19;;8703:160:77;27812:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;28439:2:146;9439:60:77;;;28421:21:146;28478:2;28458:18;;;28451:30;28517:34;28497:18;;;28490:62;-1:-1:-1;;;28568:18:146;;;28561:48;28626:19;;9439:60:77;28237:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;28858:2:146;9556:50:77;;;28840:21:146;28897:2;28877:18;;;28870:30;28936:34;28916:18;;;28909:62;-1:-1:-1;;;28987:18:146;;;28980:38;29035:19;;9556:50:77;28656:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;29407:2:146;9641:47:77;;;29389:21:146;29446:2;29426:18;;;29419:30;29485:34;29465:18;;;29458:62;-1:-1:-1;;;29536:18:146;;;29529:35;29581:19;;9641:47:77;29205:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;29813:2:146;2161:136:75;;;29795:21:146;29852:2;29832:18;;;29825:30;29891:34;29871:18;;;29864:62;29962:26;29942:18;;;29935:54;30006:19;;2161:136:75;29611:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;30238:2:146;2308:134:75;;;30220:21:146;30277:2;30257:18;;;30250:30;30316:34;30296:18;;;30289:62;-1:-1:-1;;;30367:18:146;;;30360:48;30425:19;;2308:134:75;30036:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;30657:2:146;12579:55:75;;;30639:21:146;30696:2;30676:18;;;30669:30;30735:28;30715:18;;;30708:56;30781:18;;12579:55:75;30455:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;31012:2:146;11438:55:75;;;30994:21:146;31051:2;31031:18;;;31024:30;31090:28;31070:18;;;31063:56;31136:18;;11438:55:75;30810:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;31012:2:146;11598:72:75;;;30994:21:146;31051:2;31031:18;;;31024:30;31090:28;31070:18;;;31063:56;31136:18;;11598:72:75;30810:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;32193:2:146;409:63:108;;;32175:21:146;32232:2;32212:18;;;32205:30;-1:-1:-1;;;32251:18:146;;;32244:47;32308:18;;409:63:108;31991:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;33868:19:146;;;33912:2;33903:12;;33896:28;33949:2;33940:12;;33711:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;33868:19:146;;;33912:2;33903:12;;33896:28;33949:2;33940:12;;33711:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;34165:2:146;4505:137:75;;;34147:21:146;34204:2;34184:18;;;34177:30;34243:34;34223:18;;;34216:62;34314:27;34294:18;;;34287:55;34359:19;;4505:137:75;33963:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;34591:2:146;4653:136:75;;;34573:21:146;34630:2;34610:18;;;34603:30;34669:34;34649:18;;;34642:62;-1:-1:-1;;;34720:18:146;;;34713:50;34780:19;;4653:136:75;34389:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;35012:2:146;6699:156:75;;;34994:21:146;35051:2;35031:18;;;35024:30;-1:-1:-1;;;;;;;;;;;35070:18:146;;;35063:62;35161:34;35141:18;;;35134:62;-1:-1:-1;;;35212:19:146;;;35205:45;35267:19;;6699:156:75;34810:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;35499:2:146;7025:177:75;;;35481:21:146;35538:2;35518:18;;;35511:30;35577:34;35557:18;;;35550:62;35648:34;35628:18;;;35621:62;-1:-1:-1;;;35699:19:146;;;35692:44;35753:19;;7025:177:75;35297:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;35985:2:146;7387:164:75;;;35967:21:146;36024:2;36004:18;;;35997:30;-1:-1:-1;;;;;;;;;;;36043:18:146;;;36036:62;36134:34;36114:18;;;36107:62;-1:-1:-1;;;36185:19:146;;;36178:48;36243:19;;7387:164:75;35783:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;36475:2:146;7721:159:75;;;36457:21:146;36514:2;36494:18;;;36487:30;-1:-1:-1;;;;;;;;;;;36533:18:146;;;36526:62;36624:34;36604:18;;;36597:62;-1:-1:-1;;;36675:19:146;;;36668:41;36726:19;;7721:159:75;36273:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;36958:2:146;8042:142:75;;;36940:21:146;36997:2;36977:18;;;36970:30;-1:-1:-1;;;;;;;;;;;37016:18:146;;;37009:62;37107:34;37087:18;;;37080:62;-1:-1:-1;;;37158:19:146;;;37151:39;37207:19;;8042:142:75;36756:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;37439:2:146;8199:168:75;;;37421:21:146;37478:2;37458:18;;;37451:30;-1:-1:-1;;;;;;;;;;;37497:18:146;;;37490:62;37588:34;37568:18;;;37561:62;-1:-1:-1;;;37639:19:146;;;37632:43;37692:19;;8199:168:75;37237:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;37924:2:146;8617:153:75;;;37906:21:146;37963:2;37943:18;;;37936:30;-1:-1:-1;;;;;;;;;;;37982:18:146;;;37975:62;38073:34;38053:18;;;38046:62;-1:-1:-1;;;38124:19:146;;;38117:41;38175:19;;8617:153:75;37722:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;38407:2:146;8935:161:75;;;38389:21:146;38446:2;38426:18;;;38419:30;-1:-1:-1;;;;;;;;;;;38465:18:146;;;38458:62;38556:34;38536:18;;;38529:62;-1:-1:-1;;;38607:19:146;;;38600:44;38661:19;;8935:161:75;38205:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;38893:2:146;9266:157:75;;;38875:21:146;38932:2;38912:18;;;38905:30;-1:-1:-1;;;;;;;;;;;38951:18:146;;;38944:62;39042:34;39022:18;;;39015:62;-1:-1:-1;;;39093:19:146;;;39086:39;39142:19;;9266:157:75;38691:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;39374:2:146;9588:141:75;;;39356:21:146;39413:2;39393:18;;;39386:30;-1:-1:-1;;;;;;;;;;;39432:18:146;;;39425:62;39523:34;39503:18;;;39496:62;-1:-1:-1;;;39574:19:146;;;39567:37;39621:19;;9588:141:75;39172:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;39853:2:146;9744:168:75;;;39835:21:146;39892:2;39872:18;;;39865:30;-1:-1:-1;;;;;;;;;;;39911:18:146;;;39904:62;40002:34;39982:18;;;39975:62;-1:-1:-1;;;40053:19:146;;;40046:41;40104:19;;9744:168:75;39651:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;32193:2:146;989:63:74;;;32175:21:146;32232:2;32212:18;;;32205:30;-1:-1:-1;;;32251:18:146;;;32244:47;32308:18;;989:63:74;31991:341:146;14:171;81:20;;-1:-1:-1;;;;;130:30:146;;120:41;;110:69;;175:1;172;165:12;190:184;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:146;;-1:-1:-1;;;;;1222:30:146;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:146;;-1:-1:-1;;;;;1586:30:146;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:146;1991:40;;-1:-1:-1;;;;;2046:34:146;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:146:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:146;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:146;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:146:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:146;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:146;-1:-1:-1;3373:2:146;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:146;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:146;-1:-1:-1;3615:2:146;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:146;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:146;-1:-1:-1;3873:2:146;3858:18;;3845:32;;-1:-1:-1;3920:3:146;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:146;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:146;-1:-1:-1;4176:3:146;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:146;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:146;;4362:180;-1:-1:-1;4362:180:146:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:146;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:146;-1:-1:-1;6516:2:146;6501:18;;6488:32;;-1:-1:-1;6532:16:146;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:146;-1:-1:-1;6779:2:146;6764:18;;6751:32;;-1:-1:-1;6795:16:146;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:146;;-1:-1:-1;5840:1155:146;;;;6837:98;;-1:-1:-1;;;5840:1155:146:o;7587:118::-;7673:5;7666:13;7659:21;7652:5;7649:32;7639:60;;7695:1;7692;7685:12;7710:757;7809:6;7817;7825;7833;7841;7894:3;7882:9;7873:7;7869:23;7865:33;7862:53;;;7911:1;7908;7901:12;7862:53;7950:9;7937:23;8000:6;7993:5;7989:18;7982:5;7979:29;7969:57;;8022:1;8019;8012:12;7969:57;8045:5;-1:-1:-1;8069:37:146;8102:2;8087:18;;8069:37;:::i;:::-;8059:47;;8153:2;8142:9;8138:18;8125:32;8115:42;;8208:2;8197:9;8193:18;8180:32;-1:-1:-1;;;;;8227:6:146;8224:30;8221:50;;;8267:1;8264;8257:12;8221:50;8290:49;8331:7;8322:6;8311:9;8307:22;8290:49;:::i;:::-;8280:59;;;8391:3;8380:9;8376:19;8363:33;8405:30;8427:7;8405:30;:::i;:::-;8454:7;8444:17;;;7710:757;;;;;;;;:::o;8472:256::-;8538:6;8546;8599:2;8587:9;8578:7;8574:23;8570:32;8567:52;;;8615:1;8612;8605:12;8567:52;8638:28;8656:9;8638:28;:::i;:::-;8628:38;;8685:37;8718:2;8707:9;8703:18;8685:37;:::i;:::-;8675:47;;8472:256;;;;;:::o;8939:184::-;9009:6;9062:2;9050:9;9041:7;9037:23;9033:32;9030:52;;;9078:1;9075;9068:12;9030:52;-1:-1:-1;9101:16:146;;8939:184;-1:-1:-1;8939:184:146:o;9834:934::-;9970:9;-1:-1:-1;;;;;10045:2:146;10037:6;10034:14;10031:40;;;10051:18;;:::i;:::-;10097:6;10094:1;10090:14;10123:4;10147:28;10171:2;10167;10163:11;10147:28;:::i;:::-;10209:19;;;10279:14;;;;10244:12;;;;10316:14;10305:26;;10302:46;;;10344:1;10341;10334:12;10302:46;10368:5;10382:353;10398:6;10393:3;10390:15;10382:353;;;10484:3;10471:17;10520:2;10507:11;10504:19;10501:109;;;10564:1;10593:2;10589;10582:14;10501:109;10635:57;10677:14;10663:11;10656:5;10652:23;10635:57;:::i;:::-;10623:70;;-1:-1:-1;10713:12:146;;;;10415;;10382:353;;;-1:-1:-1;10757:5:146;9834:934;-1:-1:-1;;;;;;;9834:934:146:o;12200:250::-;12285:1;12295:113;12309:6;12306:1;12303:13;12295:113;;;12385:11;;;12379:18;12366:11;;;12359:39;12331:2;12324:10;12295:113;;;-1:-1:-1;;12442:1:146;12424:16;;12417:27;12200:250::o;12455:270::-;12496:3;12534:5;12528:12;12561:6;12556:3;12549:19;12577:76;12646:6;12639:4;12634:3;12630:14;12623:4;12616:5;12612:16;12577:76;:::i;:::-;12707:2;12686:15;-1:-1:-1;;12682:29:146;12673:39;;;;12714:4;12669:50;;12455:270;-1:-1:-1;;12455:270:146:o;12730:298::-;12899:2;12888:9;12881:21;12862:4;12919:44;12959:2;12948:9;12944:18;12936:6;12919:44;:::i;:::-;12911:52;;13013:6;13006:14;12999:22;12994:2;12983:9;12979:18;12972:50;12730:298;;;;;:::o;13393:271::-;13576:6;13568;13563:3;13550:33;13532:3;13602:16;;13627:13;;;13602:16;13393:271;-1:-1:-1;13393:271:146:o;15484:245::-;15551:6;15604:2;15592:9;15583:7;15579:23;15575:32;15572:52;;;15620:1;15617;15610:12;15572:52;15652:9;15646:16;15671:28;15693:5;15671:28;:::i;16988:127::-;17049:10;17044:3;17040:20;17037:1;17030:31;17080:4;17077:1;17070:15;17104:4;17101:1;17094:15;17120:128;17187:9;;;17208:11;;;17205:37;;;17222:18;;:::i;17656:127::-;17717:10;17712:3;17708:20;17705:1;17698:31;17748:4;17745:1;17738:15;17772:4;17769:1;17762:15;17788:120;17828:1;17854;17844:35;;17859:18;;:::i;:::-;-1:-1:-1;17893:9:146;;17788:120::o;17913:168::-;17953:7;18019:1;18015;18011:6;18007:14;18004:1;18001:21;17996:1;17989:9;17982:17;17978:45;17975:71;;;18026:18;;:::i;:::-;-1:-1:-1;18066:9:146;;17913:168::o;18086:125::-;18151:9;;;18172:10;;;18169:36;;;18185:18;;:::i;18216:183::-;-1:-1:-1;;;;;18335:10:146;;;18323;;;18319:27;;18358:12;;;18355:38;;;18373:18;;:::i;:::-;18355:38;18216:183;;;;:::o;18404:112::-;18436:1;18462;18452:35;;18467:18;;:::i;:::-;-1:-1:-1;18501:9:146;;18404:112::o;18880:127::-;18941:10;18936:3;18932:20;18929:1;18922:31;18972:4;18969:1;18962:15;18996:4;18993:1;18986:15;21297:400;21510:10;21498:23;;21480:42;;-1:-1:-1;;;;;21558:32:146;;21553:2;21538:18;;21531:60;21627:2;21622;21607:18;;21600:30;;;-1:-1:-1;;21647:44:146;;21672:18;;21664:6;21647:44;:::i;21702:287::-;21831:3;21869:6;21863:13;21885:66;21944:6;21939:3;21932:4;21924:6;21920:17;21885:66;:::i;:::-;21967:16;;;;;21702:287;-1:-1:-1;;21702:287:146:o;21994:290::-;22063:6;22116:2;22104:9;22095:7;22091:23;22087:32;22084:52;;;22132:1;22129;22122:12;22084:52;22158:16;;-1:-1:-1;;;;;;22203:32:146;;22193:43;;22183:71;;22250:1;22247;22240:12;26211:157;26241:1;26275:4;26272:1;26268:12;26299:3;26289:37;;26306:18;;:::i;:::-;26358:3;26351:4;26348:1;26344:12;26340:22;26335:27;;;26211:157;;;;:::o;26373:151::-;26463:4;26456:12;;;26442;;;26438:31;;26481:14;;26478:40;;;26498:18;;:::i;29065:135::-;29104:3;29125:17;;;29122:43;;29145:18;;:::i;:::-;-1:-1:-1;29192:1:146;29181:13;;29065:135::o;31165:478::-;31367:2;31349:21;;;31406:2;31386:18;;;31379:30;31445:34;31440:2;31425:18;;31418:62;31516:34;31511:2;31496:18;;31489:62;-1:-1:-1;;;31582:3:146;31567:19;;31560:41;31633:3;31618:19;;31165:478::o;31648:338::-;31850:2;31832:21;;;31889:2;31869:18;;;31862:30;-1:-1:-1;;;31923:2:146;31908:18;;31901:44;31977:2;31962:18;;31648:338::o;32337:422::-;32426:1;32469:5;32426:1;32483:270;32504:7;32494:8;32491:21;32483:270;;;32563:4;32559:1;32555:6;32551:17;32545:4;32542:27;32539:53;;;32572:18;;:::i;:::-;32622:7;32612:8;32608:22;32605:55;;;32642:16;;;;32605:55;32721:22;;;;32681:15;;;;32483:270;;;32487:3;32337:422;;;;;:::o;32764:806::-;32813:5;32843:8;32833:80;;-1:-1:-1;32884:1:146;32898:5;;32833:80;32932:4;32922:76;;-1:-1:-1;32969:1:146;32983:5;;32922:76;33014:4;33032:1;33027:59;;;;33100:1;33095:130;;;;33007:218;;33027:59;33057:1;33048:10;;33071:5;;;33095:130;33132:3;33122:8;33119:17;33116:43;;;33139:18;;:::i;:::-;-1:-1:-1;;33195:1:146;33181:16;;33210:5;;33007:218;;33309:2;33299:8;33296:16;33290:3;33284:4;33281:13;33277:36;33271:2;33261:8;33258:16;33253:2;33247:4;33244:12;33240:35;33237:77;33234:159;;;-1:-1:-1;33346:19:146;;;33378:5;;33234:159;33425:34;33450:8;33444:4;33425:34;:::i;:::-;33495:6;33491:1;33487:6;33483:19;33474:7;33471:32;33468:58;;;33506:18;;:::i;:::-;33544:20;;32764:806;-1:-1:-1;;;32764:806:146:o;33575:131::-;33635:5;33664:36;33691:8;33685:4;33664:36;:::i", + "linkReferences": {} }, "methodIdentifiers": { "MIN_LIGHT_CLIENT_DELAY()": "e4407b15", @@ -422,7 +404,7 @@ "storageRootCache(bytes32)": "8d080d1d", "version()": "54fd4d50" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_chainId\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"emitFakeExecutedMessageEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"title\":\"DrillTelepathy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillTelepathyRouter.sol\":\"DrillTelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillTelepathyRouter.sol\":{\"keccak256\":\"0x8fd77f1ceb7b9b93a7ab6cdd7968dcec008dbe3e4c95a16beda0229dfcd877b1\",\"urls\":[\"bzz-raw://037194f122d0feb30b2b15795d6f15fd44fbff86a063784c2b6eb974f2055a66\",\"dweb:/ipfs/QmfDEUKppow33XTcGSyHGxj62yE31HCSwQJYky5RdCnWWp\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_chainId\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"emitFakeExecutedMessageEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"title\":\"DrillTelepathy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillTelepathyRouter.sol\":\"DrillTelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillTelepathyRouter.sol\":{\"keccak256\":\"0x8fd77f1ceb7b9b93a7ab6cdd7968dcec008dbe3e4c95a16beda0229dfcd877b1\",\"urls\":[\"bzz-raw://037194f122d0feb30b2b15795d6f15fd44fbff86a063784c2b6eb974f2055a66\",\"dweb:/ipfs/QmfDEUKppow33XTcGSyHGxj62yE31HCSwQJYky5RdCnWWp\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -1076,10 +1058,10 @@ "license": null }, "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", "urls": [ - "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", - "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", + "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" ], "license": null }, diff --git a/out/LightClient.sol/LightClient.json b/out/LightClient.sol/LightClient.json index 95f6e24..fa79605 100644 --- a/out/LightClient.sol/LightClient.json +++ b/out/LightClient.sol/LightClient.json @@ -497,12 +497,12 @@ } ], "bytecode": { - "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004b2338038062004b23833981016040819052620000459162000106565b608088905260a087905260c086905260e085905263ffffffff82166101005261ffff81166101205262000079848462000087565b50505050505050506200018d565b60008281526005602052604090205415801590620000b357506000828152600560205260409020548114155b15620000c75750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600080600080600080600080610100898b0312156200012457600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015163ffffffff811681146200016357600080fd5b60e08a015190925061ffff811681146200017c57600080fd5b809150509295985092959890939650565b60805160a05160c05160e051610100516101205161492a620001f9600039600081816102af01526107ce015260006101d001526000818161010a01526107f90152600081816101610152610b960152600081816102fc0152610bba01526000610255015261492a6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea2646970667358221220d0fb90cfc7c42934a14de0dc0c218013c6dddea64c086a943d6a07b8973dbc7b64736f6c63430008100033", + "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004b2338038062004b23833981016040819052620000459162000106565b608088905260a087905260c086905260e085905263ffffffff82166101005261ffff81166101205262000079848462000087565b50505050505050506200018d565b60008281526005602052604090205415801590620000b357506000828152600560205260409020548114155b15620000c75750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600080600080600080600080610100898b0312156200012457600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015163ffffffff811681146200016357600080fd5b60e08a015190925061ffff811681146200017c57600080fd5b809150509295985092959890939650565b60805160a05160c05160e051610100516101205161492a620001f9600039600081816102af01526107ce015260006101d001526000818161010a01526107f90152600081816101610152610b960152600081816102fc0152610bba01526000610255015261492a6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea26469706673582212209f84a49f056fdb36cb945939f807bac03eb8ff718511bf0c393d9a79efa23c4e64736f6c63430008100033", "sourceMap": "953:8548:114:-:0;;;1711:29;;;-1:-1:-1;;1711:29:114;1736:4;1711:29;;;;;1824:23;2573:643;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2873:47;;;;2930:26;;;;2966:33;;;;3009;;;;3052:31;;;;;3093:38;;;;;3141:68;3166:19;3187:21;3141:24;:68::i;:::-;2573:643;;;;;;;;953:8548;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;14:812:146:-;145:6;153;161;169;177;185;193;201;254:3;242:9;233:7;229:23;225:33;222:53;;;271:1;268;261:12;222:53;300:9;294:16;284:26;;350:2;339:9;335:18;329:25;319:35;;394:2;383:9;379:18;373:25;363:35;;438:2;427:9;423:18;417:25;407:35;;482:3;471:9;467:19;461:26;451:36;;527:3;516:9;512:19;506:26;496:36;;575:3;564:9;560:19;554:26;620:10;613:5;609:22;602:5;599:33;589:61;;646:1;643;636:12;589:61;719:3;704:19;;698:26;669:5;;-1:-1:-1;768:6:146;755:20;;743:33;;733:61;;790:1;787;780:12;733:61;813:7;803:17;;;14:812;;;;;;;;;;;:::o;:::-;953:8548:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea2646970667358221220d0fb90cfc7c42934a14de0dc0c218013c6dddea64c086a943d6a07b8973dbc7b64736f6c63430008100033", + "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea26469706673582212209f84a49f056fdb36cb945939f807bac03eb8ff718511bf0c393d9a79efa23c4e64736f6c63430008100033", "sourceMap": "953:8548:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:41;;;;;;;;160:25:146;;;148:2;133:18;1170:41:114;;;;;;;;1711:29;;;;;;;;;;;;361:14:146;;354:22;336:41;;324:2;309:18;1711:29:114;196:187:146;1123:41:114;;;;;4310:457;;;;;;:::i;:::-;;:::i;:::-;;1918:42;;;;;;:::i;:::-;;;;;;;;;;;;;;26374:712:115;;;;;;:::i;:::-;;:::i;1217:39:114:-;;;;;;;;5564:10:146;5552:23;;;5534:42;;5522:2;5507:18;1217:39:114;5390:192:146;2218:54:114;;;;;;:::i;:::-;;;;;;;;;;;;;;2076:45;;;;;;:::i;:::-;;;;;;;;;;;;;;1824:23;;;;;;1026:48;;;;;2365:57;;;;;;:::i;:::-;;;;;;;;;;;;;;3551:577;;;;;;:::i;:::-;;:::i;1262:42::-;;;;;;;;6011:6:146;5999:19;;;5981:38;;5969:2;5954:18;1262:42:114;5837:188:146;11270:699:116;;;;;;:::i;:::-;;:::i;1080:37:114:-;;;;;4310:457;4414:11;;4378:33;4452:24;4414:11;4452;:24::i;:::-;4435:41;;4486:21;4510:48;4533:10;:24;;;4510:22;:48::i;:::-;4486:72;-1:-1:-1;4568:18:114;4589:17;4486:72;4605:1;4589:17;:::i;:::-;4568:38;;4617:27;4637:6;4617:19;:27::i;:::-;4659:9;4655:106;;;4684:66;4709:10;4721:6;:28;;;4684:24;:66::i;:::-;4368:399;;;;4310:457;:::o;26374:712:115:-;26552:6;26570:24;;:::i;:::-;26614:33;;;;;;;;26636:4;;26614:33;;26636:4;26642;;;;26614:33;;;;26604:43;;;26667:61;;;;;;;26690:4;;:7;26667:61;;;;;;26699:4;;:7;;;26667:61;;;;;;;;;;;;;26710:4;;;;;:7;26667:61;;26719:4;:7;;;26667:61;;;;-1:-1:-1;;;26667:61:115;26657:7;;;:71;26748:33;;;;;;;26770:4;;26748:33;;26776:4;;;;26748:33;;;;26738:7;;;:43;26822:24;;26833:12;26822:24;;;;;;;;;-1:-1:-1;;26822:24:115;;;;;;;;;;;-1:-1:-1;26822:24:115;26791:55;;26861:9;26856:93;26880:12;26876:1;:16;26856:93;;;26930:5;26936:1;26930:8;;;;;;;:::i;:::-;;;;;26913:11;26925:1;26913:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;26894:3;;;;:::i;:::-;;;;26856:93;;;;26962:32;26975:11;26988:5;26962:12;:32::i;:::-;26998:1;26962:37;26958:122;;27022:4;27015:11;;;;;;26958:122;27064:5;27057:12;;;;26374:712;;;;;;;:::o;3551:577:114:-;3615:14;3632:19;3644:6;3632:11;:19::i;:::-;3685;;3615:36;;-1:-1:-1;3666:16:114;:14;:16::i;:::-;:38;3662:115;;;3720:46;;-1:-1:-1;;;3720:46:114;;7934:2:146;3720:46:114;;;7916:21:146;7973:2;7953:18;;;7946:30;8012:34;7992:18;;;7985:62;-1:-1:-1;;;8063:18:146;;;8056:34;8107:19;;3720:46:114;;;;;;;;3662:115;3814:4;;3791:6;:20;;;:27;3787:102;;;3834:44;;-1:-1:-1;;;3834:44:114;;8339:2:146;3834:44:114;;;8321:21:146;8378:2;8358:18;;;8351:30;8417:34;8397:18;;;8390:62;-1:-1:-1;;;8468:18:146;;;8461:32;8510:19;;3834:44:114;8137:398:146;3787:102:114;3903:9;3899:223;;;3928:119;3958:6;:20;;;3980:6;:26;;;4008:6;:25;;;3928:12;:119::i;:::-;3605:523;3551:577;:::o;3899:223::-;4078:33;;-1:-1:-1;;;4078:33:114;;8742:2:146;4078:33:114;;;8724:21:146;8781:2;8761:18;;;8754:30;8820:25;8800:18;;;8793:53;8863:18;;4078:33:114;8540:347:146;11270:699:116;11445:6;11463:22;;:::i;:::-;11505:31;;;;;;;;11525:4;;11505:31;;11525:4;11531;;;;11505:31;;;;11495:41;;;11556:59;;;;;;;11577:4;;:7;11556:59;;;;;;11586:4;;:7;;;11556:59;;;;;;;;;;;;;11597:4;;;;;:7;11556:59;;11606:4;:7;;;11556:59;;;;-1:-1:-1;;;11556:59:116;11546:7;;;:69;11635:31;;;;;;;11655:4;;11635:31;;11661:4;;;;11635:31;;;;11625:7;;;:41;11707:24;;11533:1;11707:24;;;;;;;;;-1:-1:-1;;11707:24:116;;;;;;11525:4;11707:24;;;;;-1:-1:-1;11707:24:116;11676:55;;11746:9;11741:93;11765:12;11761:1;:16;11741:93;;;11815:5;11821:1;11815:8;;;;;;;:::i;:::-;;;;;11798:11;11810:1;11798:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;11779:3;;;;:::i;:::-;;;;11741:93;;;;11847:30;11858:11;11871:5;11847:10;:30::i;4850:556:114:-;4925:4;4941:21;4965:43;4988:6;:19;;;4965:22;:43::i;:::-;5023:37;;;;:22;:37;;;;;;4941:67;;-1:-1:-1;5023:42:114;5019:286;;5081:63;;-1:-1:-1;;;5081:63:114;;9094:2:146;5081:63:114;;;9076:21:146;9133:2;9113:18;;;9106:30;9172:34;9152:18;;;9145:62;-1:-1:-1;;;9223:18:146;;;9216:51;9284:19;;5081:63:114;8892:417:146;5019:286:114;1371:2;5165:6;:20;;;:54;5161:144;;;5235:59;;-1:-1:-1;;;5235:59:114;;9516:2:146;5235:59:114;;;9498:21:146;9555:2;9535:18;;;9528:30;9594:34;9574:18;;;9567:62;-1:-1:-1;;;9645:18:146;;;9638:47;9702:19;;5235:59:114;9314:413:146;5161:144:114;5315:25;5333:6;5315:17;:25::i;:::-;-1:-1:-1;;5358:20:114;;;:41;5381:18;5358:41;-1:-1:-1;5358:41:114;4850:556::o;7603:125::-;7672:7;7698:23;7705:16;7698:4;:23;:::i;:::-;7691:30;7603:125;-1:-1:-1;;7603:125:114:o;6655:882::-;6769:12;;;;6791:25;;:::i;:::-;6869:23;;;;6827:31;6903:183;6927:2;6923:1;:6;6903:183;;;6971:32;6997:6;6971:23;:32;:::i;:::-;6950:6;6957:10;6966:1;6957:6;:10;:::i;:::-;6950:18;;;;;;;:::i;:::-;;;;:53;7043:32;7069:6;7043:23;:32;:::i;:::-;7017:58;-1:-1:-1;6931:3:114;;;;:::i;:::-;;;;6903:183;;;-1:-1:-1;7140:11:114;;:31;;;7095:34;7182:188;7206:2;7202:1;:6;7182:188;;;7246:35;7275:6;7246:26;:35;:::i;:::-;7229:6;7236;7241:1;7236:2;:6;:::i;:::-;7229:14;;;;;;;:::i;:::-;;;;:52;7324:35;7353:6;7324:26;:35;:::i;:::-;7295:64;-1:-1:-1;7210:3:114;;;;:::i;:::-;;;;7182:188;;;-1:-1:-1;7427:28:114;;;;7400:57;;:18;:57::i;:::-;7379:10;;;:79;7495:7;;7386:2;7504:7;;;7513;;;;7477:52;;7495:7;7504;7379:6;7477:17;:52::i;:::-;7469:61;;;;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;25166:1155:115:-;25285:7;25349:77;25285:7;25467:20;:18;:20::i;:::-;25436:51;;25525:2;:5;;;:12;25505:5;:12;25520:1;25505:16;;;;:::i;:::-;:32;25497:63;;;;-1:-1:-1;;;25497:63:115;;10441:2:146;25497:63:115;;;10423:21:146;10480:2;10460:18;;;10453:30;-1:-1:-1;;;10499:18:146;;;10492:48;10557:18;;25497:63:115;10239:342:146;25497:63:115;25653:27;;;;;;;;;25617:33;25653:27;;;;;;;;;25690:240;25714:5;:12;25710:1;:16;25690:240;;;25766:18;25755:5;25761:1;25755:8;;;;;;;;:::i;:::-;;;;;;;:29;25747:73;;;;-1:-1:-1;;;25747:73:115;;10788:2:146;25747:73:115;;;10770:21:146;10827:2;10807:18;;;10800:30;10866:33;10846:18;;;10839:61;10917:18;;25747:73:115;10586:355:146;25747:73:115;25841:78;25864:4;25870:48;25895:2;:5;;;25901:1;25905;25901:5;;;;:::i;:::-;25895:12;;;;;;;;:::i;:::-;;;;;;;25909:5;25915:1;25909:8;;;;;;;;:::i;:::-;;;;;;;25870:24;:48::i;:::-;25841:22;:78::i;:::-;25834:85;-1:-1:-1;25728:3:115;;;;:::i;:::-;;;;25690:240;;;;25946:38;25969:4;25975:2;:5;;;25981:1;25975:8;;;;;;;;:::i;:::-;;;;;;;25946:22;:38::i;:::-;25939:45;;26012:265;26056:29;26077:5;:7;;;26056:20;:29::i;:::-;26103:5;:7;;;26128:2;:8;;;26154:2;:8;;;26180:4;26202:2;:9;;;26229:5;:7;;;26254:2;:9;;;26012:26;:265::i;:::-;25994:302;;26295:1;26288:8;;;;;;;25994:302;-1:-1:-1;26313:1:115;;25166:1155;-1:-1:-1;;;;;25166:1155:115:o;7818:133:114:-;7867:7;7928:16;7894:30;7912:12;7894:15;:30;:::i;:::-;7893:51;;;;:::i;:::-;7886:58;;7818:133;:::o;8310:721::-;8463:1;8438:13;;;:7;:13;;;;;;:27;8434:170;;8485:13;;;;:7;:13;;;;;;:36;;8481:93;;8554:5;8541:18;;-1:-1:-1;;8541:18:114;;;8481:93;8310:721;;;:::o;8434:170::-;8654:1;8617:25;;;:19;:25;;;;;;:39;8613:193;;8676:25;;;;:19;:25;;;;;;:47;;8672:104;;8756:5;8743:18;;-1:-1:-1;;8743:18:114;;;8310:721;;;:::o;8613:193::-;8816:4;:11;;;8837:13;;;;:7;:13;;;;;;;;:35;;;8882:19;:25;;;;;:46;;;8938:10;:16;;;;;;8957:15;8938:34;;8987:37;8853:19;;8823:4;;8987:37;;8837:13;8987:37;8310:721;;;:::o;10084:1133:116:-;10199:7;10263:77;10199:7;10379:18;:16;:18::i;:::-;10350:47;;10435:2;:5;;;:12;10415:5;:12;10430:1;10415:16;;;;:::i;:::-;:32;10407:63;;;;-1:-1:-1;;;10407:63:116;;10441:2:146;10407:63:116;;;10423:21:146;10480:2;10460:18;;;10453:30;-1:-1:-1;;;10499:18:146;;;10492:48;10557:18;;10407:63:116;10239:342:146;10407:63:116;10561:25;;;;;;;;;10527:31;10561:25;;;;;;;;;10596:236;10620:5;:12;10616:1;:16;10596:236;;;10672:18;10661:5;10667:1;10661:8;;;;;;;;:::i;:::-;;;;;;;:29;10653:73;;;;-1:-1:-1;;;10653:73:116;;10788:2:146;10653:73:116;;;10770:21:146;10827:2;10807:18;;;10800:30;10866:33;10846:18;;;10839:61;10917:18;;10653:73:116;10586:355:146;10653:73:116;10747:74;10768:4;10774:46;10797:2;:5;;;10803:1;10807;10803:5;;;;:::i;10747:74::-;10740:81;-1:-1:-1;10634:3:116;;;;:::i;:::-;;;;10596:236;;;;10848:36;10869:4;10875:2;:5;;;10881:1;10875:8;;;;;;;;:::i;10848:36::-;10841:43;;10912:261;10954:27;10973:5;:7;;;10954:18;:27::i;:::-;10999:5;:7;;;11024:2;:8;;;11050:2;:8;;;11076:4;11098:2;:9;;;11125:5;:7;;;11150:2;:9;;;10912:24;:261::i;5509:1064:114:-;5591:22;5616:39;5635:6;:19;;;5616:18;:39::i;:::-;5591:64;;5665:23;5691:40;5710:6;:20;;;5691:18;:40::i;:::-;5665:66;;5741:23;5767:40;5786:6;:20;;;5767:18;:40::i;:::-;5741:66;;5817:21;5841:43;5864:6;:19;;;5841:22;:43::i;:::-;5894:29;5926:37;;;:22;:37;;;;;;;;;6004:45;;;;;11103:19:146;;;11138:12;;;11131:28;;;5926:37:114;;-1:-1:-1;5997:53:114;;11175:12:146;;6004:45:114;;;-1:-1:-1;;6004:45:114;;;;;;;;;;5997:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5993:57;;6064:51;6084:1;6087:6;:26;;;6071:43;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6071:43:114;;;;-1:-1:-1;;6071:43:114;;;;;;;;;;6064:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6060:55;;6129:40;6149:1;6152:15;6136:32;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6136:32:114;;;;-1:-1:-1;;6136:32:114;;;;;;;;;;6129:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6125:44;;6183:50;6203:1;6206:6;:25;;;6190:42;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6190:42:114;;;;-1:-1:-1;;6190:42:114;;;;;;;;;;6183:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:54;;6247:46;6267:1;6270:21;6254:38;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6254:38:114;;;;-1:-1:-1;;6254:38:114;;;;;;;;;;6247:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6243:50;-1:-1:-1;6303:9:114;6323:30;6243:50;6323:18;:30::i;:::-;6315:39;-1:-1:-1;6373:23:114;6395:1;-1:-1:-1;;;6373:23:114;:::i;:::-;6436:12;;;;6458:39;;;;;;;;;6368:29;;;;6458:39;;;6531:7;;6540;;;;6549;;;;6368:29;;6436:12;;6515:50;;6531:7;;6458:39;6515:15;:50::i;:::-;6507:59;;;;;;5581:992;;;;;;;;;5509:1064;:::o;385:892:110:-;443:7;637:1;562;566:66;562:70;561:77;;543:1;468;472:66;468:70;467:77;;466:173;462:177;;825:2;750:1;754:66;750:70;749:78;;730:2;655:1;659:66;655:70;654:78;;653:175;649:179;;1014:2;939:1;943:66;939:70;938:78;;919:2;844:1;848:66;844:70;843:78;;842:175;838:179;;1203:2;1128:1;1132:66;1128:70;1127:78;;1108:2;1033:1;-1:-1:-1;;1033:70:110;1032:78;;1031:175;1027:179;;1239:3;1234:1;:8;;1226:3;1221:1;:8;;1220:23;1216:27;;1268:1;1260:10;;1253:17;;385:892;;;:::o;7822:17338:115:-;7875:28;;:::i;:::-;7926:212;;;;;;;;7961:77;7926:212;;8052:76;7926:212;;;;;;;;7915:223;;;8160:465;;;;;;;;8213:76;8160:465;;;;;;8307:76;8160:465;;;;;;;;;;;;;;;;;;8429:77;8160:465;;8524:77;8160:465;;;;-1:-1:-1;;;8160:465:115;8149:8;;;:476;;;;8647:465;;;;;;;8700:77;8647:465;;;;;;8795:77;8647:465;;;;;;;;;;;;;8918:76;8647:465;;9012:76;8647:465;;;;-1:-1:-1;;;8647:465:115;8635:9;;;:477;9134:463;;;;;;;9187:76;9134:463;;;;;;9281:77;9134:463;;;;;;;;;;;;;9404:75;9134:463;;9497:76;9134:463;;;;-1:-1:-1;;;9134:463:115;9122:9;;;:475;9615:31;;9643:2;9615:31;;;;;;;;;;9643:2;9615:31;;;-1:-1:-1;;;;;;;;;;;;;;;;;9615:31:115;;;;;;;;;;;;-1:-1:-1;;9607:5:115;;;:39;;;9668:211;;;;;;;;;9703:76;9668:211;;9793:76;9668:211;;;;9657:5;;:8;;-1:-1:-1;;9657:8:115;;;;:::i;:::-;;;;;;:222;;;;9901:213;;;;;;;;9936:77;9901:213;;;;10027:77;9901:213;;;9890:2;:5;;;9896:1;9890:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10136:213;;;;;;;;10171:77;10136:213;;;;10262:77;10136:213;;;10125:2;:5;;;10131:1;10125:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10371:210;;;;;;;;10406:75;10371:210;;;;10495:76;10371:210;;;10360:2;:5;;;10366:1;10360:8;;;;;;;;:::i;:::-;;;;;;:221;;;;10603:212;;;;;;;;10638:77;10603:212;;;;10729:76;10603:212;;;10592:2;:5;;;10598:1;10592:8;;;;;;;;:::i;:::-;;;;;;:223;;;;10837:211;;;;;;;;10872:77;10837:211;;;;10963:75;10837:211;;;10826:2;:5;;;10832:1;10826:8;;;;;;;;:::i;:::-;;;;;;:222;;;;11070:213;;;;;;;;11105:77;11070:213;;;;11196:77;11070:213;;;11059:2;:5;;;11065:1;11059:8;;;;;;;;:::i;:::-;;;;;;:224;;;;11305:212;;;;;;;;11340:77;11305:212;;;;11431:76;11305:212;;;11294:2;:5;;;11300:1;11294:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11539:212;;;;;;;;11574:77;11539:212;;;;11665:76;11539:212;;;11528:2;:5;;;11534:1;11528:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11773:211;;;;;;;;11808:76;11773:211;;;;11898:76;11773:211;;;11762:2;:5;;;11768:1;11762:8;;;;;;;;:::i;:::-;;;;;;:222;;;;12007:212;;;;;;;;12042:77;12007:212;;;;12133:76;12007:212;;;11995:2;:5;;;12001:2;11995:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12242:213;;;;;;;;12277:77;12242:213;;;;12368:77;12242:213;;;12230:2;:5;;;12236:2;12230:9;;;;;;;;:::i;:::-;;;;;;:225;;;;12478:211;;;;;;;;12513:76;12478:211;;;;12603:76;12478:211;;;12466:2;:5;;;12472:2;12466:9;;;;;;;;:::i;:::-;;;;;;:223;;;;12712:212;;;;;;;;12747:76;12712:212;;;;12837:77;12712:212;;;12700:2;:5;;;12706:2;12700:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12947:211;;;;;;;;12982:76;12947:211;;;;13072:76;12947:211;;;12935:2;:5;;;12941:2;12935:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13181:213;;;;;;;;13216:77;13181:213;;;;13307:77;13181:213;;;13169:2;:5;;;13175:2;13169:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13417:213;;;;;;;;13452:77;13417:213;;;;13543:77;13417:213;;;13405:2;:5;;;13411:2;13405:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13653:211;;;;;;;;13688:76;13653:211;;;;13778:76;13653:211;;;13641:2;:5;;;13647:2;13641:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13887:212;;;;;;;;13922:76;13887:212;;;;14012:77;13887:212;;;13875:2;:5;;;13881:2;13875:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14122:212;;;;;;;;14157:77;14122:212;;;;14248:76;14122:212;;;14110:2;:5;;;14116:2;14110:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14357:211;;;;;;;;14392:77;14357:211;;;;14483:75;14357:211;;;14345:2;:5;;;14351:2;14345:9;;;;;;;;:::i;:::-;;;;;;:223;;;;14591:213;;;;;;;;14626:77;14591:213;;;;14717:77;14591:213;;;14579:2;:5;;;14585:2;14579:9;;;;;;;;:::i;:::-;;;;;;:225;;;;14827:213;;;;;;;;14862:77;14827:213;;;;14953:77;14827:213;;;14815:2;:5;;;14821:2;14815:9;;;;;;;;:::i;:::-;;;;;;:225;;;;15063:210;;;;;;;;15098:75;15063:210;;;;15187:76;15063:210;;;15051:2;:5;;;15057:2;15051:9;;;;;;;;:::i;:::-;;;;;;:222;;;;15296:212;;;;;;;;15331:77;15296:212;;;;15422:76;15296:212;;;15284:2;:5;;;15290:2;15284:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15531:212;;;;;;;;15566:76;15531:212;;;;15656:77;15531:212;;;15519:2;:5;;;15525:2;15519:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15766:212;;;;;;;;15801:77;15766:212;;;;15892:76;15766:212;;;15754:2;:5;;;15760:2;15754:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16001:213;;;;;;;;16036:77;16001:213;;;;16127:77;16001:213;;;15989:2;:5;;;15995:2;15989:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16237:213;;;;;;;;16272:77;16237:213;;;;16363:77;16237:213;;;16225:2;:5;;;16231:2;16225:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16473:213;;;;;;;;16508:77;16473:213;;;;16599:77;16473:213;;;16461:2;:5;;;16467:2;16461:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16709:212;;;;;;;;16744:76;16709:212;;;;16834:77;16709:212;;;16697:2;:5;;;16703:2;16697:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16944:213;;;;;;;;16979:77;16944:213;;;;17070:77;16944:213;;;16932:2;:5;;;16938:2;16932:9;;;;;;;;:::i;:::-;;;;;;:225;;;;17180:211;;;;;;;;17215:76;17180:211;;;;17305:76;17180:211;;;17168:2;:5;;;17174:2;17168:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17414:212;;;;;;;;17449:77;17414:212;;;;17540:76;17414:212;;;17402:2;:5;;;17408:2;17402:9;;;;;;;;:::i;:::-;;;;;;:224;;;;17649:211;;;;;;;;17684:76;17649:211;;;;17774:76;17649:211;;;17637:2;:5;;;17643:2;17637:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17883:212;;;;;;;;17918:77;17883:212;;;;18009:76;17883:212;;;17871:2;:5;;;17877:2;17871:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18118:212;;;;;;;;18153:76;18118:212;;;;18243:77;18118:212;;;18106:2;:5;;;18112:2;18106:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18353:213;;;;;;;;18388:77;18353:213;;;;18479:77;18353:213;;;18341:2;:5;;;18347:2;18341:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18589:213;;;;;;;;18624:77;18589:213;;;;18715:77;18589:213;;;18577:2;:5;;;18583:2;18577:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18825:213;;;;;;;;18860:77;18825:213;;;;18951:77;18825:213;;;18813:2;:5;;;18819:2;18813:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19061:211;;;;;;;;19096:77;19061:211;;;;19187:75;19061:211;;;19049:2;:5;;;19055:2;19049:9;;;;;;;;:::i;:::-;;;;;;:223;;;;19295:213;;;;;;;;19330:77;19295:213;;;;19421:77;19295:213;;;19283:2;:5;;;19289:2;19283:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19531:213;;;;;;;;19566:77;19531:213;;;;19657:77;19531:213;;;19519:2;:5;;;19525:2;19519:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19767:212;;;;;;;;19802:76;19767:212;;;;19892:77;19767:212;;;19755:2;:5;;;19761:2;19755:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20002:211;;;;;;;;20037:76;20002:211;;;;20127:76;20002:211;;;19990:2;:5;;;19996:2;19990:9;;;;;;;;:::i;:::-;;;;;;:223;;;;20236:212;;;;;;;;20271:77;20236:212;;;;20362:76;20236:212;;;20224:2;:5;;;20230:2;20224:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20471:212;;;;;;;;20506:77;20471:212;;;;20597:76;20471:212;;;20459:2;:5;;;20465:2;20459:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20706:213;;;;;;;;20741:77;20706:213;;;;20832:77;20706:213;;;20694:2;:5;;;20700:2;20694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;20942:212;;;;;;;;20977:77;20942:212;;;;21068:76;20942:212;;;20930:2;:5;;;20936:2;20930:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21177:212;;;;;;;;21212:76;21177:212;;;;21302:77;21177:212;;;21165:2;:5;;;21171:2;21165:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21412:213;;;;;;;;21447:77;21412:213;;;;21538:77;21412:213;;;21400:2;:5;;;21406:2;21400:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21648:213;;;;;;;;21683:77;21648:213;;;;21774:77;21648:213;;;21636:2;:5;;;21642:2;21636:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21884:211;;;;;;;;21919:76;21884:211;;;;22009:76;21884:211;;;21872:2;:5;;;21878:2;21872:9;;;;;;;;:::i;:::-;;;;;;:223;;;;22118:213;;;;;;;;22153:77;22118:213;;;;22244:77;22118:213;;;22106:2;:5;;;22112:2;22106:9;;;;;;;;:::i;:::-;;;;;;:225;;;;22354:212;;;;;;;;22389:76;22354:212;;;;22479:77;22354:212;;;22342:2;:5;;;22348:2;22342:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22589:212;;;;;;;;22624:76;22589:212;;;;22714:77;22589:212;;;22577:2;:5;;;22583:2;22577:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22824:212;;;;;;;;22859:76;22824:212;;;;22949:77;22824:212;;;22812:2;:5;;;22818:2;22812:9;;;;;;;;:::i;:::-;;;;;;:224;;;;23059:211;;;;;;;;23094:77;23059:211;;;;23185:75;23059:211;;;23047:2;:5;;;23053:2;23047:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23293:213;;;;;;;;23328:77;23293:213;;;;23419:77;23293:213;;;23281:2;:5;;;23287:2;23281:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23529:213;;;;;;;;23564:77;23529:213;;;;23655:77;23529:213;;;23517:2;:5;;;23523:2;23517:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23765:211;;;;;;;;23800:76;23765:211;;;;23890:76;23765:211;;;23753:2;:5;;;23759:2;23753:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23999:212;;;;;;;;24034:76;23999:212;;;;24124:77;23999:212;;;23987:2;:5;;;23993:2;23987:9;;;;;;;;:::i;:::-;;;;;;:224;;;;24234:213;;;;;;;;24269:77;24234:213;;;;24360:77;24234:213;;;24222:2;:5;;;24228:2;24222:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24470:213;;;;;;;;24505:77;24470:213;;;;24596:77;24470:213;;;24458:2;:5;;;24464:2;24458:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24706:213;;;;;;;;24741:77;24706:213;;;;24832:77;24706:213;;;24694:2;:5;;;24700:2;24694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24942:211;;;;;;;;24977:76;24942:211;;;;25067:76;24942:211;;;24930:2;:5;;;24936:2;24930:9;;;;;;;;:::i;:::-;;;;;;:223;;;;7822:17338;:::o;3929:557::-;-1:-1:-1;;;;;;;;;;;;;;;;;4029:23:115;;:::i;:::-;4073:3;;4062:14;;:8;4097:3;;;;4086:8;;;:14;4110:8;;;:12;;;-1:-1:-1;4300:4:115;4297:1;4291:4;4062:14;4281:1;4274:4;4267:5;4263:16;4252:53;4241:64;-1:-1:-1;4241:64:115;;4375:47;4402:20;4411:9;4375:47;;4449:7;4441:38;;;;-1:-1:-1;;;4441:38:115;;12006:2:146;4441:38:115;;;11988:21:146;12045:2;12025:18;;;12018:30;-1:-1:-1;;;12064:18:146;;;12057:48;12122:18;;4441:38:115;11804:342:146;4441:38:115;4019:467;;3929:557;;;;:::o;3151:622::-;-1:-1:-1;;;;;;;;;;;;;;;;;3286:23:115;;:::i;:::-;3330:4;;3319:15;;:8;3355:4;;;;3344:8;;;:15;3380:4;;3369:8;;;:15;3405:4;;;3394:8;;;;:15;;;;-1:-1:-1;;3584:1:115;3578:4;3319:15;3568:1;3561:4;3554:5;3550:16;3539:53;3528:64;-1:-1:-1;3528:64:115;;3662:47;3689:20;3698:9;3662:47;;3736:7;3728:38;;;;-1:-1:-1;;;3728:38:115;;12353:2:146;3728:38:115;;;12335:21:146;12392:2;12372:18;;;12365:30;-1:-1:-1;;;12411:18:146;;;12404:48;12469:18;;3728:38:115;12151:342:146;2742:357:115;-1:-1:-1;;;;;;;;;;;;;;;;;2982:3:115;;2891:77;;2982:8;:20;;;;-1:-1:-1;2994:3:115;;;;:8;2982:20;2978:71;;;-1:-1:-1;;3025:13:115;;;;;;;;;-1:-1:-1;3025:13:115;;;;;;;;2742:357;-1:-1:-1;2742:357:115:o;2978:71::-;3065:27;;;;;;;;3073:1;:3;;;3065:27;;;;3089:1;3083;:3;;;:7;;;;:::i;:::-;3078:13;;:1;:13;:::i;:::-;3065:27;;3058:34;2742:357;-1:-1:-1;;;2742:357:115:o;6832:568::-;7137:16;;;7151:1;7137:16;;;;;;;;;7099:4;;;;7137:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7137:16:115;;;;;;;;;;;;-1:-1:-1;;7185:16:115;;;7199:1;7185:16;;;;;;;;;7115:38;;-1:-1:-1;7163:19:115;;7185:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7163:38;;7219:2;7211;7214:1;7211:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7239:2;7231;7234:1;7231:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7259:2;7251;7254:1;7251:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7279:2;7271;7274:1;7271:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7299:2;7291;7294:1;7291:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7319:2;7311;7314:1;7311:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7339:2;7331;7334:1;7331:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7359:2;7351;7354:1;7351:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7378:15;7386:2;7390;7378:7;:15::i;:::-;7371:22;6832:568;-1:-1:-1;;;;;;;;;;;6832:568:115:o;7796:2282:116:-;7847:26;;:::i;:::-;7896:210;;;;;;;;7929:77;7896:210;;8020:76;7896:210;;;;;;;;7885:221;;;8128:463;;;;;;;;8179:76;8128:463;;;;;;8273:76;8128:463;;;;;;;;;;;;;;;;;;8395:77;8128:463;;8490:77;8128:463;;;;-1:-1:-1;;;8128:463:116;8117:8;;;:474;;;;8613:463;;;;;;;8664:77;8613:463;;;;;;8759:77;8613:463;;;;;;;;;;;;;8882:76;8613:463;;8976:76;8613:463;;;;-1:-1:-1;;;8613:463:116;8601:9;;;:475;9098:462;;;;;;;9149:76;9098:462;;;;;;9243:77;9098:462;;;;;;;;;;;;;9366:76;9098:462;;9460:76;9098:462;;;;-1:-1:-1;;;9098:462:116;9086:9;;;:474;9578:28;;9604:1;9578:28;;;;;;;;;9604:1;9578:28;;;-1:-1:-1;;;;;;;;;;;;;;;;;9578:28:116;;;;;;;;;;;;-1:-1:-1;;9570:5:116;;;:36;;;9628:210;;;;;;;;;9661:77;9628:210;;9752:76;9628:210;;;;9617:5;;:8;;-1:-1:-1;;9617:8:116;;;;:::i;:::-;;;;;;:221;;;;9860:211;;;;;;;;9893:77;9860:211;;;;9984:77;9860:211;;;9849:2;:5;;;9855:1;9849:8;;;;;;;;:::i;6830:568::-;7135:16;;;7149:1;7135:16;;;;;;;;;7097:4;;;;7135:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7135:16:116;;;;;;;;;;;;-1:-1:-1;;7183:16:116;;;7197:1;7183:16;;;;;;;;;7113:38;;-1:-1:-1;7161:19:116;;7183:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7161:38;;7217:2;7209;7212:1;7209:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7237:2;7229;7232:1;7229:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7257:2;7249;7252:1;7249:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7277:2;7269;7272:1;7269:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7297:2;7289;7292:1;7289:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7317:2;7309;7312:1;7309:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7337:2;7329;7332:1;7329:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7357:2;7349;7352:1;7349:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7376:15;7384:2;7388;7376:7;:15::i;4698:1073:115:-;4780:4;4817:2;:9;4804:2;:9;:22;4796:57;;;;-1:-1:-1;;;4796:57:115;;12700:2:146;4796:57:115;;;12682:21:146;12739:2;12719:18;;;12712:30;-1:-1:-1;;;12758:18:146;;;12751:52;12820:18;;4796:57:115;12498:346:146;4796:57:115;4882:9;;4863:16;4921:12;4882:9;4932:1;4921:12;:::i;:::-;4901:32;;4943:22;4979:9;4968:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4968:21:115;;4943:46;;5004:9;4999:302;5023:8;5019:1;:12;4999:302;;;5071:2;5074:1;5071:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5052:5;5058:1;5062;5058:5;;;;:::i;:::-;:9;;5066:1;5058:9;:::i;:::-;5052:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5111:2;5114:1;5111:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5092:5;5098:1;5102;5098:5;;;;:::i;:::-;:9;;5106:1;5098:9;:::i;:::-;5092:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5151:2;5154:1;5151:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5132:5;5138;:1;5142;5138:5;:::i;:::-;:9;;5146:1;5138:9;:::i;:::-;5132:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5194:2;5197:1;5194:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5175:5;5181;:1;5185;5181:5;:::i;:::-;:9;;5189:1;5181:9;:::i;:::-;5175:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5237:2;5240:1;5237:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5245:1;5237:10;;;;;;;:::i;:::-;;;;;5218:5;5224;:1;5228;5224:5;:::i;:::-;:9;;5232:1;5224:9;:::i;:::-;5218:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5280:2;5283:1;5280:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5288:1;5280:10;;;;;;;:::i;:::-;;;;;5261:5;5267;:1;5271;5267:5;:::i;:::-;:9;;5275:1;5267:9;:::i;:::-;5261:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5033:3;;;;:::i;:::-;;;;4999:302;;;;5310:21;;:::i;:::-;5341:12;5554:4;5549:3;5542:4;5531:9;5527:20;5520:4;5513:5;5509:16;5506:1;5499:4;5492:5;5488:16;5477:82;5450:109;-1:-1:-1;5450:109:115;;5629:47;5656:20;5665:9;5629:47;;5703:7;5695:41;;;;-1:-1:-1;;;5695:41:115;;13224:2:146;5695:41:115;;;13206:21:146;13263:2;13243:18;;;13236:30;-1:-1:-1;;;13282:18:146;;;13275:51;13343:18;;5695:41:115;13022:345:146;5695:41:115;-1:-1:-1;5753:6:115;:11;;;;-1:-1:-1;;;;;;4698:1073:115:o;4696::116:-;4778:4;4815:2;:9;4802:2;:9;:22;4794:57;;;;-1:-1:-1;;;4794:57:116;;12700:2:146;4794:57:116;;;12682:21:146;12739:2;12719:18;;;12712:30;-1:-1:-1;;;12758:18:146;;;12751:52;12820:18;;4794:57:116;12498:346:146;4794:57:116;4880:9;;4861:16;4919:12;4880:9;4930:1;4919:12;:::i;:::-;4899:32;;4941:22;4977:9;4966:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4966:21:116;;4941:46;;5002:9;4997:302;5021:8;5017:1;:12;4997:302;;;5069:2;5072:1;5069:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5050:5;5056:1;5060;5056:5;;;;:::i;:::-;:9;;5064:1;5056:9;:::i;:::-;5050:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5109:2;5112:1;5109:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5090:5;5096:1;5100;5096:5;;;;:::i;:::-;:9;;5104:1;5096:9;:::i;:::-;5090:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5149:2;5152:1;5149:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5130:5;5136;:1;5140;5136:5;:::i;:::-;:9;;5144:1;5136:9;:::i;:::-;5130:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5192:2;5195:1;5192:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5173:5;5179;:1;5183;5179:5;:::i;:::-;:9;;5187:1;5179:9;:::i;:::-;5173:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5235:2;5238:1;5235:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5243:1;5235:10;;;;;;;:::i;:::-;;;;;5216:5;5222;:1;5226;5222:5;:::i;:::-;:9;;5230:1;5222:9;:::i;:::-;5216:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5278:2;5281:1;5278:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5286:1;5278:10;;;;;;;:::i;:::-;;;;;5259:5;5265;:1;5269;5265:5;:::i;:::-;:9;;5273:1;5265:9;:::i;:::-;5259:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5031:3;;;;:::i;:::-;;;;4997:302;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;388:127:146:-;449:10;444:3;440:20;437:1;430:31;480:4;477:1;470:15;504:4;501:1;494:15;520:246;587:2;581:9;;;617:15;;662:18;647:34;;683:22;;;644:62;641:88;;;709:18;;:::i;:::-;745:2;738:22;520:246;:::o;771:479::-;821:5;874:3;867:4;859:6;855:17;851:27;841:55;;892:1;889;882:12;841:55;916:17;;:::i;:::-;955:3;993:2;985:6;981:15;1019:3;1011:6;1008:15;1005:35;;;1036:1;1033;1026:12;1005:35;1060:6;1075:146;1091:6;1086:3;1083:15;1075:146;;;1159:17;;1147:30;;1206:4;1197:14;;;;1108;1075:146;;;-1:-1:-1;1239:5:146;;771:479;-1:-1:-1;;;;;771:479:146:o;1255:501::-;1311:5;1364:3;1357:4;1349:6;1345:17;1341:27;1331:55;;1382:1;1379;1372:12;1331:55;1406:17;;:::i;:::-;1445:3;1483;1475:6;1471:16;1510:3;1502:6;1499:15;1496:35;;;1527:1;1524;1517:12;1496:35;1551:6;1566:161;1582:6;1577:3;1574:15;1566:161;;;1648:34;1678:3;1673;1648:34;:::i;:::-;1636:47;;1712:4;1703:14;;;;1608:2;1599:12;1566:161;;1761:605;1820:5;1868:6;1856:9;1851:3;1847:19;1843:32;1840:52;;;1888:1;1885;1878:12;1840:52;1921:2;1915:9;1963:4;1955:6;1951:17;2034:6;2022:10;2019:22;1998:18;1986:10;1983:34;1980:62;1977:88;;;2045:18;;:::i;:::-;2081:2;2074:22;2114:6;-1:-1:-1;2114:6:146;2144:40;2180:3;2169:9;2144:40;:::i;:::-;2136:6;2129:56;2220:55;2271:3;2266:2;2255:9;2251:18;2220:55;:::i;:::-;2213:4;2205:6;2201:17;2194:82;2309:50;2355:3;2349;2338:9;2334:19;2309:50;:::i;:::-;2304:2;2296:6;2292:15;2285:75;;1761:605;;;;:::o;2371:773::-;2433:5;2481:6;2469:9;2464:3;2460:19;2456:32;2453:52;;;2501:1;2498;2491:12;2453:52;2534:2;2528:9;2576:4;2568:6;2564:17;2647:6;2635:10;2632:22;2611:18;2599:10;2596:34;2593:62;2590:88;;;2658:18;;:::i;:::-;2698:10;2694:2;2687:22;;2727:6;2718:15;;2770:9;2757:23;2749:6;2742:39;2842:2;2831:9;2827:18;2814:32;2809:2;2801:6;2797:15;2790:57;2908:2;2897:9;2893:18;2880:32;2875:2;2867:6;2863:15;2856:57;2974:2;2963:9;2959:18;2946:32;2941:2;2933:6;2929:15;2922:57;3041:3;3030:9;3026:19;3013:33;3007:3;2999:6;2995:16;2988:59;3081:56;3133:3;3127;3116:9;3112:19;3081:56;:::i;:::-;3075:3;3067:6;3063:16;3056:82;;2371:773;;;;:::o;3149:714::-;3244:6;3297:3;3285:9;3276:7;3272:23;3268:33;3265:53;;;3314:1;3311;3304:12;3265:53;3347:2;3341:9;3389:4;3381:6;3377:17;3460:6;3448:10;3445:22;3424:18;3412:10;3409:34;3406:62;3403:88;;;3471:18;;:::i;:::-;3507:2;3500:22;3546:53;3591:7;3580:9;3546:53;:::i;:::-;3538:6;3531:69;3663:3;3652:9;3648:19;3635:33;3628:4;3620:6;3616:17;3609:60;3730:3;3719:9;3715:19;3702:33;3697:2;3689:6;3685:15;3678:58;3771:60;3823:7;3817:3;3806:9;3802:19;3771:60;:::i;:::-;3764:4;3752:17;;3745:87;3756:6;3149:714;-1:-1:-1;;;3149:714:146:o;3868:180::-;3927:6;3980:2;3968:9;3959:7;3955:23;3951:32;3948:52;;;3996:1;3993;3986:12;3948:52;-1:-1:-1;4019:23:146;;3868:180;-1:-1:-1;3868:180:146:o;4235:1150::-;4437:6;4445;4453;4461;4492:4;4537:2;4525:9;4516:7;4512:23;4508:32;4505:52;;;4553:1;4550;4543:12;4505:52;4576:44;4612:7;4601:9;4576:44;:::i;:::-;4566:54;;4639:59;4690:7;4685:2;4674:9;4670:18;4639:59;:::i;:::-;4629:69;;4717:54;4763:7;4757:3;4746:9;4742:19;4717:54;:::i;:::-;4707:64;;4815:7;4809:3;4798:9;4794:19;4790:33;4780:61;;4837:1;4834;4827:12;4780:61;4870:2;4864:9;4912:4;4904:6;4900:17;4983:6;4971:10;4968:22;4947:18;4935:10;4932:34;4929:62;4926:88;;;4994:18;;:::i;:::-;5030:2;5023:22;5094:18;;;;5065:6;5124:19;;;5121:39;;;5156:1;5153;5146:12;5121:39;5195:3;5184:9;5180:19;5208:146;5224:6;5219:3;5216:15;5208:146;;;5292:17;;5280:30;;5339:4;5330:14;;;;5241;5208:146;;;5212:3;;5373:6;5363:16;;;;4235:1150;;;;;;;:::o;5587:245::-;5680:6;5733:3;5721:9;5712:7;5708:23;5704:33;5701:53;;;5750:1;5747;5740:12;5701:53;5773;5818:7;5807:9;5773:53;:::i;:::-;5763:63;5587:245;-1:-1:-1;;;5587:245:146:o;6030:1163::-;6231:6;6239;6247;6255;6286:3;6330:2;6318:9;6309:7;6305:23;6301:32;6298:52;;;6346:1;6343;6336:12;6298:52;6369:44;6405:7;6394:9;6369:44;:::i;:::-;6359:54;;6432:59;6483:7;6478:2;6467:9;6463:18;6432:59;:::i;:::-;6422:69;;6510:54;6556:7;6550:3;6539:9;6535:19;6510:54;:::i;:::-;6500:64;;6608:7;6602:3;6591:9;6587:19;6583:33;6573:61;;6630:1;6627;6620:12;6573:61;6663:2;6657:9;6685:2;6726;6718:6;6714:15;6795:6;6783:10;6780:22;6759:18;6747:10;6744:34;6741:62;6738:88;;;6806:18;;:::i;:::-;6842:2;6835:22;6906:18;;;;6877:6;6936:19;;;6933:39;;;6968:1;6965;6958:12;6933:39;7007:3;6996:9;6992:19;7020:142;7036:6;7031:3;7028:15;7020:142;;;7102:17;;7090:30;;7140:12;;;;7053;;7020:142;;;-1:-1:-1;6030:1163:146;;;;-1:-1:-1;6030:1163:146;;-1:-1:-1;7181:6:146;-1:-1:-1;;;;6030:1163:146:o;7198:127::-;7259:10;7254:3;7250:20;7247:1;7240:31;7290:4;7287:1;7280:15;7314:4;7311:1;7304:15;7330:125;7395:9;;;7416:10;;;7413:36;;;7429:18;;:::i;7460:127::-;7521:10;7516:3;7512:20;7509:1;7502:31;7552:4;7549:1;7542:15;7576:4;7573:1;7566:15;7592:135;7631:3;7652:17;;;7649:43;;7672:18;;:::i;:::-;-1:-1:-1;7719:1:146;7708:13;;7592:135::o;9732:127::-;9793:10;9788:3;9784:20;9781:1;9774:31;9824:4;9821:1;9814:15;9848:4;9845:1;9838:15;9864:120;9904:1;9930;9920:35;;9935:18;;:::i;:::-;-1:-1:-1;9969:9:146;;9864:120::o;9989:112::-;10021:1;10047;10037:35;;10052:18;;:::i;:::-;-1:-1:-1;10086:9:146;;9989:112::o;10106:128::-;10173:9;;;10194:11;;;10191:37;;;10208:18;;:::i;11198:412::-;11327:3;11365:6;11359:13;11390:1;11400:129;11414:6;11411:1;11408:13;11400:129;;;11512:4;11496:14;;;11492:25;;11486:32;11473:11;;;11466:53;11429:12;11400:129;;;-1:-1:-1;11584:1:146;11548:16;;11573:13;;;-1:-1:-1;11548:16:146;11198:412;-1:-1:-1;11198:412:146:o;11615:184::-;11685:6;11738:2;11726:9;11717:7;11713:23;11709:32;11706:52;;;11754:1;11751;11744:12;11706:52;-1:-1:-1;11777:16:146;;11615:184;-1:-1:-1;11615:184:146:o;12849:168::-;12889:7;12955:1;12951;12947:6;12943:14;12940:1;12937:21;12932:1;12925:9;12918:17;12914:45;12911:71;;;12962:18;;:::i;:::-;-1:-1:-1;13002:9:146;;12849:168::o", "linkReferences": {}, "immutableReferences": { @@ -578,7 +578,7 @@ "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": "7227d785", "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": "e5b708fe" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"genesisValidatorsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"genesisTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondsPerSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slotsPerPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"syncCommitteePeriod\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"finalityThreshold\",\"type\":\"uint16\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"Light Client\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"notice\":\"Uses Ethereum 2's Sync Committee Protocol to keep up-to-date with block headers from a Beacon Chain. This is done in a gas-efficient manner using zero-knowledge proofs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/lightclient/LightClient.sol\":\"LightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"genesisValidatorsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"genesisTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondsPerSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slotsPerPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"syncCommitteePeriod\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"finalityThreshold\",\"type\":\"uint16\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"Light Client\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"notice\":\"Uses Ethereum 2's Sync Committee Protocol to keep up-to-date with block headers from a Beacon Chain. This is done in a gas-efficient manner using zero-knowledge proofs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/lightclient/LightClient.sol\":\"LightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -1161,10 +1161,10 @@ }, "sources": { "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", "urls": [ - "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", - "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", + "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" ], "license": null }, diff --git a/out/TargetAMB.sol/TargetAMB.json b/out/TargetAMB.sol/TargetAMB.json index 38917d2..4b8b2d4 100644 --- a/out/TargetAMB.sol/TargetAMB.json +++ b/out/TargetAMB.sol/TargetAMB.json @@ -321,32 +321,14 @@ } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b50613da4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd366004613538565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610145610130366004613553565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b6101686101633660046136b3565b6102c6565b005b61018d6101783660046137b0565b60076020526000908152604090205460ff1681565b60405161011991906137df565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc366004613553565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d366004613553565b6004602052600090815260409020546001600160a01b031681565b610168610246366004613807565b610599565b61010f6102593660046137b0565b60096020526000908152604090205481565b61027e6102793660046137b0565b6108bc565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f6565b6000806102db8b8b61094f565b915091506102ec8260400151610bb9565b6102f98260400151610ceb565b6000808e8e81019061030b91906138b1565b9150915061031d828560400151610d47565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac91906138e4565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104418b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890610f80565b9050806104905760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f58787906104a691906138fd565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026111fc565b905081811461053e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061058082828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115af92505050565b505061058c6001603355565b5050505050505050505050565b6105a16108f6565b6000806105ae888861094f565b915091506105bf8260400151610bb9565b6105cc8260400151610ceb565b6105da898360400151610d47565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107915760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f091906138e4565b905060008190036107435760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b610777610750898b6138fd565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611756565b600083815260096020526040902081905592506107a39050565b60008181526009602052604090205491505b6000846020015160016040516020016107d19291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061081982856108148a8c6138fd565b611852565b90508481146108625760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a782828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115af92505050565b50506108b36001603355565b50505050505050565b600381815481106108cc57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109cc85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118ee92505050565b9050600085856040516109e0929190613980565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0f57610a0f6137c9565b14610a5c5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610aa45760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610aee5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b39575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610bac5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1f5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190613990565b610ce85760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce85760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610dad5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906138e4565b600003610e895760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1391906138e4565b610f1d90426139c8565b90506078811015610f7b5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffe91906138e4565b9050600081856001600160401b03161061101957601b61101c565b60075b60ff169050600082866001600160401b03161061105857612000611049846001600160401b0389166139c8565b61105391906139f1565b61106d565b61106d6120006001600160401b0388166139f1565b90506000866001600160401b0316886001600160401b0316036110ac5750600b61109981610200613a05565b6110a590610183613a24565b90506111e1565b6120006110b9888a613a37565b6001600160401b03161161111b5750600b6110d5816020613a05565b6110e0906006613a24565b90506110f76120006001600160401b038916613a5e565b61110361200083613a05565b61110d9190613a24565b905061109981610200613a05565b876001600160401b0316876001600160401b031610156111995750600b82611144826020613a05565b61114e9190613a24565b905061115b816002613a05565b611166906000613a24565b905081611177630100000083613a05565b6111819190613a24565b905061118e816002613a05565b6110e0906001613a24565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016103ef565b6111ed8b828c8c6119b3565b9b9a5050505050505050505050565b60008061120a878a8a6119cd565b905060008160008151811061122157611221613a72565b01602001516001600160f81b03191690506000600160f81b8214806112535750600160f91b6001600160f81b03198316145b15611260575060016112c5565b600360fe1b6001600160f81b031983161061127d575060006112c5565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b6000602084019050600060405180604001604052808487516112e791906139c8565b81526020016112f68585613a24565b9052905060006113058261226d565b905080516004146113515760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b60006113768260038151811061136957611369613a72565b602002602001015161226d565b905080518c106113c85760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b60006113df828e8151811061136957611369613a72565b9050805160031461143d5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006114628260008151811061145557611455613a72565b6020026020010151612492565b90508c6001600160a01b0316816001600160a01b0316146114d55760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b60006114ed8360018151811061136957611369613a72565b90508c6115138260008151811061150657611506613a72565b6020026020010151612506565b146115765760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b611598818d8151811061158b5761158b613a72565b602002602001015161250d565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c001516040516024016115de93929190613ad8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116309190613b08565b6000604051808303816000865af19150503d806000811461166d576040519150601f19603f3d011682016040523d82523d6000602084013e611672565b606091505b50805191955093506000925060200390506116b45760008280602001905181019061169d9190613b24565b6001600160e01b031916631dee306b60e11b149150505b8280156116be5750805b156116e1576000858152600760205260409020805460ff191660021790556116fb565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051611746929190613b4e565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117c0826040516020016117aa91815260200190565b60405160208183030381529060405287866119cd565b9050600081511161180c5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b600061181f61181a83612610565b61226d565b9050805160041461182f57600080fd5b6118458160028151811061150657611506613a72565b93505050505b9392505050565b6000806118818560405160200161186b91815260200190565b60405160208183030381529060405284866119cd565b905060008151116118d45760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b6118e56118e082612610565b612506565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916119a2918a919061199d9082906139c8565b612663565b60c088015250949695505050505050565b6000806119c186868661274f565b90921495945050505050565b60606000845111611a185760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b6000611a23846128de565b90506000611a30866129cc565b9050600084604051602001611a4791815260200190565b60405160208183030381529060405290506000805b8451811015612216576000858281518110611a7957611a79613a72565b602002602001015190508451831115611aeb5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611b8a5780518051602091820120604051611b3992611b1392910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b855760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611c80565b805151602011611c105780518051602091820120604051611bb492611b1392910190815260200190565b611b855760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611c805760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611c8c60106001613a24565b81602001515103611e395784518303611dd1576000611cc88260200151601081518110611cbb57611cbb613a72565b6020026020010151612ae6565b90506000815111611d415760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611d4f91906139c8565b8314611dc35760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b965061184b95505050505050565b6000858481518110611de557611de5613a72565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611e1057611e10613a72565b60200260200101519050611e2381612c09565b9550611e30600186613a24565b94505050612203565b6002816020015151036121aa576000611e5182612c2e565b9050600081600081518110611e6857611e68613a72565b016020015160f81c90506000611e7f600283613b72565b611e8a906002613b94565b90506000611e9b848360ff16612c52565b90506000611ea98a89612c52565b90506000611eb78383612c88565b905080835114611f2f5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611f44575060ff85166003145b156120ea5780825114611fbf5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611fdb8860200151600181518110611cbb57611cbb613a72565b905060008151116120545760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d5161206291906139c8565b89146120d65760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c5061184b9b505050505050505050505050565b60ff851615806120fd575060ff85166001145b1561213c57612129876020015160018151811061211c5761211c613a72565b6020026020010151612c09565b9950612135818a613a24565b985061219f565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b505050505050612203565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b508061220e81613bad565b915050611a5c565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b6060600080600061227d85612d07565b919450925090506001816001811115612298576122986137c9565b1461230b5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b84516123178385613a24565b1461237f5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123985790505090506000845b87518110156124865760008061240b6040518060400160405280858d600001516123ef91906139c8565b8152602001858d602001516124049190613a24565b9052612d07565b5091509150604051806040016040528083836124279190613a24565b8152602001848c6020015161243c9190613a24565b81525085858151811061245157612451613a72565b6020908102919091010152612467600185613a24565b93506124738183613a24565b61247d9084613a24565b925050506123c5565b50815295945050505050565b80516000906001036124a657506000919050565b81516015146124f75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b61250082612506565b92915050565b6000612500825b60006021826000015111156125645760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061257285612d07565b91945092509050600081600181111561258d5761258d6137c9565b146125da5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125ec9190613a24565b805190915060208410156126065760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126455760405162461bcd60e51b81526004016103ef90613bc6565b50604080518082019091528151815260209182019181019190915290565b60608161267181601f613a24565b101561268f5760405162461bcd60e51b81526004016103ef90613c36565b6126998284613a24565b845110156126dd5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b6060821580156126fc5760405191506000825260208201604052612746565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561273557805183526020928301920161271d565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127609190613a24565b61276b906002613d42565b1161277557600080fd5b8360005b846001146127465761278c600286613a5e565b60010361282b5760028482815181106127a7576127a7613a72565b6020026020010151836040516020016127ca929190918252602082015260400190565b60408051601f19818403018152908290526127e491613b08565b602060405180830381855afa158015612801573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061282491906138e4565b91506128bf565b60028285838151811061284057612840613a72565b6020026020010151604051602001612862929190918252602082015260400190565b60408051601f198184030181529082905261287c91613b08565b602060405180830381855afa158015612899573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128bc91906138e4565b91505b6128ca6002866139f1565b9450806128d681613bad565b915050612779565b80516060906000816001600160401b038111156128fd576128fd6135fe565b60405190808252806020026020018201604052801561294257816020015b604080518082019091526060808252602082015281526020019060019003908161291b5790505b50905060005b828110156129c457604051806040016040528086838151811061296d5761296d613a72565b6020026020010151815260200161299c87848151811061298f5761298f613a72565b60200260200101516133ca565b8152508282815181106129b1576129b1613a72565b6020908102919091010152600101612948565b509392505050565b805160609060006129de826002613a05565b6001600160401b038111156129f5576129f56135fe565b6040519080825280601f01601f191660200182016040528015612a1f576020820181803683370190505b5090506000805b83811015612adc57858181518110612a4057612a40613a72565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a68836002613a05565b81518110612a7857612a78613a72565b60200101906001600160f81b031916908160001a905350600f60f81b821683612aa2836002613a05565b612aad906001613a24565b81518110612abd57612abd613a72565b60200101906001600160f81b031916908160001a905350600101612a26565b5090949350505050565b60606000806000612af685612d07565b919450925090506000816001811115612b1157612b116137c9565b14612b845760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612b8e8284613a24565b855114612bfa5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b6118e5856020015184846133d8565b60606020826000015110612c2557612c2082612ae6565b612500565b61250082613478565b6060612500612c4d8360200151600081518110611cbb57611cbb613a72565b6129cc565b606082518210612c715750604080516020810190915260008152612500565b61184b8383848651612c8391906139c8565b61348e565b60008060008351855110612c9d578351612ca0565b84515b90505b8082108015612cf75750838281518110612cbf57612cbf613a72565b602001015160f81c60f81b6001600160f81b031916858381518110612ce657612ce6613a72565b01602001516001600160f81b031916145b156129c457816001019150612ca3565b600080600080846000015111612d2f5760405162461bcd60e51b81526004016103ef90613bc6565b6020840151805160001a607f8111612d545760006001600094509450945050506133c3565b60b78111612eb1576000612d696080836139c8565b905080876000015111612de95760405162461bcd60e51b815260206004820152604e6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612e165750600160ff1b6001600160f81b0319821610155b612e9e5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b50600195509350600092506133c3915050565b60bf81116130f2576000612ec660b7836139c8565b905080876000015111612f495760405162461bcd60e51b81526020600482015260516024820152600080516020613d4f83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612fd05760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c603781116130535760405162461bcd60e51b81526020600482015260486024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b61305d8184613a24565b8951116130d55760405162461bcd60e51b815260206004820152604c6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b6130e0836001613a24565b97509550600094506133c39350505050565b60f7811161319457600061310760c0836139c8565b9050808760000151116131835760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b6001955093508492506133c3915050565b60006131a160f7836139c8565b9050808760000151116132205760405162461bcd60e51b815260206004820152604d6024820152600080516020613d4f83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036132a55760405162461bcd60e51b81526020600482015260486024820152600080516020613d4f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c603781116133265760405162461bcd60e51b81526020600482015260466024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6133308184613a24565b8951116133a65760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b6133b1836001613a24565b97509550600194506133c39350505050565b9193909250565b606061250061181a83612610565b60606000826001600160401b038111156133f4576133f46135fe565b6040519080825280601f01601f19166020018201604052801561341e576020820181803683370190505b5090508260000361343057905061184b565b600061343c8587613a24565b90506020820160005b8581101561345d578281015182820152602001613445565b8581111561346c576000868301525b50919695505050505050565b60606125008260200151600084600001516133d8565b60608182601f0110156134b35760405162461bcd60e51b81526004016103ef90613c36565b8282840110156134d55760405162461bcd60e51b81526004016103ef90613c36565b818301845110156126dd5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461353357600080fd5b919050565b60006020828403121561354a57600080fd5b61184b8261351c565b60006020828403121561356557600080fd5b813563ffffffff8116811461184b57600080fd5b60008083601f84011261358b57600080fd5b5081356001600160401b038111156135a257600080fd5b602083019150836020828501011115610bb257600080fd5b60008083601f8401126135cc57600080fd5b5081356001600160401b038111156135e357600080fd5b6020830191508360208260051b8501011115610bb257600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561363c5761363c6135fe565b604052919050565b600082601f83011261365557600080fd5b81356001600160401b0381111561366e5761366e6135fe565b613681601f8201601f1916602001613614565b81815284602083860101111561369657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156136d457600080fd5b6001600160401b03808d3511156136ea57600080fd5b6136f78e8e358f01613579565b909c509a5060208d013581101561370d57600080fd5b61371d8e60208f01358f01613579565b909a50985060408d013581101561373357600080fd5b6137438e60408f01358f016135ba565b909850965060608d0135955060808d013581101561376057600080fd5b6137708e60808f01358f016135ba565b909550935060a08d013581101561378657600080fd5b506137978d60a08e01358e01613644565b915060c08c013590509295989b509295989b9093969950565b6000602082840312156137c257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061380157634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561382257600080fd5b61382b8861351c565b965060208801356001600160401b038082111561384757600080fd5b6138538b838c01613579565b909850965060408a013591508082111561386c57600080fd5b6138788b838c016135ba565b909650945060608a013591508082111561389157600080fd5b5061389e8a828b016135ba565b989b979a50959850939692959293505050565b600080604083850312156138c457600080fd5b6138cd8361351c565b91506138db6020840161351c565b90509250929050565b6000602082840312156138f657600080fd5b5051919050565b60006001600160401b0380841115613917576139176135fe565b8360051b6020613928818301613614565b86815291850191818101903684111561394057600080fd5b865b848110156139745780358681111561395a5760008081fd5b61396636828b01613644565b845250918301918301613942565b50979650505050505050565b8183823760009101908152919050565b6000602082840312156139a257600080fd5b8151801515811461184b57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612500576125006139b2565b634e487b7160e01b600052601260045260246000fd5b600082613a0057613a006139db565b500490565b6000816000190483118215151615613a1f57613a1f6139b2565b500290565b80820180821115612500576125006139b2565b6001600160401b03828116828216039080821115613a5757613a576139b2565b5092915050565b600082613a6d57613a6d6139db565b500690565b634e487b7160e01b600052603260045260246000fd5b60005b83811015613aa3578181015183820152602001613a8b565b50506000910152565b60008151808452613ac4816020860160208601613a88565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b03831660208201526060604082018190526000906118e590830184613aac565b60008251613b1a818460208701613a88565b9190910192915050565b600060208284031215613b3657600080fd5b81516001600160e01b03198116811461184b57600080fd5b604081526000613b616040830185613aac565b905082151560208301529392505050565b600060ff831680613b8557613b856139db565b8060ff84160691505092915050565b60ff8281168282160390811115612500576125006139b2565b600060018201613bbf57613bbf6139b2565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613c99578160001904821115613c7f57613c7f6139b2565b80851615613c8c57918102915b93841c9390800290613c63565b509250929050565b600082613cb057506001612500565b81613cbd57506000612500565b8160018114613cd35760028114613cdd57613cf9565b6001915050612500565b60ff841115613cee57613cee6139b2565b50506001821b612500565b5060208310610133831016604e8410600b8410161715613d1c575081810a612500565b613d268383613c5e565b8060001904821115613d3a57613d3a6139b2565b029392505050565b600061184b8383613ca156fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212200b05ed5ae63b09c514431342b32abbec5ca9ab35e53d2a4b1a886369d8b7f6b164736f6c63430008100033", + "object": "0x608060405234801561001057600080fd5b50613d6d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd366004613501565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61014561013036600461351c565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61016861016336600461367c565b6102c6565b005b61018d610178366004613779565b60076020526000908152604090205460ff1681565b60405161011991906137a8565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc36600461351c565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d36600461351c565b6004602052600090815260409020546001600160a01b031681565b6101686102463660046137d0565b610599565b61010f610259366004613779565b60096020526000908152604090205481565b61027e610279366004613779565b6108bc565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f6565b6000806102db8b8b61094f565b915091506102ec8260400151610bb9565b6102f98260400151610ceb565b6000808e8e81019061030b919061387a565b9150915061031d828560400151610d47565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac91906138ad565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104418b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890610f80565b9050806104905760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f58787906104a691906138c6565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261118a565b905081811461053e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061058082828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153d92505050565b505061058c6001603355565b5050505050505050505050565b6105a16108f6565b6000806105ae888861094f565b915091506105bf8260400151610bb9565b6105cc8260400151610ceb565b6105da898360400151610d47565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107915760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f091906138ad565b905060008190036107435760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b610777610750898b6138c6565b60408088015163ffffffff166000908152600560205220546001600160a01b0316836116e4565b600083815260096020526040902081905592506107a39050565b60008181526009602052604090205491505b6000846020015160016040516020016107d19291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061081982856108148a8c6138c6565b6117e0565b90508481146108625760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a782828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153d92505050565b50506108b36001603355565b50505050505050565b600381815481106108cc57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109cc85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061187c92505050565b9050600085856040516109e0929190613949565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0f57610a0f613792565b14610a5c5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610aa45760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610aee5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b39575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610bac5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1f5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190613959565b610ce85760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce85760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610dad5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906138ad565b600003610e895760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1391906138ad565b610f1d9042613991565b90506078811015610f7b5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b600080610f8c83611941565b9050600081856001600160401b031610610fa757601b610faa565b60075b60ff169050600082866001600160401b031610610fe657612000610fd7846001600160401b038916613991565b610fe191906139ba565b610ffb565b610ffb6120006001600160401b0388166139ba565b90506000866001600160401b0316886001600160401b03160361103a5750600b611027816102006139ce565b611033906101836139ed565b905061116f565b612000611047888a613a00565b6001600160401b0316116110a95750600b6110638160206139ce565b61106e9060066139ed565b90506110856120006001600160401b038916613a27565b611091612000836139ce565b61109b91906139ed565b9050611027816102006139ce565b876001600160401b0316876001600160401b031610156111275750600b826110d28260206139ce565b6110dc91906139ed565b90506110e98160026139ce565b6110f49060006139ed565b9050816111056301000000836139ce565b61110f91906139ed565b905061111c8160026139ce565b61106e9060016139ed565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016103ef565b61117b8b828c8c611981565b9b9a5050505050505050505050565b600080611198878a8a61199b565b90506000816000815181106111af576111af613a3b565b01602001516001600160f81b03191690506000600160f81b8214806111e15750600160f91b6001600160f81b03198316145b156111ee57506001611253565b600360fe1b6001600160f81b031983161061120b57506000611253565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b6000602084019050600060405180604001604052808487516112759190613991565b815260200161128485856139ed565b9052905060006112938261223b565b905080516004146112df5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b6000611304826003815181106112f7576112f7613a3b565b602002602001015161223b565b905080518c106113565760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b600061136d828e815181106112f7576112f7613a3b565b905080516003146113cb5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006113f0826000815181106113e3576113e3613a3b565b6020026020010151612460565b90508c6001600160a01b0316816001600160a01b0316146114635760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b600061147b836001815181106112f7576112f7613a3b565b90508c6114a18260008151811061149457611494613a3b565b60200260200101516124d4565b146115045760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b611526818d8151811061151957611519613a3b565b60200260200101516124db565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161156c93929190613aa1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516115be9190613ad1565b6000604051808303816000865af19150503d80600081146115fb576040519150601f19603f3d011682016040523d82523d6000602084013e611600565b606091505b50805191955093506000925060200390506116425760008280602001905181019061162b9190613aed565b6001600160e01b031916631dee306b60e11b149150505b82801561164c5750805b1561166f576000858152600760205260409020805460ff19166002179055611689565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe894787876040516116d4929190613b17565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b1660208201526000908190603401604051602081830303815290604052805190602001209050600061174e8260405160200161173891815260200190565b604051602081830303815290604052878661199b565b9050600081511161179a5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b60006117ad6117a8836125de565b61223b565b905080516004146117bd57600080fd5b6117d38160028151811061149457611494613a3b565b93505050505b9392505050565b60008061180f856040516020016117f991815260200190565b604051602081830303815290604052848661199b565b905060008151116118625760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b61187361186e826125de565b6124d4565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091611930918a919061192b908290613991565b612631565b60c088015250949695505050505050565b60008163ffffffff1660010361195b5750625ec000919050565b8163ffffffff166005036119735750624f4000919050565b50600019919050565b919050565b60008061198f86868661271d565b90921495945050505050565b606060008451116119e65760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b60006119f1846128ac565b905060006119fe8661299a565b9050600084604051602001611a1591815260200190565b60405160208183030381529060405290506000805b84518110156121e4576000858281518110611a4757611a47613a3b565b602002602001015190508451831115611ab95760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611b585780518051602091820120604051611b0792611ae192910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b535760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611c4e565b805151602011611bde5780518051602091820120604051611b8292611ae192910190815260200190565b611b535760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611c4e5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611c5a601060016139ed565b81602001515103611e075784518303611d9f576000611c968260200151601081518110611c8957611c89613a3b565b6020026020010151612ab4565b90506000815111611d0f5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611d1d9190613991565b8314611d915760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b96506117d995505050505050565b6000858481518110611db357611db3613a3b565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611dde57611dde613a3b565b60200260200101519050611df181612bd7565b9550611dfe6001866139ed565b945050506121d1565b600281602001515103612178576000611e1f82612bfc565b9050600081600081518110611e3657611e36613a3b565b016020015160f81c90506000611e4d600283613b3b565b611e58906002613b5d565b90506000611e69848360ff16612c20565b90506000611e778a89612c20565b90506000611e858383612c56565b905080835114611efd5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611f12575060ff85166003145b156120b85780825114611f8d5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611fa98860200151600181518110611c8957611c89613a3b565b905060008151116120225760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d516120309190613991565b89146120a45760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c506117d99b505050505050505050505050565b60ff851615806120cb575060ff85166001145b1561210a576120f787602001516001815181106120ea576120ea613a3b565b6020026020010151612bd7565b9950612103818a6139ed565b985061216d565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b5050505050506121d1565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b50806121dc81613b76565b915050611a2a565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b6060600080600061224b85612cd5565b91945092509050600181600181111561226657612266613792565b146122d95760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b84516122e583856139ed565b1461234d5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123665790505090506000845b8751811015612454576000806123d96040518060400160405280858d600001516123bd9190613991565b8152602001858d602001516123d291906139ed565b9052612cd5565b5091509150604051806040016040528083836123f591906139ed565b8152602001848c6020015161240a91906139ed565b81525085858151811061241f5761241f613a3b565b60209081029190910101526124356001856139ed565b935061244181836139ed565b61244b90846139ed565b92505050612393565b50815295945050505050565b805160009060010361247457506000919050565b81516015146124c55760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b6124ce826124d4565b92915050565b60006124ce825b60006021826000015111156125325760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061254085612cd5565b91945092509050600081600181111561255b5761255b613792565b146125a85760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125ba91906139ed565b805190915060208410156125d45760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126135760405162461bcd60e51b81526004016103ef90613b8f565b50604080518082019091528151815260209182019181019190915290565b60608161263f81601f6139ed565b101561265d5760405162461bcd60e51b81526004016103ef90613bff565b61266782846139ed565b845110156126ab5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b6060821580156126ca5760405191506000825260208201604052612714565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127035780518352602092830192016126eb565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161272e91906139ed565b612739906002613d0b565b1161274357600080fd5b8360005b846001146127145761275a600286613a27565b6001036127f957600284828151811061277557612775613a3b565b602002602001015183604051602001612798929190918252602082015260400190565b60408051601f19818403018152908290526127b291613ad1565b602060405180830381855afa1580156127cf573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127f291906138ad565b915061288d565b60028285838151811061280e5761280e613a3b565b6020026020010151604051602001612830929190918252602082015260400190565b60408051601f198184030181529082905261284a91613ad1565b602060405180830381855afa158015612867573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061288a91906138ad565b91505b6128986002866139ba565b9450806128a481613b76565b915050612747565b80516060906000816001600160401b038111156128cb576128cb6135c7565b60405190808252806020026020018201604052801561291057816020015b60408051808201909152606080825260208201528152602001906001900390816128e95790505b50905060005b8281101561299257604051806040016040528086838151811061293b5761293b613a3b565b6020026020010151815260200161296a87848151811061295d5761295d613a3b565b6020026020010151613398565b81525082828151811061297f5761297f613a3b565b6020908102919091010152600101612916565b509392505050565b805160609060006129ac8260026139ce565b6001600160401b038111156129c3576129c36135c7565b6040519080825280601f01601f1916602001820160405280156129ed576020820181803683370190505b5090506000805b83811015612aaa57858181518110612a0e57612a0e613a3b565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a368360026139ce565b81518110612a4657612a46613a3b565b60200101906001600160f81b031916908160001a905350600f60f81b821683612a708360026139ce565b612a7b9060016139ed565b81518110612a8b57612a8b613a3b565b60200101906001600160f81b031916908160001a9053506001016129f4565b5090949350505050565b60606000806000612ac485612cd5565b919450925090506000816001811115612adf57612adf613792565b14612b525760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612b5c82846139ed565b855114612bc85760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b611873856020015184846133a6565b60606020826000015110612bf357612bee82612ab4565b6124ce565b6124ce82613446565b60606124ce612c1b8360200151600081518110611c8957611c89613a3b565b61299a565b606082518210612c3f57506040805160208101909152600081526124ce565b6117d98383848651612c519190613991565b61345c565b60008060008351855110612c6b578351612c6e565b84515b90505b8082108015612cc55750838281518110612c8d57612c8d613a3b565b602001015160f81c60f81b6001600160f81b031916858381518110612cb457612cb4613a3b565b01602001516001600160f81b031916145b1561299257816001019150612c71565b600080600080846000015111612cfd5760405162461bcd60e51b81526004016103ef90613b8f565b6020840151805160001a607f8111612d22576000600160009450945094505050613391565b60b78111612e7f576000612d37608083613991565b905080876000015111612db75760405162461bcd60e51b815260206004820152604e6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612de45750600160ff1b6001600160f81b0319821610155b612e6c5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b5060019550935060009250613391915050565b60bf81116130c0576000612e9460b783613991565b905080876000015111612f175760405162461bcd60e51b81526020600482015260516024820152600080516020613d1883398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612f9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c603781116130215760405162461bcd60e51b81526020600482015260486024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b61302b81846139ed565b8951116130a35760405162461bcd60e51b815260206004820152604c6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b6130ae8360016139ed565b97509550600094506133919350505050565b60f781116131625760006130d560c083613991565b9050808760000151116131515760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b600195509350849250613391915050565b600061316f60f783613991565b9050808760000151116131ee5760405162461bcd60e51b815260206004820152604d6024820152600080516020613d1883398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036132735760405162461bcd60e51b81526020600482015260486024820152600080516020613d1883398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c603781116132f45760405162461bcd60e51b81526020600482015260466024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6132fe81846139ed565b8951116133745760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b61337f8360016139ed565b97509550600194506133919350505050565b9193909250565b60606124ce6117a8836125de565b60606000826001600160401b038111156133c2576133c26135c7565b6040519080825280601f01601f1916602001820160405280156133ec576020820181803683370190505b509050826000036133fe5790506117d9565b600061340a85876139ed565b90506020820160005b8581101561342b578281015182820152602001613413565b8581111561343a576000868301525b50919695505050505050565b60606124ce8260200151600084600001516133a6565b60608182601f0110156134815760405162461bcd60e51b81526004016103ef90613bff565b8282840110156134a35760405162461bcd60e51b81526004016103ef90613bff565b818301845110156126ab5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461197c57600080fd5b60006020828403121561351357600080fd5b6117d9826134ea565b60006020828403121561352e57600080fd5b813563ffffffff811681146117d957600080fd5b60008083601f84011261355457600080fd5b5081356001600160401b0381111561356b57600080fd5b602083019150836020828501011115610bb257600080fd5b60008083601f84011261359557600080fd5b5081356001600160401b038111156135ac57600080fd5b6020830191508360208260051b8501011115610bb257600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613605576136056135c7565b604052919050565b600082601f83011261361e57600080fd5b81356001600160401b03811115613637576136376135c7565b61364a601f8201601f19166020016135dd565b81815284602083860101111561365f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561369d57600080fd5b6001600160401b03808d3511156136b357600080fd5b6136c08e8e358f01613542565b909c509a5060208d01358110156136d657600080fd5b6136e68e60208f01358f01613542565b909a50985060408d01358110156136fc57600080fd5b61370c8e60408f01358f01613583565b909850965060608d0135955060808d013581101561372957600080fd5b6137398e60808f01358f01613583565b909550935060a08d013581101561374f57600080fd5b506137608d60a08e01358e0161360d565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561378b57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106137ca57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156137eb57600080fd5b6137f4886134ea565b965060208801356001600160401b038082111561381057600080fd5b61381c8b838c01613542565b909850965060408a013591508082111561383557600080fd5b6138418b838c01613583565b909650945060608a013591508082111561385a57600080fd5b506138678a828b01613583565b989b979a50959850939692959293505050565b6000806040838503121561388d57600080fd5b613896836134ea565b91506138a4602084016134ea565b90509250929050565b6000602082840312156138bf57600080fd5b5051919050565b60006001600160401b03808411156138e0576138e06135c7565b8360051b60206138f18183016135dd565b86815291850191818101903684111561390957600080fd5b865b8481101561393d578035868111156139235760008081fd5b61392f36828b0161360d565b84525091830191830161390b565b50979650505050505050565b8183823760009101908152919050565b60006020828403121561396b57600080fd5b815180151581146117d957600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156124ce576124ce61397b565b634e487b7160e01b600052601260045260246000fd5b6000826139c9576139c96139a4565b500490565b60008160001904831182151516156139e8576139e861397b565b500290565b808201808211156124ce576124ce61397b565b6001600160401b03828116828216039080821115613a2057613a2061397b565b5092915050565b600082613a3657613a366139a4565b500690565b634e487b7160e01b600052603260045260246000fd5b60005b83811015613a6c578181015183820152602001613a54565b50506000910152565b60008151808452613a8d816020860160208601613a51565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061187390830184613a75565b60008251613ae3818460208701613a51565b9190910192915050565b600060208284031215613aff57600080fd5b81516001600160e01b0319811681146117d957600080fd5b604081526000613b2a6040830185613a75565b905082151560208301529392505050565b600060ff831680613b4e57613b4e6139a4565b8060ff84160691505092915050565b60ff82811682821603908111156124ce576124ce61397b565b600060018201613b8857613b8861397b565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613c62578160001904821115613c4857613c4861397b565b80851615613c5557918102915b93841c9390800290613c2c565b509250929050565b600082613c79575060016124ce565b81613c86575060006124ce565b8160018114613c9c5760028114613ca657613cc2565b60019150506124ce565b60ff841115613cb757613cb761397b565b50506001821b6124ce565b5060208310610133831016604e8410600b8410161715613ce5575081810a6124ce565b613cef8383613c27565b8060001904821115613d0357613d0361397b565b029392505050565b60006117d98383613c6a56fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212205d4d18cda1d7715dd0a0831f230e2f2c2b99ab23f72ebb0504c905bd4898097c64736f6c63430008100033", "sourceMap": "748:10165:100:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": { - "src/libraries/BeaconChainForks.sol": { - "BeaconChainForks": [ - { - "start": 4032, - "length": 20 - } - ] - } - } + "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd366004613538565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610145610130366004613553565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b6101686101633660046136b3565b6102c6565b005b61018d6101783660046137b0565b60076020526000908152604090205460ff1681565b60405161011991906137df565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc366004613553565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d366004613553565b6004602052600090815260409020546001600160a01b031681565b610168610246366004613807565b610599565b61010f6102593660046137b0565b60096020526000908152604090205481565b61027e6102793660046137b0565b6108bc565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f6565b6000806102db8b8b61094f565b915091506102ec8260400151610bb9565b6102f98260400151610ceb565b6000808e8e81019061030b91906138b1565b9150915061031d828560400151610d47565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac91906138e4565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104418b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890610f80565b9050806104905760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f58787906104a691906138fd565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026111fc565b905081811461053e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061058082828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115af92505050565b505061058c6001603355565b5050505050505050505050565b6105a16108f6565b6000806105ae888861094f565b915091506105bf8260400151610bb9565b6105cc8260400151610ceb565b6105da898360400151610d47565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107915760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f091906138e4565b905060008190036107435760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b610777610750898b6138fd565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611756565b600083815260096020526040902081905592506107a39050565b60008181526009602052604090205491505b6000846020015160016040516020016107d19291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061081982856108148a8c6138fd565b611852565b90508481146108625760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a782828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115af92505050565b50506108b36001603355565b50505050505050565b600381815481106108cc57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109cc85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118ee92505050565b9050600085856040516109e0929190613980565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0f57610a0f6137c9565b14610a5c5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610aa45760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610aee5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b39575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610bac5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1f5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190613990565b610ce85760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce85760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610dad5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906138e4565b600003610e895760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1391906138e4565b610f1d90426139c8565b90506078811015610f7b5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffe91906138e4565b9050600081856001600160401b03161061101957601b61101c565b60075b60ff169050600082866001600160401b03161061105857612000611049846001600160401b0389166139c8565b61105391906139f1565b61106d565b61106d6120006001600160401b0388166139f1565b90506000866001600160401b0316886001600160401b0316036110ac5750600b61109981610200613a05565b6110a590610183613a24565b90506111e1565b6120006110b9888a613a37565b6001600160401b03161161111b5750600b6110d5816020613a05565b6110e0906006613a24565b90506110f76120006001600160401b038916613a5e565b61110361200083613a05565b61110d9190613a24565b905061109981610200613a05565b876001600160401b0316876001600160401b031610156111995750600b82611144826020613a05565b61114e9190613a24565b905061115b816002613a05565b611166906000613a24565b905081611177630100000083613a05565b6111819190613a24565b905061118e816002613a05565b6110e0906001613a24565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016103ef565b6111ed8b828c8c6119b3565b9b9a5050505050505050505050565b60008061120a878a8a6119cd565b905060008160008151811061122157611221613a72565b01602001516001600160f81b03191690506000600160f81b8214806112535750600160f91b6001600160f81b03198316145b15611260575060016112c5565b600360fe1b6001600160f81b031983161061127d575060006112c5565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b6000602084019050600060405180604001604052808487516112e791906139c8565b81526020016112f68585613a24565b9052905060006113058261226d565b905080516004146113515760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b60006113768260038151811061136957611369613a72565b602002602001015161226d565b905080518c106113c85760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b60006113df828e8151811061136957611369613a72565b9050805160031461143d5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006114628260008151811061145557611455613a72565b6020026020010151612492565b90508c6001600160a01b0316816001600160a01b0316146114d55760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b60006114ed8360018151811061136957611369613a72565b90508c6115138260008151811061150657611506613a72565b6020026020010151612506565b146115765760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b611598818d8151811061158b5761158b613a72565b602002602001015161250d565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c001516040516024016115de93929190613ad8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516116309190613b08565b6000604051808303816000865af19150503d806000811461166d576040519150601f19603f3d011682016040523d82523d6000602084013e611672565b606091505b50805191955093506000925060200390506116b45760008280602001905181019061169d9190613b24565b6001600160e01b031916631dee306b60e11b149150505b8280156116be5750805b156116e1576000858152600760205260409020805460ff191660021790556116fb565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051611746929190613b4e565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117c0826040516020016117aa91815260200190565b60405160208183030381529060405287866119cd565b9050600081511161180c5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b600061181f61181a83612610565b61226d565b9050805160041461182f57600080fd5b6118458160028151811061150657611506613a72565b93505050505b9392505050565b6000806118818560405160200161186b91815260200190565b60405160208183030381529060405284866119cd565b905060008151116118d45760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b6118e56118e082612610565b612506565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916119a2918a919061199d9082906139c8565b612663565b60c088015250949695505050505050565b6000806119c186868661274f565b90921495945050505050565b60606000845111611a185760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b6000611a23846128de565b90506000611a30866129cc565b9050600084604051602001611a4791815260200190565b60405160208183030381529060405290506000805b8451811015612216576000858281518110611a7957611a79613a72565b602002602001015190508451831115611aeb5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611b8a5780518051602091820120604051611b3992611b1392910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b855760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611c80565b805151602011611c105780518051602091820120604051611bb492611b1392910190815260200190565b611b855760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611c805760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611c8c60106001613a24565b81602001515103611e395784518303611dd1576000611cc88260200151601081518110611cbb57611cbb613a72565b6020026020010151612ae6565b90506000815111611d415760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611d4f91906139c8565b8314611dc35760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b965061184b95505050505050565b6000858481518110611de557611de5613a72565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611e1057611e10613a72565b60200260200101519050611e2381612c09565b9550611e30600186613a24565b94505050612203565b6002816020015151036121aa576000611e5182612c2e565b9050600081600081518110611e6857611e68613a72565b016020015160f81c90506000611e7f600283613b72565b611e8a906002613b94565b90506000611e9b848360ff16612c52565b90506000611ea98a89612c52565b90506000611eb78383612c88565b905080835114611f2f5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611f44575060ff85166003145b156120ea5780825114611fbf5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611fdb8860200151600181518110611cbb57611cbb613a72565b905060008151116120545760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d5161206291906139c8565b89146120d65760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c5061184b9b505050505050505050505050565b60ff851615806120fd575060ff85166001145b1561213c57612129876020015160018151811061211c5761211c613a72565b6020026020010151612c09565b9950612135818a613a24565b985061219f565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b505050505050612203565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b508061220e81613bad565b915050611a5c565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b6060600080600061227d85612d07565b919450925090506001816001811115612298576122986137c9565b1461230b5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b84516123178385613a24565b1461237f5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123985790505090506000845b87518110156124865760008061240b6040518060400160405280858d600001516123ef91906139c8565b8152602001858d602001516124049190613a24565b9052612d07565b5091509150604051806040016040528083836124279190613a24565b8152602001848c6020015161243c9190613a24565b81525085858151811061245157612451613a72565b6020908102919091010152612467600185613a24565b93506124738183613a24565b61247d9084613a24565b925050506123c5565b50815295945050505050565b80516000906001036124a657506000919050565b81516015146124f75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b61250082612506565b92915050565b6000612500825b60006021826000015111156125645760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061257285612d07565b91945092509050600081600181111561258d5761258d6137c9565b146125da5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125ec9190613a24565b805190915060208410156126065760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126455760405162461bcd60e51b81526004016103ef90613bc6565b50604080518082019091528151815260209182019181019190915290565b60608161267181601f613a24565b101561268f5760405162461bcd60e51b81526004016103ef90613c36565b6126998284613a24565b845110156126dd5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b6060821580156126fc5760405191506000825260208201604052612746565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561273557805183526020928301920161271d565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127609190613a24565b61276b906002613d42565b1161277557600080fd5b8360005b846001146127465761278c600286613a5e565b60010361282b5760028482815181106127a7576127a7613a72565b6020026020010151836040516020016127ca929190918252602082015260400190565b60408051601f19818403018152908290526127e491613b08565b602060405180830381855afa158015612801573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061282491906138e4565b91506128bf565b60028285838151811061284057612840613a72565b6020026020010151604051602001612862929190918252602082015260400190565b60408051601f198184030181529082905261287c91613b08565b602060405180830381855afa158015612899573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128bc91906138e4565b91505b6128ca6002866139f1565b9450806128d681613bad565b915050612779565b80516060906000816001600160401b038111156128fd576128fd6135fe565b60405190808252806020026020018201604052801561294257816020015b604080518082019091526060808252602082015281526020019060019003908161291b5790505b50905060005b828110156129c457604051806040016040528086838151811061296d5761296d613a72565b6020026020010151815260200161299c87848151811061298f5761298f613a72565b60200260200101516133ca565b8152508282815181106129b1576129b1613a72565b6020908102919091010152600101612948565b509392505050565b805160609060006129de826002613a05565b6001600160401b038111156129f5576129f56135fe565b6040519080825280601f01601f191660200182016040528015612a1f576020820181803683370190505b5090506000805b83811015612adc57858181518110612a4057612a40613a72565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a68836002613a05565b81518110612a7857612a78613a72565b60200101906001600160f81b031916908160001a905350600f60f81b821683612aa2836002613a05565b612aad906001613a24565b81518110612abd57612abd613a72565b60200101906001600160f81b031916908160001a905350600101612a26565b5090949350505050565b60606000806000612af685612d07565b919450925090506000816001811115612b1157612b116137c9565b14612b845760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612b8e8284613a24565b855114612bfa5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b6118e5856020015184846133d8565b60606020826000015110612c2557612c2082612ae6565b612500565b61250082613478565b6060612500612c4d8360200151600081518110611cbb57611cbb613a72565b6129cc565b606082518210612c715750604080516020810190915260008152612500565b61184b8383848651612c8391906139c8565b61348e565b60008060008351855110612c9d578351612ca0565b84515b90505b8082108015612cf75750838281518110612cbf57612cbf613a72565b602001015160f81c60f81b6001600160f81b031916858381518110612ce657612ce6613a72565b01602001516001600160f81b031916145b156129c457816001019150612ca3565b600080600080846000015111612d2f5760405162461bcd60e51b81526004016103ef90613bc6565b6020840151805160001a607f8111612d545760006001600094509450945050506133c3565b60b78111612eb1576000612d696080836139c8565b905080876000015111612de95760405162461bcd60e51b815260206004820152604e6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612e165750600160ff1b6001600160f81b0319821610155b612e9e5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b50600195509350600092506133c3915050565b60bf81116130f2576000612ec660b7836139c8565b905080876000015111612f495760405162461bcd60e51b81526020600482015260516024820152600080516020613d4f83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612fd05760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c603781116130535760405162461bcd60e51b81526020600482015260486024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b61305d8184613a24565b8951116130d55760405162461bcd60e51b815260206004820152604c6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b6130e0836001613a24565b97509550600094506133c39350505050565b60f7811161319457600061310760c0836139c8565b9050808760000151116131835760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b6001955093508492506133c3915050565b60006131a160f7836139c8565b9050808760000151116132205760405162461bcd60e51b815260206004820152604d6024820152600080516020613d4f83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036132a55760405162461bcd60e51b81526020600482015260486024820152600080516020613d4f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c603781116133265760405162461bcd60e51b81526020600482015260466024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6133308184613a24565b8951116133a65760405162461bcd60e51b815260206004820152604a6024820152600080516020613d4f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b6133b1836001613a24565b97509550600194506133c39350505050565b9193909250565b606061250061181a83612610565b60606000826001600160401b038111156133f4576133f46135fe565b6040519080825280601f01601f19166020018201604052801561341e576020820181803683370190505b5090508260000361343057905061184b565b600061343c8587613a24565b90506020820160005b8581101561345d578281015182820152602001613445565b8581111561346c576000868301525b50919695505050505050565b60606125008260200151600084600001516133d8565b60608182601f0110156134b35760405162461bcd60e51b81526004016103ef90613c36565b8282840110156134d55760405162461bcd60e51b81526004016103ef90613c36565b818301845110156126dd5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461353357600080fd5b919050565b60006020828403121561354a57600080fd5b61184b8261351c565b60006020828403121561356557600080fd5b813563ffffffff8116811461184b57600080fd5b60008083601f84011261358b57600080fd5b5081356001600160401b038111156135a257600080fd5b602083019150836020828501011115610bb257600080fd5b60008083601f8401126135cc57600080fd5b5081356001600160401b038111156135e357600080fd5b6020830191508360208260051b8501011115610bb257600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561363c5761363c6135fe565b604052919050565b600082601f83011261365557600080fd5b81356001600160401b0381111561366e5761366e6135fe565b613681601f8201601f1916602001613614565b81815284602083860101111561369657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156136d457600080fd5b6001600160401b03808d3511156136ea57600080fd5b6136f78e8e358f01613579565b909c509a5060208d013581101561370d57600080fd5b61371d8e60208f01358f01613579565b909a50985060408d013581101561373357600080fd5b6137438e60408f01358f016135ba565b909850965060608d0135955060808d013581101561376057600080fd5b6137708e60808f01358f016135ba565b909550935060a08d013581101561378657600080fd5b506137978d60a08e01358e01613644565b915060c08c013590509295989b509295989b9093969950565b6000602082840312156137c257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061380157634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561382257600080fd5b61382b8861351c565b965060208801356001600160401b038082111561384757600080fd5b6138538b838c01613579565b909850965060408a013591508082111561386c57600080fd5b6138788b838c016135ba565b909650945060608a013591508082111561389157600080fd5b5061389e8a828b016135ba565b989b979a50959850939692959293505050565b600080604083850312156138c457600080fd5b6138cd8361351c565b91506138db6020840161351c565b90509250929050565b6000602082840312156138f657600080fd5b5051919050565b60006001600160401b0380841115613917576139176135fe565b8360051b6020613928818301613614565b86815291850191818101903684111561394057600080fd5b865b848110156139745780358681111561395a5760008081fd5b61396636828b01613644565b845250918301918301613942565b50979650505050505050565b8183823760009101908152919050565b6000602082840312156139a257600080fd5b8151801515811461184b57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612500576125006139b2565b634e487b7160e01b600052601260045260246000fd5b600082613a0057613a006139db565b500490565b6000816000190483118215151615613a1f57613a1f6139b2565b500290565b80820180821115612500576125006139b2565b6001600160401b03828116828216039080821115613a5757613a576139b2565b5092915050565b600082613a6d57613a6d6139db565b500690565b634e487b7160e01b600052603260045260246000fd5b60005b83811015613aa3578181015183820152602001613a8b565b50506000910152565b60008151808452613ac4816020860160208601613a88565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b03831660208201526060604082018190526000906118e590830184613aac565b60008251613b1a818460208701613a88565b9190910192915050565b600060208284031215613b3657600080fd5b81516001600160e01b03198116811461184b57600080fd5b604081526000613b616040830185613aac565b905082151560208301529392505050565b600060ff831680613b8557613b856139db565b8060ff84160691505092915050565b60ff8281168282160390811115612500576125006139b2565b600060018201613bbf57613bbf6139b2565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613c99578160001904821115613c7f57613c7f6139b2565b80851615613c8c57918102915b93841c9390800290613c63565b509250929050565b600082613cb057506001612500565b81613cbd57506000612500565b8160018114613cd35760028114613cdd57613cf9565b6001915050612500565b60ff841115613cee57613cee6139b2565b50506001821b612500565b5060208310610133831016604e8410600b8410161715613d1c575081810a612500565b613d268383613c5e565b8060001904821115613d3a57613d3a6139b2565b029392505050565b600061184b8383613ca156fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212200b05ed5ae63b09c514431342b32abbec5ca9ab35e53d2a4b1a886369d8b7f6b164736f6c63430008100033", - "sourceMap": "748:10165:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:146;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:146;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:146;4866:1928:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:146;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:146;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:146;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:146;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;879:30;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:146;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:146;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:146;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:146;924:58:100;;973:9;924:58;;4866:1928;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:146;;5661:52:100;;::::1;7526:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;8445:2:146;5727:58:100::1;::::0;::::1;8427:21:146::0;8484:2;8464:18;;;8457:30;-1:-1:-1;;;8503:18:146;;;8496:51;8564:18;;5727:58:100::1;;;;;;;;;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;8795:2:146;5965:47:100::1;::::0;::::1;8777:21:146::0;8834:2;8814:18;;;8807:30;8873:29;8853:18;;;8846:57;8920:18;;5965:47:100::1;8593:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;10090:2:146;6648:67:100::1;::::0;::::1;10072:21:146::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:146;;;10141:51;10209:18;;6648:67:100::1;9888:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;10457:3:146;10435:16;;;;-1:-1:-1;;;;;;10431:43:146;2955:82:100;;::::1;10419:56:146::0;10530:3;10508:16;;;-1:-1:-1;;;;;;10504:51:146;10491:11;;;10484:72;10594:2;10590:15;-1:-1:-1;;10590:15:146;10572:12;;;10565:75;2955:82:100;;;;;;;;;10656:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:146;;3301:61:100;;::::1;7526:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;10881:2:146;3380:67:100::1;::::0;::::1;10863:21:146::0;10920:2;10900:18;;;10893:30;10959:33;10939:18;;;10932:61;11010:18;;3380:67:100::1;10679:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;11229:31:146;;;;11211:50;;11292:2;11277:18;;11270:34;11199:2;11184:18;;11039:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:146::0;3826:80:100;;;;;;;;;498:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10090:2:146;4090:31:100::1;::::0;::::1;10072:21:146::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:146;;;10141:51;10209:18;;4090:31:100::1;9888:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;11517:2:146;2704:63:39;;;11499:21:146;11556:2;11536:18;;;11529:30;11595:33;11575:18;;;11568:61;11646:18;;2704:63:39;11315:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;12153:2:146;8369:35:100;;;12135:21:146;12192:2;12172:18;;;12165:30;12231:27;12211:18;;;12204:55;12276:18;;8369:35:100;11951:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;12507:2:146;8484:22:100;;;12489:21:146;12546:2;12526:18;;;12519:30;-1:-1:-1;;;12565:18:146;;;12558:42;12617:18;;8484:22:100;12305:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;12848:2:146;8569:24:100;;;12830:21:146;12887:2;12867:18;;;12860:30;-1:-1:-1;;;12906:18:146;;;12899:44;12960:18;;8569:24:100;12646:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;13191:2:146;8779:65:100;;;13173:21:146;13230:2;13210:18;;;13203:30;13269:34;13249:18;;;13242:62;13340:25;13320:18;;;13313:53;13383:19;;8779:65:100;12989:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;13615:2:146;6959:81:100;;;13597:21:146;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:146;;;13666:54;13737:18;;6959:81:100;13413:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;14250:2:146;7050:76:100;;;14232:21:146;14289:2;14269:18;;;14262:30;14328:31;14308:18;;;14301:59;14377:18;;7050:76:100;14048:353:146;7050:76:100;6880:253;:::o;7194:121::-;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;14608:2:146;7260:48:100;;;14590:21:146;14647:2;14627:18;;;14620:30;-1:-1:-1;;;14666:18:146;;;14659:49;14725:18;;7260:48:100;14406:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;13615:2:146;7471:81:100;;;13597:21:146;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:146;;;13666:54;13737:18;;7471:81:100;13413:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;7544:31:146;;7570:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;7499:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;15145:2:146;7562:86:100;;;15127:21:146;15184:2;15164:18;;;15157:30;15223:32;15203:18;;;15196:60;15273:18;;7562:86:100;14943:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;7544:31:146;;7698:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;7499:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;15769:2:146;7746:84:100;;;15751:21:146;15808:2;15788:18;;;15781:30;15847:34;15827:18;;;15820:62;-1:-1:-1;;;15898:18:146;;;15891:32;15940:19;;7746:84:100;15567:398:146;7746:84:100;7461:376;7385:452;;:::o;3094:1947:110:-;3372:46;;-1:-1:-1;;;3372:46:110;;;7347:23:146;;3372:46:110;;;7329:42:146;3330:4:110;;;;3372:16;;:31;;7302:18:146;;3372:46:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;17242:2:146;4896:40:110;;;17224:21:146;17281:2;17261:18;;;17254:30;17320:32;17300:18;;;17293:60;17370:18;;4896:40:110;17040:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;17733:2:146;2652:38:111;;;17715:21:146;17772:2;17752:18;;;17745:30;17811;17791:18;;;17784:58;17859:18;;2652:38:111;17531:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;18090:2:146;3233:58:111;;;18072:21:146;18129:2;18109:18;;;18102:30;-1:-1:-1;;;18148:18:146;;;18141:52;18210:18;;3233:58:111;17888:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;18441:2:146;3450:58:111;;;18423:21:146;18480:2;18460:18;;;18453:30;18519:25;18499:18;;;18492:53;18562:18;;3450:58:111;18239:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;18793:2:146;3594:70:111;;;18775:21:146;18832:2;18812:18;;;18805:30;18871:34;18851:18;;;18844:62;-1:-1:-1;;;18922:18:146;;;18915:32;18964:19;;3594:70:111;18591:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;19196:2:146;3803:85:111;;;19178:21:146;19235:2;19215:18;;;19208:30;19274:34;19254:18;;;19247:62;-1:-1:-1;;;19325:18:146;;;19318:37;19372:19;;3803:85:111;18994:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;19604:2:146;4057:142:111;;;19586:21:146;19643:2;19623:18;;;19616:30;19682:34;19662:18;;;19655:62;-1:-1:-1;;;19733:18:146;;;19726:43;19786:19;;4057:142:111;19402:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;735:581:111:-;927:33;;-1:-1:-1;;21790:2:146;21786:15;;;21782:53;927:33:111;;;21770:66:146;872:7:111;;;;21852:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;22004:19:146;;22048:2;22039:12;;21875:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;22264:2:146;1072:58:111;;;22246:21:146;22303:2;22283:18;;;22276:30;-1:-1:-1;;;22322:18:146;;;22315:52;22384:18;;1072:58:111;22062:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;22004:19:146;;22048:2;22039:12;;21875:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;22615:2:146;601:65:111;;;22597:21:146;22654:2;22634:18;;;22627:30;22693;22673:18;;;22666:58;22741:18;;601:65:111;22413:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;22972:2:146;3101:49:77;;;22954:21:146;23011:2;22991:18;;;22984:30;-1:-1:-1;;;23030:18:146;;;23023:51;23091:18;;3101:49:77;22770:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;22004:19:146;;22048:2;22039:12;;21875:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;23322:2:146;3636:134:77;;;23304:21:146;23361:2;23341:18;;;23334:30;23400:34;23380:18;;;23373:62;-1:-1:-1;;;23451:18:146;;;23444:44;23505:19;;3636:134:77;23120:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;22004:19:146;;;22048:2;22039:12;;21875:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;23737:2:146;3893:176:77;;;23719:21:146;23776:2;23756:18;;;23749:30;23815:31;23795:18;;;23788:59;23864:18;;3893:176:77;23535:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;22004:19:146;;;22048:2;22039:12;;21875:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;24095:2:146;4222:186:77;;;24077:21:146;24134:2;24114:18;;;24107:30;24173:34;24153:18;;;24146:62;-1:-1:-1;;;24224:18:146;;;24217:37;24271:19;;4222:186:77;23893:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;24503:2:146;4509:156:77;;;24485:21:146;24542:2;24522:18;;;24515:30;24581:34;24561:18;;;24554:62;-1:-1:-1;;;24632:18:146;;;24625:36;24678:19;;4509:156:77;24301:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;24910:2:146;5384:158:77;;;24892:21:146;24949:2;24929:18;;;24922:30;24988:34;24968:18;;;24961:62;25059:29;25039:18;;;25032:57;25106:19;;5384:158:77;24708:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;25338:2:146;5626:162:77;;;25320:21:146;25377:2;25357:18;;;25350:30;25416:34;25396:18;;;25389:62;25487:28;25467:18;;;25460:56;25533:19;;5626:162:77;25136:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;26083:2:146;7009:171:77;;;26065:21:146;26122:2;26102:18;;;26095:30;26161:34;26141:18;;;26134:62;26232:28;26212:18;;;26205:56;26278:19;;7009:171:77;25881:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;26510:2:146;7843:185:77;;;26492:21:146;26549:2;26529:18;;;26522:30;26588:34;26568:18;;;26561:62;26659:31;26639:18;;;26632:59;26708:19;;7843:185:77;26308:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;26940:2:146;8463:156:77;;;26922:21:146;26979:2;26959:18;;;26952:30;27018:34;26998:18;;;26991:62;27089:27;27069:18;;;27062:55;27134:19;;8463:156:77;26738:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;27366:2:146;8703:160:77;;;27348:21:146;27405:2;27385:18;;;27378:30;27444:34;27424:18;;;27417:62;27515:26;27495:18;;;27488:54;27559:19;;8703:160:77;27164:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;27791:2:146;9439:60:77;;;27773:21:146;27830:2;27810:18;;;27803:30;27869:34;27849:18;;;27842:62;-1:-1:-1;;;27920:18:146;;;27913:48;27978:19;;9439:60:77;27589:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;28210:2:146;9556:50:77;;;28192:21:146;28249:2;28229:18;;;28222:30;28288:34;28268:18;;;28261:62;-1:-1:-1;;;28339:18:146;;;28332:38;28387:19;;9556:50:77;28008:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;28759:2:146;9641:47:77;;;28741:21:146;28798:2;28778:18;;;28771:30;28837:34;28817:18;;;28810:62;-1:-1:-1;;;28888:18:146;;;28881:35;28933:19;;9641:47:77;28557:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;29165:2:146;2161:136:75;;;29147:21:146;29204:2;29184:18;;;29177:30;29243:34;29223:18;;;29216:62;29314:26;29294:18;;;29287:54;29358:19;;2161:136:75;28963:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;29590:2:146;2308:134:75;;;29572:21:146;29629:2;29609:18;;;29602:30;29668:34;29648:18;;;29641:62;-1:-1:-1;;;29719:18:146;;;29712:48;29777:19;;2308:134:75;29388:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;30009:2:146;12579:55:75;;;29991:21:146;30048:2;30028:18;;;30021:30;30087:28;30067:18;;;30060:56;30133:18;;12579:55:75;29807:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;30364:2:146;11438:55:75;;;30346:21:146;30403:2;30383:18;;;30376:30;30442:28;30422:18;;;30415:56;30488:18;;11438:55:75;30162:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;30364:2:146;11598:72:75;;;30346:21:146;30403:2;30383:18;;;30376:30;30442:28;30422:18;;;30415:56;30488:18;;11598:72:75;30162:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;31545:2:146;409:63:108;;;31527:21:146;31584:2;31564:18;;;31557:30;-1:-1:-1;;;31603:18:146;;;31596:47;31660:18;;409:63:108;31343:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;33220:19:146;;;33264:2;33255:12;;33248:28;33301:2;33292:12;;33063:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;33220:19:146;;;33264:2;33255:12;;33248:28;33301:2;33292:12;;33063:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;33517:2:146;4505:137:75;;;33499:21:146;33556:2;33536:18;;;33529:30;33595:34;33575:18;;;33568:62;33666:27;33646:18;;;33639:55;33711:19;;4505:137:75;33315:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;33943:2:146;4653:136:75;;;33925:21:146;33982:2;33962:18;;;33955:30;34021:34;34001:18;;;33994:62;-1:-1:-1;;;34072:18:146;;;34065:50;34132:19;;4653:136:75;33741:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;34364:2:146;6699:156:75;;;34346:21:146;34403:2;34383:18;;;34376:30;-1:-1:-1;;;;;;;;;;;34422:18:146;;;34415:62;34513:34;34493:18;;;34486:62;-1:-1:-1;;;34564:19:146;;;34557:45;34619:19;;6699:156:75;34162:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;34851:2:146;7025:177:75;;;34833:21:146;34890:2;34870:18;;;34863:30;34929:34;34909:18;;;34902:62;35000:34;34980:18;;;34973:62;-1:-1:-1;;;35051:19:146;;;35044:44;35105:19;;7025:177:75;34649:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;35337:2:146;7387:164:75;;;35319:21:146;35376:2;35356:18;;;35349:30;-1:-1:-1;;;;;;;;;;;35395:18:146;;;35388:62;35486:34;35466:18;;;35459:62;-1:-1:-1;;;35537:19:146;;;35530:48;35595:19;;7387:164:75;35135:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;35827:2:146;7721:159:75;;;35809:21:146;35866:2;35846:18;;;35839:30;-1:-1:-1;;;;;;;;;;;35885:18:146;;;35878:62;35976:34;35956:18;;;35949:62;-1:-1:-1;;;36027:19:146;;;36020:41;36078:19;;7721:159:75;35625:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;36310:2:146;8042:142:75;;;36292:21:146;36349:2;36329:18;;;36322:30;-1:-1:-1;;;;;;;;;;;36368:18:146;;;36361:62;36459:34;36439:18;;;36432:62;-1:-1:-1;;;36510:19:146;;;36503:39;36559:19;;8042:142:75;36108:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;36791:2:146;8199:168:75;;;36773:21:146;36830:2;36810:18;;;36803:30;-1:-1:-1;;;;;;;;;;;36849:18:146;;;36842:62;36940:34;36920:18;;;36913:62;-1:-1:-1;;;36991:19:146;;;36984:43;37044:19;;8199:168:75;36589:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;37276:2:146;8617:153:75;;;37258:21:146;37315:2;37295:18;;;37288:30;-1:-1:-1;;;;;;;;;;;37334:18:146;;;37327:62;37425:34;37405:18;;;37398:62;-1:-1:-1;;;37476:19:146;;;37469:41;37527:19;;8617:153:75;37074:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;37759:2:146;8935:161:75;;;37741:21:146;37798:2;37778:18;;;37771:30;-1:-1:-1;;;;;;;;;;;37817:18:146;;;37810:62;37908:34;37888:18;;;37881:62;-1:-1:-1;;;37959:19:146;;;37952:44;38013:19;;8935:161:75;37557:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;38245:2:146;9266:157:75;;;38227:21:146;38284:2;38264:18;;;38257:30;-1:-1:-1;;;;;;;;;;;38303:18:146;;;38296:62;38394:34;38374:18;;;38367:62;-1:-1:-1;;;38445:19:146;;;38438:39;38494:19;;9266:157:75;38043:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;38726:2:146;9588:141:75;;;38708:21:146;38765:2;38745:18;;;38738:30;-1:-1:-1;;;;;;;;;;;38784:18:146;;;38777:62;38875:34;38855:18;;;38848:62;-1:-1:-1;;;38926:19:146;;;38919:37;38973:19;;9588:141:75;38524:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;39205:2:146;9744:168:75;;;39187:21:146;39244:2;39224:18;;;39217:30;-1:-1:-1;;;;;;;;;;;39263:18:146;;;39256:62;39354:34;39334:18;;;39327:62;-1:-1:-1;;;39405:19:146;;;39398:41;39456:19;;9744:168:75;39003:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;31545:2:146;989:63:74;;;31527:21:146;31584:2;31564:18;;;31557:30;-1:-1:-1;;;31603:18:146;;;31596:47;31660:18;;989:63:74;31343:341:146;14:171;81:20;;-1:-1:-1;;;;;130:30:146;;120:41;;110:69;;175:1;172;165:12;110:69;14:171;;;:::o;190:184::-;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:146;;-1:-1:-1;;;;;1222:30:146;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:146;;-1:-1:-1;;;;;1586:30:146;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:146;1991:40;;-1:-1:-1;;;;;2046:34:146;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:146:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:146;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:146;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:146:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:146;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:146;-1:-1:-1;3373:2:146;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:146;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:146;-1:-1:-1;3615:2:146;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:146;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:146;-1:-1:-1;3873:2:146;3858:18;;3845:32;;-1:-1:-1;3920:3:146;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:146;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:146;-1:-1:-1;4176:3:146;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:146;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:146;;4362:180;-1:-1:-1;4362:180:146:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:146;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:146;-1:-1:-1;6516:2:146;6501:18;;6488:32;;-1:-1:-1;6532:16:146;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:146;-1:-1:-1;6779:2:146;6764:18;;6751:32;;-1:-1:-1;6795:16:146;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:146;;-1:-1:-1;5840:1155:146;;;;6837:98;;-1:-1:-1;;;5840:1155:146:o;7587:256::-;7653:6;7661;7714:2;7702:9;7693:7;7689:23;7685:32;7682:52;;;7730:1;7727;7720:12;7682:52;7753:28;7771:9;7753:28;:::i;:::-;7743:38;;7800:37;7833:2;7822:9;7818:18;7800:37;:::i;:::-;7790:47;;7587:256;;;;;:::o;8054:184::-;8124:6;8177:2;8165:9;8156:7;8152:23;8148:32;8145:52;;;8193:1;8190;8183:12;8145:52;-1:-1:-1;8216:16:146;;8054:184;-1:-1:-1;8054:184:146:o;8949:934::-;9085:9;-1:-1:-1;;;;;9160:2:146;9152:6;9149:14;9146:40;;;9166:18;;:::i;:::-;9212:6;9209:1;9205:14;9238:4;9262:28;9286:2;9282;9278:11;9262:28;:::i;:::-;9324:19;;;9394:14;;;;9359:12;;;;9431:14;9420:26;;9417:46;;;9459:1;9456;9449:12;9417:46;9483:5;9497:353;9513:6;9508:3;9505:15;9497:353;;;9599:3;9586:17;9635:2;9622:11;9619:19;9616:109;;;9679:1;9708:2;9704;9697:14;9616:109;9750:57;9792:14;9778:11;9771:5;9767:23;9750:57;:::i;:::-;9738:70;;-1:-1:-1;9828:12:146;;;;9530;;9497:353;;;-1:-1:-1;9872:5:146;8949:934;-1:-1:-1;;;;;;;8949:934:146:o;11675:271::-;11858:6;11850;11845:3;11832:33;11814:3;11884:16;;11909:13;;;11884:16;11675:271;-1:-1:-1;11675:271:146:o;13766:277::-;13833:6;13886:2;13874:9;13865:7;13861:23;13857:32;13854:52;;;13902:1;13899;13892:12;13854:52;13934:9;13928:16;13987:5;13980:13;13973:21;13966:5;13963:32;13953:60;;14009:1;14006;13999:12;15302:127;15363:10;15358:3;15354:20;15351:1;15344:31;15394:4;15391:1;15384:15;15418:4;15415:1;15408:15;15434:128;15501:9;;;15522:11;;;15519:37;;;15536:18;;:::i;16175:127::-;16236:10;16231:3;16227:20;16224:1;16217:31;16267:4;16264:1;16257:15;16291:4;16288:1;16281:15;16307:120;16347:1;16373;16363:35;;16378:18;;:::i;:::-;-1:-1:-1;16412:9:146;;16307:120::o;16432:168::-;16472:7;16538:1;16534;16530:6;16526:14;16523:1;16520:21;16515:1;16508:9;16501:17;16497:45;16494:71;;;16545:18;;:::i;:::-;-1:-1:-1;16585:9:146;;16432:168::o;16605:125::-;16670:9;;;16691:10;;;16688:36;;;16704:18;;:::i;16735:183::-;-1:-1:-1;;;;;16854:10:146;;;16842;;;16838:27;;16877:12;;;16874:38;;;16892:18;;:::i;:::-;16874:38;16735:183;;;;:::o;16923:112::-;16955:1;16981;16971:35;;16986:18;;:::i;:::-;-1:-1:-1;17020:9:146;;16923:112::o;17399:127::-;17460:10;17455:3;17451:20;17448:1;17441:31;17491:4;17488:1;17481:15;17515:4;17512:1;17505:15;19816:250;19901:1;19911:113;19925:6;19922:1;19919:13;19911:113;;;20001:11;;;19995:18;19982:11;;;19975:39;19947:2;19940:10;19911:113;;;-1:-1:-1;;20058:1:146;20040:16;;20033:27;19816:250::o;20071:270::-;20112:3;20150:5;20144:12;20177:6;20172:3;20165:19;20193:76;20262:6;20255:4;20250:3;20246:14;20239:4;20232:5;20228:16;20193:76;:::i;:::-;20323:2;20302:15;-1:-1:-1;;20298:29:146;20289:39;;;;20330:4;20285:50;;20071:270;-1:-1:-1;;20071:270:146:o;20346:400::-;20559:10;20547:23;;20529:42;;-1:-1:-1;;;;;20607:32:146;;20602:2;20587:18;;20580:60;20676:2;20671;20656:18;;20649:30;;;-1:-1:-1;;20696:44:146;;20721:18;;20713:6;20696:44;:::i;20751:287::-;20880:3;20918:6;20912:13;20934:66;20993:6;20988:3;20981:4;20973:6;20969:17;20934:66;:::i;:::-;21016:16;;;;;20751:287;-1:-1:-1;;20751:287:146:o;21043:290::-;21112:6;21165:2;21153:9;21144:7;21140:23;21136:32;21133:52;;;21181:1;21178;21171:12;21133:52;21207:16;;-1:-1:-1;;;;;;21252:32:146;;21242:43;;21232:71;;21299:1;21296;21289:12;21338:298;21507:2;21496:9;21489:21;21470:4;21527:44;21567:2;21556:9;21552:18;21544:6;21527:44;:::i;:::-;21519:52;;21621:6;21614:14;21607:22;21602:2;21591:9;21587:18;21580:50;21338:298;;;;;:::o;25563:157::-;25593:1;25627:4;25624:1;25620:12;25651:3;25641:37;;25658:18;;:::i;:::-;25710:3;25703:4;25700:1;25696:12;25692:22;25687:27;;;25563:157;;;;:::o;25725:151::-;25815:4;25808:12;;;25794;;;25790:31;;25833:14;;25830:40;;;25850:18;;:::i;28417:135::-;28456:3;28477:17;;;28474:43;;28497:18;;:::i;:::-;-1:-1:-1;28544:1:146;28533:13;;28417:135::o;30517:478::-;30719:2;30701:21;;;30758:2;30738:18;;;30731:30;30797:34;30792:2;30777:18;;30770:62;30868:34;30863:2;30848:18;;30841:62;-1:-1:-1;;;30934:3:146;30919:19;;30912:41;30985:3;30970:19;;30517:478::o;31000:338::-;31202:2;31184:21;;;31241:2;31221:18;;;31214:30;-1:-1:-1;;;31275:2:146;31260:18;;31253:44;31329:2;31314:18;;31000:338::o;31689:422::-;31778:1;31821:5;31778:1;31835:270;31856:7;31846:8;31843:21;31835:270;;;31915:4;31911:1;31907:6;31903:17;31897:4;31894:27;31891:53;;;31924:18;;:::i;:::-;31974:7;31964:8;31960:22;31957:55;;;31994:16;;;;31957:55;32073:22;;;;32033:15;;;;31835:270;;;31839:3;31689:422;;;;;:::o;32116:806::-;32165:5;32195:8;32185:80;;-1:-1:-1;32236:1:146;32250:5;;32185:80;32284:4;32274:76;;-1:-1:-1;32321:1:146;32335:5;;32274:76;32366:4;32384:1;32379:59;;;;32452:1;32447:130;;;;32359:218;;32379:59;32409:1;32400:10;;32423:5;;;32447:130;32484:3;32474:8;32471:17;32468:43;;;32491:18;;:::i;:::-;-1:-1:-1;;32547:1:146;32533:16;;32562:5;;32359:218;;32661:2;32651:8;32648:16;32642:3;32636:4;32633:13;32629:36;32623:2;32613:8;32610:16;32605:2;32599:4;32596:12;32592:35;32589:77;32586:159;;;-1:-1:-1;32698:19:146;;;32730:5;;32586:159;32777:34;32802:8;32796:4;32777:34;:::i;:::-;32847:6;32843:1;32839:6;32835:19;32826:7;32823:32;32820:58;;;32858:18;;:::i;:::-;32896:20;;32116:806;-1:-1:-1;;;32116:806:146:o;32927:131::-;32987:5;33016:36;33043:8;33037:4;33016:36;:::i", - "linkReferences": { - "src/libraries/BeaconChainForks.sol": { - "BeaconChainForks": [ - { - "start": 4000, - "length": 20 - } - ] - } - } + "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd366004613501565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61014561013036600461351c565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61016861016336600461367c565b6102c6565b005b61018d610178366004613779565b60076020526000908152604090205460ff1681565b60405161011991906137a8565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc36600461351c565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d36600461351c565b6004602052600090815260409020546001600160a01b031681565b6101686102463660046137d0565b610599565b61010f610259366004613779565b60096020526000908152604090205481565b61027e610279366004613779565b6108bc565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f6565b6000806102db8b8b61094f565b915091506102ec8260400151610bb9565b6102f98260400151610ceb565b6000808e8e81019061030b919061387a565b9150915061031d828560400151610d47565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac91906138ad565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104418b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890610f80565b9050806104905760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f58787906104a691906138c6565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261118a565b905081811461053e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061058082828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153d92505050565b505061058c6001603355565b5050505050505050505050565b6105a16108f6565b6000806105ae888861094f565b915091506105bf8260400151610bb9565b6105cc8260400151610ceb565b6105da898360400151610d47565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107915760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f091906138ad565b905060008190036107435760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b610777610750898b6138c6565b60408088015163ffffffff166000908152600560205220546001600160a01b0316836116e4565b600083815260096020526040902081905592506107a39050565b60008181526009602052604090205491505b6000846020015160016040516020016107d19291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061081982856108148a8c6138c6565b6117e0565b90508481146108625760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a782828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153d92505050565b50506108b36001603355565b50505050505050565b600381815481106108cc57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109cc85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061187c92505050565b9050600085856040516109e0929190613949565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0f57610a0f613792565b14610a5c5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610aa45760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610aee5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b39575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610bac5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1f5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190613959565b610ce85760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce85760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610dad5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906138ad565b600003610e895760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1391906138ad565b610f1d9042613991565b90506078811015610f7b5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b600080610f8c83611941565b9050600081856001600160401b031610610fa757601b610faa565b60075b60ff169050600082866001600160401b031610610fe657612000610fd7846001600160401b038916613991565b610fe191906139ba565b610ffb565b610ffb6120006001600160401b0388166139ba565b90506000866001600160401b0316886001600160401b03160361103a5750600b611027816102006139ce565b611033906101836139ed565b905061116f565b612000611047888a613a00565b6001600160401b0316116110a95750600b6110638160206139ce565b61106e9060066139ed565b90506110856120006001600160401b038916613a27565b611091612000836139ce565b61109b91906139ed565b9050611027816102006139ce565b876001600160401b0316876001600160401b031610156111275750600b826110d28260206139ce565b6110dc91906139ed565b90506110e98160026139ce565b6110f49060006139ed565b9050816111056301000000836139ce565b61110f91906139ed565b905061111c8160026139ce565b61106e9060016139ed565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016103ef565b61117b8b828c8c611981565b9b9a5050505050505050505050565b600080611198878a8a61199b565b90506000816000815181106111af576111af613a3b565b01602001516001600160f81b03191690506000600160f81b8214806111e15750600160f91b6001600160f81b03198316145b156111ee57506001611253565b600360fe1b6001600160f81b031983161061120b57506000611253565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b6000602084019050600060405180604001604052808487516112759190613991565b815260200161128485856139ed565b9052905060006112938261223b565b905080516004146112df5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b6000611304826003815181106112f7576112f7613a3b565b602002602001015161223b565b905080518c106113565760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b600061136d828e815181106112f7576112f7613a3b565b905080516003146113cb5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006113f0826000815181106113e3576113e3613a3b565b6020026020010151612460565b90508c6001600160a01b0316816001600160a01b0316146114635760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b600061147b836001815181106112f7576112f7613a3b565b90508c6114a18260008151811061149457611494613a3b565b60200260200101516124d4565b146115045760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b611526818d8151811061151957611519613a3b565b60200260200101516124db565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161156c93929190613aa1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516115be9190613ad1565b6000604051808303816000865af19150503d80600081146115fb576040519150601f19603f3d011682016040523d82523d6000602084013e611600565b606091505b50805191955093506000925060200390506116425760008280602001905181019061162b9190613aed565b6001600160e01b031916631dee306b60e11b149150505b82801561164c5750805b1561166f576000858152600760205260409020805460ff19166002179055611689565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe894787876040516116d4929190613b17565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b1660208201526000908190603401604051602081830303815290604052805190602001209050600061174e8260405160200161173891815260200190565b604051602081830303815290604052878661199b565b9050600081511161179a5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b60006117ad6117a8836125de565b61223b565b905080516004146117bd57600080fd5b6117d38160028151811061149457611494613a3b565b93505050505b9392505050565b60008061180f856040516020016117f991815260200190565b604051602081830303815290604052848661199b565b905060008151116118625760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b61187361186e826125de565b6124d4565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091611930918a919061192b908290613991565b612631565b60c088015250949695505050505050565b60008163ffffffff1660010361195b5750625ec000919050565b8163ffffffff166005036119735750624f4000919050565b50600019919050565b919050565b60008061198f86868661271d565b90921495945050505050565b606060008451116119e65760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b60006119f1846128ac565b905060006119fe8661299a565b9050600084604051602001611a1591815260200190565b60405160208183030381529060405290506000805b84518110156121e4576000858281518110611a4757611a47613a3b565b602002602001015190508451831115611ab95760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611b585780518051602091820120604051611b0792611ae192910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b535760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611c4e565b805151602011611bde5780518051602091820120604051611b8292611ae192910190815260200190565b611b535760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611c4e5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611c5a601060016139ed565b81602001515103611e075784518303611d9f576000611c968260200151601081518110611c8957611c89613a3b565b6020026020010151612ab4565b90506000815111611d0f5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611d1d9190613991565b8314611d915760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b96506117d995505050505050565b6000858481518110611db357611db3613a3b565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611dde57611dde613a3b565b60200260200101519050611df181612bd7565b9550611dfe6001866139ed565b945050506121d1565b600281602001515103612178576000611e1f82612bfc565b9050600081600081518110611e3657611e36613a3b565b016020015160f81c90506000611e4d600283613b3b565b611e58906002613b5d565b90506000611e69848360ff16612c20565b90506000611e778a89612c20565b90506000611e858383612c56565b905080835114611efd5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611f12575060ff85166003145b156120b85780825114611f8d5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611fa98860200151600181518110611c8957611c89613a3b565b905060008151116120225760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d516120309190613991565b89146120a45760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c506117d99b505050505050505050505050565b60ff851615806120cb575060ff85166001145b1561210a576120f787602001516001815181106120ea576120ea613a3b565b6020026020010151612bd7565b9950612103818a6139ed565b985061216d565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b5050505050506121d1565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b50806121dc81613b76565b915050611a2a565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b6060600080600061224b85612cd5565b91945092509050600181600181111561226657612266613792565b146122d95760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b84516122e583856139ed565b1461234d5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123665790505090506000845b8751811015612454576000806123d96040518060400160405280858d600001516123bd9190613991565b8152602001858d602001516123d291906139ed565b9052612cd5565b5091509150604051806040016040528083836123f591906139ed565b8152602001848c6020015161240a91906139ed565b81525085858151811061241f5761241f613a3b565b60209081029190910101526124356001856139ed565b935061244181836139ed565b61244b90846139ed565b92505050612393565b50815295945050505050565b805160009060010361247457506000919050565b81516015146124c55760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b6124ce826124d4565b92915050565b60006124ce825b60006021826000015111156125325760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061254085612cd5565b91945092509050600081600181111561255b5761255b613792565b146125a85760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125ba91906139ed565b805190915060208410156125d45760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126135760405162461bcd60e51b81526004016103ef90613b8f565b50604080518082019091528151815260209182019181019190915290565b60608161263f81601f6139ed565b101561265d5760405162461bcd60e51b81526004016103ef90613bff565b61266782846139ed565b845110156126ab5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b6060821580156126ca5760405191506000825260208201604052612714565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127035780518352602092830192016126eb565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161272e91906139ed565b612739906002613d0b565b1161274357600080fd5b8360005b846001146127145761275a600286613a27565b6001036127f957600284828151811061277557612775613a3b565b602002602001015183604051602001612798929190918252602082015260400190565b60408051601f19818403018152908290526127b291613ad1565b602060405180830381855afa1580156127cf573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127f291906138ad565b915061288d565b60028285838151811061280e5761280e613a3b565b6020026020010151604051602001612830929190918252602082015260400190565b60408051601f198184030181529082905261284a91613ad1565b602060405180830381855afa158015612867573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061288a91906138ad565b91505b6128986002866139ba565b9450806128a481613b76565b915050612747565b80516060906000816001600160401b038111156128cb576128cb6135c7565b60405190808252806020026020018201604052801561291057816020015b60408051808201909152606080825260208201528152602001906001900390816128e95790505b50905060005b8281101561299257604051806040016040528086838151811061293b5761293b613a3b565b6020026020010151815260200161296a87848151811061295d5761295d613a3b565b6020026020010151613398565b81525082828151811061297f5761297f613a3b565b6020908102919091010152600101612916565b509392505050565b805160609060006129ac8260026139ce565b6001600160401b038111156129c3576129c36135c7565b6040519080825280601f01601f1916602001820160405280156129ed576020820181803683370190505b5090506000805b83811015612aaa57858181518110612a0e57612a0e613a3b565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a368360026139ce565b81518110612a4657612a46613a3b565b60200101906001600160f81b031916908160001a905350600f60f81b821683612a708360026139ce565b612a7b9060016139ed565b81518110612a8b57612a8b613a3b565b60200101906001600160f81b031916908160001a9053506001016129f4565b5090949350505050565b60606000806000612ac485612cd5565b919450925090506000816001811115612adf57612adf613792565b14612b525760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612b5c82846139ed565b855114612bc85760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b611873856020015184846133a6565b60606020826000015110612bf357612bee82612ab4565b6124ce565b6124ce82613446565b60606124ce612c1b8360200151600081518110611c8957611c89613a3b565b61299a565b606082518210612c3f57506040805160208101909152600081526124ce565b6117d98383848651612c519190613991565b61345c565b60008060008351855110612c6b578351612c6e565b84515b90505b8082108015612cc55750838281518110612c8d57612c8d613a3b565b602001015160f81c60f81b6001600160f81b031916858381518110612cb457612cb4613a3b565b01602001516001600160f81b031916145b1561299257816001019150612c71565b600080600080846000015111612cfd5760405162461bcd60e51b81526004016103ef90613b8f565b6020840151805160001a607f8111612d22576000600160009450945094505050613391565b60b78111612e7f576000612d37608083613991565b905080876000015111612db75760405162461bcd60e51b815260206004820152604e6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612de45750600160ff1b6001600160f81b0319821610155b612e6c5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b5060019550935060009250613391915050565b60bf81116130c0576000612e9460b783613991565b905080876000015111612f175760405162461bcd60e51b81526020600482015260516024820152600080516020613d1883398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612f9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c603781116130215760405162461bcd60e51b81526020600482015260486024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b61302b81846139ed565b8951116130a35760405162461bcd60e51b815260206004820152604c6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b6130ae8360016139ed565b97509550600094506133919350505050565b60f781116131625760006130d560c083613991565b9050808760000151116131515760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b600195509350849250613391915050565b600061316f60f783613991565b9050808760000151116131ee5760405162461bcd60e51b815260206004820152604d6024820152600080516020613d1883398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036132735760405162461bcd60e51b81526020600482015260486024820152600080516020613d1883398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c603781116132f45760405162461bcd60e51b81526020600482015260466024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6132fe81846139ed565b8951116133745760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b61337f8360016139ed565b97509550600194506133919350505050565b9193909250565b60606124ce6117a8836125de565b60606000826001600160401b038111156133c2576133c26135c7565b6040519080825280601f01601f1916602001820160405280156133ec576020820181803683370190505b509050826000036133fe5790506117d9565b600061340a85876139ed565b90506020820160005b8581101561342b578281015182820152602001613413565b8581111561343a576000868301525b50919695505050505050565b60606124ce8260200151600084600001516133a6565b60608182601f0110156134815760405162461bcd60e51b81526004016103ef90613bff565b8282840110156134a35760405162461bcd60e51b81526004016103ef90613bff565b818301845110156126ab5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461197c57600080fd5b60006020828403121561351357600080fd5b6117d9826134ea565b60006020828403121561352e57600080fd5b813563ffffffff811681146117d957600080fd5b60008083601f84011261355457600080fd5b5081356001600160401b0381111561356b57600080fd5b602083019150836020828501011115610bb257600080fd5b60008083601f84011261359557600080fd5b5081356001600160401b038111156135ac57600080fd5b6020830191508360208260051b8501011115610bb257600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613605576136056135c7565b604052919050565b600082601f83011261361e57600080fd5b81356001600160401b03811115613637576136376135c7565b61364a601f8201601f19166020016135dd565b81815284602083860101111561365f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561369d57600080fd5b6001600160401b03808d3511156136b357600080fd5b6136c08e8e358f01613542565b909c509a5060208d01358110156136d657600080fd5b6136e68e60208f01358f01613542565b909a50985060408d01358110156136fc57600080fd5b61370c8e60408f01358f01613583565b909850965060608d0135955060808d013581101561372957600080fd5b6137398e60808f01358f01613583565b909550935060a08d013581101561374f57600080fd5b506137608d60a08e01358e0161360d565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561378b57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106137ca57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156137eb57600080fd5b6137f4886134ea565b965060208801356001600160401b038082111561381057600080fd5b61381c8b838c01613542565b909850965060408a013591508082111561383557600080fd5b6138418b838c01613583565b909650945060608a013591508082111561385a57600080fd5b506138678a828b01613583565b989b979a50959850939692959293505050565b6000806040838503121561388d57600080fd5b613896836134ea565b91506138a4602084016134ea565b90509250929050565b6000602082840312156138bf57600080fd5b5051919050565b60006001600160401b03808411156138e0576138e06135c7565b8360051b60206138f18183016135dd565b86815291850191818101903684111561390957600080fd5b865b8481101561393d578035868111156139235760008081fd5b61392f36828b0161360d565b84525091830191830161390b565b50979650505050505050565b8183823760009101908152919050565b60006020828403121561396b57600080fd5b815180151581146117d957600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156124ce576124ce61397b565b634e487b7160e01b600052601260045260246000fd5b6000826139c9576139c96139a4565b500490565b60008160001904831182151516156139e8576139e861397b565b500290565b808201808211156124ce576124ce61397b565b6001600160401b03828116828216039080821115613a2057613a2061397b565b5092915050565b600082613a3657613a366139a4565b500690565b634e487b7160e01b600052603260045260246000fd5b60005b83811015613a6c578181015183820152602001613a54565b50506000910152565b60008151808452613a8d816020860160208601613a51565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061187390830184613a75565b60008251613ae3818460208701613a51565b9190910192915050565b600060208284031215613aff57600080fd5b81516001600160e01b0319811681146117d957600080fd5b604081526000613b2a6040830185613a75565b905082151560208301529392505050565b600060ff831680613b4e57613b4e6139a4565b8060ff84160691505092915050565b60ff82811682821603908111156124ce576124ce61397b565b600060018201613b8857613b8861397b565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613c62578160001904821115613c4857613c4861397b565b80851615613c5557918102915b93841c9390800290613c2c565b509250929050565b600082613c79575060016124ce565b81613c86575060006124ce565b8160018114613c9c5760028114613ca657613cc2565b60019150506124ce565b60ff841115613cb757613cb761397b565b50506001821b6124ce565b5060208310610133831016604e8410600b8410161715613ce5575081810a6124ce565b613cef8383613c27565b8060001904821115613d0357613d0361397b565b029392505050565b60006117d98383613c6a56fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212205d4d18cda1d7715dd0a0831f230e2f2c2b99ab23f72ebb0504c905bd4898097c64736f6c63430008100033", + "sourceMap": "748:10165:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:146;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:146;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:146;4866:1928:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:146;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:146;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:146;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:146;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;879:30;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:146;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:146;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:146;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:146;924:58:100;;973:9;924:58;;4866:1928;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:146;;5661:52:100;;::::1;7526:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;8445:2:146;5727:58:100::1;::::0;::::1;8427:21:146::0;8484:2;8464:18;;;8457:30;-1:-1:-1;;;8503:18:146;;;8496:51;8564:18;;5727:58:100::1;;;;;;;;;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;8795:2:146;5965:47:100::1;::::0;::::1;8777:21:146::0;8834:2;8814:18;;;8807:30;8873:29;8853:18;;;8846:57;8920:18;;5965:47:100::1;8593:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;10090:2:146;6648:67:100::1;::::0;::::1;10072:21:146::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:146;;;10141:51;10209:18;;6648:67:100::1;9888:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;10457:3:146;10435:16;;;;-1:-1:-1;;;;;;10431:43:146;2955:82:100;;::::1;10419:56:146::0;10530:3;10508:16;;;-1:-1:-1;;;;;;10504:51:146;10491:11;;;10484:72;10594:2;10590:15;-1:-1:-1;;10590:15:146;10572:12;;;10565:75;2955:82:100;;;;;;;;;10656:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:146;;3301:61:100;;::::1;7526:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;10881:2:146;3380:67:100::1;::::0;::::1;10863:21:146::0;10920:2;10900:18;;;10893:30;10959:33;10939:18;;;10932:61;11010:18;;3380:67:100::1;10679:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;11229:31:146;;;;11211:50;;11292:2;11277:18;;11270:34;11199:2;11184:18;;11039:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:146::0;3826:80:100;;;;;;;;;498:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10090:2:146;4090:31:100::1;::::0;::::1;10072:21:146::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:146;;;10141:51;10209:18;;4090:31:100::1;9888:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;11517:2:146;2704:63:39;;;11499:21:146;11556:2;11536:18;;;11529:30;11595:33;11575:18;;;11568:61;11646:18;;2704:63:39;11315:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;12153:2:146;8369:35:100;;;12135:21:146;12192:2;12172:18;;;12165:30;12231:27;12211:18;;;12204:55;12276:18;;8369:35:100;11951:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;12507:2:146;8484:22:100;;;12489:21:146;12546:2;12526:18;;;12519:30;-1:-1:-1;;;12565:18:146;;;12558:42;12617:18;;8484:22:100;12305:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;12848:2:146;8569:24:100;;;12830:21:146;12887:2;12867:18;;;12860:30;-1:-1:-1;;;12906:18:146;;;12899:44;12960:18;;8569:24:100;12646:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;13191:2:146;8779:65:100;;;13173:21:146;13230:2;13210:18;;;13203:30;13269:34;13249:18;;;13242:62;13340:25;13320:18;;;13313:53;13383:19;;8779:65:100;12989:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;13615:2:146;6959:81:100;;;13597:21:146;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:146;;;13666:54;13737:18;;6959:81:100;13413:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;14250:2:146;7050:76:100;;;14232:21:146;14289:2;14269:18;;;14262:30;14328:31;14308:18;;;14301:59;14377:18;;7050:76:100;14048:353:146;7050:76:100;6880:253;:::o;7194:121::-;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;14608:2:146;7260:48:100;;;14590:21:146;14647:2;14627:18;;;14620:30;-1:-1:-1;;;14666:18:146;;;14659:49;14725:18;;7260:48:100;14406:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;13615:2:146;7471:81:100;;;13597:21:146;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:146;;;13666:54;13737:18;;7471:81:100;13413:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;7544:31:146;;7570:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;7499:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;15145:2:146;7562:86:100;;;15127:21:146;15184:2;15164:18;;;15157:30;15223:32;15203:18;;;15196:60;15273:18;;7562:86:100;14943:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;7544:31:146;;7698:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;7499:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;15769:2:146;7746:84:100;;;15751:21:146;15808:2;15788:18;;;15781:30;15847:34;15827:18;;;15820:62;-1:-1:-1;;;15898:18:146;;;15891:32;15940:19;;7746:84:100;15567:398:146;7746:84:100;7461:376;7385:452;;:::o;3094:1947:110:-;3330:4;3346:23;3372:46;3404:13;3372:31;:46::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;17037:2:146;4896:40:110;;;17019:21:146;17076:2;17056:18;;;17049:30;17115:32;17095:18;;;17088:60;17165:18;;4896:40:110;16835:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;17528:2:146;2652:38:111;;;17510:21:146;17567:2;17547:18;;;17540:30;17606;17586:18;;;17579:58;17654:18;;2652:38:111;17326:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;17885:2:146;3233:58:111;;;17867:21:146;17924:2;17904:18;;;17897:30;-1:-1:-1;;;17943:18:146;;;17936:52;18005:18;;3233:58:111;17683:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;18236:2:146;3450:58:111;;;18218:21:146;18275:2;18255:18;;;18248:30;18314:25;18294:18;;;18287:53;18357:18;;3450:58:111;18034:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;18588:2:146;3594:70:111;;;18570:21:146;18627:2;18607:18;;;18600:30;18666:34;18646:18;;;18639:62;-1:-1:-1;;;18717:18:146;;;18710:32;18759:19;;3594:70:111;18386:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;18991:2:146;3803:85:111;;;18973:21:146;19030:2;19010:18;;;19003:30;19069:34;19049:18;;;19042:62;-1:-1:-1;;;19120:18:146;;;19113:37;19167:19;;3803:85:111;18789:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;19399:2:146;4057:142:111;;;19381:21:146;19438:2;19418:18;;;19411:30;19477:34;19457:18;;;19450:62;-1:-1:-1;;;19528:18:146;;;19521:43;19581:19;;4057:142:111;19197:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;735:581:111:-;927:33;;-1:-1:-1;;21585:2:146;21581:15;;;21577:53;927:33:111;;;21565:66:146;872:7:111;;;;21647:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;21799:19:146;;21843:2;21834:12;;21670:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;22059:2:146;1072:58:111;;;22041:21:146;22098:2;22078:18;;;22071:30;-1:-1:-1;;;22117:18:146;;;22110:52;22179:18;;1072:58:111;21857:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;21799:19:146;;21843:2;21834:12;;21670:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;22410:2:146;601:65:111;;;22392:21:146;22449:2;22429:18;;;22422:30;22488;22468:18;;;22461:58;22536:18;;601:65:111;22208:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;56:776:107:-;125:7;240:13;:18;;257:1;240:18;236:590;;-1:-1:-1;383:7:107;;56:776;-1:-1:-1;56:776:107:o;236:590::-;411:13;:18;;428:1;411:18;407:419;;-1:-1:-1;619:7:107;;56:776;-1:-1:-1;56:776:107:o;407:419::-;-1:-1:-1;;;803:12:107;56:776;-1:-1:-1;56:776:107:o;407:419::-;56:776;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;22767:2:146;3101:49:77;;;22749:21:146;22806:2;22786:18;;;22779:30;-1:-1:-1;;;22825:18:146;;;22818:51;22886:18;;3101:49:77;22565:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;21799:19:146;;21843:2;21834:12;;21670:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;23117:2:146;3636:134:77;;;23099:21:146;23156:2;23136:18;;;23129:30;23195:34;23175:18;;;23168:62;-1:-1:-1;;;23246:18:146;;;23239:44;23300:19;;3636:134:77;22915:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;21799:19:146;;;21843:2;21834:12;;21670:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;23532:2:146;3893:176:77;;;23514:21:146;23571:2;23551:18;;;23544:30;23610:31;23590:18;;;23583:59;23659:18;;3893:176:77;23330:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;21799:19:146;;;21843:2;21834:12;;21670:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;23890:2:146;4222:186:77;;;23872:21:146;23929:2;23909:18;;;23902:30;23968:34;23948:18;;;23941:62;-1:-1:-1;;;24019:18:146;;;24012:37;24066:19;;4222:186:77;23688:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;24298:2:146;4509:156:77;;;24280:21:146;24337:2;24317:18;;;24310:30;24376:34;24356:18;;;24349:62;-1:-1:-1;;;24427:18:146;;;24420:36;24473:19;;4509:156:77;24096:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;24705:2:146;5384:158:77;;;24687:21:146;24744:2;24724:18;;;24717:30;24783:34;24763:18;;;24756:62;24854:29;24834:18;;;24827:57;24901:19;;5384:158:77;24503:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;25133:2:146;5626:162:77;;;25115:21:146;25172:2;25152:18;;;25145:30;25211:34;25191:18;;;25184:62;25282:28;25262:18;;;25255:56;25328:19;;5626:162:77;24931:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;25878:2:146;7009:171:77;;;25860:21:146;25917:2;25897:18;;;25890:30;25956:34;25936:18;;;25929:62;26027:28;26007:18;;;26000:56;26073:19;;7009:171:77;25676:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;26305:2:146;7843:185:77;;;26287:21:146;26344:2;26324:18;;;26317:30;26383:34;26363:18;;;26356:62;26454:31;26434:18;;;26427:59;26503:19;;7843:185:77;26103:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;26735:2:146;8463:156:77;;;26717:21:146;26774:2;26754:18;;;26747:30;26813:34;26793:18;;;26786:62;26884:27;26864:18;;;26857:55;26929:19;;8463:156:77;26533:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;27161:2:146;8703:160:77;;;27143:21:146;27200:2;27180:18;;;27173:30;27239:34;27219:18;;;27212:62;27310:26;27290:18;;;27283:54;27354:19;;8703:160:77;26959:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;27586:2:146;9439:60:77;;;27568:21:146;27625:2;27605:18;;;27598:30;27664:34;27644:18;;;27637:62;-1:-1:-1;;;27715:18:146;;;27708:48;27773:19;;9439:60:77;27384:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;28005:2:146;9556:50:77;;;27987:21:146;28044:2;28024:18;;;28017:30;28083:34;28063:18;;;28056:62;-1:-1:-1;;;28134:18:146;;;28127:38;28182:19;;9556:50:77;27803:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;28554:2:146;9641:47:77;;;28536:21:146;28593:2;28573:18;;;28566:30;28632:34;28612:18;;;28605:62;-1:-1:-1;;;28683:18:146;;;28676:35;28728:19;;9641:47:77;28352:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;28960:2:146;2161:136:75;;;28942:21:146;28999:2;28979:18;;;28972:30;29038:34;29018:18;;;29011:62;29109:26;29089:18;;;29082:54;29153:19;;2161:136:75;28758:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;29385:2:146;2308:134:75;;;29367:21:146;29424:2;29404:18;;;29397:30;29463:34;29443:18;;;29436:62;-1:-1:-1;;;29514:18:146;;;29507:48;29572:19;;2308:134:75;29183:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;29804:2:146;12579:55:75;;;29786:21:146;29843:2;29823:18;;;29816:30;29882:28;29862:18;;;29855:56;29928:18;;12579:55:75;29602:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;30159:2:146;11438:55:75;;;30141:21:146;30198:2;30178:18;;;30171:30;30237:28;30217:18;;;30210:56;30283:18;;11438:55:75;29957:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;30159:2:146;11598:72:75;;;30141:21:146;30198:2;30178:18;;;30171:30;30237:28;30217:18;;;30210:56;30283:18;;11598:72:75;29957:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;31340:2:146;409:63:108;;;31322:21:146;31379:2;31359:18;;;31352:30;-1:-1:-1;;;31398:18:146;;;31391:47;31455:18;;409:63:108;31138:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;33015:19:146;;;33059:2;33050:12;;33043:28;33096:2;33087:12;;32858:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;33015:19:146;;;33059:2;33050:12;;33043:28;33096:2;33087:12;;32858:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;33312:2:146;4505:137:75;;;33294:21:146;33351:2;33331:18;;;33324:30;33390:34;33370:18;;;33363:62;33461:27;33441:18;;;33434:55;33506:19;;4505:137:75;33110:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;33738:2:146;4653:136:75;;;33720:21:146;33777:2;33757:18;;;33750:30;33816:34;33796:18;;;33789:62;-1:-1:-1;;;33867:18:146;;;33860:50;33927:19;;4653:136:75;33536:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;34159:2:146;6699:156:75;;;34141:21:146;34198:2;34178:18;;;34171:30;-1:-1:-1;;;;;;;;;;;34217:18:146;;;34210:62;34308:34;34288:18;;;34281:62;-1:-1:-1;;;34359:19:146;;;34352:45;34414:19;;6699:156:75;33957:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;34646:2:146;7025:177:75;;;34628:21:146;34685:2;34665:18;;;34658:30;34724:34;34704:18;;;34697:62;34795:34;34775:18;;;34768:62;-1:-1:-1;;;34846:19:146;;;34839:44;34900:19;;7025:177:75;34444:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;35132:2:146;7387:164:75;;;35114:21:146;35171:2;35151:18;;;35144:30;-1:-1:-1;;;;;;;;;;;35190:18:146;;;35183:62;35281:34;35261:18;;;35254:62;-1:-1:-1;;;35332:19:146;;;35325:48;35390:19;;7387:164:75;34930:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;35622:2:146;7721:159:75;;;35604:21:146;35661:2;35641:18;;;35634:30;-1:-1:-1;;;;;;;;;;;35680:18:146;;;35673:62;35771:34;35751:18;;;35744:62;-1:-1:-1;;;35822:19:146;;;35815:41;35873:19;;7721:159:75;35420:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;36105:2:146;8042:142:75;;;36087:21:146;36144:2;36124:18;;;36117:30;-1:-1:-1;;;;;;;;;;;36163:18:146;;;36156:62;36254:34;36234:18;;;36227:62;-1:-1:-1;;;36305:19:146;;;36298:39;36354:19;;8042:142:75;35903:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;36586:2:146;8199:168:75;;;36568:21:146;36625:2;36605:18;;;36598:30;-1:-1:-1;;;;;;;;;;;36644:18:146;;;36637:62;36735:34;36715:18;;;36708:62;-1:-1:-1;;;36786:19:146;;;36779:43;36839:19;;8199:168:75;36384:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;37071:2:146;8617:153:75;;;37053:21:146;37110:2;37090:18;;;37083:30;-1:-1:-1;;;;;;;;;;;37129:18:146;;;37122:62;37220:34;37200:18;;;37193:62;-1:-1:-1;;;37271:19:146;;;37264:41;37322:19;;8617:153:75;36869:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;37554:2:146;8935:161:75;;;37536:21:146;37593:2;37573:18;;;37566:30;-1:-1:-1;;;;;;;;;;;37612:18:146;;;37605:62;37703:34;37683:18;;;37676:62;-1:-1:-1;;;37754:19:146;;;37747:44;37808:19;;8935:161:75;37352:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;38040:2:146;9266:157:75;;;38022:21:146;38079:2;38059:18;;;38052:30;-1:-1:-1;;;;;;;;;;;38098:18:146;;;38091:62;38189:34;38169:18;;;38162:62;-1:-1:-1;;;38240:19:146;;;38233:39;38289:19;;9266:157:75;37838:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;38521:2:146;9588:141:75;;;38503:21:146;38560:2;38540:18;;;38533:30;-1:-1:-1;;;;;;;;;;;38579:18:146;;;38572:62;38670:34;38650:18;;;38643:62;-1:-1:-1;;;38721:19:146;;;38714:37;38768:19;;9588:141:75;38319:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;39000:2:146;9744:168:75;;;38982:21:146;39039:2;39019:18;;;39012:30;-1:-1:-1;;;;;;;;;;;39058:18:146;;;39051:62;39149:34;39129:18;;;39122:62;-1:-1:-1;;;39200:19:146;;;39193:41;39251:19;;9744:168:75;38798:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;31340:2:146;989:63:74;;;31322:21:146;31379:2;31359:18;;;31352:30;-1:-1:-1;;;31398:18:146;;;31391:47;31455:18;;989:63:74;31138:341:146;14:171;81:20;;-1:-1:-1;;;;;130:30:146;;120:41;;110:69;;175:1;172;165:12;190:184;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:146;;-1:-1:-1;;;;;1222:30:146;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:146;;-1:-1:-1;;;;;1586:30:146;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:146;1991:40;;-1:-1:-1;;;;;2046:34:146;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:146:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:146;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:146;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:146:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:146;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:146;-1:-1:-1;3373:2:146;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:146;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:146;-1:-1:-1;3615:2:146;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:146;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:146;-1:-1:-1;3873:2:146;3858:18;;3845:32;;-1:-1:-1;3920:3:146;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:146;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:146;-1:-1:-1;4176:3:146;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:146;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:146;;4362:180;-1:-1:-1;4362:180:146:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:146;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:146;-1:-1:-1;6516:2:146;6501:18;;6488:32;;-1:-1:-1;6532:16:146;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:146;-1:-1:-1;6779:2:146;6764:18;;6751:32;;-1:-1:-1;6795:16:146;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:146;;-1:-1:-1;5840:1155:146;;;;6837:98;;-1:-1:-1;;;5840:1155:146:o;7587:256::-;7653:6;7661;7714:2;7702:9;7693:7;7689:23;7685:32;7682:52;;;7730:1;7727;7720:12;7682:52;7753:28;7771:9;7753:28;:::i;:::-;7743:38;;7800:37;7833:2;7822:9;7818:18;7800:37;:::i;:::-;7790:47;;7587:256;;;;;:::o;8054:184::-;8124:6;8177:2;8165:9;8156:7;8152:23;8148:32;8145:52;;;8193:1;8190;8183:12;8145:52;-1:-1:-1;8216:16:146;;8054:184;-1:-1:-1;8054:184:146:o;8949:934::-;9085:9;-1:-1:-1;;;;;9160:2:146;9152:6;9149:14;9146:40;;;9166:18;;:::i;:::-;9212:6;9209:1;9205:14;9238:4;9262:28;9286:2;9282;9278:11;9262:28;:::i;:::-;9324:19;;;9394:14;;;;9359:12;;;;9431:14;9420:26;;9417:46;;;9459:1;9456;9449:12;9417:46;9483:5;9497:353;9513:6;9508:3;9505:15;9497:353;;;9599:3;9586:17;9635:2;9622:11;9619:19;9616:109;;;9679:1;9708:2;9704;9697:14;9616:109;9750:57;9792:14;9778:11;9771:5;9767:23;9750:57;:::i;:::-;9738:70;;-1:-1:-1;9828:12:146;;;;9530;;9497:353;;;-1:-1:-1;9872:5:146;8949:934;-1:-1:-1;;;;;;;8949:934:146:o;11675:271::-;11858:6;11850;11845:3;11832:33;11814:3;11884:16;;11909:13;;;11884:16;11675:271;-1:-1:-1;11675:271:146:o;13766:277::-;13833:6;13886:2;13874:9;13865:7;13861:23;13857:32;13854:52;;;13902:1;13899;13892:12;13854:52;13934:9;13928:16;13987:5;13980:13;13973:21;13966:5;13963:32;13953:60;;14009:1;14006;13999:12;15302:127;15363:10;15358:3;15354:20;15351:1;15344:31;15394:4;15391:1;15384:15;15418:4;15415:1;15408:15;15434:128;15501:9;;;15522:11;;;15519:37;;;15536:18;;:::i;15970:127::-;16031:10;16026:3;16022:20;16019:1;16012:31;16062:4;16059:1;16052:15;16086:4;16083:1;16076:15;16102:120;16142:1;16168;16158:35;;16173:18;;:::i;:::-;-1:-1:-1;16207:9:146;;16102:120::o;16227:168::-;16267:7;16333:1;16329;16325:6;16321:14;16318:1;16315:21;16310:1;16303:9;16296:17;16292:45;16289:71;;;16340:18;;:::i;:::-;-1:-1:-1;16380:9:146;;16227:168::o;16400:125::-;16465:9;;;16486:10;;;16483:36;;;16499:18;;:::i;16530:183::-;-1:-1:-1;;;;;16649:10:146;;;16637;;;16633:27;;16672:12;;;16669:38;;;16687:18;;:::i;:::-;16669:38;16530:183;;;;:::o;16718:112::-;16750:1;16776;16766:35;;16781:18;;:::i;:::-;-1:-1:-1;16815:9:146;;16718:112::o;17194:127::-;17255:10;17250:3;17246:20;17243:1;17236:31;17286:4;17283:1;17276:15;17310:4;17307:1;17300:15;19611:250;19696:1;19706:113;19720:6;19717:1;19714:13;19706:113;;;19796:11;;;19790:18;19777:11;;;19770:39;19742:2;19735:10;19706:113;;;-1:-1:-1;;19853:1:146;19835:16;;19828:27;19611:250::o;19866:270::-;19907:3;19945:5;19939:12;19972:6;19967:3;19960:19;19988:76;20057:6;20050:4;20045:3;20041:14;20034:4;20027:5;20023:16;19988:76;:::i;:::-;20118:2;20097:15;-1:-1:-1;;20093:29:146;20084:39;;;;20125:4;20080:50;;19866:270;-1:-1:-1;;19866:270:146:o;20141:400::-;20354:10;20342:23;;20324:42;;-1:-1:-1;;;;;20402:32:146;;20397:2;20382:18;;20375:60;20471:2;20466;20451:18;;20444:30;;;-1:-1:-1;;20491:44:146;;20516:18;;20508:6;20491:44;:::i;20546:287::-;20675:3;20713:6;20707:13;20729:66;20788:6;20783:3;20776:4;20768:6;20764:17;20729:66;:::i;:::-;20811:16;;;;;20546:287;-1:-1:-1;;20546:287:146:o;20838:290::-;20907:6;20960:2;20948:9;20939:7;20935:23;20931:32;20928:52;;;20976:1;20973;20966:12;20928:52;21002:16;;-1:-1:-1;;;;;;21047:32:146;;21037:43;;21027:71;;21094:1;21091;21084:12;21133:298;21302:2;21291:9;21284:21;21265:4;21322:44;21362:2;21351:9;21347:18;21339:6;21322:44;:::i;:::-;21314:52;;21416:6;21409:14;21402:22;21397:2;21386:9;21382:18;21375:50;21133:298;;;;;:::o;25358:157::-;25388:1;25422:4;25419:1;25415:12;25446:3;25436:37;;25453:18;;:::i;:::-;25505:3;25498:4;25495:1;25491:12;25487:22;25482:27;;;25358:157;;;;:::o;25520:151::-;25610:4;25603:12;;;25589;;;25585:31;;25628:14;;25625:40;;;25645:18;;:::i;28212:135::-;28251:3;28272:17;;;28269:43;;28292:18;;:::i;:::-;-1:-1:-1;28339:1:146;28328:13;;28212:135::o;30312:478::-;30514:2;30496:21;;;30553:2;30533:18;;;30526:30;30592:34;30587:2;30572:18;;30565:62;30663:34;30658:2;30643:18;;30636:62;-1:-1:-1;;;30729:3:146;30714:19;;30707:41;30780:3;30765:19;;30312:478::o;30795:338::-;30997:2;30979:21;;;31036:2;31016:18;;;31009:30;-1:-1:-1;;;31070:2:146;31055:18;;31048:44;31124:2;31109:18;;30795:338::o;31484:422::-;31573:1;31616:5;31573:1;31630:270;31651:7;31641:8;31638:21;31630:270;;;31710:4;31706:1;31702:6;31698:17;31692:4;31689:27;31686:53;;;31719:18;;:::i;:::-;31769:7;31759:8;31755:22;31752:55;;;31789:16;;;;31752:55;31868:22;;;;31828:15;;;;31630:270;;;31634:3;31484:422;;;;;:::o;31911:806::-;31960:5;31990:8;31980:80;;-1:-1:-1;32031:1:146;32045:5;;31980:80;32079:4;32069:76;;-1:-1:-1;32116:1:146;32130:5;;32069:76;32161:4;32179:1;32174:59;;;;32247:1;32242:130;;;;32154:218;;32174:59;32204:1;32195:10;;32218:5;;;32242:130;32279:3;32269:8;32266:17;32263:43;;;32286:18;;:::i;:::-;-1:-1:-1;;32342:1:146;32328:16;;32357:5;;32154:218;;32456:2;32446:8;32443:16;32437:3;32431:4;32428:13;32424:36;32418:2;32408:8;32405:16;32400:2;32394:4;32391:12;32387:35;32384:77;32381:159;;;-1:-1:-1;32493:19:146;;;32525:5;;32381:159;32572:34;32597:8;32591:4;32572:34;:::i;:::-;32642:6;32638:1;32634:6;32630:19;32621:7;32618:32;32615:58;;;32653:18;;:::i;:::-;32691:20;;31911:806;-1:-1:-1;;;31911:806:146:o;32722:131::-;32782:5;32811:36;32838:8;32832:4;32811:36;:::i", + "linkReferences": {} }, "methodIdentifiers": { "MIN_LIGHT_CLIENT_DELAY()": "e4407b15", @@ -364,7 +346,7 @@ "storageRootCache(bytes32)": "8d080d1d", "version()": "54fd4d50" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"stateVariables\":{\"MESSAGES_MAPPING_STORAGE_INDEX\":{\"details\":\"We need this when calling `executeMessage` via storage proofs, as it is used in getting the slot key.\"},\"MSG_HASH_TOPIC_IDX\":{\"details\":\"Because topic[0] is the hash of the event signature (`SENT_MESSAGE_EVENT_SIG` above), the topic index of msgHash is 2.\"}},\"title\":\"Target Arbitrary Message Bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Executes messages sent from the source chain on the destination chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TargetAMB.sol\":\"TargetAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"stateVariables\":{\"MESSAGES_MAPPING_STORAGE_INDEX\":{\"details\":\"We need this when calling `executeMessage` via storage proofs, as it is used in getting the slot key.\"},\"MSG_HASH_TOPIC_IDX\":{\"details\":\"Because topic[0] is the hash of the event signature (`SENT_MESSAGE_EVENT_SIG` above), the topic index of msgHash is 2.\"}},\"title\":\"Target Arbitrary Message Bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Executes messages sent from the source chain on the destination chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TargetAMB.sol\":\"TargetAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -876,10 +858,10 @@ "license": null }, "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", "urls": [ - "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", - "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", + "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" ], "license": null }, diff --git a/out/TelepathyPubSub.sol/TelepathyPubSub.json b/out/TelepathyPubSub.sol/TelepathyPubSub.json index 054837f..f144d76 100644 --- a/out/TelepathyPubSub.sol/TelepathyPubSub.json +++ b/out/TelepathyPubSub.sol/TelepathyPubSub.json @@ -371,32 +371,14 @@ } ], "bytecode": { - "object": "0x60806040523480156200001157600080fd5b5060405162003b4d38038062003b4d83398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b613ab1806200009c6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a610075366004613101565b60016020526000908152604090205460ff1681565b6040516100979190613130565b60405180910390f35b6100b36100ae36600461318f565b610133565b604051908152602001610097565b6100e46100cf366004613101565b60026020526000908152604090205460ff1681565b6040516100979190613200565b6100b36100ff366004613214565b61029a565b6101176101123660046133ac565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b03168152602001868152509050600081604051602001610184919061348e565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c361311a565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb7385604051610286919061348e565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb919061348e565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156103295761032961311a565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c89061039190859061348e565b60405180910390a29150505b9392505050565b6103b96103b460208301836134d0565b6106fe565b6103ce6103c960208301836134d0565b6108e4565b6000816040516020016103e191906134eb565b60405160208183030381529060405280519060200120905060008b8b868685604051602001610414959493929190613594565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff1660028111156104525761045261311a565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f6135e7565b90925090506104c9826104c460208801886134d0565b610999565b600080546001600160a01b0316637599735c6104e860208901896134d0565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e919061361a565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613637565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b60006106598c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061065460208e018e6134d0565b610d57565b9050806106a85760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106d86106b88d8f613650565b8f8d8d8d60200160208101906106ce91906136d3565b8e60600135610fd3565b915091506106ea888a8988868661131e565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561074d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610771919061361a565b6001600160a01b0316036107c25760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610834919061361a565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089591906136f0565b6108e15760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095691906136f0565b156108e15760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c919061361a565b6001600160a01b031603610a5d5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf919061361a565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190613637565b600003610b915760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c04919061361a565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c779190613637565b610c819042613728565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190613637565b811015610d525760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd59190613637565b9050600081856001600160401b031610610df057601b610df3565b60075b60ff169050600082866001600160401b031610610e2f57612000610e20846001600160401b038916613728565b610e2a9190613751565b610e44565b610e446120006001600160401b038816613751565b90506000866001600160401b0316886001600160401b031603610e835750600b610e7081610200613765565b610e7c90610183613784565b9050610fb8565b612000610e90888a613797565b6001600160401b031611610ef25750600b610eac816020613765565b610eb7906006613784565b9050610ece6120006001600160401b0389166137b7565b610eda61200083613765565b610ee49190613784565b9050610e7081610200613765565b876001600160401b0316876001600160401b03161015610f705750600b82610f1b826020613765565b610f259190613784565b9050610f32816002613765565b610f3d906000613784565b905081610f4e630100000083613765565b610f589190613784565b9050610f65816002613765565b610eb7906001613784565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101e0565b610fc48b828c8c611513565b9b9a5050505050505050505050565b6060806000610fe3878a8a61152d565b9050600081600081518110610ffa57610ffa6137cb565b01602001516001600160f81b03191690506000600160f81b82148061102c5750600160f91b6001600160f81b03198316145b156110395750600161109e565b600360fe1b6001600160f81b03198316106110565750600061109e565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b6000602084019050600060405180604001604052808487516110c09190613728565b81526020016110cf8585613784565b9052905060006110de82611dc0565b9050805160041461112a5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b600061114f82600381518110611142576111426137cb565b6020026020010151611dc0565b905080518c106111a15760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b60006111b8828e81518110611142576111426137cb565b905060006111df826000815181106111d2576111d26137cb565b6020026020010151611fe5565b90508c6001600160a01b0316816001600160a01b0316146112535760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b600061127361126e84600181518110611142576111426137cb565b612059565b90508c81600081518110611289576112896137cb565b6020026020010151146112de5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b6000611303846002815181106112f6576112f66137cb565b6020026020010151612109565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961133960208b018b6134d0565b61134960408c0160208d016136d3565b898989604051602401611361969594939291906137e1565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506113a59060608a01908a016136d3565b6001600160a01b0316816040516113bc9190613861565b6000604051808303816000865af19150503d80600081146113f9576040519150601f19603f3d011682016040523d82523d6000602084013e6113fe565b606091505b50805191945092506000915060200361143e57600082806020019051810190611427919061387d565b6001600160e01b031916635160951d60e11b149150505b8280156114485750805b1561146b576000878152600160205260409020805460ff19166002179055611488565b6000878152600160208190526040909120805460ff191690911790555b6114986040890160208a016136d3565b6001600160a01b03166114ae60208a018a6134d0565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed6114e660608d0160408e016136d3565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611521868686612235565b90921495945050505050565b606060008451116115785760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b6000611583846123cd565b90506000611590866124bb565b90506000846040516020016115a791815260200190565b60405160208183030381529060405290506000805b8451811015611d695760008582815181106115d9576115d96137cb565b60200260200101519050845183111561164b5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b826000036116ea57805180516020918201206040516116999261167392910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116e55760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6117e0565b80515160201161177057805180516020918201206040516117149261167392910190815260200190565b6116e55760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146117e05760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b6117ec60106001613784565b8160200151510361198c578451830361192457600061181b82602001516010815181106112f6576112f66137cb565b905060008151116118945760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b600187516118a29190613728565b83146119165760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b6000858481518110611938576119386137cb565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611963576119636137cb565b60200260200101519050611976816125d5565b9550611983600186613784565b94505050611d56565b600281602001515103611cfd5760006119a4826125fa565b90506000816000815181106119bb576119bb6137cb565b016020015160f81c905060006119d26002836138a7565b6119dd9060026138c9565b905060006119ee848360ff1661261e565b905060006119fc8a8961261e565b90506000611a0a8383612654565b905080835114611a825760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff851660021480611a97575060ff85166003145b15611c3d5780825114611b125760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611b2e88602001516001815181106112f6576112f66137cb565b90506000815111611ba75760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611bb59190613728565b8914611c295760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611c50575060ff85166001145b15611c8f57611c7c8760200151600181518110611c6f57611c6f6137cb565b60200260200101516125d5565b9950611c88818a613784565b9850611cf2565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611d56565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611d61816138e2565b9150506115bc565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611dd0856126d3565b919450925090506001816001811115611deb57611deb61311a565b14611e5e5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611e6a8385613784565b14611ed25760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611eeb5790505090506000845b8751811015611fd957600080611f5e6040518060400160405280858d60000151611f429190613728565b8152602001858d60200151611f579190613784565b90526126d3565b509150915060405180604001604052808383611f7a9190613784565b8152602001848c60200151611f8f9190613784565b815250858581518110611fa457611fa46137cb565b6020908102919091010152611fba600185613784565b9350611fc68183613784565b611fd09084613784565b92505050611f18565b50815295945050505050565b8051600090600103611ff957506000919050565b815160151461204a5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b61205382612d96565b92915050565b6060600082516001600160401b03811115612076576120766132df565b60405190808252806020026020018201604052801561209f578160200160208202803683370190505b50905060005b8351811015612102576120d08482815181106120c3576120c36137cb565b6020026020010151612d96565b60001b8282815181106120e5576120e56137cb565b6020908102919091010152806120fa816138e2565b9150506120a5565b5092915050565b60606000806000612119856126d3565b9194509250905060008160018111156121345761213461311a565b146121a75760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b6121b18284613784565b85511461221d5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b61222c85602001518484612da1565b95945050505050565b600082825160016122469190613784565b6122519060026139df565b1161225b57600080fd5b8360005b846001146123c4576122726002866137b7565b60010361231157600284828151811061228d5761228d6137cb565b6020026020010151836040516020016122b0929190918252602082015260400190565b60408051601f19818403018152908290526122ca91613861565b602060405180830381855afa1580156122e7573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061230a9190613637565b91506123a5565b600282858381518110612326576123266137cb565b6020026020010151604051602001612348929190918252602082015260400190565b60408051601f198184030181529082905261236291613861565b602060405180830381855afa15801561237f573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906123a29190613637565b91505b6123b0600286613751565b9450806123bc816138e2565b91505061225f565b50949350505050565b80516060906000816001600160401b038111156123ec576123ec6132df565b60405190808252806020026020018201604052801561243157816020015b604080518082019091526060808252602082015281526020019060019003908161240a5790505b50905060005b828110156124b357604051806040016040528086838151811061245c5761245c6137cb565b6020026020010151815260200161248b87848151811061247e5761247e6137cb565b6020026020010151612e41565b8152508282815181106124a0576124a06137cb565b6020908102919091010152600101612437565b509392505050565b805160609060006124cd826002613765565b6001600160401b038111156124e4576124e46132df565b6040519080825280601f01601f19166020018201604052801561250e576020820181803683370190505b5090506000805b838110156125cb5785818151811061252f5761252f6137cb565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612557836002613765565b81518110612567576125676137cb565b60200101906001600160f81b031916908160001a905350600f60f81b821683612591836002613765565b61259c906001613784565b815181106125ac576125ac6137cb565b60200101906001600160f81b031916908160001a905350600101612515565b5090949350505050565b606060208260000151106125f1576125ec82612109565b612053565b61205382612e54565b606061205361261983602001516000815181106112f6576112f66137cb565b6124bb565b60608251821061263d5750604080516020810190915260008152612053565b61039d838384865161264f9190613728565b612e6a565b6000806000835185511061266957835161266c565b84515b90505b80821080156126c3575083828151811061268b5761268b6137cb565b602001015160f81c60f81b6001600160f81b0319168583815181106126b2576126b26137cb565b01602001516001600160f81b031916145b156124b35781600101915061266f565b6000806000808460000151116126fb5760405162461bcd60e51b81526004016101e0906139eb565b6020840151805160001a607f8111612720576000600160009450945094505050612d8f565b60b7811161287d576000612735608083613728565b9050808760000151116127b55760405162461bcd60e51b815260206004820152604e6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127e25750600160ff1b6001600160f81b0319821610155b61286a5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612d8f915050565b60bf8111612abe57600061289260b783613728565b9050808760000151116129155760405162461bcd60e51b81526020600482015260516024820152600080516020613a5c83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b031916600081900361299c5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c60378111612a1f5760405162461bcd60e51b81526020600482015260486024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b612a298184613784565b895111612aa15760405162461bcd60e51b815260206004820152604c6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b612aac836001613784565b9750955060009450612d8f9350505050565b60f78111612b60576000612ad360c083613728565b905080876000015111612b4f5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612d8f915050565b6000612b6d60f783613728565b905080876000015111612bec5760405162461bcd60e51b815260206004820152604d6024820152600080516020613a5c83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612c715760405162461bcd60e51b81526020600482015260486024820152600080516020613a5c83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612cf25760405162461bcd60e51b81526020600482015260466024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612cfc8184613784565b895111612d725760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612d7d836001613784565b9750955060019450612d8f9350505050565b9193909250565b600061205382612fab565b60606000826001600160401b03811115612dbd57612dbd6132df565b6040519080825280601f01601f191660200182016040528015612de7576020820181803683370190505b50905082600003612df957905061039d565b6000612e058587613784565b90506020820160005b85811015612e26578281015182820152602001612e0e565b85811115612e35576000868301525b50919695505050505050565b6060612053612e4f836130ae565b611dc0565b6060612053826020015160008460000151612da1565b60608182601f011015612eb05760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612ef35760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612f3a5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612f5957604051915060008252602082016040526123c4565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612f92578051835260209283019201612f7a565b5050858452601f01601f19166040525050949350505050565b60006021826000015111156130025760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000613010856126d3565b91945092509050600081600181111561302b5761302b61311a565b146130785760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b600083866020015161308a9190613784565b805190915060208410156130a45760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130e35760405162461bcd60e51b81526004016101e0906139eb565b50604080518082019091528151815260209182019181019190915290565b60006020828403121561311357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106131445761314461311a565b91905290565b803563ffffffff8116811461315e57600080fd5b919050565b6001600160a01b03811681146108e157600080fd5b80356001600160401b038116811461315e57600080fd5b60008060008060008060c087890312156131a857600080fd5b6131b18761314a565b955060208701356131c181613163565b945060408701356131d181613163565b9350606087013592506131e660808801613178565b91506131f460a08801613178565b90509295509295509295565b60208101600283106131445761314461311a565b60008060006060848603121561322957600080fd5b6132328461314a565b9250602084013561324281613163565b929592945050506040919091013590565b60008083601f84011261326557600080fd5b5081356001600160401b0381111561327c57600080fd5b60208301915083602082850101111561329457600080fd5b9250929050565b60008083601f8401126132ad57600080fd5b5081356001600160401b038111156132c457600080fd5b6020830191508360208260051b850101111561329457600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561331d5761331d6132df565b604052919050565b600082601f83011261333657600080fd5b81356001600160401b0381111561334f5761334f6132df565b613362601f8201601f19166020016132f5565b81815284602083860101111561337757600080fd5b816020850160208301376000918101602001919091529392505050565b6000608082840312156133a657600080fd5b50919050565b6000806000806000806000806000806101408b8d0312156133cc57600080fd5b8a356001600160401b03808211156133e357600080fd5b6133ef8e838f01613253565b909c509a5060208d013591508082111561340857600080fd5b6134148e838f0161329b565b909a50985060408d0135975060608d013591508082111561343457600080fd5b6134408e838f0161329b565b909750955060808d013591508082111561345957600080fd5b506134668d828e01613325565b93505060a08b0135915061347d8c60c08d01613394565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b6000602082840312156134e257600080fd5b61039d8261314a565b6080810163ffffffff6134fd8461314a565b168252602083013561350e81613163565b6001600160a01b03908116602084015260408401359061352d82613163565b166040830152606092830135929091019190915290565b60005b8381101561355f578181015183820152602001613547565b50506000910152565b60008151808452613580816020860160208601613544565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526135d260a0820187613568565b60408401959095525050606001529392505050565b600080604083850312156135fa57600080fd5b61360383613178565b915061361160208401613178565b90509250929050565b60006020828403121561362c57600080fd5b815161039d81613163565b60006020828403121561364957600080fd5b5051919050565b60006001600160401b038084111561366a5761366a6132df565b8360051b602061367b8183016132f5565b86815291850191818101903684111561369357600080fd5b865b848110156136c7578035868111156136ad5760008081fd5b6136b936828b01613325565b845250918301918301613695565b50979650505050505050565b6000602082840312156136e557600080fd5b813561039d81613163565b60006020828403121561370257600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561205357612053613712565b634e487b7160e01b600052601260045260246000fd5b6000826137605761376061373b565b500490565b600081600019048311821515161561377f5761377f613712565b500290565b8082018082111561205357612053613712565b6001600160401b0382811682821603908082111561210257612102613712565b6000826137c6576137c661373b565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561384d57845183529383019391830191600101613831565b505084810360a0860152610fc48187613568565b60008251613873818460208701613544565b9190910192915050565b60006020828403121561388f57600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff8316806138ba576138ba61373b565b8060ff84160691505092915050565b60ff828116828216039081111561205357612053613712565b6000600182016138f4576138f4613712565b5060010190565b600181815b8085111561393657816000190482111561391c5761391c613712565b8085161561392957918102915b93841c9390800290613900565b509250929050565b60008261394d57506001612053565b8161395a57506000612053565b8160018114613970576002811461397a57613996565b6001915050612053565b60ff84111561398b5761398b613712565b50506001821b612053565b5060208310610133831016604e8410600b84101617156139b9575081810a612053565b6139c383836138fb565b80600019048211156139d7576139d7613712565b029392505050565b600061039d838361393e565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220df83a8d260f4e49839056b5a66be8b872405fe1e931c685950cb55cf4bf1fceb64736f6c63430008100033", + "object": "0x60806040523480156200001157600080fd5b5060405162003b1638038062003b1683398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b613a7a806200009c6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a6100753660046130cf565b60016020526000908152604090205460ff1681565b60405161009791906130fe565b60405180910390f35b6100b36100ae366004613158565b610133565b604051908152602001610097565b6100e46100cf3660046130cf565b60026020526000908152604090205460ff1681565b60405161009791906131c9565b6100b36100ff3660046131dd565b61029a565b610117610112366004613375565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b031681526020018681525090506000816040516020016101849190613457565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c36130e8565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb73856040516102869190613457565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb9190613457565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff166001811115610329576103296130e8565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c890610391908590613457565b60405180910390a29150505b9392505050565b6103b96103b46020830183613499565b6106fe565b6103ce6103c96020830183613499565b6108e4565b6000816040516020016103e191906134b4565b60405160208183030381529060405280519060200120905060008b8b86868560405160200161041495949392919061355d565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff166002811115610452576104526130e8565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f6135b0565b90925090506104c9826104c46020880188613499565b610999565b600080546001600160a01b0316637599735c6104e86020890189613499565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e91906135e3565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613600565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b60006106598c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061065460208e018e613499565b610d57565b9050806106a85760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106d86106b88d8f613619565b8f8d8d8d60200160208101906106ce919061369c565b8e60600135610f61565b915091506106ea888a898886866112ac565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561074d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077191906135e3565b6001600160a01b0316036107c25760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083491906135e3565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089591906136b9565b6108e15760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095691906136b9565b156108e15760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c91906135e3565b6001600160a01b031603610a5d5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf91906135e3565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190613600565b600003610b915760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0491906135e3565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c779190613600565b610c8190426136f1565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190613600565b811015610d525760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b600080610d63836114a1565b9050600081856001600160401b031610610d7e57601b610d81565b60075b60ff169050600082866001600160401b031610610dbd57612000610dae846001600160401b0389166136f1565b610db8919061371a565b610dd2565b610dd26120006001600160401b03881661371a565b90506000866001600160401b0316886001600160401b031603610e115750600b610dfe8161020061372e565b610e0a9061018361374d565b9050610f46565b612000610e1e888a613760565b6001600160401b031611610e805750600b610e3a81602061372e565b610e4590600661374d565b9050610e5c6120006001600160401b038916613780565b610e686120008361372e565b610e72919061374d565b9050610dfe8161020061372e565b876001600160401b0316876001600160401b03161015610efe5750600b82610ea982602061372e565b610eb3919061374d565b9050610ec081600261372e565b610ecb90600061374d565b905081610edc63010000008361372e565b610ee6919061374d565b9050610ef381600261372e565b610e4590600161374d565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101e0565b610f528b828c8c6114e1565b9b9a5050505050505050505050565b6060806000610f71878a8a6114fb565b9050600081600081518110610f8857610f88613794565b01602001516001600160f81b03191690506000600160f81b821480610fba5750600160f91b6001600160f81b03198316145b15610fc75750600161102c565b600360fe1b6001600160f81b0319831610610fe45750600061102c565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b60006020840190506000604051806040016040528084875161104e91906136f1565b815260200161105d858561374d565b90529050600061106c82611d8e565b905080516004146110b85760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b60006110dd826003815181106110d0576110d0613794565b6020026020010151611d8e565b905080518c1061112f5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b6000611146828e815181106110d0576110d0613794565b9050600061116d8260008151811061116057611160613794565b6020026020010151611fb3565b90508c6001600160a01b0316816001600160a01b0316146111e15760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b60006112016111fc846001815181106110d0576110d0613794565b612027565b90508c8160008151811061121757611217613794565b60200260200101511461126c5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b60006112918460028151811061128457611284613794565b60200260200101516120d7565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b896112c760208b018b613499565b6112d760408c0160208d0161369c565b8989896040516024016112ef969594939291906137aa565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506113339060608a01908a0161369c565b6001600160a01b03168160405161134a919061382a565b6000604051808303816000865af19150503d8060008114611387576040519150601f19603f3d011682016040523d82523d6000602084013e61138c565b606091505b5080519194509250600091506020036113cc576000828060200190518101906113b59190613846565b6001600160e01b031916635160951d60e11b149150505b8280156113d65750805b156113f9576000878152600160205260409020805460ff19166002179055611416565b6000878152600160208190526040909120805460ff191690911790555b6114266040890160208a0161369c565b6001600160a01b031661143c60208a018a613499565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61147460608d0160408e0161369c565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b60008163ffffffff166001036114bb5750625ec000919050565b8163ffffffff166005036114d35750624f4000919050565b50600019919050565b919050565b6000806114ef868686612203565b90921495945050505050565b606060008451116115465760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b60006115518461239b565b9050600061155e86612489565b905060008460405160200161157591815260200190565b60405160208183030381529060405290506000805b8451811015611d375760008582815181106115a7576115a7613794565b6020026020010151905084518311156116195760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b826000036116b857805180516020918201206040516116679261164192910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116b35760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6117ae565b80515160201161173e57805180516020918201206040516116e29261164192910190815260200190565b6116b35760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146117ae5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b6117ba6010600161374d565b8160200151510361195a57845183036118f25760006117e9826020015160108151811061128457611284613794565b905060008151116118625760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b6001875161187091906136f1565b83146118e45760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b600085848151811061190657611906613794565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061193157611931613794565b60200260200101519050611944816125a3565b955061195160018661374d565b94505050611d24565b600281602001515103611ccb576000611972826125c8565b905060008160008151811061198957611989613794565b016020015160f81c905060006119a0600283613870565b6119ab906002613892565b905060006119bc848360ff166125ec565b905060006119ca8a896125ec565b905060006119d88383612622565b905080835114611a505760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff851660021480611a65575060ff85166003145b15611c0b5780825114611ae05760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611afc886020015160018151811061128457611284613794565b90506000815111611b755760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611b8391906136f1565b8914611bf75760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611c1e575060ff85166001145b15611c5d57611c4a8760200151600181518110611c3d57611c3d613794565b60200260200101516125a3565b9950611c56818a61374d565b9850611cc0565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611d24565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611d2f816138ab565b91505061158a565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611d9e856126a1565b919450925090506001816001811115611db957611db96130e8565b14611e2c5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611e38838561374d565b14611ea05760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611eb95790505090506000845b8751811015611fa757600080611f2c6040518060400160405280858d60000151611f1091906136f1565b8152602001858d60200151611f25919061374d565b90526126a1565b509150915060405180604001604052808383611f48919061374d565b8152602001848c60200151611f5d919061374d565b815250858581518110611f7257611f72613794565b6020908102919091010152611f8860018561374d565b9350611f94818361374d565b611f9e908461374d565b92505050611ee6565b50815295945050505050565b8051600090600103611fc757506000919050565b81516015146120185760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b61202182612d64565b92915050565b6060600082516001600160401b03811115612044576120446132a8565b60405190808252806020026020018201604052801561206d578160200160208202803683370190505b50905060005b83518110156120d05761209e84828151811061209157612091613794565b6020026020010151612d64565b60001b8282815181106120b3576120b3613794565b6020908102919091010152806120c8816138ab565b915050612073565b5092915050565b606060008060006120e7856126a1565b919450925090506000816001811115612102576121026130e8565b146121755760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b61217f828461374d565b8551146121eb5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b6121fa85602001518484612d6f565b95945050505050565b60008282516001612214919061374d565b61221f9060026139a8565b1161222957600080fd5b8360005b8460011461239257612240600286613780565b6001036122df57600284828151811061225b5761225b613794565b60200260200101518360405160200161227e929190918252602082015260400190565b60408051601f19818403018152908290526122989161382a565b602060405180830381855afa1580156122b5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122d89190613600565b9150612373565b6002828583815181106122f4576122f4613794565b6020026020010151604051602001612316929190918252602082015260400190565b60408051601f19818403018152908290526123309161382a565b602060405180830381855afa15801561234d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906123709190613600565b91505b61237e60028661371a565b94508061238a816138ab565b91505061222d565b50949350505050565b80516060906000816001600160401b038111156123ba576123ba6132a8565b6040519080825280602002602001820160405280156123ff57816020015b60408051808201909152606080825260208201528152602001906001900390816123d85790505b50905060005b8281101561248157604051806040016040528086838151811061242a5761242a613794565b6020026020010151815260200161245987848151811061244c5761244c613794565b6020026020010151612e0f565b81525082828151811061246e5761246e613794565b6020908102919091010152600101612405565b509392505050565b8051606090600061249b82600261372e565b6001600160401b038111156124b2576124b26132a8565b6040519080825280601f01601f1916602001820160405280156124dc576020820181803683370190505b5090506000805b83811015612599578581815181106124fd576124fd613794565b6020910101516001600160f81b03198116925060041c60ff60f41b168361252583600261372e565b8151811061253557612535613794565b60200101906001600160f81b031916908160001a905350600f60f81b82168361255f83600261372e565b61256a90600161374d565b8151811061257a5761257a613794565b60200101906001600160f81b031916908160001a9053506001016124e3565b5090949350505050565b606060208260000151106125bf576125ba826120d7565b612021565b61202182612e22565b60606120216125e7836020015160008151811061128457611284613794565b612489565b60608251821061260b5750604080516020810190915260008152612021565b61039d838384865161261d91906136f1565b612e38565b6000806000835185511061263757835161263a565b84515b90505b8082108015612691575083828151811061265957612659613794565b602001015160f81c60f81b6001600160f81b03191685838151811061268057612680613794565b01602001516001600160f81b031916145b156124815781600101915061263d565b6000806000808460000151116126c95760405162461bcd60e51b81526004016101e0906139b4565b6020840151805160001a607f81116126ee576000600160009450945094505050612d5d565b60b7811161284b5760006127036080836136f1565b9050808760000151116127835760405162461bcd60e51b815260206004820152604e6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127b05750600160ff1b6001600160f81b0319821610155b6128385760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612d5d915050565b60bf8111612a8c57600061286060b7836136f1565b9050808760000151116128e35760405162461bcd60e51b81526020600482015260516024820152600080516020613a2583398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b031916600081900361296a5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c603781116129ed5760405162461bcd60e51b81526020600482015260486024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b6129f7818461374d565b895111612a6f5760405162461bcd60e51b815260206004820152604c6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b612a7a83600161374d565b9750955060009450612d5d9350505050565b60f78111612b2e576000612aa160c0836136f1565b905080876000015111612b1d5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612d5d915050565b6000612b3b60f7836136f1565b905080876000015111612bba5760405162461bcd60e51b815260206004820152604d6024820152600080516020613a2583398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612c3f5760405162461bcd60e51b81526020600482015260486024820152600080516020613a2583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612cc05760405162461bcd60e51b81526020600482015260466024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612cca818461374d565b895111612d405760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612d4b83600161374d565b9750955060019450612d5d9350505050565b9193909250565b600061202182612f79565b60606000826001600160401b03811115612d8b57612d8b6132a8565b6040519080825280601f01601f191660200182016040528015612db5576020820181803683370190505b50905082600003612dc757905061039d565b6000612dd3858761374d565b90506020820160005b85811015612df4578281015182820152602001612ddc565b85811115612e03576000868301525b50919695505050505050565b6060612021612e1d8361307c565b611d8e565b6060612021826020015160008460000151612d6f565b60608182601f011015612e7e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612ec15760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612f085760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612f275760405191506000825260208201604052612392565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612f60578051835260209283019201612f48565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612fd05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000612fde856126a1565b919450925090506000816001811115612ff957612ff96130e8565b146130465760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000838660200151613058919061374d565b805190915060208410156130725760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130b15760405162461bcd60e51b81526004016101e0906139b4565b50604080518082019091528151815260209182019181019190915290565b6000602082840312156130e157600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310613112576131126130e8565b91905290565b803563ffffffff811681146114dc57600080fd5b6001600160a01b03811681146108e157600080fd5b80356001600160401b03811681146114dc57600080fd5b60008060008060008060c0878903121561317157600080fd5b61317a87613118565b9550602087013561318a8161312c565b9450604087013561319a8161312c565b9350606087013592506131af60808801613141565b91506131bd60a08801613141565b90509295509295509295565b6020810160028310613112576131126130e8565b6000806000606084860312156131f257600080fd5b6131fb84613118565b9250602084013561320b8161312c565b929592945050506040919091013590565b60008083601f84011261322e57600080fd5b5081356001600160401b0381111561324557600080fd5b60208301915083602082850101111561325d57600080fd5b9250929050565b60008083601f84011261327657600080fd5b5081356001600160401b0381111561328d57600080fd5b6020830191508360208260051b850101111561325d57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156132e6576132e66132a8565b604052919050565b600082601f8301126132ff57600080fd5b81356001600160401b03811115613318576133186132a8565b61332b601f8201601f19166020016132be565b81815284602083860101111561334057600080fd5b816020850160208301376000918101602001919091529392505050565b60006080828403121561336f57600080fd5b50919050565b6000806000806000806000806000806101408b8d03121561339557600080fd5b8a356001600160401b03808211156133ac57600080fd5b6133b88e838f0161321c565b909c509a5060208d01359150808211156133d157600080fd5b6133dd8e838f01613264565b909a50985060408d0135975060608d01359150808211156133fd57600080fd5b6134098e838f01613264565b909750955060808d013591508082111561342257600080fd5b5061342f8d828e016132ee565b93505060a08b013591506134468c60c08d0161335d565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b6000602082840312156134ab57600080fd5b61039d82613118565b6080810163ffffffff6134c684613118565b16825260208301356134d78161312c565b6001600160a01b0390811660208401526040840135906134f68261312c565b166040830152606092830135929091019190915290565b60005b83811015613528578181015183820152602001613510565b50506000910152565b6000815180845261354981602086016020860161350d565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a083820301602084015261359b60a0820187613531565b60408401959095525050606001529392505050565b600080604083850312156135c357600080fd5b6135cc83613141565b91506135da60208401613141565b90509250929050565b6000602082840312156135f557600080fd5b815161039d8161312c565b60006020828403121561361257600080fd5b5051919050565b60006001600160401b0380841115613633576136336132a8565b8360051b60206136448183016132be565b86815291850191818101903684111561365c57600080fd5b865b84811015613690578035868111156136765760008081fd5b61368236828b016132ee565b84525091830191830161365e565b50979650505050505050565b6000602082840312156136ae57600080fd5b813561039d8161312c565b6000602082840312156136cb57600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612021576120216136db565b634e487b7160e01b600052601260045260246000fd5b60008261372957613729613704565b500490565b6000816000190483118215151615613748576137486136db565b500290565b80820180821115612021576120216136db565b6001600160401b038281168282160390808211156120d0576120d06136db565b60008261378f5761378f613704565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b81811015613816578451835293830193918301916001016137fa565b505084810360a0860152610f528187613531565b6000825161383c81846020870161350d565b9190910192915050565b60006020828403121561385857600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff83168061388357613883613704565b8060ff84160691505092915050565b60ff8281168282160390811115612021576120216136db565b6000600182016138bd576138bd6136db565b5060010190565b600181815b808511156138ff5781600019048211156138e5576138e56136db565b808516156138f257918102915b93841c93908002906138c9565b509250929050565b60008261391657506001612021565b8161392357506000612021565b816001811461393957600281146139435761395f565b6001915050612021565b60ff841115613954576139546136db565b50506001821b612021565b5060208310610133831016604e8410600b8410161715613982575081810a612021565b61398c83836138c4565b80600019048211156139a0576139a06136db565b029392505050565b600061039d8383613907565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212207d38ec67345e6bd95cda9dcd48b432f06d282b10b764f6f5e44c193a3c2daee364736f6c63430008100033", "sourceMap": "843:386:123:-:0;;;957:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1005:15;:51;;-1:-1:-1;;;;;;1005:51:123;-1:-1:-1;;;;;1005:51:123;;;;;;;;;;843:386;;14:290:146;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:146;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:146:o;:::-;843:386:123;;;;;;", - "linkReferences": { - "src/libraries/BeaconChainForks.sol": { - "BeaconChainForks": [ - { - "start": 3603, - "length": 20 - } - ] - } - } + "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a610075366004613101565b60016020526000908152604090205460ff1681565b6040516100979190613130565b60405180910390f35b6100b36100ae36600461318f565b610133565b604051908152602001610097565b6100e46100cf366004613101565b60026020526000908152604090205460ff1681565b6040516100979190613200565b6100b36100ff366004613214565b61029a565b6101176101123660046133ac565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b03168152602001868152509050600081604051602001610184919061348e565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c361311a565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb7385604051610286919061348e565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb919061348e565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156103295761032961311a565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c89061039190859061348e565b60405180910390a29150505b9392505050565b6103b96103b460208301836134d0565b6106fe565b6103ce6103c960208301836134d0565b6108e4565b6000816040516020016103e191906134eb565b60405160208183030381529060405280519060200120905060008b8b868685604051602001610414959493929190613594565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff1660028111156104525761045261311a565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f6135e7565b90925090506104c9826104c460208801886134d0565b610999565b600080546001600160a01b0316637599735c6104e860208901896134d0565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e919061361a565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613637565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b60006106598c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061065460208e018e6134d0565b610d57565b9050806106a85760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106d86106b88d8f613650565b8f8d8d8d60200160208101906106ce91906136d3565b8e60600135610fd3565b915091506106ea888a8988868661131e565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561074d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610771919061361a565b6001600160a01b0316036107c25760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610834919061361a565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089591906136f0565b6108e15760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095691906136f0565b156108e15760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c919061361a565b6001600160a01b031603610a5d5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf919061361a565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190613637565b600003610b915760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c04919061361a565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c779190613637565b610c819042613728565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190613637565b811015610d525760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd59190613637565b9050600081856001600160401b031610610df057601b610df3565b60075b60ff169050600082866001600160401b031610610e2f57612000610e20846001600160401b038916613728565b610e2a9190613751565b610e44565b610e446120006001600160401b038816613751565b90506000866001600160401b0316886001600160401b031603610e835750600b610e7081610200613765565b610e7c90610183613784565b9050610fb8565b612000610e90888a613797565b6001600160401b031611610ef25750600b610eac816020613765565b610eb7906006613784565b9050610ece6120006001600160401b0389166137b7565b610eda61200083613765565b610ee49190613784565b9050610e7081610200613765565b876001600160401b0316876001600160401b03161015610f705750600b82610f1b826020613765565b610f259190613784565b9050610f32816002613765565b610f3d906000613784565b905081610f4e630100000083613765565b610f589190613784565b9050610f65816002613765565b610eb7906001613784565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101e0565b610fc48b828c8c611513565b9b9a5050505050505050505050565b6060806000610fe3878a8a61152d565b9050600081600081518110610ffa57610ffa6137cb565b01602001516001600160f81b03191690506000600160f81b82148061102c5750600160f91b6001600160f81b03198316145b156110395750600161109e565b600360fe1b6001600160f81b03198316106110565750600061109e565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b6000602084019050600060405180604001604052808487516110c09190613728565b81526020016110cf8585613784565b9052905060006110de82611dc0565b9050805160041461112a5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b600061114f82600381518110611142576111426137cb565b6020026020010151611dc0565b905080518c106111a15760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b60006111b8828e81518110611142576111426137cb565b905060006111df826000815181106111d2576111d26137cb565b6020026020010151611fe5565b90508c6001600160a01b0316816001600160a01b0316146112535760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b600061127361126e84600181518110611142576111426137cb565b612059565b90508c81600081518110611289576112896137cb565b6020026020010151146112de5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b6000611303846002815181106112f6576112f66137cb565b6020026020010151612109565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961133960208b018b6134d0565b61134960408c0160208d016136d3565b898989604051602401611361969594939291906137e1565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506113a59060608a01908a016136d3565b6001600160a01b0316816040516113bc9190613861565b6000604051808303816000865af19150503d80600081146113f9576040519150601f19603f3d011682016040523d82523d6000602084013e6113fe565b606091505b50805191945092506000915060200361143e57600082806020019051810190611427919061387d565b6001600160e01b031916635160951d60e11b149150505b8280156114485750805b1561146b576000878152600160205260409020805460ff19166002179055611488565b6000878152600160208190526040909120805460ff191690911790555b6114986040890160208a016136d3565b6001600160a01b03166114ae60208a018a6134d0565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed6114e660608d0160408e016136d3565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611521868686612235565b90921495945050505050565b606060008451116115785760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b6000611583846123cd565b90506000611590866124bb565b90506000846040516020016115a791815260200190565b60405160208183030381529060405290506000805b8451811015611d695760008582815181106115d9576115d96137cb565b60200260200101519050845183111561164b5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b826000036116ea57805180516020918201206040516116999261167392910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116e55760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6117e0565b80515160201161177057805180516020918201206040516117149261167392910190815260200190565b6116e55760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146117e05760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b6117ec60106001613784565b8160200151510361198c578451830361192457600061181b82602001516010815181106112f6576112f66137cb565b905060008151116118945760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b600187516118a29190613728565b83146119165760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b6000858481518110611938576119386137cb565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611963576119636137cb565b60200260200101519050611976816125d5565b9550611983600186613784565b94505050611d56565b600281602001515103611cfd5760006119a4826125fa565b90506000816000815181106119bb576119bb6137cb565b016020015160f81c905060006119d26002836138a7565b6119dd9060026138c9565b905060006119ee848360ff1661261e565b905060006119fc8a8961261e565b90506000611a0a8383612654565b905080835114611a825760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff851660021480611a97575060ff85166003145b15611c3d5780825114611b125760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611b2e88602001516001815181106112f6576112f66137cb565b90506000815111611ba75760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611bb59190613728565b8914611c295760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611c50575060ff85166001145b15611c8f57611c7c8760200151600181518110611c6f57611c6f6137cb565b60200260200101516125d5565b9950611c88818a613784565b9850611cf2565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611d56565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611d61816138e2565b9150506115bc565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611dd0856126d3565b919450925090506001816001811115611deb57611deb61311a565b14611e5e5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611e6a8385613784565b14611ed25760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611eeb5790505090506000845b8751811015611fd957600080611f5e6040518060400160405280858d60000151611f429190613728565b8152602001858d60200151611f579190613784565b90526126d3565b509150915060405180604001604052808383611f7a9190613784565b8152602001848c60200151611f8f9190613784565b815250858581518110611fa457611fa46137cb565b6020908102919091010152611fba600185613784565b9350611fc68183613784565b611fd09084613784565b92505050611f18565b50815295945050505050565b8051600090600103611ff957506000919050565b815160151461204a5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b61205382612d96565b92915050565b6060600082516001600160401b03811115612076576120766132df565b60405190808252806020026020018201604052801561209f578160200160208202803683370190505b50905060005b8351811015612102576120d08482815181106120c3576120c36137cb565b6020026020010151612d96565b60001b8282815181106120e5576120e56137cb565b6020908102919091010152806120fa816138e2565b9150506120a5565b5092915050565b60606000806000612119856126d3565b9194509250905060008160018111156121345761213461311a565b146121a75760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b6121b18284613784565b85511461221d5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b61222c85602001518484612da1565b95945050505050565b600082825160016122469190613784565b6122519060026139df565b1161225b57600080fd5b8360005b846001146123c4576122726002866137b7565b60010361231157600284828151811061228d5761228d6137cb565b6020026020010151836040516020016122b0929190918252602082015260400190565b60408051601f19818403018152908290526122ca91613861565b602060405180830381855afa1580156122e7573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061230a9190613637565b91506123a5565b600282858381518110612326576123266137cb565b6020026020010151604051602001612348929190918252602082015260400190565b60408051601f198184030181529082905261236291613861565b602060405180830381855afa15801561237f573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906123a29190613637565b91505b6123b0600286613751565b9450806123bc816138e2565b91505061225f565b50949350505050565b80516060906000816001600160401b038111156123ec576123ec6132df565b60405190808252806020026020018201604052801561243157816020015b604080518082019091526060808252602082015281526020019060019003908161240a5790505b50905060005b828110156124b357604051806040016040528086838151811061245c5761245c6137cb565b6020026020010151815260200161248b87848151811061247e5761247e6137cb565b6020026020010151612e41565b8152508282815181106124a0576124a06137cb565b6020908102919091010152600101612437565b509392505050565b805160609060006124cd826002613765565b6001600160401b038111156124e4576124e46132df565b6040519080825280601f01601f19166020018201604052801561250e576020820181803683370190505b5090506000805b838110156125cb5785818151811061252f5761252f6137cb565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612557836002613765565b81518110612567576125676137cb565b60200101906001600160f81b031916908160001a905350600f60f81b821683612591836002613765565b61259c906001613784565b815181106125ac576125ac6137cb565b60200101906001600160f81b031916908160001a905350600101612515565b5090949350505050565b606060208260000151106125f1576125ec82612109565b612053565b61205382612e54565b606061205361261983602001516000815181106112f6576112f66137cb565b6124bb565b60608251821061263d5750604080516020810190915260008152612053565b61039d838384865161264f9190613728565b612e6a565b6000806000835185511061266957835161266c565b84515b90505b80821080156126c3575083828151811061268b5761268b6137cb565b602001015160f81c60f81b6001600160f81b0319168583815181106126b2576126b26137cb565b01602001516001600160f81b031916145b156124b35781600101915061266f565b6000806000808460000151116126fb5760405162461bcd60e51b81526004016101e0906139eb565b6020840151805160001a607f8111612720576000600160009450945094505050612d8f565b60b7811161287d576000612735608083613728565b9050808760000151116127b55760405162461bcd60e51b815260206004820152604e6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127e25750600160ff1b6001600160f81b0319821610155b61286a5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612d8f915050565b60bf8111612abe57600061289260b783613728565b9050808760000151116129155760405162461bcd60e51b81526020600482015260516024820152600080516020613a5c83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b031916600081900361299c5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c60378111612a1f5760405162461bcd60e51b81526020600482015260486024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b612a298184613784565b895111612aa15760405162461bcd60e51b815260206004820152604c6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b612aac836001613784565b9750955060009450612d8f9350505050565b60f78111612b60576000612ad360c083613728565b905080876000015111612b4f5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612d8f915050565b6000612b6d60f783613728565b905080876000015111612bec5760405162461bcd60e51b815260206004820152604d6024820152600080516020613a5c83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612c715760405162461bcd60e51b81526020600482015260486024820152600080516020613a5c83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612cf25760405162461bcd60e51b81526020600482015260466024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612cfc8184613784565b895111612d725760405162461bcd60e51b815260206004820152604a6024820152600080516020613a5c83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612d7d836001613784565b9750955060019450612d8f9350505050565b9193909250565b600061205382612fab565b60606000826001600160401b03811115612dbd57612dbd6132df565b6040519080825280601f01601f191660200182016040528015612de7576020820181803683370190505b50905082600003612df957905061039d565b6000612e058587613784565b90506020820160005b85811015612e26578281015182820152602001612e0e565b85811115612e35576000868301525b50919695505050505050565b6060612053612e4f836130ae565b611dc0565b6060612053826020015160008460000151612da1565b60608182601f011015612eb05760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612ef35760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612f3a5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612f5957604051915060008252602082016040526123c4565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612f92578051835260209283019201612f7a565b5050858452601f01601f19166040525050949350505050565b60006021826000015111156130025760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000613010856126d3565b91945092509050600081600181111561302b5761302b61311a565b146130785760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b600083866020015161308a9190613784565b805190915060208410156130a45760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130e35760405162461bcd60e51b81526004016101e0906139eb565b50604080518082019091528151815260209182019181019190915290565b60006020828403121561311357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106131445761314461311a565b91905290565b803563ffffffff8116811461315e57600080fd5b919050565b6001600160a01b03811681146108e157600080fd5b80356001600160401b038116811461315e57600080fd5b60008060008060008060c087890312156131a857600080fd5b6131b18761314a565b955060208701356131c181613163565b945060408701356131d181613163565b9350606087013592506131e660808801613178565b91506131f460a08801613178565b90509295509295509295565b60208101600283106131445761314461311a565b60008060006060848603121561322957600080fd5b6132328461314a565b9250602084013561324281613163565b929592945050506040919091013590565b60008083601f84011261326557600080fd5b5081356001600160401b0381111561327c57600080fd5b60208301915083602082850101111561329457600080fd5b9250929050565b60008083601f8401126132ad57600080fd5b5081356001600160401b038111156132c457600080fd5b6020830191508360208260051b850101111561329457600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561331d5761331d6132df565b604052919050565b600082601f83011261333657600080fd5b81356001600160401b0381111561334f5761334f6132df565b613362601f8201601f19166020016132f5565b81815284602083860101111561337757600080fd5b816020850160208301376000918101602001919091529392505050565b6000608082840312156133a657600080fd5b50919050565b6000806000806000806000806000806101408b8d0312156133cc57600080fd5b8a356001600160401b03808211156133e357600080fd5b6133ef8e838f01613253565b909c509a5060208d013591508082111561340857600080fd5b6134148e838f0161329b565b909a50985060408d0135975060608d013591508082111561343457600080fd5b6134408e838f0161329b565b909750955060808d013591508082111561345957600080fd5b506134668d828e01613325565b93505060a08b0135915061347d8c60c08d01613394565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b6000602082840312156134e257600080fd5b61039d8261314a565b6080810163ffffffff6134fd8461314a565b168252602083013561350e81613163565b6001600160a01b03908116602084015260408401359061352d82613163565b166040830152606092830135929091019190915290565b60005b8381101561355f578181015183820152602001613547565b50506000910152565b60008151808452613580816020860160208601613544565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526135d260a0820187613568565b60408401959095525050606001529392505050565b600080604083850312156135fa57600080fd5b61360383613178565b915061361160208401613178565b90509250929050565b60006020828403121561362c57600080fd5b815161039d81613163565b60006020828403121561364957600080fd5b5051919050565b60006001600160401b038084111561366a5761366a6132df565b8360051b602061367b8183016132f5565b86815291850191818101903684111561369357600080fd5b865b848110156136c7578035868111156136ad5760008081fd5b6136b936828b01613325565b845250918301918301613695565b50979650505050505050565b6000602082840312156136e557600080fd5b813561039d81613163565b60006020828403121561370257600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561205357612053613712565b634e487b7160e01b600052601260045260246000fd5b6000826137605761376061373b565b500490565b600081600019048311821515161561377f5761377f613712565b500290565b8082018082111561205357612053613712565b6001600160401b0382811682821603908082111561210257612102613712565b6000826137c6576137c661373b565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561384d57845183529383019391830191600101613831565b505084810360a0860152610fc48187613568565b60008251613873818460208701613544565b9190910192915050565b60006020828403121561388f57600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff8316806138ba576138ba61373b565b8060ff84160691505092915050565b60ff828116828216039081111561205357612053613712565b6000600182016138f4576138f4613712565b5060010190565b600181815b8085111561393657816000190482111561391c5761391c613712565b8085161561392957918102915b93841c9390800290613900565b509250929050565b60008261394d57506001612053565b8161395a57506000612053565b8160018114613970576002811461397a57613996565b6001915050612053565b60ff84111561398b5761398b613712565b50506001821b612053565b5060208310610133831016604e8410600b84101617156139b9575081810a612053565b6139c383836138fb565b80600019048211156139d7576139d7613712565b029392505050565b600061039d838361393e565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220df83a8d260f4e49839056b5a66be8b872405fe1e931c685950cb55cf4bf1fceb64736f6c63430008100033", - "sourceMap": "843:386:123:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;837:960:125;;;;;;:::i;:::-;;:::i;:::-;;;1892:25:146;;;1880:2;1865:18;837:960:125;1746:177:146;723:59:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1888:644:125:-;;;;;;:::i;:::-;;:::i;1533:1766:124:-;;;;;;:::i;:::-;;:::i;:::-;;917:33:123;;949:1;917:33;;;;;6140:4:146;6128:17;;;6110:36;;6098:2;6083:18;917:33:123;5968:184:146;837:960:125;1056:7;1075:32;1122:73;;;;;;;;1135:14;1122:73;;;;;;1151:14;-1:-1:-1;;;;;1122:73:125;;;;;1167:16;-1:-1:-1;;;;;1122:73:125;;;;;1185:9;1122:73;;;1075:120;;1205:22;1251:12;1240:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1240:24:125;;;;;;;;;1230:35;;1240:24;1230:35;;;;;-1:-1:-1;1313:29:125;1280;;;;:13;:29;;;;;;;;;:62;;;;;;;:::i;:::-;;1276:141;;1365:41;;-1:-1:-1;;;1365:41:125;;;;;1892:25:146;;;1865:18;;1365:41:125;;;;;;;;1276:141;1426:29;;;;:13;:29;;;;;:61;;-1:-1:-1;;1426:61:125;1458:29;1426:61;;;-1:-1:-1;;;;;1589:21:125;;;;;;;1585:97;;;1633:38;;-1:-1:-1;;;1633:38:125;;-1:-1:-1;;;;;6937:15:146;;;1633:38:125;;;6919:34:146;6989:15;;6969:18;;;6962:43;6855:18;;1633:38:125;6712:299:146;1585:97:125;1735:8;-1:-1:-1;;;;;1697:61:125;1723:10;-1:-1:-1;;;;;1697:61:125;1707:14;1697:61;1745:12;1697:61;;;;;;:::i;:::-;;;;;;;;1776:14;837:960;-1:-1:-1;;;;;;;;837:960:125:o;1888:644::-;2009:7;2032:32;2079:67;;;;;;;;2092:14;2079:67;;;;;;2108:14;-1:-1:-1;;;;;2079:67:125;;;;;2124:10;-1:-1:-1;;;;;2079:67:125;;;;;2136:9;2079:67;;;2032:114;;2156:22;2202:12;2191:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2191:24:125;;;;;;;;;2181:35;;2191:24;2181:35;;;;;-1:-1:-1;2264:30:125;2231:29;;;;:13;:29;;;;;;;;;:63;;;;;;;:::i;:::-;;2227:138;;2317:37;;-1:-1:-1;;;2317:37:125;;;;;1892:25:146;;;1865:18;;2317:37:125;1746:177:146;2227:138:125;2406:30;2374:29;;;:13;:29;;;;;;;:62;;-1:-1:-1;;2374:62:125;;;2452:41;2374:29;;2452:41;;;;2480:12;;2452:41;:::i;:::-;;;;;;;;2511:14;-1:-1:-1;;1888:644:125;;;;;;:::o;1533:1766:124:-;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:124;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:124;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:124;;9326:2:146;2243:115:124;;;9308:21:146;9365:2;9345:18;;;9338:30;9404:25;9384:18;;;9377:53;9447:18;;2243:115:124;9124:347:146;2243:115:124;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:124;-1:-1:-1;2460:60:124;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:124;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:124;;;;;;;;9899:23:146;;;;2563:56:124;;;9881:42:146;9854:18;;2563:56:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:124;;-1:-1:-1;;;;;10375:31:146;;2563:73:124;;;10357:50:146;-1:-1:-1;;;;;2563:64:124;;;;;;;10330:18:146;;2563:73:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:124;2646:58;;;;-1:-1:-1;;;2646:58:124;;10809:2:146;2646:58:124;;;10791:21:146;10848:2;10828:18;;;10821:30;-1:-1:-1;;;10867:18:146;;;10860:51;10928:18;;2646:58:124;10607:345:146;2646:58:124;2714:12;2729:134;2765:12;2779:17;;2729:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2798:10:124;;-1:-1:-1;2810:7:124;;-1:-1:-1;2819:6:124;;-1:-1:-1;2827:26:124;;;;:12;:26;:::i;:::-;2729:22;:134::i;:::-;2714:149;;2881:7;2873:47;;;;-1:-1:-1;;;2873:47:124;;11159:2:146;2873:47:124;;;11141:21:146;11198:2;11178:18;;;11171:30;11237:29;11217:18;;;11210:57;11284:18;;2873:47:124;10957:351:146;2873:47:124;2932:28;;2988:211;;3023:12;;2988:211;:::i;:::-;3049:12;3075:17;3106:8;3128:12;:26;;;;;;;;;;:::i;:::-;3168:12;:21;;;2988;:211::i;:::-;2931:268;;;;3210:82;3219:14;3235:12;3249:10;3261:6;3269:11;3282:9;3210:8;:82::i;:::-;1837:1462;;;;;;;;1533:1766;;;;;;;;;;:::o;3385:307::-;3543:1;3493:15;;:37;;-1:-1:-1;;;3493:37:124;;9911:10:146;9899:23;;3493:37:124;;;9881:42:146;-1:-1:-1;;;;;3493:15:124;;;;:28;;9854:18:146;;3493:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3485:60:124;;3464:119;;;;-1:-1:-1;;;3464:119:124;;12706:2:146;3464:119:124;;;12688:21:146;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:146;;;12757:54;12828:18;;3464:119:124;12504:348:146;3464:119:124;3601:15;;:37;;-1:-1:-1;;;3601:37:124;;9911:10:146;9899:23;;3601:37:124;;;9881:42:146;-1:-1:-1;;;;;3601:15:124;;;;:28;;9854:18:146;;3601:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3601:48:124;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3593:92;;;;-1:-1:-1;;;3593:92:124;;13341:2:146;3593:92:124;;;13323:21:146;13380:2;13360:18;;;13353:30;13419:31;13399:18;;;13392:59;13468:18;;3593:92:124;13139:353:146;3593:92:124;3385:307;:::o;3753:137::-;3828:15;;:31;;-1:-1:-1;;;3828:31:124;;9911:10:146;9899:23;;3828:31:124;;;9881:42:146;-1:-1:-1;;;;;3828:15:124;;;;:22;;9854:18:146;;3828:31:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3827:32;3819:64;;;;-1:-1:-1;;;3819:64:124;;13699:2:146;3819:64:124;;;13681:21:146;13738:2;13718:18;;;13711:30;-1:-1:-1;;;13757:18:146;;;13750:49;13816:18;;3819:64:124;13497:343:146;3960:620:124;4125:1;4075:15;;:37;;-1:-1:-1;;;4075:37:124;;9911:10:146;9899:23;;4075:37:124;;;9881:42:146;-1:-1:-1;;;;;4075:15:124;;;;:28;;9854:18:146;;4075:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4067:60:124;;4046:119;;;;-1:-1:-1;;;4046:119:124;;12706:2:146;4046:119:124;;;12688:21:146;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:146;;;12757:54;12828:18;;4046:119:124;12504:348:146;4046:119:124;4196:15;;:37;;-1:-1:-1;;;4196:37:124;;9911:10:146;9899:23;;4196:37:124;;;9881:42:146;-1:-1:-1;;;;;4196:15:124;;;;:28;;9854:18:146;;4196:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4196:54:124;;-1:-1:-1;;;;;10375:31:146;;4196:54:124;;;10357:50:146;-1:-1:-1;;;;;4196:48:124;;;;;;;10330:18:146;;4196:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4254:1;4196:59;4175:136;;;;-1:-1:-1;;;4175:136:124;;14236:2:146;4175:136:124;;;14218:21:146;14275:2;14255:18;;;14248:30;14314:32;14294:18;;;14287:60;14364:18;;4175:136:124;14034:354:146;4175:136:124;4321:19;4373:15;;:37;;-1:-1:-1;;;4373:37:124;;9911:10:146;9899:23;;4373:37:124;;;9881:42:146;-1:-1:-1;;;;;4373:15:124;;;;:28;;9854:18:146;;4373:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4373:54:124;;-1:-1:-1;;;;;10375:31:146;;4373:54:124;;;10357:50:146;-1:-1:-1;;;;;4373:48:124;;;;;;;10330:18:146;;4373:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4355:72;;:15;:72;:::i;:::-;4321:106;;4473:15;;;;;;;;-1:-1:-1;;;;;4473:15:124;-1:-1:-1;;;;;4473:38:124;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4458:11;:55;;4437:136;;;;-1:-1:-1;;;4437:136:124;;14860:2:146;4437:136:124;;;14842:21:146;14899:2;14879:18;;;14872:30;14938:34;14918:18;;;14911:62;-1:-1:-1;;;14989:18:146;;;14982:32;15031:19;;4437:136:124;14658:398:146;4437:136:124;4036:544;3960:620;;:::o;3094:1947:110:-;3372:46;;-1:-1:-1;;;3372:46:110;;;9899:23:146;;3372:46:110;;;9881:42:146;3330:4:110;;;;3372:16;;:31;;9854:18:146;;3372:46:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;16333:2:146;4896:40:110;;;16315:21:146;16372:2;16352:18;;;16345:30;16411:32;16391:18;;;16384:60;16461:18;;4896:40:110;16131:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;431:2729:121:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:121;;-1:-1:-1;1486:14:121;-1:-1:-1;;;1514:25:121;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:121;;;1514:54;1510:236;;;-1:-1:-1;1593:1:121;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:121;;;1611:135;;-1:-1:-1;1665:1:121;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:121;;16824:2:146;1697:38:121;;;16806:21:146;16863:2;16843:18;;;16836:30;16902;16882:18;;;16875:58;16950:18;;1697:38:121;16622:352:146;1611:135:121;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:121;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:121;;17181:2:146;2278:58:121;;;17163:21:146;17220:2;17200:18;;;17193:30;-1:-1:-1;;;17239:18:146;;;17232:52;17301:18;;2278:58:121;16979:346:146;2278:58:121;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:121;;17532:2:146;2495:59:121;;;17514:21:146;17571:2;17551:18;;;17544:30;17610:25;17590:18;;;17583:53;17653:18;;2495:59:121;17330:347:146;2495:59:121;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:121;:14;-1:-1:-1;;;;;2777:30:121;;2769:83;;;;-1:-1:-1;;;2769:83:121;;17884:2:146;2769:83:121;;;17866:21:146;17923:2;17903:18;;;17896:30;17962:34;17942:18;;;17935:62;-1:-1:-1;;;18013:18:146;;;18006:38;18061:19;;2769:83:121;17682:404:146;2769:83:121;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:121;;18293:2:146;2990:74:121;;;18275:21:146;18332:2;18312:18;;;18305:30;18371:32;18351:18;;;18344:60;18421:18;;2990:74:121;18091:354:146;2990:74:121;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:121;;-1:-1:-1;;;;;;;;;;;431:2729:121;;;;;;;;;:::o;4705:1397:124:-;4951:12;4973:17;4951:12;-1:-1:-1;;;5143:15:124;5176:27;;;;:13;:27;:::i;:::-;5221;;;;;;;;:::i;:::-;5266:7;5291:12;5321:10;5041:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5041:304:124;;;;;;;;;;;;;;-1:-1:-1;;;;;5041:304:124;-1:-1:-1;;;;;;5041:304:124;;;;;;;;;;;-1:-1:-1;5377:29:124;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5377:34:124;5412:11;5377:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5489:11:124;;5359:65;;-1:-1:-1;5359:65:124;-1:-1:-1;5445:22:124;;-1:-1:-1;5504:2:124;5489:17;5485:178;;5523:12;5550:4;5539:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5599:53:124;-1:-1:-1;;;5599:53:124;;-1:-1:-1;;5485:178:124;5677:7;:28;;;;;5688:17;5677:28;5673:215;;;5721:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5721:64:124;5752:33;5721:64;;;5673:215;;;5816:28;;;;5847:30;5816:28;;;;;;;;:61;;-1:-1:-1;;5816:61:124;;;;;;5673:215;5994:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5903:192:124;5953:27;;;;:13;:27;:::i;:::-;5903:192;;5924:15;5903:192;6035:29;;;;;;;;:::i;:::-;5903:192;;;-1:-1:-1;;;;;20341:32:146;;;20323:51;;20417:14;;20410:22;20405:2;20390:18;;20383:50;20296:18;5903:192:124;;;;;;;4941:1161;;;4705:1397;;;;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;20646:2:146;3101:49:77;;;20628:21:146;20685:2;20665:18;;;20658:30;-1:-1:-1;;;20704:18:146;;;20697:51;20765:18;;3101:49:77;20444:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;20923:19:146;;20967:2;20958:12;;20794:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;21183:2:146;3636:134:77;;;21165:21:146;21222:2;21202:18;;;21195:30;21261:34;21241:18;;;21234:62;-1:-1:-1;;;21312:18:146;;;21305:44;21366:19;;3636:134:77;20981:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;20923:19:146;;;20967:2;20958:12;;20794:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;21598:2:146;3893:176:77;;;21580:21:146;21637:2;21617:18;;;21610:30;21676:31;21656:18;;;21649:59;21725:18;;3893:176:77;21396:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;20923:19:146;;;20967:2;20958:12;;20794:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;21956:2:146;4222:186:77;;;21938:21:146;21995:2;21975:18;;;21968:30;22034:34;22014:18;;;22007:62;-1:-1:-1;;;22085:18:146;;;22078:37;22132:19;;4222:186:77;21754:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;22364:2:146;4509:156:77;;;22346:21:146;22403:2;22383:18;;;22376:30;22442:34;22422:18;;;22415:62;-1:-1:-1;;;22493:18:146;;;22486:36;22539:19;;4509:156:77;22162:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;22771:2:146;5384:158:77;;;22753:21:146;22810:2;22790:18;;;22783:30;22849:34;22829:18;;;22822:62;22920:29;22900:18;;;22893:57;22967:19;;5384:158:77;22569:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;23199:2:146;5626:162:77;;;23181:21:146;23238:2;23218:18;;;23211:30;23277:34;23257:18;;;23250:62;23348:28;23328:18;;;23321:56;23394:19;;5626:162:77;22997:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;23944:2:146;7009:171:77;;;23926:21:146;23983:2;23963:18;;;23956:30;24022:34;24002:18;;;23995:62;24093:28;24073:18;;;24066:56;24139:19;;7009:171:77;23742:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;24371:2:146;7843:185:77;;;24353:21:146;24410:2;24390:18;;;24383:30;24449:34;24429:18;;;24422:62;24520:31;24500:18;;;24493:59;24569:19;;7843:185:77;24169:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;24801:2:146;8463:156:77;;;24783:21:146;24840:2;24820:18;;;24813:30;24879:34;24859:18;;;24852:62;24950:27;24930:18;;;24923:55;24995:19;;8463:156:77;24599:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;25227:2:146;8703:160:77;;;25209:21:146;25266:2;25246:18;;;25239:30;25305:34;25285:18;;;25278:62;25376:26;25356:18;;;25349:54;25420:19;;8703:160:77;25025:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;25652:2:146;9439:60:77;;;25634:21:146;25691:2;25671:18;;;25664:30;25730:34;25710:18;;;25703:62;-1:-1:-1;;;25781:18:146;;;25774:48;25839:19;;9439:60:77;25450:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;26071:2:146;9556:50:77;;;26053:21:146;26110:2;26090:18;;;26083:30;26149:34;26129:18;;;26122:62;-1:-1:-1;;;26200:18:146;;;26193:38;26248:19;;9556:50:77;25869:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;26620:2:146;9641:47:77;;;26602:21:146;26659:2;26639:18;;;26632:30;26698:34;26678:18;;;26671:62;-1:-1:-1;;;26749:18:146;;;26742:35;26794:19;;9641:47:77;26418:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;27026:2:146;2161:136:75;;;27008:21:146;27065:2;27045:18;;;27038:30;27104:34;27084:18;;;27077:62;27175:26;27155:18;;;27148:54;27219:19;;2161:136:75;26824:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;27451:2:146;2308:134:75;;;27433:21:146;27490:2;27470:18;;;27463:30;27529:34;27509:18;;;27502:62;-1:-1:-1;;;27580:18:146;;;27573:48;27638:19;;2308:134:75;27249:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;27870:2:146;12579:55:75;;;27852:21:146;27909:2;27889:18;;;27882:30;27948:28;27928:18;;;27921:56;27994:18;;12579:55:75;27668:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:121:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:121;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:121;3166:384;-1:-1:-1;;3166:384:121:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;28225:2:146;4505:137:75;;;28207:21:146;28264:2;28244:18;;;28237:30;28303:34;28283:18;;;28276:62;28374:27;28354:18;;;28347:55;28419:19;;4505:137:75;28023:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;28651:2:146;4653:136:75;;;28633:21:146;28690:2;28670:18;;;28663:30;28729:34;28709:18;;;28702:62;-1:-1:-1;;;28780:18:146;;;28773:50;28840:19;;4653:136:75;28449:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;30401:19:146;;;30445:2;30436:12;;30429:28;30482:2;30473:12;;30244:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;30401:19:146;;;30445:2;30436:12;;30429:28;30482:2;30473:12;;30244:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;;-1:-1:-1;1822:5:110;1283:551;-1:-1:-1;;;;1283:551:110:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;31181:2:146;6699:156:75;;;31163:21:146;31220:2;31200:18;;;31193:30;-1:-1:-1;;;;;;;;;;;31239:18:146;;;31232:62;31330:34;31310:18;;;31303:62;-1:-1:-1;;;31381:19:146;;;31374:45;31436:19;;6699:156:75;30979:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;31668:2:146;7025:177:75;;;31650:21:146;31707:2;31687:18;;;31680:30;31746:34;31726:18;;;31719:62;31817:34;31797:18;;;31790:62;-1:-1:-1;;;31868:19:146;;;31861:44;31922:19;;7025:177:75;31466:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;32154:2:146;7387:164:75;;;32136:21:146;32193:2;32173:18;;;32166:30;-1:-1:-1;;;;;;;;;;;32212:18:146;;;32205:62;32303:34;32283:18;;;32276:62;-1:-1:-1;;;32354:19:146;;;32347:48;32412:19;;7387:164:75;31952:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;32644:2:146;7721:159:75;;;32626:21:146;32683:2;32663:18;;;32656:30;-1:-1:-1;;;;;;;;;;;32702:18:146;;;32695:62;32793:34;32773:18;;;32766:62;-1:-1:-1;;;32844:19:146;;;32837:41;32895:19;;7721:159:75;32442:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;33127:2:146;8042:142:75;;;33109:21:146;33166:2;33146:18;;;33139:30;-1:-1:-1;;;;;;;;;;;33185:18:146;;;33178:62;33276:34;33256:18;;;33249:62;-1:-1:-1;;;33327:19:146;;;33320:39;33376:19;;8042:142:75;32925:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;33608:2:146;8199:168:75;;;33590:21:146;33647:2;33627:18;;;33620:30;-1:-1:-1;;;;;;;;;;;33666:18:146;;;33659:62;33757:34;33737:18;;;33730:62;-1:-1:-1;;;33808:19:146;;;33801:43;33861:19;;8199:168:75;33406:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;34093:2:146;8617:153:75;;;34075:21:146;34132:2;34112:18;;;34105:30;-1:-1:-1;;;;;;;;;;;34151:18:146;;;34144:62;34242:34;34222:18;;;34215:62;-1:-1:-1;;;34293:19:146;;;34286:41;34344:19;;8617:153:75;33891:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;34576:2:146;8935:161:75;;;34558:21:146;34615:2;34595:18;;;34588:30;-1:-1:-1;;;;;;;;;;;34634:18:146;;;34627:62;34725:34;34705:18;;;34698:62;-1:-1:-1;;;34776:19:146;;;34769:44;34830:19;;8935:161:75;34374:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;35062:2:146;9266:157:75;;;35044:21:146;35101:2;35081:18;;;35074:30;-1:-1:-1;;;;;;;;;;;35120:18:146;;;35113:62;35211:34;35191:18;;;35184:62;-1:-1:-1;;;35262:19:146;;;35255:39;35311:19;;9266:157:75;34860:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;35543:2:146;9588:141:75;;;35525:21:146;35582:2;35562:18;;;35555:30;-1:-1:-1;;;;;;;;;;;35601:18:146;;;35594:62;35692:34;35672:18;;;35665:62;-1:-1:-1;;;35743:19:146;;;35736:37;35790:19;;9588:141:75;35341:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;36022:2:146;9744:168:75;;;36004:21:146;36061:2;36041:18;;;36034:30;-1:-1:-1;;;;;;;;;;;36080:18:146;;;36073:62;36171:34;36151:18;;;36144:62;-1:-1:-1;;;36222:19:146;;;36215:41;36273:19;;9744:168:75;35820:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;36505:2:146;858:50:74;;;36487:21:146;36544:2;36524:18;;;36517:30;-1:-1:-1;;;36563:18:146;;;36556:44;36617:18;;858:50:74;36303:338:146;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;36505:2:146;922:53:74;;;36487:21:146;36544:2;36524:18;;;36517:30;-1:-1:-1;;;36563:18:146;;;36556:44;36617:18;;922:53:74;36303:338:146;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;36848:2:146;989:63:74;;;36830:21:146;36887:2;36867:18;;;36860:30;-1:-1:-1;;;36906:18:146;;;36899:47;36963:18;;989:63:74;36646:341:146;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;37194:2:146;11438:55:75;;;37176:21:146;37233:2;37213:18;;;37206:30;37272:28;37252:18;;;37245:56;37318:18;;11438:55:75;36992:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;37194:2:146;11598:72:75;;;37176:21:146;37233:2;37213:18;;;37206:30;37272:28;37252:18;;;37245:56;37318:18;;11598:72:75;36992:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:146:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:146;;14:180;-1:-1:-1;14:180:146:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:163::-;653:20;;713:10;702:22;;692:33;;682:61;;739:1;736;729:12;682:61;586:163;;;:::o;754:131::-;-1:-1:-1;;;;;829:31:146;;819:42;;809:70;;875:1;872;865:12;890:171;957:20;;-1:-1:-1;;;;;1006:30:146;;996:41;;986:69;;1051:1;1048;1041:12;1066:675;1167:6;1175;1183;1191;1199;1207;1260:3;1248:9;1239:7;1235:23;1231:33;1228:53;;;1277:1;1274;1267:12;1228:53;1300:28;1318:9;1300:28;:::i;:::-;1290:38;;1378:2;1367:9;1363:18;1350:32;1391:31;1416:5;1391:31;:::i;:::-;1441:5;-1:-1:-1;1498:2:146;1483:18;;1470:32;1511:33;1470:32;1511:33;:::i;:::-;1563:7;-1:-1:-1;1617:2:146;1602:18;;1589:32;;-1:-1:-1;1640:38:146;1673:3;1658:19;;1640:38;:::i;:::-;1630:48;;1697:38;1730:3;1719:9;1715:19;1697:38;:::i;:::-;1687:48;;1066:675;;;;;;;;:::o;1928:255::-;2084:2;2069:18;;2117:1;2106:13;;2096:47;;2123:18;;:::i;2188:387::-;2264:6;2272;2280;2333:2;2321:9;2312:7;2308:23;2304:32;2301:52;;;2349:1;2346;2339:12;2301:52;2372:28;2390:9;2372:28;:::i;:::-;2362:38;;2450:2;2439:9;2435:18;2422:32;2463:31;2488:5;2463:31;:::i;:::-;2188:387;;2513:5;;-1:-1:-1;;;2565:2:146;2550:18;;;;2537:32;;2188:387::o;2580:347::-;2631:8;2641:6;2695:3;2688:4;2680:6;2676:17;2672:27;2662:55;;2713:1;2710;2703:12;2662:55;-1:-1:-1;2736:20:146;;-1:-1:-1;;;;;2768:30:146;;2765:50;;;2811:1;2808;2801:12;2765:50;2848:4;2840:6;2836:17;2824:29;;2900:3;2893:4;2884:6;2876;2872:19;2868:30;2865:39;2862:59;;;2917:1;2914;2907:12;2862:59;2580:347;;;;;:::o;2932:367::-;2995:8;3005:6;3059:3;3052:4;3044:6;3040:17;3036:27;3026:55;;3077:1;3074;3067:12;3026:55;-1:-1:-1;3100:20:146;;-1:-1:-1;;;;;3132:30:146;;3129:50;;;3175:1;3172;3165:12;3129:50;3212:4;3204:6;3200:17;3188:29;;3272:3;3265:4;3255:6;3252:1;3248:14;3240:6;3236:27;3232:38;3229:47;3226:67;;;3289:1;3286;3279:12;3304:127;3365:10;3360:3;3356:20;3353:1;3346:31;3396:4;3393:1;3386:15;3420:4;3417:1;3410:15;3436:275;3507:2;3501:9;3572:2;3553:13;;-1:-1:-1;;3549:27:146;3537:40;;-1:-1:-1;;;;;3592:34:146;;3628:22;;;3589:62;3586:88;;;3654:18;;:::i;:::-;3690:2;3683:22;3436:275;;-1:-1:-1;3436:275:146:o;3716:530::-;3758:5;3811:3;3804:4;3796:6;3792:17;3788:27;3778:55;;3829:1;3826;3819:12;3778:55;3865:6;3852:20;-1:-1:-1;;;;;3887:2:146;3884:26;3881:52;;;3913:18;;:::i;:::-;3957:55;4000:2;3981:13;;-1:-1:-1;;3977:27:146;4006:4;3973:38;3957:55;:::i;:::-;4037:2;4028:7;4021:19;4083:3;4076:4;4071:2;4063:6;4059:15;4055:26;4052:35;4049:55;;;4100:1;4097;4090:12;4049:55;4165:2;4158:4;4150:6;4146:17;4139:4;4130:7;4126:18;4113:55;4213:1;4188:16;;;4206:4;4184:27;4177:38;;;;4192:7;3716:530;-1:-1:-1;;;3716:530:146:o;4251:161::-;4316:5;4361:3;4352:6;4347:3;4343:16;4339:26;4336:46;;;4378:1;4375;4368:12;4336:46;-1:-1:-1;4400:6:146;4251:161;-1:-1:-1;4251:161:146:o;4417:1546::-;4648:6;4656;4664;4672;4680;4688;4696;4704;4712;4720;4773:3;4761:9;4752:7;4748:23;4744:33;4741:53;;;4790:1;4787;4780:12;4741:53;4830:9;4817:23;-1:-1:-1;;;;;4900:2:146;4892:6;4889:14;4886:34;;;4916:1;4913;4906:12;4886:34;4955:58;5005:7;4996:6;4985:9;4981:22;4955:58;:::i;:::-;5032:8;;-1:-1:-1;4929:84:146;-1:-1:-1;5120:2:146;5105:18;;5092:32;;-1:-1:-1;5136:16:146;;;5133:36;;;5165:1;5162;5155:12;5133:36;5204:72;5268:7;5257:8;5246:9;5242:24;5204:72;:::i;:::-;5295:8;;-1:-1:-1;5178:98:146;-1:-1:-1;5377:2:146;5362:18;;5349:32;;-1:-1:-1;5434:2:146;5419:18;;5406:32;;-1:-1:-1;5450:16:146;;;5447:36;;;5479:1;5476;5469:12;5447:36;5518:72;5582:7;5571:8;5560:9;5556:24;5518:72;:::i;:::-;5609:8;;-1:-1:-1;5492:98:146;-1:-1:-1;5697:3:146;5682:19;;5669:33;;-1:-1:-1;5714:16:146;;;5711:36;;;5743:1;5740;5733:12;5711:36;;5766:51;5809:7;5798:8;5787:9;5783:24;5766:51;:::i;:::-;5756:61;;;5864:3;5853:9;5849:19;5836:33;5826:43;;5888:69;5949:7;5943:3;5932:9;5928:19;5888:69;:::i;:::-;5878:79;;4417:1546;;;;;;;;;;;;;:::o;6157:550::-;6388:13;;6403:10;6384:30;6366:49;;6462:4;6450:17;;;6444:24;-1:-1:-1;;;;;6544:21:146;;;6522:20;;;6515:51;;;;6626:4;6614:17;;;6608:24;6604:33;;;6582:20;;;6575:63;6694:4;6682:17;;;6676:24;6654:20;;;6647:54;;;;6353:3;6338:19;;6157:550::o;7016:184::-;7074:6;7127:2;7115:9;7106:7;7102:23;7098:32;7095:52;;;7143:1;7140;7133:12;7095:52;7166:28;7184:9;7166:28;:::i;7205:684::-;7403:3;7388:19;;7465:10;7438:25;7456:6;7438:25;:::i;:::-;7434:42;7423:9;7416:61;7524:4;7516:6;7512:17;7499:31;7539;7564:5;7539:31;:::i;:::-;-1:-1:-1;;;;;7646:14:146;;;7639:4;7624:20;;7617:44;7710:4;7698:17;;7685:31;;7725:33;7685:31;7725:33;:::i;:::-;7796:16;7789:4;7774:20;;7767:46;7876:4;7864:17;;;7851:31;7829:20;;;;7822:61;;;;7205:684;:::o;7894:250::-;7979:1;7989:113;8003:6;8000:1;7997:13;7989:113;;;8079:11;;;8073:18;8060:11;;;8053:39;8025:2;8018:10;7989:113;;;-1:-1:-1;;8136:1:146;8118:16;;8111:27;7894:250::o;8149:270::-;8190:3;8228:5;8222:12;8255:6;8250:3;8243:19;8271:76;8340:6;8333:4;8328:3;8324:14;8317:4;8310:5;8306:16;8271:76;:::i;:::-;8401:2;8380:15;-1:-1:-1;;8376:29:146;8367:39;;;;8408:4;8363:50;;8149:270;-1:-1:-1;;8149:270:146:o;8424:695::-;8683:3;8672:9;8665:22;8724:6;8718:3;8707:9;8703:19;8696:35;8782:6;8774;8768:3;8757:9;8753:19;8740:49;8839:1;8833:3;8824:6;8813:9;8809:22;8805:32;8798:43;8646:4;8900:2;8896:7;8891:2;8883:6;8879:15;8875:29;8864:9;8860:45;8967:3;8955:9;8951:2;8947:18;8943:28;8936:4;8925:9;8921:20;8914:58;8989:38;9022:3;9018:2;9014:12;9006:6;8989:38;:::i;:::-;9058:2;9043:18;;9036:34;;;;-1:-1:-1;;9101:2:146;9086:18;9079:34;8981:46;8424:695;-1:-1:-1;;;8424:695:146:o;9476:256::-;9542:6;9550;9603:2;9591:9;9582:7;9578:23;9574:32;9571:52;;;9619:1;9616;9609:12;9571:52;9642:28;9660:9;9642:28;:::i;:::-;9632:38;;9689:37;9722:2;9711:9;9707:18;9689:37;:::i;:::-;9679:47;;9476:256;;;;;:::o;9934:273::-;10026:6;10079:2;10067:9;10058:7;10054:23;10050:32;10047:52;;;10095:1;10092;10085:12;10047:52;10127:9;10121:16;10146:31;10171:5;10146:31;:::i;10418:184::-;10488:6;10541:2;10529:9;10520:7;10516:23;10512:32;10509:52;;;10557:1;10554;10547:12;10509:52;-1:-1:-1;10580:16:146;;10418:184;-1:-1:-1;10418:184:146:o;11313:934::-;11449:9;-1:-1:-1;;;;;11524:2:146;11516:6;11513:14;11510:40;;;11530:18;;:::i;:::-;11576:6;11573:1;11569:14;11602:4;11626:28;11650:2;11646;11642:11;11626:28;:::i;:::-;11688:19;;;11758:14;;;;11723:12;;;;11795:14;11784:26;;11781:46;;;11823:1;11820;11813:12;11781:46;11847:5;11861:353;11877:6;11872:3;11869:15;11861:353;;;11963:3;11950:17;11999:2;11986:11;11983:19;11980:109;;;12043:1;12072:2;12068;12061:14;11980:109;12114:57;12156:14;12142:11;12135:5;12131:23;12114:57;:::i;:::-;12102:70;;-1:-1:-1;12192:12:146;;;;11894;;11861:353;;;-1:-1:-1;12236:5:146;11313:934;-1:-1:-1;;;;;;;11313:934:146:o;12252:247::-;12311:6;12364:2;12352:9;12343:7;12339:23;12335:32;12332:52;;;12380:1;12377;12370:12;12332:52;12419:9;12406:23;12438:31;12463:5;12438:31;:::i;12857:277::-;12924:6;12977:2;12965:9;12956:7;12952:23;12948:32;12945:52;;;12993:1;12990;12983:12;12945:52;13025:9;13019:16;13078:5;13071:13;13064:21;13057:5;13054:32;13044:60;;13100:1;13097;13090:12;14393:127;14454:10;14449:3;14445:20;14442:1;14435:31;14485:4;14482:1;14475:15;14509:4;14506:1;14499:15;14525:128;14592:9;;;14613:11;;;14610:37;;;14627:18;;:::i;15266:127::-;15327:10;15322:3;15318:20;15315:1;15308:31;15358:4;15355:1;15348:15;15382:4;15379:1;15372:15;15398:120;15438:1;15464;15454:35;;15469:18;;:::i;:::-;-1:-1:-1;15503:9:146;;15398:120::o;15523:168::-;15563:7;15629:1;15625;15621:6;15617:14;15614:1;15611:21;15606:1;15599:9;15592:17;15588:45;15585:71;;;15636:18;;:::i;:::-;-1:-1:-1;15676:9:146;;15523:168::o;15696:125::-;15761:9;;;15782:10;;;15779:36;;;15795:18;;:::i;15826:183::-;-1:-1:-1;;;;;15945:10:146;;;15933;;;15929:27;;15968:12;;;15965:38;;;15983:18;;:::i;16014:112::-;16046:1;16072;16062:35;;16077:18;;:::i;:::-;-1:-1:-1;16111:9:146;;16014:112::o;16490:127::-;16551:10;16546:3;16542:20;16539:1;16532:31;16582:4;16579:1;16572:15;16606:4;16603:1;16596:15;18450:1113;18807:25;;;18901:10;18889:23;;18851:2;18869:18;;;18862:51;;;;-1:-1:-1;;;;;18949:32:146;;18944:2;18929:18;;18922:60;-1:-1:-1;;;;;19018:31:146;;19013:2;18998:18;;18991:59;18794:3;19081;19066:19;;19059:32;;;19140:13;;18779:19;;;19162:22;;;18746:4;;19242:15;;;;19215:3;19200:19;;;18746:4;19285:169;19299:6;19296:1;19293:13;19285:169;;;19360:13;;19348:26;;19429:15;;;;19394:12;;;;19321:1;19314:9;19285:169;;;19289:3;;19500:9;19495:3;19491:19;19485:3;19474:9;19470:19;19463:48;19528:29;19553:3;19545:6;19528:29;:::i;19568:287::-;19697:3;19735:6;19729:13;19751:66;19810:6;19805:3;19798:4;19790:6;19786:17;19751:66;:::i;:::-;19833:16;;;;;19568:287;-1:-1:-1;;19568:287:146:o;19860:290::-;19929:6;19982:2;19970:9;19961:7;19957:23;19953:32;19950:52;;;19998:1;19995;19988:12;19950:52;20024:16;;-1:-1:-1;;;;;;20069:32:146;;20059:43;;20049:71;;20116:1;20113;20106:12;23424:157;23454:1;23488:4;23485:1;23481:12;23512:3;23502:37;;23519:18;;:::i;:::-;23571:3;23564:4;23561:1;23557:12;23553:22;23548:27;;;23424:157;;;;:::o;23586:151::-;23676:4;23669:12;;;23655;;;23651:31;;23694:14;;23691:40;;;23711:18;;:::i;26278:135::-;26317:3;26338:17;;;26335:43;;26358:18;;:::i;:::-;-1:-1:-1;26405:1:146;26394:13;;26278:135::o;28870:422::-;28959:1;29002:5;28959:1;29016:270;29037:7;29027:8;29024:21;29016:270;;;29096:4;29092:1;29088:6;29084:17;29078:4;29075:27;29072:53;;;29105:18;;:::i;:::-;29155:7;29145:8;29141:22;29138:55;;;29175:16;;;;29138:55;29254:22;;;;29214:15;;;;29016:270;;;29020:3;28870:422;;;;;:::o;29297:806::-;29346:5;29376:8;29366:80;;-1:-1:-1;29417:1:146;29431:5;;29366:80;29465:4;29455:76;;-1:-1:-1;29502:1:146;29516:5;;29455:76;29547:4;29565:1;29560:59;;;;29633:1;29628:130;;;;29540:218;;29560:59;29590:1;29581:10;;29604:5;;;29628:130;29665:3;29655:8;29652:17;29649:43;;;29672:18;;:::i;:::-;-1:-1:-1;;29728:1:146;29714:16;;29743:5;;29540:218;;29842:2;29832:8;29829:16;29823:3;29817:4;29814:13;29810:36;29804:2;29794:8;29791:16;29786:2;29780:4;29777:12;29773:35;29770:77;29767:159;;;-1:-1:-1;29879:19:146;;;29911:5;;29767:159;29958:34;29983:8;29977:4;29958:34;:::i;:::-;30028:6;30024:1;30020:6;30016:19;30007:7;30004:32;30001:58;;;30039:18;;:::i;:::-;30077:20;;29297:806;-1:-1:-1;;;29297:806:146:o;30108:131::-;30168:5;30197:36;30224:8;30218:4;30197:36;:::i;30496:478::-;30698:2;30680:21;;;30737:2;30717:18;;;30710:30;30776:34;30771:2;30756:18;;30749:62;30847:34;30842:2;30827:18;;30820:62;-1:-1:-1;;;30913:3:146;30898:19;;30891:41;30964:3;30949:19;;30496:478::o", - "linkReferences": { - "src/libraries/BeaconChainForks.sol": { - "BeaconChainForks": [ - { - "start": 3447, - "length": 20 - } - ] - } - } + "object": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a6100753660046130cf565b60016020526000908152604090205460ff1681565b60405161009791906130fe565b60405180910390f35b6100b36100ae366004613158565b610133565b604051908152602001610097565b6100e46100cf3660046130cf565b60026020526000908152604090205460ff1681565b60405161009791906131c9565b6100b36100ff3660046131dd565b61029a565b610117610112366004613375565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b031681526020018681525090506000816040516020016101849190613457565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c36130e8565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb73856040516102869190613457565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb9190613457565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff166001811115610329576103296130e8565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c890610391908590613457565b60405180910390a29150505b9392505050565b6103b96103b46020830183613499565b6106fe565b6103ce6103c96020830183613499565b6108e4565b6000816040516020016103e191906134b4565b60405160208183030381529060405280519060200120905060008b8b86868560405160200161041495949392919061355d565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff166002811115610452576104526130e8565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f6135b0565b90925090506104c9826104c46020880188613499565b610999565b600080546001600160a01b0316637599735c6104e86020890189613499565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e91906135e3565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613600565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b60006106598c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061065460208e018e613499565b610d57565b9050806106a85760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106d86106b88d8f613619565b8f8d8d8d60200160208101906106ce919061369c565b8e60600135610f61565b915091506106ea888a898886866112ac565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561074d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077191906135e3565b6001600160a01b0316036107c25760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083491906135e3565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089591906136b9565b6108e15760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095691906136b9565b156108e15760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c91906135e3565b6001600160a01b031603610a5d5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf91906135e3565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190613600565b600003610b915760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0491906135e3565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c779190613600565b610c8190426136f1565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190613600565b811015610d525760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b600080610d63836114a1565b9050600081856001600160401b031610610d7e57601b610d81565b60075b60ff169050600082866001600160401b031610610dbd57612000610dae846001600160401b0389166136f1565b610db8919061371a565b610dd2565b610dd26120006001600160401b03881661371a565b90506000866001600160401b0316886001600160401b031603610e115750600b610dfe8161020061372e565b610e0a9061018361374d565b9050610f46565b612000610e1e888a613760565b6001600160401b031611610e805750600b610e3a81602061372e565b610e4590600661374d565b9050610e5c6120006001600160401b038916613780565b610e686120008361372e565b610e72919061374d565b9050610dfe8161020061372e565b876001600160401b0316876001600160401b03161015610efe5750600b82610ea982602061372e565b610eb3919061374d565b9050610ec081600261372e565b610ecb90600061374d565b905081610edc63010000008361372e565b610ee6919061374d565b9050610ef381600261372e565b610e4590600161374d565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101e0565b610f528b828c8c6114e1565b9b9a5050505050505050505050565b6060806000610f71878a8a6114fb565b9050600081600081518110610f8857610f88613794565b01602001516001600160f81b03191690506000600160f81b821480610fba5750600160f91b6001600160f81b03198316145b15610fc75750600161102c565b600360fe1b6001600160f81b0319831610610fe45750600061102c565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b60006020840190506000604051806040016040528084875161104e91906136f1565b815260200161105d858561374d565b90529050600061106c82611d8e565b905080516004146110b85760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b60006110dd826003815181106110d0576110d0613794565b6020026020010151611d8e565b905080518c1061112f5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b6000611146828e815181106110d0576110d0613794565b9050600061116d8260008151811061116057611160613794565b6020026020010151611fb3565b90508c6001600160a01b0316816001600160a01b0316146111e15760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b60006112016111fc846001815181106110d0576110d0613794565b612027565b90508c8160008151811061121757611217613794565b60200260200101511461126c5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b60006112918460028151811061128457611284613794565b60200260200101516120d7565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b896112c760208b018b613499565b6112d760408c0160208d0161369c565b8989896040516024016112ef969594939291906137aa565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506113339060608a01908a0161369c565b6001600160a01b03168160405161134a919061382a565b6000604051808303816000865af19150503d8060008114611387576040519150601f19603f3d011682016040523d82523d6000602084013e61138c565b606091505b5080519194509250600091506020036113cc576000828060200190518101906113b59190613846565b6001600160e01b031916635160951d60e11b149150505b8280156113d65750805b156113f9576000878152600160205260409020805460ff19166002179055611416565b6000878152600160208190526040909120805460ff191690911790555b6114266040890160208a0161369c565b6001600160a01b031661143c60208a018a613499565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61147460608d0160408e0161369c565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b60008163ffffffff166001036114bb5750625ec000919050565b8163ffffffff166005036114d35750624f4000919050565b50600019919050565b919050565b6000806114ef868686612203565b90921495945050505050565b606060008451116115465760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b60006115518461239b565b9050600061155e86612489565b905060008460405160200161157591815260200190565b60405160208183030381529060405290506000805b8451811015611d375760008582815181106115a7576115a7613794565b6020026020010151905084518311156116195760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b826000036116b857805180516020918201206040516116679261164192910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116b35760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6117ae565b80515160201161173e57805180516020918201206040516116e29261164192910190815260200190565b6116b35760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146117ae5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b6117ba6010600161374d565b8160200151510361195a57845183036118f25760006117e9826020015160108151811061128457611284613794565b905060008151116118625760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b6001875161187091906136f1565b83146118e45760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b600085848151811061190657611906613794565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061193157611931613794565b60200260200101519050611944816125a3565b955061195160018661374d565b94505050611d24565b600281602001515103611ccb576000611972826125c8565b905060008160008151811061198957611989613794565b016020015160f81c905060006119a0600283613870565b6119ab906002613892565b905060006119bc848360ff166125ec565b905060006119ca8a896125ec565b905060006119d88383612622565b905080835114611a505760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff851660021480611a65575060ff85166003145b15611c0b5780825114611ae05760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611afc886020015160018151811061128457611284613794565b90506000815111611b755760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611b8391906136f1565b8914611bf75760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611c1e575060ff85166001145b15611c5d57611c4a8760200151600181518110611c3d57611c3d613794565b60200260200101516125a3565b9950611c56818a61374d565b9850611cc0565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611d24565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611d2f816138ab565b91505061158a565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611d9e856126a1565b919450925090506001816001811115611db957611db96130e8565b14611e2c5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611e38838561374d565b14611ea05760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611eb95790505090506000845b8751811015611fa757600080611f2c6040518060400160405280858d60000151611f1091906136f1565b8152602001858d60200151611f25919061374d565b90526126a1565b509150915060405180604001604052808383611f48919061374d565b8152602001848c60200151611f5d919061374d565b815250858581518110611f7257611f72613794565b6020908102919091010152611f8860018561374d565b9350611f94818361374d565b611f9e908461374d565b92505050611ee6565b50815295945050505050565b8051600090600103611fc757506000919050565b81516015146120185760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b61202182612d64565b92915050565b6060600082516001600160401b03811115612044576120446132a8565b60405190808252806020026020018201604052801561206d578160200160208202803683370190505b50905060005b83518110156120d05761209e84828151811061209157612091613794565b6020026020010151612d64565b60001b8282815181106120b3576120b3613794565b6020908102919091010152806120c8816138ab565b915050612073565b5092915050565b606060008060006120e7856126a1565b919450925090506000816001811115612102576121026130e8565b146121755760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b61217f828461374d565b8551146121eb5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b6121fa85602001518484612d6f565b95945050505050565b60008282516001612214919061374d565b61221f9060026139a8565b1161222957600080fd5b8360005b8460011461239257612240600286613780565b6001036122df57600284828151811061225b5761225b613794565b60200260200101518360405160200161227e929190918252602082015260400190565b60408051601f19818403018152908290526122989161382a565b602060405180830381855afa1580156122b5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122d89190613600565b9150612373565b6002828583815181106122f4576122f4613794565b6020026020010151604051602001612316929190918252602082015260400190565b60408051601f19818403018152908290526123309161382a565b602060405180830381855afa15801561234d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906123709190613600565b91505b61237e60028661371a565b94508061238a816138ab565b91505061222d565b50949350505050565b80516060906000816001600160401b038111156123ba576123ba6132a8565b6040519080825280602002602001820160405280156123ff57816020015b60408051808201909152606080825260208201528152602001906001900390816123d85790505b50905060005b8281101561248157604051806040016040528086838151811061242a5761242a613794565b6020026020010151815260200161245987848151811061244c5761244c613794565b6020026020010151612e0f565b81525082828151811061246e5761246e613794565b6020908102919091010152600101612405565b509392505050565b8051606090600061249b82600261372e565b6001600160401b038111156124b2576124b26132a8565b6040519080825280601f01601f1916602001820160405280156124dc576020820181803683370190505b5090506000805b83811015612599578581815181106124fd576124fd613794565b6020910101516001600160f81b03198116925060041c60ff60f41b168361252583600261372e565b8151811061253557612535613794565b60200101906001600160f81b031916908160001a905350600f60f81b82168361255f83600261372e565b61256a90600161374d565b8151811061257a5761257a613794565b60200101906001600160f81b031916908160001a9053506001016124e3565b5090949350505050565b606060208260000151106125bf576125ba826120d7565b612021565b61202182612e22565b60606120216125e7836020015160008151811061128457611284613794565b612489565b60608251821061260b5750604080516020810190915260008152612021565b61039d838384865161261d91906136f1565b612e38565b6000806000835185511061263757835161263a565b84515b90505b8082108015612691575083828151811061265957612659613794565b602001015160f81c60f81b6001600160f81b03191685838151811061268057612680613794565b01602001516001600160f81b031916145b156124815781600101915061263d565b6000806000808460000151116126c95760405162461bcd60e51b81526004016101e0906139b4565b6020840151805160001a607f81116126ee576000600160009450945094505050612d5d565b60b7811161284b5760006127036080836136f1565b9050808760000151116127835760405162461bcd60e51b815260206004820152604e6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127b05750600160ff1b6001600160f81b0319821610155b6128385760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612d5d915050565b60bf8111612a8c57600061286060b7836136f1565b9050808760000151116128e35760405162461bcd60e51b81526020600482015260516024820152600080516020613a2583398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b031916600081900361296a5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c603781116129ed5760405162461bcd60e51b81526020600482015260486024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b6129f7818461374d565b895111612a6f5760405162461bcd60e51b815260206004820152604c6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b612a7a83600161374d565b9750955060009450612d5d9350505050565b60f78111612b2e576000612aa160c0836136f1565b905080876000015111612b1d5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612d5d915050565b6000612b3b60f7836136f1565b905080876000015111612bba5760405162461bcd60e51b815260206004820152604d6024820152600080516020613a2583398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612c3f5760405162461bcd60e51b81526020600482015260486024820152600080516020613a2583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612cc05760405162461bcd60e51b81526020600482015260466024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612cca818461374d565b895111612d405760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612d4b83600161374d565b9750955060019450612d5d9350505050565b9193909250565b600061202182612f79565b60606000826001600160401b03811115612d8b57612d8b6132a8565b6040519080825280601f01601f191660200182016040528015612db5576020820181803683370190505b50905082600003612dc757905061039d565b6000612dd3858761374d565b90506020820160005b85811015612df4578281015182820152602001612ddc565b85811115612e03576000868301525b50919695505050505050565b6060612021612e1d8361307c565b611d8e565b6060612021826020015160008460000151612d6f565b60608182601f011015612e7e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612ec15760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612f085760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612f275760405191506000825260208201604052612392565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612f60578051835260209283019201612f48565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612fd05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000612fde856126a1565b919450925090506000816001811115612ff957612ff96130e8565b146130465760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000838660200151613058919061374d565b805190915060208410156130725760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130b15760405162461bcd60e51b81526004016101e0906139b4565b50604080518082019091528151815260209182019181019190915290565b6000602082840312156130e157600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310613112576131126130e8565b91905290565b803563ffffffff811681146114dc57600080fd5b6001600160a01b03811681146108e157600080fd5b80356001600160401b03811681146114dc57600080fd5b60008060008060008060c0878903121561317157600080fd5b61317a87613118565b9550602087013561318a8161312c565b9450604087013561319a8161312c565b9350606087013592506131af60808801613141565b91506131bd60a08801613141565b90509295509295509295565b6020810160028310613112576131126130e8565b6000806000606084860312156131f257600080fd5b6131fb84613118565b9250602084013561320b8161312c565b929592945050506040919091013590565b60008083601f84011261322e57600080fd5b5081356001600160401b0381111561324557600080fd5b60208301915083602082850101111561325d57600080fd5b9250929050565b60008083601f84011261327657600080fd5b5081356001600160401b0381111561328d57600080fd5b6020830191508360208260051b850101111561325d57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156132e6576132e66132a8565b604052919050565b600082601f8301126132ff57600080fd5b81356001600160401b03811115613318576133186132a8565b61332b601f8201601f19166020016132be565b81815284602083860101111561334057600080fd5b816020850160208301376000918101602001919091529392505050565b60006080828403121561336f57600080fd5b50919050565b6000806000806000806000806000806101408b8d03121561339557600080fd5b8a356001600160401b03808211156133ac57600080fd5b6133b88e838f0161321c565b909c509a5060208d01359150808211156133d157600080fd5b6133dd8e838f01613264565b909a50985060408d0135975060608d01359150808211156133fd57600080fd5b6134098e838f01613264565b909750955060808d013591508082111561342257600080fd5b5061342f8d828e016132ee565b93505060a08b013591506134468c60c08d0161335d565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b6000602082840312156134ab57600080fd5b61039d82613118565b6080810163ffffffff6134c684613118565b16825260208301356134d78161312c565b6001600160a01b0390811660208401526040840135906134f68261312c565b166040830152606092830135929091019190915290565b60005b83811015613528578181015183820152602001613510565b50506000910152565b6000815180845261354981602086016020860161350d565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a083820301602084015261359b60a0820187613531565b60408401959095525050606001529392505050565b600080604083850312156135c357600080fd5b6135cc83613141565b91506135da60208401613141565b90509250929050565b6000602082840312156135f557600080fd5b815161039d8161312c565b60006020828403121561361257600080fd5b5051919050565b60006001600160401b0380841115613633576136336132a8565b8360051b60206136448183016132be565b86815291850191818101903684111561365c57600080fd5b865b84811015613690578035868111156136765760008081fd5b61368236828b016132ee565b84525091830191830161365e565b50979650505050505050565b6000602082840312156136ae57600080fd5b813561039d8161312c565b6000602082840312156136cb57600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612021576120216136db565b634e487b7160e01b600052601260045260246000fd5b60008261372957613729613704565b500490565b6000816000190483118215151615613748576137486136db565b500290565b80820180821115612021576120216136db565b6001600160401b038281168282160390808211156120d0576120d06136db565b60008261378f5761378f613704565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b81811015613816578451835293830193918301916001016137fa565b505084810360a0860152610f528187613531565b6000825161383c81846020870161350d565b9190910192915050565b60006020828403121561385857600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff83168061388357613883613704565b8060ff84160691505092915050565b60ff8281168282160390811115612021576120216136db565b6000600182016138bd576138bd6136db565b5060010190565b600181815b808511156138ff5781600019048211156138e5576138e56136db565b808516156138f257918102915b93841c93908002906138c9565b509250929050565b60008261391657506001612021565b8161392357506000612021565b816001811461393957600281146139435761395f565b6001915050612021565b60ff841115613954576139546136db565b50506001821b612021565b5060208310610133831016604e8410600b8410161715613982575081810a612021565b61398c83836138c4565b80600019048211156139a0576139a06136db565b029392505050565b600061039d8383613907565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212207d38ec67345e6bd95cda9dcd48b432f06d282b10b764f6f5e44c193a3c2daee364736f6c63430008100033", + "sourceMap": "843:386:123:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;837:960:125;;;;;;:::i;:::-;;:::i;:::-;;;1892:25:146;;;1880:2;1865:18;837:960:125;1746:177:146;723:59:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1888:644:125:-;;;;;;:::i;:::-;;:::i;1533:1766:124:-;;;;;;:::i;:::-;;:::i;:::-;;917:33:123;;949:1;917:33;;;;;6140:4:146;6128:17;;;6110:36;;6098:2;6083:18;917:33:123;5968:184:146;837:960:125;1056:7;1075:32;1122:73;;;;;;;;1135:14;1122:73;;;;;;1151:14;-1:-1:-1;;;;;1122:73:125;;;;;1167:16;-1:-1:-1;;;;;1122:73:125;;;;;1185:9;1122:73;;;1075:120;;1205:22;1251:12;1240:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1240:24:125;;;;;;;;;1230:35;;1240:24;1230:35;;;;;-1:-1:-1;1313:29:125;1280;;;;:13;:29;;;;;;;;;:62;;;;;;;:::i;:::-;;1276:141;;1365:41;;-1:-1:-1;;;1365:41:125;;;;;1892:25:146;;;1865:18;;1365:41:125;;;;;;;;1276:141;1426:29;;;;:13;:29;;;;;:61;;-1:-1:-1;;1426:61:125;1458:29;1426:61;;;-1:-1:-1;;;;;1589:21:125;;;;;;;1585:97;;;1633:38;;-1:-1:-1;;;1633:38:125;;-1:-1:-1;;;;;6937:15:146;;;1633:38:125;;;6919:34:146;6989:15;;6969:18;;;6962:43;6855:18;;1633:38:125;6712:299:146;1585:97:125;1735:8;-1:-1:-1;;;;;1697:61:125;1723:10;-1:-1:-1;;;;;1697:61:125;1707:14;1697:61;1745:12;1697:61;;;;;;:::i;:::-;;;;;;;;1776:14;837:960;-1:-1:-1;;;;;;;;837:960:125:o;1888:644::-;2009:7;2032:32;2079:67;;;;;;;;2092:14;2079:67;;;;;;2108:14;-1:-1:-1;;;;;2079:67:125;;;;;2124:10;-1:-1:-1;;;;;2079:67:125;;;;;2136:9;2079:67;;;2032:114;;2156:22;2202:12;2191:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2191:24:125;;;;;;;;;2181:35;;2191:24;2181:35;;;;;-1:-1:-1;2264:30:125;2231:29;;;;:13;:29;;;;;;;;;:63;;;;;;;:::i;:::-;;2227:138;;2317:37;;-1:-1:-1;;;2317:37:125;;;;;1892:25:146;;;1865:18;;2317:37:125;1746:177:146;2227:138:125;2406:30;2374:29;;;:13;:29;;;;;;;:62;;-1:-1:-1;;2374:62:125;;;2452:41;2374:29;;2452:41;;;;2480:12;;2452:41;:::i;:::-;;;;;;;;2511:14;-1:-1:-1;;1888:644:125;;;;;;:::o;1533:1766:124:-;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:124;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:124;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:124;;9326:2:146;2243:115:124;;;9308:21:146;9365:2;9345:18;;;9338:30;9404:25;9384:18;;;9377:53;9447:18;;2243:115:124;9124:347:146;2243:115:124;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:124;-1:-1:-1;2460:60:124;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:124;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:124;;;;;;;;9899:23:146;;;;2563:56:124;;;9881:42:146;9854:18;;2563:56:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:124;;-1:-1:-1;;;;;10375:31:146;;2563:73:124;;;10357:50:146;-1:-1:-1;;;;;2563:64:124;;;;;;;10330:18:146;;2563:73:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:124;2646:58;;;;-1:-1:-1;;;2646:58:124;;10809:2:146;2646:58:124;;;10791:21:146;10848:2;10828:18;;;10821:30;-1:-1:-1;;;10867:18:146;;;10860:51;10928:18;;2646:58:124;10607:345:146;2646:58:124;2714:12;2729:134;2765:12;2779:17;;2729:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2798:10:124;;-1:-1:-1;2810:7:124;;-1:-1:-1;2819:6:124;;-1:-1:-1;2827:26:124;;;;:12;:26;:::i;:::-;2729:22;:134::i;:::-;2714:149;;2881:7;2873:47;;;;-1:-1:-1;;;2873:47:124;;11159:2:146;2873:47:124;;;11141:21:146;11198:2;11178:18;;;11171:30;11237:29;11217:18;;;11210:57;11284:18;;2873:47:124;10957:351:146;2873:47:124;2932:28;;2988:211;;3023:12;;2988:211;:::i;:::-;3049:12;3075:17;3106:8;3128:12;:26;;;;;;;;;;:::i;:::-;3168:12;:21;;;2988;:211::i;:::-;2931:268;;;;3210:82;3219:14;3235:12;3249:10;3261:6;3269:11;3282:9;3210:8;:82::i;:::-;1837:1462;;;;;;;;1533:1766;;;;;;;;;;:::o;3385:307::-;3543:1;3493:15;;:37;;-1:-1:-1;;;3493:37:124;;9911:10:146;9899:23;;3493:37:124;;;9881:42:146;-1:-1:-1;;;;;3493:15:124;;;;:28;;9854:18:146;;3493:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3485:60:124;;3464:119;;;;-1:-1:-1;;;3464:119:124;;12706:2:146;3464:119:124;;;12688:21:146;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:146;;;12757:54;12828:18;;3464:119:124;12504:348:146;3464:119:124;3601:15;;:37;;-1:-1:-1;;;3601:37:124;;9911:10:146;9899:23;;3601:37:124;;;9881:42:146;-1:-1:-1;;;;;3601:15:124;;;;:28;;9854:18:146;;3601:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3601:48:124;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3593:92;;;;-1:-1:-1;;;3593:92:124;;13341:2:146;3593:92:124;;;13323:21:146;13380:2;13360:18;;;13353:30;13419:31;13399:18;;;13392:59;13468:18;;3593:92:124;13139:353:146;3593:92:124;3385:307;:::o;3753:137::-;3828:15;;:31;;-1:-1:-1;;;3828:31:124;;9911:10:146;9899:23;;3828:31:124;;;9881:42:146;-1:-1:-1;;;;;3828:15:124;;;;:22;;9854:18:146;;3828:31:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3827:32;3819:64;;;;-1:-1:-1;;;3819:64:124;;13699:2:146;3819:64:124;;;13681:21:146;13738:2;13718:18;;;13711:30;-1:-1:-1;;;13757:18:146;;;13750:49;13816:18;;3819:64:124;13497:343:146;3960:620:124;4125:1;4075:15;;:37;;-1:-1:-1;;;4075:37:124;;9911:10:146;9899:23;;4075:37:124;;;9881:42:146;-1:-1:-1;;;;;4075:15:124;;;;:28;;9854:18:146;;4075:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4067:60:124;;4046:119;;;;-1:-1:-1;;;4046:119:124;;12706:2:146;4046:119:124;;;12688:21:146;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:146;;;12757:54;12828:18;;4046:119:124;12504:348:146;4046:119:124;4196:15;;:37;;-1:-1:-1;;;4196:37:124;;9911:10:146;9899:23;;4196:37:124;;;9881:42:146;-1:-1:-1;;;;;4196:15:124;;;;:28;;9854:18:146;;4196:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4196:54:124;;-1:-1:-1;;;;;10375:31:146;;4196:54:124;;;10357:50:146;-1:-1:-1;;;;;4196:48:124;;;;;;;10330:18:146;;4196:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4254:1;4196:59;4175:136;;;;-1:-1:-1;;;4175:136:124;;14236:2:146;4175:136:124;;;14218:21:146;14275:2;14255:18;;;14248:30;14314:32;14294:18;;;14287:60;14364:18;;4175:136:124;14034:354:146;4175:136:124;4321:19;4373:15;;:37;;-1:-1:-1;;;4373:37:124;;9911:10:146;9899:23;;4373:37:124;;;9881:42:146;-1:-1:-1;;;;;4373:15:124;;;;:28;;9854:18:146;;4373:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4373:54:124;;-1:-1:-1;;;;;10375:31:146;;4373:54:124;;;10357:50:146;-1:-1:-1;;;;;4373:48:124;;;;;;;10330:18:146;;4373:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4355:72;;:15;:72;:::i;:::-;4321:106;;4473:15;;;;;;;;-1:-1:-1;;;;;4473:15:124;-1:-1:-1;;;;;4473:38:124;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4458:11;:55;;4437:136;;;;-1:-1:-1;;;4437:136:124;;14860:2:146;4437:136:124;;;14842:21:146;14899:2;14879:18;;;14872:30;14938:34;14918:18;;;14911:62;-1:-1:-1;;;14989:18:146;;;14982:32;15031:19;;4437:136:124;14658:398:146;4437:136:124;4036:544;3960:620;;:::o;3094:1947:110:-;3330:4;3346:23;3372:46;3404:13;3372:31;:46::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;16128:2:146;4896:40:110;;;16110:21:146;16167:2;16147:18;;;16140:30;16206:32;16186:18;;;16179:60;16256:18;;4896:40:110;15926:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;431:2729:121:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:121;;-1:-1:-1;1486:14:121;-1:-1:-1;;;1514:25:121;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:121;;;1514:54;1510:236;;;-1:-1:-1;1593:1:121;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:121;;;1611:135;;-1:-1:-1;1665:1:121;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:121;;16619:2:146;1697:38:121;;;16601:21:146;16658:2;16638:18;;;16631:30;16697;16677:18;;;16670:58;16745:18;;1697:38:121;16417:352:146;1611:135:121;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:121;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:121;;16976:2:146;2278:58:121;;;16958:21:146;17015:2;16995:18;;;16988:30;-1:-1:-1;;;17034:18:146;;;17027:52;17096:18;;2278:58:121;16774:346:146;2278:58:121;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:121;;17327:2:146;2495:59:121;;;17309:21:146;17366:2;17346:18;;;17339:30;17405:25;17385:18;;;17378:53;17448:18;;2495:59:121;17125:347:146;2495:59:121;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:121;:14;-1:-1:-1;;;;;2777:30:121;;2769:83;;;;-1:-1:-1;;;2769:83:121;;17679:2:146;2769:83:121;;;17661:21:146;17718:2;17698:18;;;17691:30;17757:34;17737:18;;;17730:62;-1:-1:-1;;;17808:18:146;;;17801:38;17856:19;;2769:83:121;17477:404:146;2769:83:121;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:121;;18088:2:146;2990:74:121;;;18070:21:146;18127:2;18107:18;;;18100:30;18166:32;18146:18;;;18139:60;18216:18;;2990:74:121;17886:354:146;2990:74:121;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:121;;-1:-1:-1;;;;;;;;;;;431:2729:121;;;;;;;;;:::o;4705:1397:124:-;4951:12;4973:17;4951:12;-1:-1:-1;;;5143:15:124;5176:27;;;;:13;:27;:::i;:::-;5221;;;;;;;;:::i;:::-;5266:7;5291:12;5321:10;5041:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5041:304:124;;;;;;;;;;;;;;-1:-1:-1;;;;;5041:304:124;-1:-1:-1;;;;;;5041:304:124;;;;;;;;;;;-1:-1:-1;5377:29:124;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5377:34:124;5412:11;5377:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5489:11:124;;5359:65;;-1:-1:-1;5359:65:124;-1:-1:-1;5445:22:124;;-1:-1:-1;5504:2:124;5489:17;5485:178;;5523:12;5550:4;5539:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5599:53:124;-1:-1:-1;;;5599:53:124;;-1:-1:-1;;5485:178:124;5677:7;:28;;;;;5688:17;5677:28;5673:215;;;5721:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5721:64:124;5752:33;5721:64;;;5673:215;;;5816:28;;;;5847:30;5816:28;;;;;;;;:61;;-1:-1:-1;;5816:61:124;;;;;;5673:215;5994:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5903:192:124;5953:27;;;;:13;:27;:::i;:::-;5903:192;;5924:15;5903:192;6035:29;;;;;;;;:::i;:::-;5903:192;;;-1:-1:-1;;;;;20136:32:146;;;20118:51;;20212:14;;20205:22;20200:2;20185:18;;20178:50;20091:18;5903:192:124;;;;;;;4941:1161;;;4705:1397;;;;;;:::o;56:776:107:-;125:7;240:13;:18;;257:1;240:18;236:590;;-1:-1:-1;383:7:107;;56:776;-1:-1:-1;56:776:107:o;236:590::-;411:13;:18;;428:1;411:18;407:419;;-1:-1:-1;619:7:107;;56:776;-1:-1:-1;56:776:107:o;407:419::-;-1:-1:-1;;;803:12:107;56:776;-1:-1:-1;56:776:107:o;407:419::-;56:776;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;20441:2:146;3101:49:77;;;20423:21:146;20480:2;20460:18;;;20453:30;-1:-1:-1;;;20499:18:146;;;20492:51;20560:18;;3101:49:77;20239:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;20718:19:146;;20762:2;20753:12;;20589:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;20978:2:146;3636:134:77;;;20960:21:146;21017:2;20997:18;;;20990:30;21056:34;21036:18;;;21029:62;-1:-1:-1;;;21107:18:146;;;21100:44;21161:19;;3636:134:77;20776:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;20718:19:146;;;20762:2;20753:12;;20589:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;21393:2:146;3893:176:77;;;21375:21:146;21432:2;21412:18;;;21405:30;21471:31;21451:18;;;21444:59;21520:18;;3893:176:77;21191:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;20718:19:146;;;20762:2;20753:12;;20589:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;21751:2:146;4222:186:77;;;21733:21:146;21790:2;21770:18;;;21763:30;21829:34;21809:18;;;21802:62;-1:-1:-1;;;21880:18:146;;;21873:37;21927:19;;4222:186:77;21549:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;22159:2:146;4509:156:77;;;22141:21:146;22198:2;22178:18;;;22171:30;22237:34;22217:18;;;22210:62;-1:-1:-1;;;22288:18:146;;;22281:36;22334:19;;4509:156:77;21957:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;22566:2:146;5384:158:77;;;22548:21:146;22605:2;22585:18;;;22578:30;22644:34;22624:18;;;22617:62;22715:29;22695:18;;;22688:57;22762:19;;5384:158:77;22364:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;22994:2:146;5626:162:77;;;22976:21:146;23033:2;23013:18;;;23006:30;23072:34;23052:18;;;23045:62;23143:28;23123:18;;;23116:56;23189:19;;5626:162:77;22792:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;23739:2:146;7009:171:77;;;23721:21:146;23778:2;23758:18;;;23751:30;23817:34;23797:18;;;23790:62;23888:28;23868:18;;;23861:56;23934:19;;7009:171:77;23537:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;24166:2:146;7843:185:77;;;24148:21:146;24205:2;24185:18;;;24178:30;24244:34;24224:18;;;24217:62;24315:31;24295:18;;;24288:59;24364:19;;7843:185:77;23964:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;24596:2:146;8463:156:77;;;24578:21:146;24635:2;24615:18;;;24608:30;24674:34;24654:18;;;24647:62;24745:27;24725:18;;;24718:55;24790:19;;8463:156:77;24394:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;25022:2:146;8703:160:77;;;25004:21:146;25061:2;25041:18;;;25034:30;25100:34;25080:18;;;25073:62;25171:26;25151:18;;;25144:54;25215:19;;8703:160:77;24820:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;25447:2:146;9439:60:77;;;25429:21:146;25486:2;25466:18;;;25459:30;25525:34;25505:18;;;25498:62;-1:-1:-1;;;25576:18:146;;;25569:48;25634:19;;9439:60:77;25245:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;25866:2:146;9556:50:77;;;25848:21:146;25905:2;25885:18;;;25878:30;25944:34;25924:18;;;25917:62;-1:-1:-1;;;25995:18:146;;;25988:38;26043:19;;9556:50:77;25664:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;26415:2:146;9641:47:77;;;26397:21:146;26454:2;26434:18;;;26427:30;26493:34;26473:18;;;26466:62;-1:-1:-1;;;26544:18:146;;;26537:35;26589:19;;9641:47:77;26213:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;26821:2:146;2161:136:75;;;26803:21:146;26860:2;26840:18;;;26833:30;26899:34;26879:18;;;26872:62;26970:26;26950:18;;;26943:54;27014:19;;2161:136:75;26619:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;27246:2:146;2308:134:75;;;27228:21:146;27285:2;27265:18;;;27258:30;27324:34;27304:18;;;27297:62;-1:-1:-1;;;27375:18:146;;;27368:48;27433:19;;2308:134:75;27044:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;27665:2:146;12579:55:75;;;27647:21:146;27704:2;27684:18;;;27677:30;27743:28;27723:18;;;27716:56;27789:18;;12579:55:75;27463:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:121:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:121;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:121;3166:384;-1:-1:-1;;3166:384:121:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;28020:2:146;4505:137:75;;;28002:21:146;28059:2;28039:18;;;28032:30;28098:34;28078:18;;;28071:62;28169:27;28149:18;;;28142:55;28214:19;;4505:137:75;27818:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;28446:2:146;4653:136:75;;;28428:21:146;28485:2;28465:18;;;28458:30;28524:34;28504:18;;;28497:62;-1:-1:-1;;;28575:18:146;;;28568:50;28635:19;;4653:136:75;28244:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;30196:19:146;;;30240:2;30231:12;;30224:28;30277:2;30268:12;;30039:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;30196:19:146;;;30240:2;30231:12;;30224:28;30277:2;30268:12;;30039:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;;-1:-1:-1;1822:5:110;1283:551;-1:-1:-1;;;;1283:551:110:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;30976:2:146;6699:156:75;;;30958:21:146;31015:2;30995:18;;;30988:30;-1:-1:-1;;;;;;;;;;;31034:18:146;;;31027:62;31125:34;31105:18;;;31098:62;-1:-1:-1;;;31176:19:146;;;31169:45;31231:19;;6699:156:75;30774:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;31463:2:146;7025:177:75;;;31445:21:146;31502:2;31482:18;;;31475:30;31541:34;31521:18;;;31514:62;31612:34;31592:18;;;31585:62;-1:-1:-1;;;31663:19:146;;;31656:44;31717:19;;7025:177:75;31261:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;31949:2:146;7387:164:75;;;31931:21:146;31988:2;31968:18;;;31961:30;-1:-1:-1;;;;;;;;;;;32007:18:146;;;32000:62;32098:34;32078:18;;;32071:62;-1:-1:-1;;;32149:19:146;;;32142:48;32207:19;;7387:164:75;31747:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;32439:2:146;7721:159:75;;;32421:21:146;32478:2;32458:18;;;32451:30;-1:-1:-1;;;;;;;;;;;32497:18:146;;;32490:62;32588:34;32568:18;;;32561:62;-1:-1:-1;;;32639:19:146;;;32632:41;32690:19;;7721:159:75;32237:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;32922:2:146;8042:142:75;;;32904:21:146;32961:2;32941:18;;;32934:30;-1:-1:-1;;;;;;;;;;;32980:18:146;;;32973:62;33071:34;33051:18;;;33044:62;-1:-1:-1;;;33122:19:146;;;33115:39;33171:19;;8042:142:75;32720:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;33403:2:146;8199:168:75;;;33385:21:146;33442:2;33422:18;;;33415:30;-1:-1:-1;;;;;;;;;;;33461:18:146;;;33454:62;33552:34;33532:18;;;33525:62;-1:-1:-1;;;33603:19:146;;;33596:43;33656:19;;8199:168:75;33201:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;33888:2:146;8617:153:75;;;33870:21:146;33927:2;33907:18;;;33900:30;-1:-1:-1;;;;;;;;;;;33946:18:146;;;33939:62;34037:34;34017:18;;;34010:62;-1:-1:-1;;;34088:19:146;;;34081:41;34139:19;;8617:153:75;33686:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;34371:2:146;8935:161:75;;;34353:21:146;34410:2;34390:18;;;34383:30;-1:-1:-1;;;;;;;;;;;34429:18:146;;;34422:62;34520:34;34500:18;;;34493:62;-1:-1:-1;;;34571:19:146;;;34564:44;34625:19;;8935:161:75;34169:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;34857:2:146;9266:157:75;;;34839:21:146;34896:2;34876:18;;;34869:30;-1:-1:-1;;;;;;;;;;;34915:18:146;;;34908:62;35006:34;34986:18;;;34979:62;-1:-1:-1;;;35057:19:146;;;35050:39;35106:19;;9266:157:75;34655:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;35338:2:146;9588:141:75;;;35320:21:146;35377:2;35357:18;;;35350:30;-1:-1:-1;;;;;;;;;;;35396:18:146;;;35389:62;35487:34;35467:18;;;35460:62;-1:-1:-1;;;35538:19:146;;;35531:37;35585:19;;9588:141:75;35136:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;35817:2:146;9744:168:75;;;35799:21:146;35856:2;35836:18;;;35829:30;-1:-1:-1;;;;;;;;;;;35875:18:146;;;35868:62;35966:34;35946:18;;;35939:62;-1:-1:-1;;;36017:19:146;;;36010:41;36068:19;;9744:168:75;35615:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;36300:2:146;858:50:74;;;36282:21:146;36339:2;36319:18;;;36312:30;-1:-1:-1;;;36358:18:146;;;36351:44;36412:18;;858:50:74;36098:338:146;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;36300:2:146;922:53:74;;;36282:21:146;36339:2;36319:18;;;36312:30;-1:-1:-1;;;36358:18:146;;;36351:44;36412:18;;922:53:74;36098:338:146;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;36643:2:146;989:63:74;;;36625:21:146;36682:2;36662:18;;;36655:30;-1:-1:-1;;;36701:18:146;;;36694:47;36758:18;;989:63:74;36441:341:146;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;36989:2:146;11438:55:75;;;36971:21:146;37028:2;37008:18;;;37001:30;37067:28;37047:18;;;37040:56;37113:18;;11438:55:75;36787:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;36989:2:146;11598:72:75;;;36971:21:146;37028:2;37008:18;;;37001:30;37067:28;37047:18;;;37040:56;37113:18;;11598:72:75;36787:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:146:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:146;;14:180;-1:-1:-1;14:180:146:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:163::-;653:20;;713:10;702:22;;692:33;;682:61;;739:1;736;729:12;754:131;-1:-1:-1;;;;;829:31:146;;819:42;;809:70;;875:1;872;865:12;890:171;957:20;;-1:-1:-1;;;;;1006:30:146;;996:41;;986:69;;1051:1;1048;1041:12;1066:675;1167:6;1175;1183;1191;1199;1207;1260:3;1248:9;1239:7;1235:23;1231:33;1228:53;;;1277:1;1274;1267:12;1228:53;1300:28;1318:9;1300:28;:::i;:::-;1290:38;;1378:2;1367:9;1363:18;1350:32;1391:31;1416:5;1391:31;:::i;:::-;1441:5;-1:-1:-1;1498:2:146;1483:18;;1470:32;1511:33;1470:32;1511:33;:::i;:::-;1563:7;-1:-1:-1;1617:2:146;1602:18;;1589:32;;-1:-1:-1;1640:38:146;1673:3;1658:19;;1640:38;:::i;:::-;1630:48;;1697:38;1730:3;1719:9;1715:19;1697:38;:::i;:::-;1687:48;;1066:675;;;;;;;;:::o;1928:255::-;2084:2;2069:18;;2117:1;2106:13;;2096:47;;2123:18;;:::i;2188:387::-;2264:6;2272;2280;2333:2;2321:9;2312:7;2308:23;2304:32;2301:52;;;2349:1;2346;2339:12;2301:52;2372:28;2390:9;2372:28;:::i;:::-;2362:38;;2450:2;2439:9;2435:18;2422:32;2463:31;2488:5;2463:31;:::i;:::-;2188:387;;2513:5;;-1:-1:-1;;;2565:2:146;2550:18;;;;2537:32;;2188:387::o;2580:347::-;2631:8;2641:6;2695:3;2688:4;2680:6;2676:17;2672:27;2662:55;;2713:1;2710;2703:12;2662:55;-1:-1:-1;2736:20:146;;-1:-1:-1;;;;;2768:30:146;;2765:50;;;2811:1;2808;2801:12;2765:50;2848:4;2840:6;2836:17;2824:29;;2900:3;2893:4;2884:6;2876;2872:19;2868:30;2865:39;2862:59;;;2917:1;2914;2907:12;2862:59;2580:347;;;;;:::o;2932:367::-;2995:8;3005:6;3059:3;3052:4;3044:6;3040:17;3036:27;3026:55;;3077:1;3074;3067:12;3026:55;-1:-1:-1;3100:20:146;;-1:-1:-1;;;;;3132:30:146;;3129:50;;;3175:1;3172;3165:12;3129:50;3212:4;3204:6;3200:17;3188:29;;3272:3;3265:4;3255:6;3252:1;3248:14;3240:6;3236:27;3232:38;3229:47;3226:67;;;3289:1;3286;3279:12;3304:127;3365:10;3360:3;3356:20;3353:1;3346:31;3396:4;3393:1;3386:15;3420:4;3417:1;3410:15;3436:275;3507:2;3501:9;3572:2;3553:13;;-1:-1:-1;;3549:27:146;3537:40;;-1:-1:-1;;;;;3592:34:146;;3628:22;;;3589:62;3586:88;;;3654:18;;:::i;:::-;3690:2;3683:22;3436:275;;-1:-1:-1;3436:275:146:o;3716:530::-;3758:5;3811:3;3804:4;3796:6;3792:17;3788:27;3778:55;;3829:1;3826;3819:12;3778:55;3865:6;3852:20;-1:-1:-1;;;;;3887:2:146;3884:26;3881:52;;;3913:18;;:::i;:::-;3957:55;4000:2;3981:13;;-1:-1:-1;;3977:27:146;4006:4;3973:38;3957:55;:::i;:::-;4037:2;4028:7;4021:19;4083:3;4076:4;4071:2;4063:6;4059:15;4055:26;4052:35;4049:55;;;4100:1;4097;4090:12;4049:55;4165:2;4158:4;4150:6;4146:17;4139:4;4130:7;4126:18;4113:55;4213:1;4188:16;;;4206:4;4184:27;4177:38;;;;4192:7;3716:530;-1:-1:-1;;;3716:530:146:o;4251:161::-;4316:5;4361:3;4352:6;4347:3;4343:16;4339:26;4336:46;;;4378:1;4375;4368:12;4336:46;-1:-1:-1;4400:6:146;4251:161;-1:-1:-1;4251:161:146:o;4417:1546::-;4648:6;4656;4664;4672;4680;4688;4696;4704;4712;4720;4773:3;4761:9;4752:7;4748:23;4744:33;4741:53;;;4790:1;4787;4780:12;4741:53;4830:9;4817:23;-1:-1:-1;;;;;4900:2:146;4892:6;4889:14;4886:34;;;4916:1;4913;4906:12;4886:34;4955:58;5005:7;4996:6;4985:9;4981:22;4955:58;:::i;:::-;5032:8;;-1:-1:-1;4929:84:146;-1:-1:-1;5120:2:146;5105:18;;5092:32;;-1:-1:-1;5136:16:146;;;5133:36;;;5165:1;5162;5155:12;5133:36;5204:72;5268:7;5257:8;5246:9;5242:24;5204:72;:::i;:::-;5295:8;;-1:-1:-1;5178:98:146;-1:-1:-1;5377:2:146;5362:18;;5349:32;;-1:-1:-1;5434:2:146;5419:18;;5406:32;;-1:-1:-1;5450:16:146;;;5447:36;;;5479:1;5476;5469:12;5447:36;5518:72;5582:7;5571:8;5560:9;5556:24;5518:72;:::i;:::-;5609:8;;-1:-1:-1;5492:98:146;-1:-1:-1;5697:3:146;5682:19;;5669:33;;-1:-1:-1;5714:16:146;;;5711:36;;;5743:1;5740;5733:12;5711:36;;5766:51;5809:7;5798:8;5787:9;5783:24;5766:51;:::i;:::-;5756:61;;;5864:3;5853:9;5849:19;5836:33;5826:43;;5888:69;5949:7;5943:3;5932:9;5928:19;5888:69;:::i;:::-;5878:79;;4417:1546;;;;;;;;;;;;;:::o;6157:550::-;6388:13;;6403:10;6384:30;6366:49;;6462:4;6450:17;;;6444:24;-1:-1:-1;;;;;6544:21:146;;;6522:20;;;6515:51;;;;6626:4;6614:17;;;6608:24;6604:33;;;6582:20;;;6575:63;6694:4;6682:17;;;6676:24;6654:20;;;6647:54;;;;6353:3;6338:19;;6157:550::o;7016:184::-;7074:6;7127:2;7115:9;7106:7;7102:23;7098:32;7095:52;;;7143:1;7140;7133:12;7095:52;7166:28;7184:9;7166:28;:::i;7205:684::-;7403:3;7388:19;;7465:10;7438:25;7456:6;7438:25;:::i;:::-;7434:42;7423:9;7416:61;7524:4;7516:6;7512:17;7499:31;7539;7564:5;7539:31;:::i;:::-;-1:-1:-1;;;;;7646:14:146;;;7639:4;7624:20;;7617:44;7710:4;7698:17;;7685:31;;7725:33;7685:31;7725:33;:::i;:::-;7796:16;7789:4;7774:20;;7767:46;7876:4;7864:17;;;7851:31;7829:20;;;;7822:61;;;;7205:684;:::o;7894:250::-;7979:1;7989:113;8003:6;8000:1;7997:13;7989:113;;;8079:11;;;8073:18;8060:11;;;8053:39;8025:2;8018:10;7989:113;;;-1:-1:-1;;8136:1:146;8118:16;;8111:27;7894:250::o;8149:270::-;8190:3;8228:5;8222:12;8255:6;8250:3;8243:19;8271:76;8340:6;8333:4;8328:3;8324:14;8317:4;8310:5;8306:16;8271:76;:::i;:::-;8401:2;8380:15;-1:-1:-1;;8376:29:146;8367:39;;;;8408:4;8363:50;;8149:270;-1:-1:-1;;8149:270:146:o;8424:695::-;8683:3;8672:9;8665:22;8724:6;8718:3;8707:9;8703:19;8696:35;8782:6;8774;8768:3;8757:9;8753:19;8740:49;8839:1;8833:3;8824:6;8813:9;8809:22;8805:32;8798:43;8646:4;8900:2;8896:7;8891:2;8883:6;8879:15;8875:29;8864:9;8860:45;8967:3;8955:9;8951:2;8947:18;8943:28;8936:4;8925:9;8921:20;8914:58;8989:38;9022:3;9018:2;9014:12;9006:6;8989:38;:::i;:::-;9058:2;9043:18;;9036:34;;;;-1:-1:-1;;9101:2:146;9086:18;9079:34;8981:46;8424:695;-1:-1:-1;;;8424:695:146:o;9476:256::-;9542:6;9550;9603:2;9591:9;9582:7;9578:23;9574:32;9571:52;;;9619:1;9616;9609:12;9571:52;9642:28;9660:9;9642:28;:::i;:::-;9632:38;;9689:37;9722:2;9711:9;9707:18;9689:37;:::i;:::-;9679:47;;9476:256;;;;;:::o;9934:273::-;10026:6;10079:2;10067:9;10058:7;10054:23;10050:32;10047:52;;;10095:1;10092;10085:12;10047:52;10127:9;10121:16;10146:31;10171:5;10146:31;:::i;10418:184::-;10488:6;10541:2;10529:9;10520:7;10516:23;10512:32;10509:52;;;10557:1;10554;10547:12;10509:52;-1:-1:-1;10580:16:146;;10418:184;-1:-1:-1;10418:184:146:o;11313:934::-;11449:9;-1:-1:-1;;;;;11524:2:146;11516:6;11513:14;11510:40;;;11530:18;;:::i;:::-;11576:6;11573:1;11569:14;11602:4;11626:28;11650:2;11646;11642:11;11626:28;:::i;:::-;11688:19;;;11758:14;;;;11723:12;;;;11795:14;11784:26;;11781:46;;;11823:1;11820;11813:12;11781:46;11847:5;11861:353;11877:6;11872:3;11869:15;11861:353;;;11963:3;11950:17;11999:2;11986:11;11983:19;11980:109;;;12043:1;12072:2;12068;12061:14;11980:109;12114:57;12156:14;12142:11;12135:5;12131:23;12114:57;:::i;:::-;12102:70;;-1:-1:-1;12192:12:146;;;;11894;;11861:353;;;-1:-1:-1;12236:5:146;11313:934;-1:-1:-1;;;;;;;11313:934:146:o;12252:247::-;12311:6;12364:2;12352:9;12343:7;12339:23;12335:32;12332:52;;;12380:1;12377;12370:12;12332:52;12419:9;12406:23;12438:31;12463:5;12438:31;:::i;12857:277::-;12924:6;12977:2;12965:9;12956:7;12952:23;12948:32;12945:52;;;12993:1;12990;12983:12;12945:52;13025:9;13019:16;13078:5;13071:13;13064:21;13057:5;13054:32;13044:60;;13100:1;13097;13090:12;14393:127;14454:10;14449:3;14445:20;14442:1;14435:31;14485:4;14482:1;14475:15;14509:4;14506:1;14499:15;14525:128;14592:9;;;14613:11;;;14610:37;;;14627:18;;:::i;15061:127::-;15122:10;15117:3;15113:20;15110:1;15103:31;15153:4;15150:1;15143:15;15177:4;15174:1;15167:15;15193:120;15233:1;15259;15249:35;;15264:18;;:::i;:::-;-1:-1:-1;15298:9:146;;15193:120::o;15318:168::-;15358:7;15424:1;15420;15416:6;15412:14;15409:1;15406:21;15401:1;15394:9;15387:17;15383:45;15380:71;;;15431:18;;:::i;:::-;-1:-1:-1;15471:9:146;;15318:168::o;15491:125::-;15556:9;;;15577:10;;;15574:36;;;15590:18;;:::i;15621:183::-;-1:-1:-1;;;;;15740:10:146;;;15728;;;15724:27;;15763:12;;;15760:38;;;15778:18;;:::i;15809:112::-;15841:1;15867;15857:35;;15872:18;;:::i;:::-;-1:-1:-1;15906:9:146;;15809:112::o;16285:127::-;16346:10;16341:3;16337:20;16334:1;16327:31;16377:4;16374:1;16367:15;16401:4;16398:1;16391:15;18245:1113;18602:25;;;18696:10;18684:23;;18646:2;18664:18;;;18657:51;;;;-1:-1:-1;;;;;18744:32:146;;18739:2;18724:18;;18717:60;-1:-1:-1;;;;;18813:31:146;;18808:2;18793:18;;18786:59;18589:3;18876;18861:19;;18854:32;;;18935:13;;18574:19;;;18957:22;;;18541:4;;19037:15;;;;19010:3;18995:19;;;18541:4;19080:169;19094:6;19091:1;19088:13;19080:169;;;19155:13;;19143:26;;19224:15;;;;19189:12;;;;19116:1;19109:9;19080:169;;;19084:3;;19295:9;19290:3;19286:19;19280:3;19269:9;19265:19;19258:48;19323:29;19348:3;19340:6;19323:29;:::i;19363:287::-;19492:3;19530:6;19524:13;19546:66;19605:6;19600:3;19593:4;19585:6;19581:17;19546:66;:::i;:::-;19628:16;;;;;19363:287;-1:-1:-1;;19363:287:146:o;19655:290::-;19724:6;19777:2;19765:9;19756:7;19752:23;19748:32;19745:52;;;19793:1;19790;19783:12;19745:52;19819:16;;-1:-1:-1;;;;;;19864:32:146;;19854:43;;19844:71;;19911:1;19908;19901:12;23219:157;23249:1;23283:4;23280:1;23276:12;23307:3;23297:37;;23314:18;;:::i;:::-;23366:3;23359:4;23356:1;23352:12;23348:22;23343:27;;;23219:157;;;;:::o;23381:151::-;23471:4;23464:12;;;23450;;;23446:31;;23489:14;;23486:40;;;23506:18;;:::i;26073:135::-;26112:3;26133:17;;;26130:43;;26153:18;;:::i;:::-;-1:-1:-1;26200:1:146;26189:13;;26073:135::o;28665:422::-;28754:1;28797:5;28754:1;28811:270;28832:7;28822:8;28819:21;28811:270;;;28891:4;28887:1;28883:6;28879:17;28873:4;28870:27;28867:53;;;28900:18;;:::i;:::-;28950:7;28940:8;28936:22;28933:55;;;28970:16;;;;28933:55;29049:22;;;;29009:15;;;;28811:270;;;28815:3;28665:422;;;;;:::o;29092:806::-;29141:5;29171:8;29161:80;;-1:-1:-1;29212:1:146;29226:5;;29161:80;29260:4;29250:76;;-1:-1:-1;29297:1:146;29311:5;;29250:76;29342:4;29360:1;29355:59;;;;29428:1;29423:130;;;;29335:218;;29355:59;29385:1;29376:10;;29399:5;;;29423:130;29460:3;29450:8;29447:17;29444:43;;;29467:18;;:::i;:::-;-1:-1:-1;;29523:1:146;29509:16;;29538:5;;29335:218;;29637:2;29627:8;29624:16;29618:3;29612:4;29609:13;29605:36;29599:2;29589:8;29586:16;29581:2;29575:4;29572:12;29568:35;29565:77;29562:159;;;-1:-1:-1;29674:19:146;;;29706:5;;29562:159;29753:34;29778:8;29772:4;29753:34;:::i;:::-;29823:6;29819:1;29815:6;29811:19;29802:7;29799:32;29796:58;;;29834:18;;:::i;:::-;29872:20;;29092:806;-1:-1:-1;;;29092:806:146:o;29903:131::-;29963:5;29992:36;30019:8;30013:4;29992:36;:::i;30291:478::-;30493:2;30475:21;;;30532:2;30512:18;;;30505:30;30571:34;30566:2;30551:18;;30544:62;30642:34;30637:2;30622:18;;30615:62;-1:-1:-1;;;30708:3:146;30693:19;;30686:41;30759:3;30744:19;;30291:478::o", + "linkReferences": {} }, "methodIdentifiers": { "VERSION()": "ffa1ad74", @@ -406,7 +388,7 @@ "subscriptions(bytes32)": "94259c6c", "unsubscribe(uint32,address,bytes32)": "97229719" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyRouter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathyPubSub\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"},\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"This allows an on-chain Publisher-Suscriber model to be used for events. Contracts can subscribe to events emitted from a source contract, and it will be relayed these events through the publisher. Before the events are relayed, they are verified using the Telepathy Light Client for proof of consensus on the source chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPubSub.sol\":\"TelepathyPubSub\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyRouter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathyPubSub\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"},\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"This allows an on-chain Publisher-Suscriber model to be used for events. Contracts can subscribe to events emitted from a source contract, and it will be relayed these events through the publisher. Before the events are relayed, they are verified using the Telepathy Light Client for proof of consensus on the source chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPubSub.sol\":\"TelepathyPubSub\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -1052,10 +1034,10 @@ "license": null }, "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", "urls": [ - "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", - "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", + "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" ], "license": null }, diff --git a/out/TelepathyPublisher.sol/TelepathyPublisher.json b/out/TelepathyPublisher.sol/TelepathyPublisher.json index 4ba91fb..c5127a0 100644 --- a/out/TelepathyPublisher.sol/TelepathyPublisher.json +++ b/out/TelepathyPublisher.sol/TelepathyPublisher.json @@ -142,39 +142,21 @@ } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b506136eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612e2d565b60016020526000908152604090205460ff1681565b6040516100769190612e5c565b60405180910390f35b6100a261008d366004612e2d565b60026020526000908152604090205460ff1681565b6040516100769190612e76565b6100c26100bd366004612fe3565b6100c4565b005b6100d96100d460208301836130de565b610423565b6100ee6100e960208301836130de565b610609565b600081604051602001610101919061310e565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016101349594939291906131b7565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612e46565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f613221565b90925090506101ee826101e960208801886130de565b6106be565b600080546001600160a01b0316637599735c61020d60208901896130de565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102739190613254565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e69190613271565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b600061037e8c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061037960208e018e6130de565b610a7c565b9050806103cd5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103fd6103dd8d8f61328a565b8f8d8d8d60200160208101906103f3919061330d565b8e60600135610cf8565b9150915061040f888a89888686611043565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104969190613254565b6001600160a01b0316036104e75760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105599190613254565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba919061332a565b6106065760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b919061332a565b156106065760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107319190613254565b6001600160a01b0316036107825760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190613254565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108679190613271565b6000036108b65760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109299190613254565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190613271565b6109a69042613362565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190613271565b811015610a775760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afa9190613271565b9050600081856001600160401b031610610b1557601b610b18565b60075b60ff169050600082866001600160401b031610610b5457612000610b45846001600160401b038916613362565b610b4f919061338b565b610b69565b610b696120006001600160401b03881661338b565b90506000866001600160401b0316886001600160401b031603610ba85750600b610b958161020061339f565b610ba1906101836133be565b9050610cdd565b612000610bb5888a6133d1565b6001600160401b031611610c175750600b610bd181602061339f565b610bdc9060066133be565b9050610bf36120006001600160401b0389166133f1565b610bff6120008361339f565b610c0991906133be565b9050610b958161020061339f565b876001600160401b0316876001600160401b03161015610c955750600b82610c4082602061339f565b610c4a91906133be565b9050610c5781600261339f565b610c629060006133be565b905081610c7363010000008361339f565b610c7d91906133be565b9050610c8a81600261339f565b610bdc9060016133be565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101bb565b610ce98b828c8c611238565b9b9a5050505050505050505050565b6060806000610d08878a8a611252565b9050600081600081518110610d1f57610d1f613405565b01602001516001600160f81b03191690506000600160f81b821480610d515750600160f91b6001600160f81b03198316145b15610d5e57506001610dc3565b600360fe1b6001600160f81b0319831610610d7b57506000610dc3565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610de59190613362565b8152602001610df485856133be565b905290506000610e0382611aec565b90508051600414610e4f5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610e7482600381518110610e6757610e67613405565b6020026020010151611aec565b905080518c10610ec65760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610edd828e81518110610e6757610e67613405565b90506000610f0482600081518110610ef757610ef7613405565b6020026020010151611d11565b90508c6001600160a01b0316816001600160a01b031614610f785760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610f98610f9384600181518110610e6757610e67613405565b611d85565b90508c81600081518110610fae57610fae613405565b6020026020010151146110035760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b60006110288460028151811061101b5761101b613405565b6020026020010151611e35565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961105e60208b018b6130de565b61106e60408c0160208d0161330d565b8989896040516024016110869695949392919061341b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506110ca9060608a01908a0161330d565b6001600160a01b0316816040516110e1919061349b565b6000604051808303816000865af19150503d806000811461111e576040519150601f19603f3d011682016040523d82523d6000602084013e611123565b606091505b5080519194509250600091506020036111635760008280602001905181019061114c91906134b7565b6001600160e01b031916635160951d60e11b149150505b82801561116d5750805b15611190576000878152600160205260409020805460ff191660021790556111ad565b6000878152600160208190526040909120805460ff191690911790555b6111bd6040890160208a0161330d565b6001600160a01b03166111d360208a018a6130de565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61120b60608d0160408e0161330d565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611246868686611f61565b90921495945050505050565b6060600084511161129d5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b60006112a8846120f9565b905060006112b5866121e7565b90506000846040516020016112cc91815260200190565b60405160208183030381529060405290506000805b8451811015611a8e5760008582815181106112fe576112fe613405565b6020026020010151905084518311156113705760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b8260000361140f57805180516020918201206040516113be9261139892910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61140a5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b611505565b80515160201161149557805180516020918201206040516114399261139892910190815260200190565b61140a5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146115055760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b611511601060016133be565b816020015151036116b15784518303611649576000611540826020015160108151811061101b5761101b613405565b905060008151116115b95760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b600187516115c79190613362565b831461163b5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611ae595505050505050565b600085848151811061165d5761165d613405565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061168857611688613405565b6020026020010151905061169b81612301565b95506116a86001866133be565b94505050611a7b565b600281602001515103611a225760006116c982612326565b90506000816000815181106116e0576116e0613405565b016020015160f81c905060006116f76002836134e1565b611702906002613503565b90506000611713848360ff1661234a565b905060006117218a8961234a565b9050600061172f8383612380565b9050808351146117a75760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff8516600214806117bc575060ff85166003145b1561196257808251146118375760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b6000611853886020015160018151811061101b5761101b613405565b905060008151116118cc5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516118da9190613362565b891461194e5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611ae59b505050505050505050505050565b60ff85161580611975575060ff85166001145b156119b4576119a1876020015160018151811061199457611994613405565b6020026020010151612301565b99506119ad818a6133be565b9850611a17565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b505050505050611a7b565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b5080611a868161351c565b9150506112e1565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611afc856123ff565b919450925090506001816001811115611b1757611b17612e46565b14611b8a5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611b9683856133be565b14611bfe5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611c175790505090506000845b8751811015611d0557600080611c8a6040518060400160405280858d60000151611c6e9190613362565b8152602001858d60200151611c8391906133be565b90526123ff565b509150915060405180604001604052808383611ca691906133be565b8152602001848c60200151611cbb91906133be565b815250858581518110611cd057611cd0613405565b6020908102919091010152611ce66001856133be565b9350611cf281836133be565b611cfc90846133be565b92505050611c44565b50815295945050505050565b8051600090600103611d2557506000919050565b8151601514611d765760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611d7f82612ac2565b92915050565b6060600082516001600160401b03811115611da257611da2612f16565b604051908082528060200260200182016040528015611dcb578160200160208202803683370190505b50905060005b8351811015611e2e57611dfc848281518110611def57611def613405565b6020026020010151612ac2565b60001b828281518110611e1157611e11613405565b602090810291909101015280611e268161351c565b915050611dd1565b5092915050565b60606000806000611e45856123ff565b919450925090506000816001811115611e6057611e60612e46565b14611ed35760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611edd82846133be565b855114611f495760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611f5885602001518484612acd565b95945050505050565b60008282516001611f7291906133be565b611f7d906002613619565b11611f8757600080fd5b8360005b846001146120f057611f9e6002866133f1565b60010361203d576002848281518110611fb957611fb9613405565b602002602001015183604051602001611fdc929190918252602082015260400190565b60408051601f1981840301815290829052611ff69161349b565b602060405180830381855afa158015612013573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906120369190613271565b91506120d1565b60028285838151811061205257612052613405565b6020026020010151604051602001612074929190918252602082015260400190565b60408051601f198184030181529082905261208e9161349b565b602060405180830381855afa1580156120ab573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906120ce9190613271565b91505b6120dc60028661338b565b9450806120e88161351c565b915050611f8b565b50949350505050565b80516060906000816001600160401b0381111561211857612118612f16565b60405190808252806020026020018201604052801561215d57816020015b60408051808201909152606080825260208201528152602001906001900390816121365790505b50905060005b828110156121df57604051806040016040528086838151811061218857612188613405565b602002602001015181526020016121b78784815181106121aa576121aa613405565b6020026020010151612b6d565b8152508282815181106121cc576121cc613405565b6020908102919091010152600101612163565b509392505050565b805160609060006121f982600261339f565b6001600160401b0381111561221057612210612f16565b6040519080825280601f01601f19166020018201604052801561223a576020820181803683370190505b5090506000805b838110156122f75785818151811061225b5761225b613405565b6020910101516001600160f81b03198116925060041c60ff60f41b168361228383600261339f565b8151811061229357612293613405565b60200101906001600160f81b031916908160001a905350600f60f81b8216836122bd83600261339f565b6122c89060016133be565b815181106122d8576122d8613405565b60200101906001600160f81b031916908160001a905350600101612241565b5090949350505050565b6060602082600001511061231d5761231882611e35565b611d7f565b611d7f82612b80565b6060611d7f612345836020015160008151811061101b5761101b613405565b6121e7565b6060825182106123695750604080516020810190915260008152611d7f565b611ae5838384865161237b9190613362565b612b96565b60008060008351855110612395578351612398565b84515b90505b80821080156123ef57508382815181106123b7576123b7613405565b602001015160f81c60f81b6001600160f81b0319168583815181106123de576123de613405565b01602001516001600160f81b031916145b156121df5781600101915061239b565b6000806000808460000151116124275760405162461bcd60e51b81526004016101bb90613625565b6020840151805160001a607f811161244c576000600160009450945094505050612abb565b60b781116125a9576000612461608083613362565b9050808760000151116124e15760405162461bcd60e51b815260206004820152604e602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b031916908214158061250e5750600160ff1b6001600160f81b0319821610155b6125965760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b5060019550935060009250612abb915050565b60bf81116127ea5760006125be60b783613362565b9050808760000151116126415760405162461bcd60e51b8152602060048201526051602482015260008051602061369683398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036126c85760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c6037811161274b5760405162461bcd60e51b8152602060048201526048602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b61275581846133be565b8951116127cd5760405162461bcd60e51b815260206004820152604c602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6127d88360016133be565b9750955060009450612abb9350505050565b60f7811161288c5760006127ff60c083613362565b90508087600001511161287b5760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b600195509350849250612abb915050565b600061289960f783613362565b9050808760000151116129185760405162461bcd60e51b815260206004820152604d602482015260008051602061369683398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b031916600081900361299d5760405162461bcd60e51b8152602060048201526048602482015260008051602061369683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c60378111612a1e5760405162461bcd60e51b8152602060048201526046602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b612a2881846133be565b895111612a9e5760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b612aa98360016133be565b9750955060019450612abb9350505050565b9193909250565b6000611d7f82612cd7565b60606000826001600160401b03811115612ae957612ae9612f16565b6040519080825280601f01601f191660200182016040528015612b13576020820181803683370190505b50905082600003612b25579050611ae5565b6000612b3185876133be565b90506020820160005b85811015612b52578281015182820152602001612b3a565b85811115612b61576000868301525b50919695505050505050565b6060611d7f612b7b83612dda565b611aec565b6060611d7f826020015160008460000151612acd565b60608182601f011015612bdc5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612c1f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612c665760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612c8557604051915060008252602082016040526120f0565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612cbe578051835260209283019201612ca6565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612d2e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612d3c856123ff565b919450925090506000816001811115612d5757612d57612e46565b14612da45760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612db691906133be565b80519091506020841015612dd05760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612e0f5760405162461bcd60e51b81526004016101bb90613625565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612e3f57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612e7057612e70612e46565b91905290565b6020810160028310612e7057612e70612e46565b60008083601f840112612e9c57600080fd5b5081356001600160401b03811115612eb357600080fd5b602083019150836020828501011115612ecb57600080fd5b9250929050565b60008083601f840112612ee457600080fd5b5081356001600160401b03811115612efb57600080fd5b6020830191508360208260051b8501011115612ecb57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612f5457612f54612f16565b604052919050565b600082601f830112612f6d57600080fd5b81356001600160401b03811115612f8657612f86612f16565b612f99601f8201601f1916602001612f2c565b818152846020838601011115612fae57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612fdd57600080fd5b50919050565b6000806000806000806000806000806101408b8d03121561300357600080fd5b8a356001600160401b038082111561301a57600080fd5b6130268e838f01612e8a565b909c509a5060208d013591508082111561303f57600080fd5b61304b8e838f01612ed2565b909a50985060408d0135975060608d013591508082111561306b57600080fd5b6130778e838f01612ed2565b909750955060808d013591508082111561309057600080fd5b5061309d8d828e01612f5c565b93505060a08b013591506130b48c60c08d01612fcb565b90509295989b9194979a5092959850565b803563ffffffff811681146130d957600080fd5b919050565b6000602082840312156130f057600080fd5b611ae5826130c5565b6001600160a01b038116811461060657600080fd5b6080810163ffffffff613120846130c5565b1682526020830135613131816130f9565b6001600160a01b039081166020840152604084013590613150826130f9565b166040830152606092830135929091019190915290565b60005b8381101561318257818101518382015260200161316a565b50506000910152565b600081518084526131a3816020860160208601613167565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526131f560a082018761318b565b60408401959095525050606001529392505050565b80356001600160401b03811681146130d957600080fd5b6000806040838503121561323457600080fd5b61323d8361320a565b915061324b6020840161320a565b90509250929050565b60006020828403121561326657600080fd5b8151611ae5816130f9565b60006020828403121561328357600080fd5b5051919050565b60006001600160401b03808411156132a4576132a4612f16565b8360051b60206132b5818301612f2c565b8681529185019181810190368411156132cd57600080fd5b865b84811015613301578035868111156132e75760008081fd5b6132f336828b01612f5c565b8452509183019183016132cf565b50979650505050505050565b60006020828403121561331f57600080fd5b8135611ae5816130f9565b60006020828403121561333c57600080fd5b81518015158114611ae557600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611d7f57611d7f61334c565b634e487b7160e01b600052601260045260246000fd5b60008261339a5761339a613375565b500490565b60008160001904831182151516156133b9576133b961334c565b500290565b80820180821115611d7f57611d7f61334c565b6001600160401b03828116828216039080821115611e2e57611e2e61334c565b60008261340057613400613375565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b818110156134875784518352938301939183019160010161346b565b505084810360a0860152610ce9818761318b565b600082516134ad818460208701613167565b9190910192915050565b6000602082840312156134c957600080fd5b81516001600160e01b031981168114611ae557600080fd5b600060ff8316806134f4576134f4613375565b8060ff84160691505092915050565b60ff8281168282160390811115611d7f57611d7f61334c565b60006001820161352e5761352e61334c565b5060010190565b600181815b808511156135705781600019048211156135565761355661334c565b8085161561356357918102915b93841c939080029061353a565b509250929050565b60008261358757506001611d7f565b8161359457506000611d7f565b81600181146135aa57600281146135b4576135d0565b6001915050611d7f565b60ff8411156135c5576135c561334c565b50506001821b611d7f565b5060208310610133831016604e8410600b84101617156135f3575081810a611d7f565b6135fd8383613535565b80600019048211156136115761361161334c565b029392505050565b6000611ae58383613578565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a264697066735822122094dab27a8a6e78e85044dd92ccb31d89b6b0659dad83111a1dfc623c4daa0d8e64736f6c63430008100033", + "object": "0x608060405234801561001057600080fd5b506136b4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612dfb565b60016020526000908152604090205460ff1681565b6040516100769190612e2a565b60405180910390f35b6100a261008d366004612dfb565b60026020526000908152604090205460ff1681565b6040516100769190612e44565b6100c26100bd366004612fb1565b6100c4565b005b6100d96100d460208301836130a7565b610423565b6100ee6100e960208301836130a7565b610609565b60008160405160200161010191906130d7565b60405160208183030381529060405280519060200120905060008b8b868685604051602001610134959493929190613180565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612e14565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f6131ea565b90925090506101ee826101e960208801886130a7565b6106be565b600080546001600160a01b0316637599735c61020d60208901896130a7565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610273919061321d565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e6919061323a565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b600061037e8c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061037960208e018e6130a7565b610a7c565b9050806103cd5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103fd6103dd8d8f613253565b8f8d8d8d60200160208101906103f391906132d6565b8e60600135610c86565b9150915061040f888a89888686610fd1565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610496919061321d565b6001600160a01b0316036104e75760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610535573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610559919061321d565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba91906132f3565b6106065760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b91906132f3565b156106065760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610731919061321d565b6001600160a01b0316036107825760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f4919061321d565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610867919061323a565b6000036108b65760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610905573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610929919061321d565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c919061323a565b6109a6904261332b565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d919061323a565b811015610a775760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b600080610a88836111c6565b9050600081856001600160401b031610610aa357601b610aa6565b60075b60ff169050600082866001600160401b031610610ae257612000610ad3846001600160401b03891661332b565b610add9190613354565b610af7565b610af76120006001600160401b038816613354565b90506000866001600160401b0316886001600160401b031603610b365750600b610b2381610200613368565b610b2f90610183613387565b9050610c6b565b612000610b43888a61339a565b6001600160401b031611610ba55750600b610b5f816020613368565b610b6a906006613387565b9050610b816120006001600160401b0389166133ba565b610b8d61200083613368565b610b979190613387565b9050610b2381610200613368565b876001600160401b0316876001600160401b03161015610c235750600b82610bce826020613368565b610bd89190613387565b9050610be5816002613368565b610bf0906000613387565b905081610c01630100000083613368565b610c0b9190613387565b9050610c18816002613368565b610b6a906001613387565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101bb565b610c778b828c8c611206565b9b9a5050505050505050505050565b6060806000610c96878a8a611220565b9050600081600081518110610cad57610cad6133ce565b01602001516001600160f81b03191690506000600160f81b821480610cdf5750600160f91b6001600160f81b03198316145b15610cec57506001610d51565b600360fe1b6001600160f81b0319831610610d0957506000610d51565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610d73919061332b565b8152602001610d828585613387565b905290506000610d9182611aba565b90508051600414610ddd5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610e0282600381518110610df557610df56133ce565b6020026020010151611aba565b905080518c10610e545760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610e6b828e81518110610df557610df56133ce565b90506000610e9282600081518110610e8557610e856133ce565b6020026020010151611cdf565b90508c6001600160a01b0316816001600160a01b031614610f065760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610f26610f2184600181518110610df557610df56133ce565b611d53565b90508c81600081518110610f3c57610f3c6133ce565b602002602001015114610f915760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b6000610fb684600281518110610fa957610fa96133ce565b6020026020010151611e03565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b89610fec60208b018b6130a7565b610ffc60408c0160208d016132d6565b898989604051602401611014969594939291906133e4565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506110589060608a01908a016132d6565b6001600160a01b03168160405161106f9190613464565b6000604051808303816000865af19150503d80600081146110ac576040519150601f19603f3d011682016040523d82523d6000602084013e6110b1565b606091505b5080519194509250600091506020036110f1576000828060200190518101906110da9190613480565b6001600160e01b031916635160951d60e11b149150505b8280156110fb5750805b1561111e576000878152600160205260409020805460ff1916600217905561113b565b6000878152600160208190526040909120805460ff191690911790555b61114b6040890160208a016132d6565b6001600160a01b031661116160208a018a6130a7565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61119960608d0160408e016132d6565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b60008163ffffffff166001036111e05750625ec000919050565b8163ffffffff166005036111f85750624f4000919050565b50600019919050565b919050565b600080611214868686611f2f565b90921495945050505050565b6060600084511161126b5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b6000611276846120c7565b90506000611283866121b5565b905060008460405160200161129a91815260200190565b60405160208183030381529060405290506000805b8451811015611a5c5760008582815181106112cc576112cc6133ce565b60200260200101519050845183111561133e5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b826000036113dd578051805160209182012060405161138c9261136692910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6113d85760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b6114d3565b80515160201161146357805180516020918201206040516114079261136692910190815260200190565b6113d85760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146114d35760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b6114df60106001613387565b8160200151510361167f578451830361161757600061150e8260200151601081518110610fa957610fa96133ce565b905060008151116115875760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b60018751611595919061332b565b83146116095760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611ab395505050505050565b600085848151811061162b5761162b6133ce565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611656576116566133ce565b60200260200101519050611669816122cf565b9550611676600186613387565b94505050611a49565b6002816020015151036119f0576000611697826122f4565b90506000816000815181106116ae576116ae6133ce565b016020015160f81c905060006116c56002836134aa565b6116d09060026134cc565b905060006116e1848360ff16612318565b905060006116ef8a89612318565b905060006116fd838361234e565b9050808351146117755760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff85166002148061178a575060ff85166003145b1561193057808251146118055760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b60006118218860200151600181518110610fa957610fa96133ce565b9050600081511161189a5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516118a8919061332b565b891461191c5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611ab39b505050505050505050505050565b60ff85161580611943575060ff85166001145b156119825761196f8760200151600181518110611962576119626133ce565b60200260200101516122cf565b995061197b818a613387565b98506119e5565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b505050505050611a49565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b5080611a54816134e5565b9150506112af565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611aca856123cd565b919450925090506001816001811115611ae557611ae5612e14565b14611b585760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611b648385613387565b14611bcc5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611be55790505090506000845b8751811015611cd357600080611c586040518060400160405280858d60000151611c3c919061332b565b8152602001858d60200151611c519190613387565b90526123cd565b509150915060405180604001604052808383611c749190613387565b8152602001848c60200151611c899190613387565b815250858581518110611c9e57611c9e6133ce565b6020908102919091010152611cb4600185613387565b9350611cc08183613387565b611cca9084613387565b92505050611c12565b50815295945050505050565b8051600090600103611cf357506000919050565b8151601514611d445760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611d4d82612a90565b92915050565b6060600082516001600160401b03811115611d7057611d70612ee4565b604051908082528060200260200182016040528015611d99578160200160208202803683370190505b50905060005b8351811015611dfc57611dca848281518110611dbd57611dbd6133ce565b6020026020010151612a90565b60001b828281518110611ddf57611ddf6133ce565b602090810291909101015280611df4816134e5565b915050611d9f565b5092915050565b60606000806000611e13856123cd565b919450925090506000816001811115611e2e57611e2e612e14565b14611ea15760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611eab8284613387565b855114611f175760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611f2685602001518484612a9b565b95945050505050565b60008282516001611f409190613387565b611f4b9060026135e2565b11611f5557600080fd5b8360005b846001146120be57611f6c6002866133ba565b60010361200b576002848281518110611f8757611f876133ce565b602002602001015183604051602001611faa929190918252602082015260400190565b60408051601f1981840301815290829052611fc491613464565b602060405180830381855afa158015611fe1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612004919061323a565b915061209f565b600282858381518110612020576120206133ce565b6020026020010151604051602001612042929190918252602082015260400190565b60408051601f198184030181529082905261205c91613464565b602060405180830381855afa158015612079573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061209c919061323a565b91505b6120aa600286613354565b9450806120b6816134e5565b915050611f59565b50949350505050565b80516060906000816001600160401b038111156120e6576120e6612ee4565b60405190808252806020026020018201604052801561212b57816020015b60408051808201909152606080825260208201528152602001906001900390816121045790505b50905060005b828110156121ad576040518060400160405280868381518110612156576121566133ce565b60200260200101518152602001612185878481518110612178576121786133ce565b6020026020010151612b3b565b81525082828151811061219a5761219a6133ce565b6020908102919091010152600101612131565b509392505050565b805160609060006121c7826002613368565b6001600160401b038111156121de576121de612ee4565b6040519080825280601f01601f191660200182016040528015612208576020820181803683370190505b5090506000805b838110156122c557858181518110612229576122296133ce565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612251836002613368565b81518110612261576122616133ce565b60200101906001600160f81b031916908160001a905350600f60f81b82168361228b836002613368565b612296906001613387565b815181106122a6576122a66133ce565b60200101906001600160f81b031916908160001a90535060010161220f565b5090949350505050565b606060208260000151106122eb576122e682611e03565b611d4d565b611d4d82612b4e565b6060611d4d6123138360200151600081518110610fa957610fa96133ce565b6121b5565b6060825182106123375750604080516020810190915260008152611d4d565b611ab38383848651612349919061332b565b612b64565b60008060008351855110612363578351612366565b84515b90505b80821080156123bd5750838281518110612385576123856133ce565b602001015160f81c60f81b6001600160f81b0319168583815181106123ac576123ac6133ce565b01602001516001600160f81b031916145b156121ad57816001019150612369565b6000806000808460000151116123f55760405162461bcd60e51b81526004016101bb906135ee565b6020840151805160001a607f811161241a576000600160009450945094505050612a89565b60b7811161257757600061242f60808361332b565b9050808760000151116124af5760405162461bcd60e51b815260206004820152604e602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b03191690821415806124dc5750600160ff1b6001600160f81b0319821610155b6125645760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b5060019550935060009250612a89915050565b60bf81116127b857600061258c60b78361332b565b90508087600001511161260f5760405162461bcd60e51b8152602060048201526051602482015260008051602061365f83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036126965760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c603781116127195760405162461bcd60e51b8152602060048201526048602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b6127238184613387565b89511161279b5760405162461bcd60e51b815260206004820152604c602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6127a6836001613387565b9750955060009450612a899350505050565b60f7811161285a5760006127cd60c08361332b565b9050808760000151116128495760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b600195509350849250612a89915050565b600061286760f78361332b565b9050808760000151116128e65760405162461bcd60e51b815260206004820152604d602482015260008051602061365f83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b031916600081900361296b5760405162461bcd60e51b8152602060048201526048602482015260008051602061365f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c603781116129ec5760405162461bcd60e51b8152602060048201526046602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b6129f68184613387565b895111612a6c5760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b612a77836001613387565b9750955060019450612a899350505050565b9193909250565b6000611d4d82612ca5565b60606000826001600160401b03811115612ab757612ab7612ee4565b6040519080825280601f01601f191660200182016040528015612ae1576020820181803683370190505b50905082600003612af3579050611ab3565b6000612aff8587613387565b90506020820160005b85811015612b20578281015182820152602001612b08565b85811115612b2f576000868301525b50919695505050505050565b6060611d4d612b4983612da8565b611aba565b6060611d4d826020015160008460000151612a9b565b60608182601f011015612baa5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612bed5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612c345760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612c5357604051915060008252602082016040526120be565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612c8c578051835260209283019201612c74565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612cfc5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612d0a856123cd565b919450925090506000816001811115612d2557612d25612e14565b14612d725760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612d849190613387565b80519091506020841015612d9e5760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612ddd5760405162461bcd60e51b81526004016101bb906135ee565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612e0d57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612e3e57612e3e612e14565b91905290565b6020810160028310612e3e57612e3e612e14565b60008083601f840112612e6a57600080fd5b5081356001600160401b03811115612e8157600080fd5b602083019150836020828501011115612e9957600080fd5b9250929050565b60008083601f840112612eb257600080fd5b5081356001600160401b03811115612ec957600080fd5b6020830191508360208260051b8501011115612e9957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612f2257612f22612ee4565b604052919050565b600082601f830112612f3b57600080fd5b81356001600160401b03811115612f5457612f54612ee4565b612f67601f8201601f1916602001612efa565b818152846020838601011115612f7c57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612fab57600080fd5b50919050565b6000806000806000806000806000806101408b8d031215612fd157600080fd5b8a356001600160401b0380821115612fe857600080fd5b612ff48e838f01612e58565b909c509a5060208d013591508082111561300d57600080fd5b6130198e838f01612ea0565b909a50985060408d0135975060608d013591508082111561303957600080fd5b6130458e838f01612ea0565b909750955060808d013591508082111561305e57600080fd5b5061306b8d828e01612f2a565b93505060a08b013591506130828c60c08d01612f99565b90509295989b9194979a5092959850565b803563ffffffff8116811461120157600080fd5b6000602082840312156130b957600080fd5b611ab382613093565b6001600160a01b038116811461060657600080fd5b6080810163ffffffff6130e984613093565b16825260208301356130fa816130c2565b6001600160a01b039081166020840152604084013590613119826130c2565b166040830152606092830135929091019190915290565b60005b8381101561314b578181015183820152602001613133565b50506000910152565b6000815180845261316c816020860160208601613130565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526131be60a0820187613154565b60408401959095525050606001529392505050565b80356001600160401b038116811461120157600080fd5b600080604083850312156131fd57600080fd5b613206836131d3565b9150613214602084016131d3565b90509250929050565b60006020828403121561322f57600080fd5b8151611ab3816130c2565b60006020828403121561324c57600080fd5b5051919050565b60006001600160401b038084111561326d5761326d612ee4565b8360051b602061327e818301612efa565b86815291850191818101903684111561329657600080fd5b865b848110156132ca578035868111156132b05760008081fd5b6132bc36828b01612f2a565b845250918301918301613298565b50979650505050505050565b6000602082840312156132e857600080fd5b8135611ab3816130c2565b60006020828403121561330557600080fd5b81518015158114611ab357600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611d4d57611d4d613315565b634e487b7160e01b600052601260045260246000fd5b6000826133635761336361333e565b500490565b600081600019048311821515161561338257613382613315565b500290565b80820180821115611d4d57611d4d613315565b6001600160401b03828116828216039080821115611dfc57611dfc613315565b6000826133c9576133c961333e565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561345057845183529383019391830191600101613434565b505084810360a0860152610c778187613154565b60008251613476818460208701613130565b9190910192915050565b60006020828403121561349257600080fd5b81516001600160e01b031981168114611ab357600080fd5b600060ff8316806134bd576134bd61333e565b8060ff84160691505092915050565b60ff8281168282160390811115611d4d57611d4d613315565b6000600182016134f7576134f7613315565b5060010190565b600181815b8085111561353957816000190482111561351f5761351f613315565b8085161561352c57918102915b93841c9390800290613503565b509250929050565b60008261355057506001611d4d565b8161355d57506000611d4d565b8160018114613573576002811461357d57613599565b6001915050611d4d565b60ff84111561358e5761358e613315565b50506001821b611d4d565b5060208310610133831016604e8410600b84101617156135bc575081810a611d4d565b6135c683836134fe565b80600019048211156135da576135da613315565b029392505050565b6000611ab38383613541565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a264697066735822122026db42a5fa22e30691e0bb7da88d8b225a81d80765f2b503c5bdcc5ee1a38b9064736f6c63430008100033", "sourceMap": "678:5426:124:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": { - "src/libraries/BeaconChainForks.sol": { - "BeaconChainForks": [ - { - "start": 2748, - "length": 20 - } - ] - } - } + "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612e2d565b60016020526000908152604090205460ff1681565b6040516100769190612e5c565b60405180910390f35b6100a261008d366004612e2d565b60026020526000908152604090205460ff1681565b6040516100769190612e76565b6100c26100bd366004612fe3565b6100c4565b005b6100d96100d460208301836130de565b610423565b6100ee6100e960208301836130de565b610609565b600081604051602001610101919061310e565b60405160208183030381529060405280519060200120905060008b8b8686856040516020016101349594939291906131b7565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612e46565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f613221565b90925090506101ee826101e960208801886130de565b6106be565b600080546001600160a01b0316637599735c61020d60208901896130de565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102739190613254565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e69190613271565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b600061037e8c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061037960208e018e6130de565b610a7c565b9050806103cd5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103fd6103dd8d8f61328a565b8f8d8d8d60200160208101906103f3919061330d565b8e60600135610cf8565b9150915061040f888a89888686611043565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104969190613254565b6001600160a01b0316036104e75760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105599190613254565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba919061332a565b6106065760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b919061332a565b156106065760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107319190613254565b6001600160a01b0316036107825760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190613254565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108679190613271565b6000036108b65760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109299190613254565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190613271565b6109a69042613362565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190613271565b811015610a775760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af4158015610ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afa9190613271565b9050600081856001600160401b031610610b1557601b610b18565b60075b60ff169050600082866001600160401b031610610b5457612000610b45846001600160401b038916613362565b610b4f919061338b565b610b69565b610b696120006001600160401b03881661338b565b90506000866001600160401b0316886001600160401b031603610ba85750600b610b958161020061339f565b610ba1906101836133be565b9050610cdd565b612000610bb5888a6133d1565b6001600160401b031611610c175750600b610bd181602061339f565b610bdc9060066133be565b9050610bf36120006001600160401b0389166133f1565b610bff6120008361339f565b610c0991906133be565b9050610b958161020061339f565b876001600160401b0316876001600160401b03161015610c955750600b82610c4082602061339f565b610c4a91906133be565b9050610c5781600261339f565b610c629060006133be565b905081610c7363010000008361339f565b610c7d91906133be565b9050610c8a81600261339f565b610bdc9060016133be565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101bb565b610ce98b828c8c611238565b9b9a5050505050505050505050565b6060806000610d08878a8a611252565b9050600081600081518110610d1f57610d1f613405565b01602001516001600160f81b03191690506000600160f81b821480610d515750600160f91b6001600160f81b03198316145b15610d5e57506001610dc3565b600360fe1b6001600160f81b0319831610610d7b57506000610dc3565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610de59190613362565b8152602001610df485856133be565b905290506000610e0382611aec565b90508051600414610e4f5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610e7482600381518110610e6757610e67613405565b6020026020010151611aec565b905080518c10610ec65760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610edd828e81518110610e6757610e67613405565b90506000610f0482600081518110610ef757610ef7613405565b6020026020010151611d11565b90508c6001600160a01b0316816001600160a01b031614610f785760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610f98610f9384600181518110610e6757610e67613405565b611d85565b90508c81600081518110610fae57610fae613405565b6020026020010151146110035760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b60006110288460028151811061101b5761101b613405565b6020026020010151611e35565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b8961105e60208b018b6130de565b61106e60408c0160208d0161330d565b8989896040516024016110869695949392919061341b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506110ca9060608a01908a0161330d565b6001600160a01b0316816040516110e1919061349b565b6000604051808303816000865af19150503d806000811461111e576040519150601f19603f3d011682016040523d82523d6000602084013e611123565b606091505b5080519194509250600091506020036111635760008280602001905181019061114c91906134b7565b6001600160e01b031916635160951d60e11b149150505b82801561116d5750805b15611190576000878152600160205260409020805460ff191660021790556111ad565b6000878152600160208190526040909120805460ff191690911790555b6111bd6040890160208a0161330d565b6001600160a01b03166111d360208a018a6130de565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61120b60608d0160408e0161330d565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b600080611246868686611f61565b90921495945050505050565b6060600084511161129d5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b60006112a8846120f9565b905060006112b5866121e7565b90506000846040516020016112cc91815260200190565b60405160208183030381529060405290506000805b8451811015611a8e5760008582815181106112fe576112fe613405565b6020026020010151905084518311156113705760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b8260000361140f57805180516020918201206040516113be9261139892910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61140a5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b611505565b80515160201161149557805180516020918201206040516114399261139892910190815260200190565b61140a5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146115055760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b611511601060016133be565b816020015151036116b15784518303611649576000611540826020015160108151811061101b5761101b613405565b905060008151116115b95760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b600187516115c79190613362565b831461163b5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611ae595505050505050565b600085848151811061165d5761165d613405565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061168857611688613405565b6020026020010151905061169b81612301565b95506116a86001866133be565b94505050611a7b565b600281602001515103611a225760006116c982612326565b90506000816000815181106116e0576116e0613405565b016020015160f81c905060006116f76002836134e1565b611702906002613503565b90506000611713848360ff1661234a565b905060006117218a8961234a565b9050600061172f8383612380565b9050808351146117a75760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff8516600214806117bc575060ff85166003145b1561196257808251146118375760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b6000611853886020015160018151811061101b5761101b613405565b905060008151116118cc5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516118da9190613362565b891461194e5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611ae59b505050505050505050505050565b60ff85161580611975575060ff85166001145b156119b4576119a1876020015160018151811061199457611994613405565b6020026020010151612301565b99506119ad818a6133be565b9850611a17565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b505050505050611a7b565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b5080611a868161351c565b9150506112e1565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611afc856123ff565b919450925090506001816001811115611b1757611b17612e46565b14611b8a5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611b9683856133be565b14611bfe5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611c175790505090506000845b8751811015611d0557600080611c8a6040518060400160405280858d60000151611c6e9190613362565b8152602001858d60200151611c8391906133be565b90526123ff565b509150915060405180604001604052808383611ca691906133be565b8152602001848c60200151611cbb91906133be565b815250858581518110611cd057611cd0613405565b6020908102919091010152611ce66001856133be565b9350611cf281836133be565b611cfc90846133be565b92505050611c44565b50815295945050505050565b8051600090600103611d2557506000919050565b8151601514611d765760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611d7f82612ac2565b92915050565b6060600082516001600160401b03811115611da257611da2612f16565b604051908082528060200260200182016040528015611dcb578160200160208202803683370190505b50905060005b8351811015611e2e57611dfc848281518110611def57611def613405565b6020026020010151612ac2565b60001b828281518110611e1157611e11613405565b602090810291909101015280611e268161351c565b915050611dd1565b5092915050565b60606000806000611e45856123ff565b919450925090506000816001811115611e6057611e60612e46565b14611ed35760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611edd82846133be565b855114611f495760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611f5885602001518484612acd565b95945050505050565b60008282516001611f7291906133be565b611f7d906002613619565b11611f8757600080fd5b8360005b846001146120f057611f9e6002866133f1565b60010361203d576002848281518110611fb957611fb9613405565b602002602001015183604051602001611fdc929190918252602082015260400190565b60408051601f1981840301815290829052611ff69161349b565b602060405180830381855afa158015612013573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906120369190613271565b91506120d1565b60028285838151811061205257612052613405565b6020026020010151604051602001612074929190918252602082015260400190565b60408051601f198184030181529082905261208e9161349b565b602060405180830381855afa1580156120ab573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906120ce9190613271565b91505b6120dc60028661338b565b9450806120e88161351c565b915050611f8b565b50949350505050565b80516060906000816001600160401b0381111561211857612118612f16565b60405190808252806020026020018201604052801561215d57816020015b60408051808201909152606080825260208201528152602001906001900390816121365790505b50905060005b828110156121df57604051806040016040528086838151811061218857612188613405565b602002602001015181526020016121b78784815181106121aa576121aa613405565b6020026020010151612b6d565b8152508282815181106121cc576121cc613405565b6020908102919091010152600101612163565b509392505050565b805160609060006121f982600261339f565b6001600160401b0381111561221057612210612f16565b6040519080825280601f01601f19166020018201604052801561223a576020820181803683370190505b5090506000805b838110156122f75785818151811061225b5761225b613405565b6020910101516001600160f81b03198116925060041c60ff60f41b168361228383600261339f565b8151811061229357612293613405565b60200101906001600160f81b031916908160001a905350600f60f81b8216836122bd83600261339f565b6122c89060016133be565b815181106122d8576122d8613405565b60200101906001600160f81b031916908160001a905350600101612241565b5090949350505050565b6060602082600001511061231d5761231882611e35565b611d7f565b611d7f82612b80565b6060611d7f612345836020015160008151811061101b5761101b613405565b6121e7565b6060825182106123695750604080516020810190915260008152611d7f565b611ae5838384865161237b9190613362565b612b96565b60008060008351855110612395578351612398565b84515b90505b80821080156123ef57508382815181106123b7576123b7613405565b602001015160f81c60f81b6001600160f81b0319168583815181106123de576123de613405565b01602001516001600160f81b031916145b156121df5781600101915061239b565b6000806000808460000151116124275760405162461bcd60e51b81526004016101bb90613625565b6020840151805160001a607f811161244c576000600160009450945094505050612abb565b60b781116125a9576000612461608083613362565b9050808760000151116124e15760405162461bcd60e51b815260206004820152604e602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b031916908214158061250e5750600160ff1b6001600160f81b0319821610155b6125965760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b5060019550935060009250612abb915050565b60bf81116127ea5760006125be60b783613362565b9050808760000151116126415760405162461bcd60e51b8152602060048201526051602482015260008051602061369683398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036126c85760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c6037811161274b5760405162461bcd60e51b8152602060048201526048602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b61275581846133be565b8951116127cd5760405162461bcd60e51b815260206004820152604c602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6127d88360016133be565b9750955060009450612abb9350505050565b60f7811161288c5760006127ff60c083613362565b90508087600001511161287b5760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b600195509350849250612abb915050565b600061289960f783613362565b9050808760000151116129185760405162461bcd60e51b815260206004820152604d602482015260008051602061369683398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b031916600081900361299d5760405162461bcd60e51b8152602060048201526048602482015260008051602061369683398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c60378111612a1e5760405162461bcd60e51b8152602060048201526046602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b612a2881846133be565b895111612a9e5760405162461bcd60e51b815260206004820152604a602482015260008051602061369683398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b612aa98360016133be565b9750955060019450612abb9350505050565b9193909250565b6000611d7f82612cd7565b60606000826001600160401b03811115612ae957612ae9612f16565b6040519080825280601f01601f191660200182016040528015612b13576020820181803683370190505b50905082600003612b25579050611ae5565b6000612b3185876133be565b90506020820160005b85811015612b52578281015182820152602001612b3a565b85811115612b61576000868301525b50919695505050505050565b6060611d7f612b7b83612dda565b611aec565b6060611d7f826020015160008460000151612acd565b60608182601f011015612bdc5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612c1f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612c665760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612c8557604051915060008252602082016040526120f0565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612cbe578051835260209283019201612ca6565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612d2e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612d3c856123ff565b919450925090506000816001811115612d5757612d57612e46565b14612da45760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612db691906133be565b80519091506020841015612dd05760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612e0f5760405162461bcd60e51b81526004016101bb90613625565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612e3f57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612e7057612e70612e46565b91905290565b6020810160028310612e7057612e70612e46565b60008083601f840112612e9c57600080fd5b5081356001600160401b03811115612eb357600080fd5b602083019150836020828501011115612ecb57600080fd5b9250929050565b60008083601f840112612ee457600080fd5b5081356001600160401b03811115612efb57600080fd5b6020830191508360208260051b8501011115612ecb57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612f5457612f54612f16565b604052919050565b600082601f830112612f6d57600080fd5b81356001600160401b03811115612f8657612f86612f16565b612f99601f8201601f1916602001612f2c565b818152846020838601011115612fae57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612fdd57600080fd5b50919050565b6000806000806000806000806000806101408b8d03121561300357600080fd5b8a356001600160401b038082111561301a57600080fd5b6130268e838f01612e8a565b909c509a5060208d013591508082111561303f57600080fd5b61304b8e838f01612ed2565b909a50985060408d0135975060608d013591508082111561306b57600080fd5b6130778e838f01612ed2565b909750955060808d013591508082111561309057600080fd5b5061309d8d828e01612f5c565b93505060a08b013591506130b48c60c08d01612fcb565b90509295989b9194979a5092959850565b803563ffffffff811681146130d957600080fd5b919050565b6000602082840312156130f057600080fd5b611ae5826130c5565b6001600160a01b038116811461060657600080fd5b6080810163ffffffff613120846130c5565b1682526020830135613131816130f9565b6001600160a01b039081166020840152604084013590613150826130f9565b166040830152606092830135929091019190915290565b60005b8381101561318257818101518382015260200161316a565b50506000910152565b600081518084526131a3816020860160208601613167565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526131f560a082018761318b565b60408401959095525050606001529392505050565b80356001600160401b03811681146130d957600080fd5b6000806040838503121561323457600080fd5b61323d8361320a565b915061324b6020840161320a565b90509250929050565b60006020828403121561326657600080fd5b8151611ae5816130f9565b60006020828403121561328357600080fd5b5051919050565b60006001600160401b03808411156132a4576132a4612f16565b8360051b60206132b5818301612f2c565b8681529185019181810190368411156132cd57600080fd5b865b84811015613301578035868111156132e75760008081fd5b6132f336828b01612f5c565b8452509183019183016132cf565b50979650505050505050565b60006020828403121561331f57600080fd5b8135611ae5816130f9565b60006020828403121561333c57600080fd5b81518015158114611ae557600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611d7f57611d7f61334c565b634e487b7160e01b600052601260045260246000fd5b60008261339a5761339a613375565b500490565b60008160001904831182151516156133b9576133b961334c565b500290565b80820180821115611d7f57611d7f61334c565b6001600160401b03828116828216039080821115611e2e57611e2e61334c565b60008261340057613400613375565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b818110156134875784518352938301939183019160010161346b565b505084810360a0860152610ce9818761318b565b600082516134ad818460208701613167565b9190910192915050565b6000602082840312156134c957600080fd5b81516001600160e01b031981168114611ae557600080fd5b600060ff8316806134f4576134f4613375565b8060ff84160691505092915050565b60ff8281168282160390811115611d7f57611d7f61334c565b60006001820161352e5761352e61334c565b5060010190565b600181815b808511156135705781600019048211156135565761355661334c565b8085161561356357918102915b93841c939080029061353a565b509250929050565b60008261358757506001611d7f565b8161359457506000611d7f565b81600181146135aa57600281146135b4576135d0565b6001915050611d7f565b60ff8411156135c5576135c561334c565b50506001821b611d7f565b5060208310610133831016604e8410600b84101617156135f3575081810a611d7f565b6135fd8383613535565b80600019048211156136115761361161334c565b029392505050565b6000611ae58383613578565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a264697066735822122094dab27a8a6e78e85044dd92ccb31d89b6b0659dad83111a1dfc623c4daa0d8e64736f6c63430008100033", - "sourceMap": "678:5426:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;723:59;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1533:1766:124:-;;;;;;:::i;:::-;;:::i;:::-;;;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:124;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:124;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:124;;6848:2:146;2243:115:124;;;6830:21:146;6887:2;6867:18;;;6860:30;6926:25;6906:18;;;6899:53;6969:18;;2243:115:124;;;;;;;;;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:124;-1:-1:-1;2460:60:124;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:124;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:124;;;;;;;;7597:23:146;;;;2563:56:124;;;7579:42:146;7552:18;;2563:56:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:124;;-1:-1:-1;;;;;8073:31:146;;2563:73:124;;;8055:50:146;-1:-1:-1;;;;;2563:64:124;;;;;;;8028:18:146;;2563:73:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:124;2646:58;;;;-1:-1:-1;;;2646:58:124;;8507:2:146;2646:58:124;;;8489:21:146;8546:2;8526:18;;;8519:30;-1:-1:-1;;;8565:18:146;;;8558:51;8626:18;;2646:58:124;8305:345:146;2646:58:124;2714:12;2729:134;2765:12;2779:17;;2729:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2798:10:124;;-1:-1:-1;2810:7:124;;-1:-1:-1;2819:6:124;;-1:-1:-1;2827:26:124;;;;:12;:26;:::i;:::-;2729:22;:134::i;:::-;2714:149;;2881:7;2873:47;;;;-1:-1:-1;;;2873:47:124;;8857:2:146;2873:47:124;;;8839:21:146;8896:2;8876:18;;;8869:30;8935:29;8915:18;;;8908:57;8982:18;;2873:47:124;8655:351:146;2873:47:124;2932:28;;2988:211;;3023:12;;2988:211;:::i;:::-;3049:12;3075:17;3106:8;3128:12;:26;;;;;;;;;;:::i;:::-;3168:12;:21;;;2988;:211::i;:::-;2931:268;;;;3210:82;3219:14;3235:12;3249:10;3261:6;3269:11;3282:9;3210:8;:82::i;:::-;1837:1462;;;;;;;;1533:1766;;;;;;;;;;:::o;3385:307::-;3543:1;3493:15;;:37;;-1:-1:-1;;;3493:37:124;;7609:10:146;7597:23;;3493:37:124;;;7579:42:146;-1:-1:-1;;;;;3493:15:124;;;;:28;;7552:18:146;;3493:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3485:60:124;;3464:119;;;;-1:-1:-1;;;3464:119:124;;10404:2:146;3464:119:124;;;10386:21:146;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:146;;;10455:54;10526:18;;3464:119:124;10202:348:146;3464:119:124;3601:15;;:37;;-1:-1:-1;;;3601:37:124;;7609:10:146;7597:23;;3601:37:124;;;7579:42:146;-1:-1:-1;;;;;3601:15:124;;;;:28;;7552:18:146;;3601:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3601:48:124;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3593:92;;;;-1:-1:-1;;;3593:92:124;;11039:2:146;3593:92:124;;;11021:21:146;11078:2;11058:18;;;11051:30;11117:31;11097:18;;;11090:59;11166:18;;3593:92:124;10837:353:146;3593:92:124;3385:307;:::o;3753:137::-;3828:15;;:31;;-1:-1:-1;;;3828:31:124;;7609:10:146;7597:23;;3828:31:124;;;7579:42:146;-1:-1:-1;;;;;3828:15:124;;;;:22;;7552:18:146;;3828:31:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3827:32;3819:64;;;;-1:-1:-1;;;3819:64:124;;11397:2:146;3819:64:124;;;11379:21:146;11436:2;11416:18;;;11409:30;-1:-1:-1;;;11455:18:146;;;11448:49;11514:18;;3819:64:124;11195:343:146;3960:620:124;4125:1;4075:15;;:37;;-1:-1:-1;;;4075:37:124;;7609:10:146;7597:23;;4075:37:124;;;7579:42:146;-1:-1:-1;;;;;4075:15:124;;;;:28;;7552:18:146;;4075:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4067:60:124;;4046:119;;;;-1:-1:-1;;;4046:119:124;;10404:2:146;4046:119:124;;;10386:21:146;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:146;;;10455:54;10526:18;;4046:119:124;10202:348:146;4046:119:124;4196:15;;:37;;-1:-1:-1;;;4196:37:124;;7609:10:146;7597:23;;4196:37:124;;;7579:42:146;-1:-1:-1;;;;;4196:15:124;;;;:28;;7552:18:146;;4196:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4196:54:124;;-1:-1:-1;;;;;8073:31:146;;4196:54:124;;;8055:50:146;-1:-1:-1;;;;;4196:48:124;;;;;;;8028:18:146;;4196:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4254:1;4196:59;4175:136;;;;-1:-1:-1;;;4175:136:124;;11934:2:146;4175:136:124;;;11916:21:146;11973:2;11953:18;;;11946:30;12012:32;11992:18;;;11985:60;12062:18;;4175:136:124;11732:354:146;4175:136:124;4321:19;4373:15;;:37;;-1:-1:-1;;;4373:37:124;;7609:10:146;7597:23;;4373:37:124;;;7579:42:146;-1:-1:-1;;;;;4373:15:124;;;;:28;;7552:18:146;;4373:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4373:54:124;;-1:-1:-1;;;;;8073:31:146;;4373:54:124;;;8055:50:146;-1:-1:-1;;;;;4373:48:124;;;;;;;8028:18:146;;4373:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4355:72;;:15;:72;:::i;:::-;4321:106;;4473:15;;;;;;;;-1:-1:-1;;;;;4473:15:124;-1:-1:-1;;;;;4473:38:124;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4458:11;:55;;4437:136;;;;-1:-1:-1;;;4437:136:124;;12558:2:146;4437:136:124;;;12540:21:146;12597:2;12577:18;;;12570:30;12636:34;12616:18;;;12609:62;-1:-1:-1;;;12687:18:146;;;12680:32;12729:19;;4437:136:124;12356:398:146;4437:136:124;4036:544;3960:620;;:::o;3094:1947:110:-;3372:46;;-1:-1:-1;;;3372:46:110;;;7597:23:146;;3372:46:110;;;7579:42:146;3330:4:110;;;;3372:16;;:31;;7552:18:146;;3372:46:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;14031:2:146;4896:40:110;;;14013:21:146;14070:2;14050:18;;;14043:30;14109:32;14089:18;;;14082:60;14159:18;;4896:40:110;13829:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;431:2729:121:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:121;;-1:-1:-1;1486:14:121;-1:-1:-1;;;1514:25:121;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:121;;;1514:54;1510:236;;;-1:-1:-1;1593:1:121;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:121;;;1611:135;;-1:-1:-1;1665:1:121;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:121;;14522:2:146;1697:38:121;;;14504:21:146;14561:2;14541:18;;;14534:30;14600;14580:18;;;14573:58;14648:18;;1697:38:121;14320:352:146;1611:135:121;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:121;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:121;;14879:2:146;2278:58:121;;;14861:21:146;14918:2;14898:18;;;14891:30;-1:-1:-1;;;14937:18:146;;;14930:52;14999:18;;2278:58:121;14677:346:146;2278:58:121;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:121;;15230:2:146;2495:59:121;;;15212:21:146;15269:2;15249:18;;;15242:30;15308:25;15288:18;;;15281:53;15351:18;;2495:59:121;15028:347:146;2495:59:121;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:121;:14;-1:-1:-1;;;;;2777:30:121;;2769:83;;;;-1:-1:-1;;;2769:83:121;;15582:2:146;2769:83:121;;;15564:21:146;15621:2;15601:18;;;15594:30;15660:34;15640:18;;;15633:62;-1:-1:-1;;;15711:18:146;;;15704:38;15759:19;;2769:83:121;15380:404:146;2769:83:121;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:121;;15991:2:146;2990:74:121;;;15973:21:146;16030:2;16010:18;;;16003:30;16069:32;16049:18;;;16042:60;16119:18;;2990:74:121;15789:354:146;2990:74:121;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:121;;-1:-1:-1;;;;;;;;;;;431:2729:121;;;;;;;;;:::o;4705:1397:124:-;4951:12;4973:17;4951:12;-1:-1:-1;;;5143:15:124;5176:27;;;;:13;:27;:::i;:::-;5221;;;;;;;;:::i;:::-;5266:7;5291:12;5321:10;5041:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5041:304:124;;;;;;;;;;;;;;-1:-1:-1;;;;;5041:304:124;-1:-1:-1;;;;;;5041:304:124;;;;;;;;;;;-1:-1:-1;5377:29:124;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5377:34:124;5412:11;5377:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5489:11:124;;5359:65;;-1:-1:-1;5359:65:124;-1:-1:-1;5445:22:124;;-1:-1:-1;5504:2:124;5489:17;5485:178;;5523:12;5550:4;5539:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5599:53:124;-1:-1:-1;;;5599:53:124;;-1:-1:-1;;5485:178:124;5677:7;:28;;;;;5688:17;5677:28;5673:215;;;5721:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5721:64:124;5752:33;5721:64;;;5673:215;;;5816:28;;;;5847:30;5816:28;;;;;;;;:61;;-1:-1:-1;;5816:61:124;;;;;;5673:215;5994:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5903:192:124;5953:27;;;;:13;:27;:::i;:::-;5903:192;;5924:15;5903:192;6035:29;;;;;;;;:::i;:::-;5903:192;;;-1:-1:-1;;;;;18039:32:146;;;18021:51;;18115:14;;18108:22;18103:2;18088:18;;18081:50;17994:18;5903:192:124;;;;;;;4941:1161;;;4705:1397;;;;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;18344:2:146;3101:49:77;;;18326:21:146;18383:2;18363:18;;;18356:30;-1:-1:-1;;;18402:18:146;;;18395:51;18463:18;;3101:49:77;18142:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;18621:19:146;;18665:2;18656:12;;18492:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;18881:2:146;3636:134:77;;;18863:21:146;18920:2;18900:18;;;18893:30;18959:34;18939:18;;;18932:62;-1:-1:-1;;;19010:18:146;;;19003:44;19064:19;;3636:134:77;18679:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;18621:19:146;;;18665:2;18656:12;;18492:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;19296:2:146;3893:176:77;;;19278:21:146;19335:2;19315:18;;;19308:30;19374:31;19354:18;;;19347:59;19423:18;;3893:176:77;19094:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;18621:19:146;;;18665:2;18656:12;;18492:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;19654:2:146;4222:186:77;;;19636:21:146;19693:2;19673:18;;;19666:30;19732:34;19712:18;;;19705:62;-1:-1:-1;;;19783:18:146;;;19776:37;19830:19;;4222:186:77;19452:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;20062:2:146;4509:156:77;;;20044:21:146;20101:2;20081:18;;;20074:30;20140:34;20120:18;;;20113:62;-1:-1:-1;;;20191:18:146;;;20184:36;20237:19;;4509:156:77;19860:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;20469:2:146;5384:158:77;;;20451:21:146;20508:2;20488:18;;;20481:30;20547:34;20527:18;;;20520:62;20618:29;20598:18;;;20591:57;20665:19;;5384:158:77;20267:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;20897:2:146;5626:162:77;;;20879:21:146;20936:2;20916:18;;;20909:30;20975:34;20955:18;;;20948:62;21046:28;21026:18;;;21019:56;21092:19;;5626:162:77;20695:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;21642:2:146;7009:171:77;;;21624:21:146;21681:2;21661:18;;;21654:30;21720:34;21700:18;;;21693:62;21791:28;21771:18;;;21764:56;21837:19;;7009:171:77;21440:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;22069:2:146;7843:185:77;;;22051:21:146;22108:2;22088:18;;;22081:30;22147:34;22127:18;;;22120:62;22218:31;22198:18;;;22191:59;22267:19;;7843:185:77;21867:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;22499:2:146;8463:156:77;;;22481:21:146;22538:2;22518:18;;;22511:30;22577:34;22557:18;;;22550:62;22648:27;22628:18;;;22621:55;22693:19;;8463:156:77;22297:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;22925:2:146;8703:160:77;;;22907:21:146;22964:2;22944:18;;;22937:30;23003:34;22983:18;;;22976:62;23074:26;23054:18;;;23047:54;23118:19;;8703:160:77;22723:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;23350:2:146;9439:60:77;;;23332:21:146;23389:2;23369:18;;;23362:30;23428:34;23408:18;;;23401:62;-1:-1:-1;;;23479:18:146;;;23472:48;23537:19;;9439:60:77;23148:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;23769:2:146;9556:50:77;;;23751:21:146;23808:2;23788:18;;;23781:30;23847:34;23827:18;;;23820:62;-1:-1:-1;;;23898:18:146;;;23891:38;23946:19;;9556:50:77;23567:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;24318:2:146;9641:47:77;;;24300:21:146;24357:2;24337:18;;;24330:30;24396:34;24376:18;;;24369:62;-1:-1:-1;;;24447:18:146;;;24440:35;24492:19;;9641:47:77;24116:401:146;2954:6741:77;;;;;;:::o;1978:1895:75:-;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;24724:2:146;2161:136:75;;;24706:21:146;24763:2;24743:18;;;24736:30;24802:34;24782:18;;;24775:62;24873:26;24853:18;;;24846:54;24917:19;;2161:136:75;24522:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;25149:2:146;2308:134:75;;;25131:21:146;25188:2;25168:18;;;25161:30;25227:34;25207:18;;;25200:62;-1:-1:-1;;;25278:18:146;;;25271:48;25336:19;;2308:134:75;24947:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;25568:2:146;12579:55:75;;;25550:21:146;25607:2;25587:18;;;25580:30;25646:28;25626:18;;;25619:56;25692:18;;12579:55:75;25366:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:121:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:121;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:121;3166:384;-1:-1:-1;;3166:384:121:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;25923:2:146;4505:137:75;;;25905:21:146;25962:2;25942:18;;;25935:30;26001:34;25981:18;;;25974:62;26072:27;26052:18;;;26045:55;26117:19;;4505:137:75;25721:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;26349:2:146;4653:136:75;;;26331:21:146;26388:2;26368:18;;;26361:30;26427:34;26407:18;;;26400:62;-1:-1:-1;;;26478:18:146;;;26471:50;26538:19;;4653:136:75;26147:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;28099:19:146;;;28143:2;28134:12;;28127:28;28180:2;28171:12;;27942:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;28099:19:146;;;28143:2;28134:12;;28127:28;28180:2;28171:12;;27942:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;;-1:-1:-1;1822:5:110;1283:551;-1:-1:-1;;;;1283:551:110:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;28879:2:146;6699:156:75;;;28861:21:146;28918:2;28898:18;;;28891:30;-1:-1:-1;;;;;;;;;;;28937:18:146;;;28930:62;29028:34;29008:18;;;29001:62;-1:-1:-1;;;29079:19:146;;;29072:45;29134:19;;6699:156:75;28677:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;29366:2:146;7025:177:75;;;29348:21:146;29405:2;29385:18;;;29378:30;29444:34;29424:18;;;29417:62;29515:34;29495:18;;;29488:62;-1:-1:-1;;;29566:19:146;;;29559:44;29620:19;;7025:177:75;29164:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;29852:2:146;7387:164:75;;;29834:21:146;29891:2;29871:18;;;29864:30;-1:-1:-1;;;;;;;;;;;29910:18:146;;;29903:62;30001:34;29981:18;;;29974:62;-1:-1:-1;;;30052:19:146;;;30045:48;30110:19;;7387:164:75;29650:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;30342:2:146;7721:159:75;;;30324:21:146;30381:2;30361:18;;;30354:30;-1:-1:-1;;;;;;;;;;;30400:18:146;;;30393:62;30491:34;30471:18;;;30464:62;-1:-1:-1;;;30542:19:146;;;30535:41;30593:19;;7721:159:75;30140:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;30825:2:146;8042:142:75;;;30807:21:146;30864:2;30844:18;;;30837:30;-1:-1:-1;;;;;;;;;;;30883:18:146;;;30876:62;30974:34;30954:18;;;30947:62;-1:-1:-1;;;31025:19:146;;;31018:39;31074:19;;8042:142:75;30623:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;31306:2:146;8199:168:75;;;31288:21:146;31345:2;31325:18;;;31318:30;-1:-1:-1;;;;;;;;;;;31364:18:146;;;31357:62;31455:34;31435:18;;;31428:62;-1:-1:-1;;;31506:19:146;;;31499:43;31559:19;;8199:168:75;31104:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;31791:2:146;8617:153:75;;;31773:21:146;31830:2;31810:18;;;31803:30;-1:-1:-1;;;;;;;;;;;31849:18:146;;;31842:62;31940:34;31920:18;;;31913:62;-1:-1:-1;;;31991:19:146;;;31984:41;32042:19;;8617:153:75;31589:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;32274:2:146;8935:161:75;;;32256:21:146;32313:2;32293:18;;;32286:30;-1:-1:-1;;;;;;;;;;;32332:18:146;;;32325:62;32423:34;32403:18;;;32396:62;-1:-1:-1;;;32474:19:146;;;32467:44;32528:19;;8935:161:75;32072:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;32760:2:146;9266:157:75;;;32742:21:146;32799:2;32779:18;;;32772:30;-1:-1:-1;;;;;;;;;;;32818:18:146;;;32811:62;32909:34;32889:18;;;32882:62;-1:-1:-1;;;32960:19:146;;;32953:39;33009:19;;9266:157:75;32558:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;33241:2:146;9588:141:75;;;33223:21:146;33280:2;33260:18;;;33253:30;-1:-1:-1;;;;;;;;;;;33299:18:146;;;33292:62;33390:34;33370:18;;;33363:62;-1:-1:-1;;;33441:19:146;;;33434:37;33488:19;;9588:141:75;33039:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;33720:2:146;9744:168:75;;;33702:21:146;33759:2;33739:18;;;33732:30;-1:-1:-1;;;;;;;;;;;33778:18:146;;;33771:62;33869:34;33849:18;;;33842:62;-1:-1:-1;;;33920:19:146;;;33913:41;33971:19;;9744:168:75;33518:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;34203:2:146;858:50:74;;;34185:21:146;34242:2;34222:18;;;34215:30;-1:-1:-1;;;34261:18:146;;;34254:44;34315:18;;858:50:74;34001:338:146;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;34203:2:146;922:53:74;;;34185:21:146;34242:2;34222:18;;;34215:30;-1:-1:-1;;;34261:18:146;;;34254:44;34315:18;;922:53:74;34001:338:146;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;34546:2:146;989:63:74;;;34528:21:146;34585:2;34565:18;;;34558:30;-1:-1:-1;;;34604:18:146;;;34597:47;34661:18;;989:63:74;34344:341:146;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;34892:2:146;11438:55:75;;;34874:21:146;34931:2;34911:18;;;34904:30;34970:28;34950:18;;;34943:56;35016:18;;11438:55:75;34690:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;34892:2:146;11598:72:75;;;34874:21:146;34931:2;34911:18;;;34904:30;34970:28;34950:18;;;34943:56;35016:18;;11598:72:75;34690:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:146:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:146;;14:180;-1:-1:-1;14:180:146:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:255::-;742:2;727:18;;775:1;764:13;;754:47;;781:18;;:::i;846:347::-;897:8;907:6;961:3;954:4;946:6;942:17;938:27;928:55;;979:1;976;969:12;928:55;-1:-1:-1;1002:20:146;;-1:-1:-1;;;;;1034:30:146;;1031:50;;;1077:1;1074;1067:12;1031:50;1114:4;1106:6;1102:17;1090:29;;1166:3;1159:4;1150:6;1142;1138:19;1134:30;1131:39;1128:59;;;1183:1;1180;1173:12;1128:59;846:347;;;;;:::o;1198:367::-;1261:8;1271:6;1325:3;1318:4;1310:6;1306:17;1302:27;1292:55;;1343:1;1340;1333:12;1292:55;-1:-1:-1;1366:20:146;;-1:-1:-1;;;;;1398:30:146;;1395:50;;;1441:1;1438;1431:12;1395:50;1478:4;1470:6;1466:17;1454:29;;1538:3;1531:4;1521:6;1518:1;1514:14;1506:6;1502:27;1498:38;1495:47;1492:67;;;1555:1;1552;1545:12;1570:127;1631:10;1626:3;1622:20;1619:1;1612:31;1662:4;1659:1;1652:15;1686:4;1683:1;1676:15;1702:275;1773:2;1767:9;1838:2;1819:13;;-1:-1:-1;;1815:27:146;1803:40;;-1:-1:-1;;;;;1858:34:146;;1894:22;;;1855:62;1852:88;;;1920:18;;:::i;:::-;1956:2;1949:22;1702:275;;-1:-1:-1;1702:275:146:o;1982:530::-;2024:5;2077:3;2070:4;2062:6;2058:17;2054:27;2044:55;;2095:1;2092;2085:12;2044:55;2131:6;2118:20;-1:-1:-1;;;;;2153:2:146;2150:26;2147:52;;;2179:18;;:::i;:::-;2223:55;2266:2;2247:13;;-1:-1:-1;;2243:27:146;2272:4;2239:38;2223:55;:::i;:::-;2303:2;2294:7;2287:19;2349:3;2342:4;2337:2;2329:6;2325:15;2321:26;2318:35;2315:55;;;2366:1;2363;2356:12;2315:55;2431:2;2424:4;2416:6;2412:17;2405:4;2396:7;2392:18;2379:55;2479:1;2454:16;;;2472:4;2450:27;2443:38;;;;2458:7;1982:530;-1:-1:-1;;;1982:530:146:o;2517:161::-;2582:5;2627:3;2618:6;2613:3;2609:16;2605:26;2602:46;;;2644:1;2641;2634:12;2602:46;-1:-1:-1;2666:6:146;2517:161;-1:-1:-1;2517:161:146:o;2683:1546::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;3039:3;3027:9;3018:7;3014:23;3010:33;3007:53;;;3056:1;3053;3046:12;3007:53;3096:9;3083:23;-1:-1:-1;;;;;3166:2:146;3158:6;3155:14;3152:34;;;3182:1;3179;3172:12;3152:34;3221:58;3271:7;3262:6;3251:9;3247:22;3221:58;:::i;:::-;3298:8;;-1:-1:-1;3195:84:146;-1:-1:-1;3386:2:146;3371:18;;3358:32;;-1:-1:-1;3402:16:146;;;3399:36;;;3431:1;3428;3421:12;3399:36;3470:72;3534:7;3523:8;3512:9;3508:24;3470:72;:::i;:::-;3561:8;;-1:-1:-1;3444:98:146;-1:-1:-1;3643:2:146;3628:18;;3615:32;;-1:-1:-1;3700:2:146;3685:18;;3672:32;;-1:-1:-1;3716:16:146;;;3713:36;;;3745:1;3742;3735:12;3713:36;3784:72;3848:7;3837:8;3826:9;3822:24;3784:72;:::i;:::-;3875:8;;-1:-1:-1;3758:98:146;-1:-1:-1;3963:3:146;3948:19;;3935:33;;-1:-1:-1;3980:16:146;;;3977:36;;;4009:1;4006;3999:12;3977:36;;4032:51;4075:7;4064:8;4053:9;4049:24;4032:51;:::i;:::-;4022:61;;;4130:3;4119:9;4115:19;4102:33;4092:43;;4154:69;4215:7;4209:3;4198:9;4194:19;4154:69;:::i;:::-;4144:79;;2683:1546;;;;;;;;;;;;;:::o;4234:163::-;4301:20;;4361:10;4350:22;;4340:33;;4330:61;;4387:1;4384;4377:12;4330:61;4234:163;;;:::o;4402:184::-;4460:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:52;;;4529:1;4526;4519:12;4481:52;4552:28;4570:9;4552:28;:::i;4591:131::-;-1:-1:-1;;;;;4666:31:146;;4656:42;;4646:70;;4712:1;4709;4702:12;4727:684;4925:3;4910:19;;4987:10;4960:25;4978:6;4960:25;:::i;:::-;4956:42;4945:9;4938:61;5046:4;5038:6;5034:17;5021:31;5061;5086:5;5061:31;:::i;:::-;-1:-1:-1;;;;;5168:14:146;;;5161:4;5146:20;;5139:44;5232:4;5220:17;;5207:31;;5247:33;5207:31;5247:33;:::i;:::-;5318:16;5311:4;5296:20;;5289:46;5398:4;5386:17;;;5373:31;5351:20;;;;5344:61;;;;4727:684;:::o;5416:250::-;5501:1;5511:113;5525:6;5522:1;5519:13;5511:113;;;5601:11;;;5595:18;5582:11;;;5575:39;5547:2;5540:10;5511:113;;;-1:-1:-1;;5658:1:146;5640:16;;5633:27;5416:250::o;5671:270::-;5712:3;5750:5;5744:12;5777:6;5772:3;5765:19;5793:76;5862:6;5855:4;5850:3;5846:14;5839:4;5832:5;5828:16;5793:76;:::i;:::-;5923:2;5902:15;-1:-1:-1;;5898:29:146;5889:39;;;;5930:4;5885:50;;5671:270;-1:-1:-1;;5671:270:146:o;5946:695::-;6205:3;6194:9;6187:22;6246:6;6240:3;6229:9;6225:19;6218:35;6304:6;6296;6290:3;6279:9;6275:19;6262:49;6361:1;6355:3;6346:6;6335:9;6331:22;6327:32;6320:43;6168:4;6422:2;6418:7;6413:2;6405:6;6401:15;6397:29;6386:9;6382:45;6489:3;6477:9;6473:2;6469:18;6465:28;6458:4;6447:9;6443:20;6436:58;6511:38;6544:3;6540:2;6536:12;6528:6;6511:38;:::i;:::-;6580:2;6565:18;;6558:34;;;;-1:-1:-1;;6623:2:146;6608:18;6601:34;6503:46;5946:695;-1:-1:-1;;;5946:695:146:o;6998:171::-;7065:20;;-1:-1:-1;;;;;7114:30:146;;7104:41;;7094:69;;7159:1;7156;7149:12;7174:256;7240:6;7248;7301:2;7289:9;7280:7;7276:23;7272:32;7269:52;;;7317:1;7314;7307:12;7269:52;7340:28;7358:9;7340:28;:::i;:::-;7330:38;;7387:37;7420:2;7409:9;7405:18;7387:37;:::i;:::-;7377:47;;7174:256;;;;;:::o;7632:273::-;7724:6;7777:2;7765:9;7756:7;7752:23;7748:32;7745:52;;;7793:1;7790;7783:12;7745:52;7825:9;7819:16;7844:31;7869:5;7844:31;:::i;8116:184::-;8186:6;8239:2;8227:9;8218:7;8214:23;8210:32;8207:52;;;8255:1;8252;8245:12;8207:52;-1:-1:-1;8278:16:146;;8116:184;-1:-1:-1;8116:184:146:o;9011:934::-;9147:9;-1:-1:-1;;;;;9222:2:146;9214:6;9211:14;9208:40;;;9228:18;;:::i;:::-;9274:6;9271:1;9267:14;9300:4;9324:28;9348:2;9344;9340:11;9324:28;:::i;:::-;9386:19;;;9456:14;;;;9421:12;;;;9493:14;9482:26;;9479:46;;;9521:1;9518;9511:12;9479:46;9545:5;9559:353;9575:6;9570:3;9567:15;9559:353;;;9661:3;9648:17;9697:2;9684:11;9681:19;9678:109;;;9741:1;9770:2;9766;9759:14;9678:109;9812:57;9854:14;9840:11;9833:5;9829:23;9812:57;:::i;:::-;9800:70;;-1:-1:-1;9890:12:146;;;;9592;;9559:353;;;-1:-1:-1;9934:5:146;9011:934;-1:-1:-1;;;;;;;9011:934:146:o;9950:247::-;10009:6;10062:2;10050:9;10041:7;10037:23;10033:32;10030:52;;;10078:1;10075;10068:12;10030:52;10117:9;10104:23;10136:31;10161:5;10136:31;:::i;10555:277::-;10622:6;10675:2;10663:9;10654:7;10650:23;10646:32;10643:52;;;10691:1;10688;10681:12;10643:52;10723:9;10717:16;10776:5;10769:13;10762:21;10755:5;10752:32;10742:60;;10798:1;10795;10788:12;12091:127;12152:10;12147:3;12143:20;12140:1;12133:31;12183:4;12180:1;12173:15;12207:4;12204:1;12197:15;12223:128;12290:9;;;12311:11;;;12308:37;;;12325:18;;:::i;12964:127::-;13025:10;13020:3;13016:20;13013:1;13006:31;13056:4;13053:1;13046:15;13080:4;13077:1;13070:15;13096:120;13136:1;13162;13152:35;;13167:18;;:::i;:::-;-1:-1:-1;13201:9:146;;13096:120::o;13221:168::-;13261:7;13327:1;13323;13319:6;13315:14;13312:1;13309:21;13304:1;13297:9;13290:17;13286:45;13283:71;;;13334:18;;:::i;:::-;-1:-1:-1;13374:9:146;;13221:168::o;13394:125::-;13459:9;;;13480:10;;;13477:36;;;13493:18;;:::i;13524:183::-;-1:-1:-1;;;;;13643:10:146;;;13631;;;13627:27;;13666:12;;;13663:38;;;13681:18;;:::i;13712:112::-;13744:1;13770;13760:35;;13775:18;;:::i;:::-;-1:-1:-1;13809:9:146;;13712:112::o;14188:127::-;14249:10;14244:3;14240:20;14237:1;14230:31;14280:4;14277:1;14270:15;14304:4;14301:1;14294:15;16148:1113;16505:25;;;16599:10;16587:23;;16549:2;16567:18;;;16560:51;;;;-1:-1:-1;;;;;16647:32:146;;16642:2;16627:18;;16620:60;-1:-1:-1;;;;;16716:31:146;;16711:2;16696:18;;16689:59;16492:3;16779;16764:19;;16757:32;;;16838:13;;16477:19;;;16860:22;;;16444:4;;16940:15;;;;16913:3;16898:19;;;16444:4;16983:169;16997:6;16994:1;16991:13;16983:169;;;17058:13;;17046:26;;17127:15;;;;17092:12;;;;17019:1;17012:9;16983:169;;;16987:3;;17198:9;17193:3;17189:19;17183:3;17172:9;17168:19;17161:48;17226:29;17251:3;17243:6;17226:29;:::i;17266:287::-;17395:3;17433:6;17427:13;17449:66;17508:6;17503:3;17496:4;17488:6;17484:17;17449:66;:::i;:::-;17531:16;;;;;17266:287;-1:-1:-1;;17266:287:146:o;17558:290::-;17627:6;17680:2;17668:9;17659:7;17655:23;17651:32;17648:52;;;17696:1;17693;17686:12;17648:52;17722:16;;-1:-1:-1;;;;;;17767:32:146;;17757:43;;17747:71;;17814:1;17811;17804:12;21122:157;21152:1;21186:4;21183:1;21179:12;21210:3;21200:37;;21217:18;;:::i;:::-;21269:3;21262:4;21259:1;21255:12;21251:22;21246:27;;;21122:157;;;;:::o;21284:151::-;21374:4;21367:12;;;21353;;;21349:31;;21392:14;;21389:40;;;21409:18;;:::i;23976:135::-;24015:3;24036:17;;;24033:43;;24056:18;;:::i;:::-;-1:-1:-1;24103:1:146;24092:13;;23976:135::o;26568:422::-;26657:1;26700:5;26657:1;26714:270;26735:7;26725:8;26722:21;26714:270;;;26794:4;26790:1;26786:6;26782:17;26776:4;26773:27;26770:53;;;26803:18;;:::i;:::-;26853:7;26843:8;26839:22;26836:55;;;26873:16;;;;26836:55;26952:22;;;;26912:15;;;;26714:270;;;26718:3;26568:422;;;;;:::o;26995:806::-;27044:5;27074:8;27064:80;;-1:-1:-1;27115:1:146;27129:5;;27064:80;27163:4;27153:76;;-1:-1:-1;27200:1:146;27214:5;;27153:76;27245:4;27263:1;27258:59;;;;27331:1;27326:130;;;;27238:218;;27258:59;27288:1;27279:10;;27302:5;;;27326:130;27363:3;27353:8;27350:17;27347:43;;;27370:18;;:::i;:::-;-1:-1:-1;;27426:1:146;27412:16;;27441:5;;27238:218;;27540:2;27530:8;27527:16;27521:3;27515:4;27512:13;27508:36;27502:2;27492:8;27489:16;27484:2;27478:4;27475:12;27471:35;27468:77;27465:159;;;-1:-1:-1;27577:19:146;;;27609:5;;27465:159;27656:34;27681:8;27675:4;27656:34;:::i;:::-;27726:6;27722:1;27718:6;27714:19;27705:7;27702:32;27699:58;;;27737:18;;:::i;:::-;27775:20;;26995:806;-1:-1:-1;;;26995:806:146:o;27806:131::-;27866:5;27895:36;27922:8;27916:4;27895:36;:::i;28194:478::-;28396:2;28378:21;;;28435:2;28415:18;;;28408:30;28474:34;28469:2;28454:18;;28447:62;28545:34;28540:2;28525:18;;28518:62;-1:-1:-1;;;28611:3:146;28596:19;;28589:41;28662:3;28647:19;;28194:478::o", - "linkReferences": { - "src/libraries/BeaconChainForks.sol": { - "BeaconChainForks": [ - { - "start": 2716, - "length": 20 - } - ] - } - } + "object": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612dfb565b60016020526000908152604090205460ff1681565b6040516100769190612e2a565b60405180910390f35b6100a261008d366004612dfb565b60026020526000908152604090205460ff1681565b6040516100769190612e44565b6100c26100bd366004612fb1565b6100c4565b005b6100d96100d460208301836130a7565b610423565b6100ee6100e960208301836130a7565b610609565b60008160405160200161010191906130d7565b60405160208183030381529060405280519060200120905060008b8b868685604051602001610134959493929190613180565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612e14565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f6131ea565b90925090506101ee826101e960208801886130a7565b6106be565b600080546001600160a01b0316637599735c61020d60208901896130a7565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610273919061321d565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e6919061323a565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b600061037e8c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061037960208e018e6130a7565b610a7c565b9050806103cd5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103fd6103dd8d8f613253565b8f8d8d8d60200160208101906103f391906132d6565b8e60600135610c86565b9150915061040f888a89888686610fd1565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610496919061321d565b6001600160a01b0316036104e75760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610535573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610559919061321d565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba91906132f3565b6106065760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b91906132f3565b156106065760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610731919061321d565b6001600160a01b0316036107825760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f4919061321d565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610867919061323a565b6000036108b65760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610905573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610929919061321d565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c919061323a565b6109a6904261332b565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d919061323a565b811015610a775760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b600080610a88836111c6565b9050600081856001600160401b031610610aa357601b610aa6565b60075b60ff169050600082866001600160401b031610610ae257612000610ad3846001600160401b03891661332b565b610add9190613354565b610af7565b610af76120006001600160401b038816613354565b90506000866001600160401b0316886001600160401b031603610b365750600b610b2381610200613368565b610b2f90610183613387565b9050610c6b565b612000610b43888a61339a565b6001600160401b031611610ba55750600b610b5f816020613368565b610b6a906006613387565b9050610b816120006001600160401b0389166133ba565b610b8d61200083613368565b610b979190613387565b9050610b2381610200613368565b876001600160401b0316876001600160401b03161015610c235750600b82610bce826020613368565b610bd89190613387565b9050610be5816002613368565b610bf0906000613387565b905081610c01630100000083613368565b610c0b9190613387565b9050610c18816002613368565b610b6a906001613387565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101bb565b610c778b828c8c611206565b9b9a5050505050505050505050565b6060806000610c96878a8a611220565b9050600081600081518110610cad57610cad6133ce565b01602001516001600160f81b03191690506000600160f81b821480610cdf5750600160f91b6001600160f81b03198316145b15610cec57506001610d51565b600360fe1b6001600160f81b0319831610610d0957506000610d51565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610d73919061332b565b8152602001610d828585613387565b905290506000610d9182611aba565b90508051600414610ddd5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610e0282600381518110610df557610df56133ce565b6020026020010151611aba565b905080518c10610e545760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610e6b828e81518110610df557610df56133ce565b90506000610e9282600081518110610e8557610e856133ce565b6020026020010151611cdf565b90508c6001600160a01b0316816001600160a01b031614610f065760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610f26610f2184600181518110610df557610df56133ce565b611d53565b90508c81600081518110610f3c57610f3c6133ce565b602002602001015114610f915760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b6000610fb684600281518110610fa957610fa96133ce565b6020026020010151611e03565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b89610fec60208b018b6130a7565b610ffc60408c0160208d016132d6565b898989604051602401611014969594939291906133e4565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506110589060608a01908a016132d6565b6001600160a01b03168160405161106f9190613464565b6000604051808303816000865af19150503d80600081146110ac576040519150601f19603f3d011682016040523d82523d6000602084013e6110b1565b606091505b5080519194509250600091506020036110f1576000828060200190518101906110da9190613480565b6001600160e01b031916635160951d60e11b149150505b8280156110fb5750805b1561111e576000878152600160205260409020805460ff1916600217905561113b565b6000878152600160208190526040909120805460ff191690911790555b61114b6040890160208a016132d6565b6001600160a01b031661116160208a018a6130a7565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61119960608d0160408e016132d6565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b60008163ffffffff166001036111e05750625ec000919050565b8163ffffffff166005036111f85750624f4000919050565b50600019919050565b919050565b600080611214868686611f2f565b90921495945050505050565b6060600084511161126b5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b6000611276846120c7565b90506000611283866121b5565b905060008460405160200161129a91815260200190565b60405160208183030381529060405290506000805b8451811015611a5c5760008582815181106112cc576112cc6133ce565b60200260200101519050845183111561133e5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b826000036113dd578051805160209182012060405161138c9261136692910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6113d85760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b6114d3565b80515160201161146357805180516020918201206040516114079261136692910190815260200190565b6113d85760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146114d35760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b6114df60106001613387565b8160200151510361167f578451830361161757600061150e8260200151601081518110610fa957610fa96133ce565b905060008151116115875760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b60018751611595919061332b565b83146116095760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611ab395505050505050565b600085848151811061162b5761162b6133ce565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611656576116566133ce565b60200260200101519050611669816122cf565b9550611676600186613387565b94505050611a49565b6002816020015151036119f0576000611697826122f4565b90506000816000815181106116ae576116ae6133ce565b016020015160f81c905060006116c56002836134aa565b6116d09060026134cc565b905060006116e1848360ff16612318565b905060006116ef8a89612318565b905060006116fd838361234e565b9050808351146117755760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff85166002148061178a575060ff85166003145b1561193057808251146118055760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b60006118218860200151600181518110610fa957610fa96133ce565b9050600081511161189a5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516118a8919061332b565b891461191c5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611ab39b505050505050505050505050565b60ff85161580611943575060ff85166001145b156119825761196f8760200151600181518110611962576119626133ce565b60200260200101516122cf565b995061197b818a613387565b98506119e5565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b505050505050611a49565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b5080611a54816134e5565b9150506112af565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611aca856123cd565b919450925090506001816001811115611ae557611ae5612e14565b14611b585760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611b648385613387565b14611bcc5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611be55790505090506000845b8751811015611cd357600080611c586040518060400160405280858d60000151611c3c919061332b565b8152602001858d60200151611c519190613387565b90526123cd565b509150915060405180604001604052808383611c749190613387565b8152602001848c60200151611c899190613387565b815250858581518110611c9e57611c9e6133ce565b6020908102919091010152611cb4600185613387565b9350611cc08183613387565b611cca9084613387565b92505050611c12565b50815295945050505050565b8051600090600103611cf357506000919050565b8151601514611d445760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611d4d82612a90565b92915050565b6060600082516001600160401b03811115611d7057611d70612ee4565b604051908082528060200260200182016040528015611d99578160200160208202803683370190505b50905060005b8351811015611dfc57611dca848281518110611dbd57611dbd6133ce565b6020026020010151612a90565b60001b828281518110611ddf57611ddf6133ce565b602090810291909101015280611df4816134e5565b915050611d9f565b5092915050565b60606000806000611e13856123cd565b919450925090506000816001811115611e2e57611e2e612e14565b14611ea15760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611eab8284613387565b855114611f175760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611f2685602001518484612a9b565b95945050505050565b60008282516001611f409190613387565b611f4b9060026135e2565b11611f5557600080fd5b8360005b846001146120be57611f6c6002866133ba565b60010361200b576002848281518110611f8757611f876133ce565b602002602001015183604051602001611faa929190918252602082015260400190565b60408051601f1981840301815290829052611fc491613464565b602060405180830381855afa158015611fe1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612004919061323a565b915061209f565b600282858381518110612020576120206133ce565b6020026020010151604051602001612042929190918252602082015260400190565b60408051601f198184030181529082905261205c91613464565b602060405180830381855afa158015612079573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061209c919061323a565b91505b6120aa600286613354565b9450806120b6816134e5565b915050611f59565b50949350505050565b80516060906000816001600160401b038111156120e6576120e6612ee4565b60405190808252806020026020018201604052801561212b57816020015b60408051808201909152606080825260208201528152602001906001900390816121045790505b50905060005b828110156121ad576040518060400160405280868381518110612156576121566133ce565b60200260200101518152602001612185878481518110612178576121786133ce565b6020026020010151612b3b565b81525082828151811061219a5761219a6133ce565b6020908102919091010152600101612131565b509392505050565b805160609060006121c7826002613368565b6001600160401b038111156121de576121de612ee4565b6040519080825280601f01601f191660200182016040528015612208576020820181803683370190505b5090506000805b838110156122c557858181518110612229576122296133ce565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612251836002613368565b81518110612261576122616133ce565b60200101906001600160f81b031916908160001a905350600f60f81b82168361228b836002613368565b612296906001613387565b815181106122a6576122a66133ce565b60200101906001600160f81b031916908160001a90535060010161220f565b5090949350505050565b606060208260000151106122eb576122e682611e03565b611d4d565b611d4d82612b4e565b6060611d4d6123138360200151600081518110610fa957610fa96133ce565b6121b5565b6060825182106123375750604080516020810190915260008152611d4d565b611ab38383848651612349919061332b565b612b64565b60008060008351855110612363578351612366565b84515b90505b80821080156123bd5750838281518110612385576123856133ce565b602001015160f81c60f81b6001600160f81b0319168583815181106123ac576123ac6133ce565b01602001516001600160f81b031916145b156121ad57816001019150612369565b6000806000808460000151116123f55760405162461bcd60e51b81526004016101bb906135ee565b6020840151805160001a607f811161241a576000600160009450945094505050612a89565b60b7811161257757600061242f60808361332b565b9050808760000151116124af5760405162461bcd60e51b815260206004820152604e602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b03191690821415806124dc5750600160ff1b6001600160f81b0319821610155b6125645760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b5060019550935060009250612a89915050565b60bf81116127b857600061258c60b78361332b565b90508087600001511161260f5760405162461bcd60e51b8152602060048201526051602482015260008051602061365f83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036126965760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c603781116127195760405162461bcd60e51b8152602060048201526048602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b6127238184613387565b89511161279b5760405162461bcd60e51b815260206004820152604c602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6127a6836001613387565b9750955060009450612a899350505050565b60f7811161285a5760006127cd60c08361332b565b9050808760000151116128495760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b600195509350849250612a89915050565b600061286760f78361332b565b9050808760000151116128e65760405162461bcd60e51b815260206004820152604d602482015260008051602061365f83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b031916600081900361296b5760405162461bcd60e51b8152602060048201526048602482015260008051602061365f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c603781116129ec5760405162461bcd60e51b8152602060048201526046602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b6129f68184613387565b895111612a6c5760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b612a77836001613387565b9750955060019450612a899350505050565b9193909250565b6000611d4d82612ca5565b60606000826001600160401b03811115612ab757612ab7612ee4565b6040519080825280601f01601f191660200182016040528015612ae1576020820181803683370190505b50905082600003612af3579050611ab3565b6000612aff8587613387565b90506020820160005b85811015612b20578281015182820152602001612b08565b85811115612b2f576000868301525b50919695505050505050565b6060611d4d612b4983612da8565b611aba565b6060611d4d826020015160008460000151612a9b565b60608182601f011015612baa5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612bed5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612c345760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612c5357604051915060008252602082016040526120be565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612c8c578051835260209283019201612c74565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612cfc5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612d0a856123cd565b919450925090506000816001811115612d2557612d25612e14565b14612d725760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612d849190613387565b80519091506020841015612d9e5760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612ddd5760405162461bcd60e51b81526004016101bb906135ee565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612e0d57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612e3e57612e3e612e14565b91905290565b6020810160028310612e3e57612e3e612e14565b60008083601f840112612e6a57600080fd5b5081356001600160401b03811115612e8157600080fd5b602083019150836020828501011115612e9957600080fd5b9250929050565b60008083601f840112612eb257600080fd5b5081356001600160401b03811115612ec957600080fd5b6020830191508360208260051b8501011115612e9957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612f2257612f22612ee4565b604052919050565b600082601f830112612f3b57600080fd5b81356001600160401b03811115612f5457612f54612ee4565b612f67601f8201601f1916602001612efa565b818152846020838601011115612f7c57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612fab57600080fd5b50919050565b6000806000806000806000806000806101408b8d031215612fd157600080fd5b8a356001600160401b0380821115612fe857600080fd5b612ff48e838f01612e58565b909c509a5060208d013591508082111561300d57600080fd5b6130198e838f01612ea0565b909a50985060408d0135975060608d013591508082111561303957600080fd5b6130458e838f01612ea0565b909750955060808d013591508082111561305e57600080fd5b5061306b8d828e01612f2a565b93505060a08b013591506130828c60c08d01612f99565b90509295989b9194979a5092959850565b803563ffffffff8116811461120157600080fd5b6000602082840312156130b957600080fd5b611ab382613093565b6001600160a01b038116811461060657600080fd5b6080810163ffffffff6130e984613093565b16825260208301356130fa816130c2565b6001600160a01b039081166020840152604084013590613119826130c2565b166040830152606092830135929091019190915290565b60005b8381101561314b578181015183820152602001613133565b50506000910152565b6000815180845261316c816020860160208601613130565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526131be60a0820187613154565b60408401959095525050606001529392505050565b80356001600160401b038116811461120157600080fd5b600080604083850312156131fd57600080fd5b613206836131d3565b9150613214602084016131d3565b90509250929050565b60006020828403121561322f57600080fd5b8151611ab3816130c2565b60006020828403121561324c57600080fd5b5051919050565b60006001600160401b038084111561326d5761326d612ee4565b8360051b602061327e818301612efa565b86815291850191818101903684111561329657600080fd5b865b848110156132ca578035868111156132b05760008081fd5b6132bc36828b01612f2a565b845250918301918301613298565b50979650505050505050565b6000602082840312156132e857600080fd5b8135611ab3816130c2565b60006020828403121561330557600080fd5b81518015158114611ab357600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611d4d57611d4d613315565b634e487b7160e01b600052601260045260246000fd5b6000826133635761336361333e565b500490565b600081600019048311821515161561338257613382613315565b500290565b80820180821115611d4d57611d4d613315565b6001600160401b03828116828216039080821115611dfc57611dfc613315565b6000826133c9576133c961333e565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561345057845183529383019391830191600101613434565b505084810360a0860152610c778187613154565b60008251613476818460208701613130565b9190910192915050565b60006020828403121561349257600080fd5b81516001600160e01b031981168114611ab357600080fd5b600060ff8316806134bd576134bd61333e565b8060ff84160691505092915050565b60ff8281168282160390811115611d4d57611d4d613315565b6000600182016134f7576134f7613315565b5060010190565b600181815b8085111561353957816000190482111561351f5761351f613315565b8085161561352c57918102915b93841c9390800290613503565b509250929050565b60008261355057506001611d4d565b8161355d57506000611d4d565b8160018114613573576002811461357d57613599565b6001915050611d4d565b60ff84111561358e5761358e613315565b50506001821b611d4d565b5060208310610133831016604e8410600b84101617156135bc575081810a611d4d565b6135c683836134fe565b80600019048211156135da576135da613315565b029392505050565b6000611ab38383613541565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a264697066735822122026db42a5fa22e30691e0bb7da88d8b225a81d80765f2b503c5bdcc5ee1a38b9064736f6c63430008100033", + "sourceMap": "678:5426:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;723:59;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1533:1766:124:-;;;;;;:::i;:::-;;:::i;:::-;;;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:124;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:124;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:124;;6848:2:146;2243:115:124;;;6830:21:146;6887:2;6867:18;;;6860:30;6926:25;6906:18;;;6899:53;6969:18;;2243:115:124;;;;;;;;;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:124;-1:-1:-1;2460:60:124;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:124;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:124;;;;;;;;7597:23:146;;;;2563:56:124;;;7579:42:146;7552:18;;2563:56:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:124;;-1:-1:-1;;;;;8073:31:146;;2563:73:124;;;8055:50:146;-1:-1:-1;;;;;2563:64:124;;;;;;;8028:18:146;;2563:73:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:124;2646:58;;;;-1:-1:-1;;;2646:58:124;;8507:2:146;2646:58:124;;;8489:21:146;8546:2;8526:18;;;8519:30;-1:-1:-1;;;8565:18:146;;;8558:51;8626:18;;2646:58:124;8305:345:146;2646:58:124;2714:12;2729:134;2765:12;2779:17;;2729:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2798:10:124;;-1:-1:-1;2810:7:124;;-1:-1:-1;2819:6:124;;-1:-1:-1;2827:26:124;;;;:12;:26;:::i;:::-;2729:22;:134::i;:::-;2714:149;;2881:7;2873:47;;;;-1:-1:-1;;;2873:47:124;;8857:2:146;2873:47:124;;;8839:21:146;8896:2;8876:18;;;8869:30;8935:29;8915:18;;;8908:57;8982:18;;2873:47:124;8655:351:146;2873:47:124;2932:28;;2988:211;;3023:12;;2988:211;:::i;:::-;3049:12;3075:17;3106:8;3128:12;:26;;;;;;;;;;:::i;:::-;3168:12;:21;;;2988;:211::i;:::-;2931:268;;;;3210:82;3219:14;3235:12;3249:10;3261:6;3269:11;3282:9;3210:8;:82::i;:::-;1837:1462;;;;;;;;1533:1766;;;;;;;;;;:::o;3385:307::-;3543:1;3493:15;;:37;;-1:-1:-1;;;3493:37:124;;7609:10:146;7597:23;;3493:37:124;;;7579:42:146;-1:-1:-1;;;;;3493:15:124;;;;:28;;7552:18:146;;3493:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3485:60:124;;3464:119;;;;-1:-1:-1;;;3464:119:124;;10404:2:146;3464:119:124;;;10386:21:146;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:146;;;10455:54;10526:18;;3464:119:124;10202:348:146;3464:119:124;3601:15;;:37;;-1:-1:-1;;;3601:37:124;;7609:10:146;7597:23;;3601:37:124;;;7579:42:146;-1:-1:-1;;;;;3601:15:124;;;;:28;;7552:18:146;;3601:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3601:48:124;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3593:92;;;;-1:-1:-1;;;3593:92:124;;11039:2:146;3593:92:124;;;11021:21:146;11078:2;11058:18;;;11051:30;11117:31;11097:18;;;11090:59;11166:18;;3593:92:124;10837:353:146;3593:92:124;3385:307;:::o;3753:137::-;3828:15;;:31;;-1:-1:-1;;;3828:31:124;;7609:10:146;7597:23;;3828:31:124;;;7579:42:146;-1:-1:-1;;;;;3828:15:124;;;;:22;;7552:18:146;;3828:31:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3827:32;3819:64;;;;-1:-1:-1;;;3819:64:124;;11397:2:146;3819:64:124;;;11379:21:146;11436:2;11416:18;;;11409:30;-1:-1:-1;;;11455:18:146;;;11448:49;11514:18;;3819:64:124;11195:343:146;3960:620:124;4125:1;4075:15;;:37;;-1:-1:-1;;;4075:37:124;;7609:10:146;7597:23;;4075:37:124;;;7579:42:146;-1:-1:-1;;;;;4075:15:124;;;;:28;;7552:18:146;;4075:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4067:60:124;;4046:119;;;;-1:-1:-1;;;4046:119:124;;10404:2:146;4046:119:124;;;10386:21:146;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:146;;;10455:54;10526:18;;4046:119:124;10202:348:146;4046:119:124;4196:15;;:37;;-1:-1:-1;;;4196:37:124;;7609:10:146;7597:23;;4196:37:124;;;7579:42:146;-1:-1:-1;;;;;4196:15:124;;;;:28;;7552:18:146;;4196:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4196:54:124;;-1:-1:-1;;;;;8073:31:146;;4196:54:124;;;8055:50:146;-1:-1:-1;;;;;4196:48:124;;;;;;;8028:18:146;;4196:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4254:1;4196:59;4175:136;;;;-1:-1:-1;;;4175:136:124;;11934:2:146;4175:136:124;;;11916:21:146;11973:2;11953:18;;;11946:30;12012:32;11992:18;;;11985:60;12062:18;;4175:136:124;11732:354:146;4175:136:124;4321:19;4373:15;;:37;;-1:-1:-1;;;4373:37:124;;7609:10:146;7597:23;;4373:37:124;;;7579:42:146;-1:-1:-1;;;;;4373:15:124;;;;:28;;7552:18:146;;4373:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4373:54:124;;-1:-1:-1;;;;;8073:31:146;;4373:54:124;;;8055:50:146;-1:-1:-1;;;;;4373:48:124;;;;;;;8028:18:146;;4373:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4355:72;;:15;:72;:::i;:::-;4321:106;;4473:15;;;;;;;;-1:-1:-1;;;;;4473:15:124;-1:-1:-1;;;;;4473:38:124;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4458:11;:55;;4437:136;;;;-1:-1:-1;;;4437:136:124;;12558:2:146;4437:136:124;;;12540:21:146;12597:2;12577:18;;;12570:30;12636:34;12616:18;;;12609:62;-1:-1:-1;;;12687:18:146;;;12680:32;12729:19;;4437:136:124;12356:398:146;4437:136:124;4036:544;3960:620;;:::o;3094:1947:110:-;3330:4;3346:23;3372:46;3404:13;3372:31;:46::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;13826:2:146;4896:40:110;;;13808:21:146;13865:2;13845:18;;;13838:30;13904:32;13884:18;;;13877:60;13954:18;;4896:40:110;13624:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;431:2729:121:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:121;;-1:-1:-1;1486:14:121;-1:-1:-1;;;1514:25:121;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:121;;;1514:54;1510:236;;;-1:-1:-1;1593:1:121;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:121;;;1611:135;;-1:-1:-1;1665:1:121;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:121;;14317:2:146;1697:38:121;;;14299:21:146;14356:2;14336:18;;;14329:30;14395;14375:18;;;14368:58;14443:18;;1697:38:121;14115:352:146;1611:135:121;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:121;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:121;;14674:2:146;2278:58:121;;;14656:21:146;14713:2;14693:18;;;14686:30;-1:-1:-1;;;14732:18:146;;;14725:52;14794:18;;2278:58:121;14472:346:146;2278:58:121;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:121;;15025:2:146;2495:59:121;;;15007:21:146;15064:2;15044:18;;;15037:30;15103:25;15083:18;;;15076:53;15146:18;;2495:59:121;14823:347:146;2495:59:121;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:121;:14;-1:-1:-1;;;;;2777:30:121;;2769:83;;;;-1:-1:-1;;;2769:83:121;;15377:2:146;2769:83:121;;;15359:21:146;15416:2;15396:18;;;15389:30;15455:34;15435:18;;;15428:62;-1:-1:-1;;;15506:18:146;;;15499:38;15554:19;;2769:83:121;15175:404:146;2769:83:121;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:121;;15786:2:146;2990:74:121;;;15768:21:146;15825:2;15805:18;;;15798:30;15864:32;15844:18;;;15837:60;15914:18;;2990:74:121;15584:354:146;2990:74:121;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:121;;-1:-1:-1;;;;;;;;;;;431:2729:121;;;;;;;;;:::o;4705:1397:124:-;4951:12;4973:17;4951:12;-1:-1:-1;;;5143:15:124;5176:27;;;;:13;:27;:::i;:::-;5221;;;;;;;;:::i;:::-;5266:7;5291:12;5321:10;5041:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5041:304:124;;;;;;;;;;;;;;-1:-1:-1;;;;;5041:304:124;-1:-1:-1;;;;;;5041:304:124;;;;;;;;;;;-1:-1:-1;5377:29:124;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5377:34:124;5412:11;5377:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5489:11:124;;5359:65;;-1:-1:-1;5359:65:124;-1:-1:-1;5445:22:124;;-1:-1:-1;5504:2:124;5489:17;5485:178;;5523:12;5550:4;5539:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5599:53:124;-1:-1:-1;;;5599:53:124;;-1:-1:-1;;5485:178:124;5677:7;:28;;;;;5688:17;5677:28;5673:215;;;5721:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5721:64:124;5752:33;5721:64;;;5673:215;;;5816:28;;;;5847:30;5816:28;;;;;;;;:61;;-1:-1:-1;;5816:61:124;;;;;;5673:215;5994:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5903:192:124;5953:27;;;;:13;:27;:::i;:::-;5903:192;;5924:15;5903:192;6035:29;;;;;;;;:::i;:::-;5903:192;;;-1:-1:-1;;;;;17834:32:146;;;17816:51;;17910:14;;17903:22;17898:2;17883:18;;17876:50;17789:18;5903:192:124;;;;;;;4941:1161;;;4705:1397;;;;;;:::o;56:776:107:-;125:7;240:13;:18;;257:1;240:18;236:590;;-1:-1:-1;383:7:107;;56:776;-1:-1:-1;56:776:107:o;236:590::-;411:13;:18;;428:1;411:18;407:419;;-1:-1:-1;619:7:107;;56:776;-1:-1:-1;56:776:107:o;407:419::-;-1:-1:-1;;;803:12:107;56:776;-1:-1:-1;56:776:107:o;407:419::-;56:776;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;18139:2:146;3101:49:77;;;18121:21:146;18178:2;18158:18;;;18151:30;-1:-1:-1;;;18197:18:146;;;18190:51;18258:18;;3101:49:77;17937:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;18416:19:146;;18460:2;18451:12;;18287:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;18676:2:146;3636:134:77;;;18658:21:146;18715:2;18695:18;;;18688:30;18754:34;18734:18;;;18727:62;-1:-1:-1;;;18805:18:146;;;18798:44;18859:19;;3636:134:77;18474:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;18416:19:146;;;18460:2;18451:12;;18287:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;19091:2:146;3893:176:77;;;19073:21:146;19130:2;19110:18;;;19103:30;19169:31;19149:18;;;19142:59;19218:18;;3893:176:77;18889:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;18416:19:146;;;18460:2;18451:12;;18287:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;19449:2:146;4222:186:77;;;19431:21:146;19488:2;19468:18;;;19461:30;19527:34;19507:18;;;19500:62;-1:-1:-1;;;19578:18:146;;;19571:37;19625:19;;4222:186:77;19247:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;19857:2:146;4509:156:77;;;19839:21:146;19896:2;19876:18;;;19869:30;19935:34;19915:18;;;19908:62;-1:-1:-1;;;19986:18:146;;;19979:36;20032:19;;4509:156:77;19655:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;20264:2:146;5384:158:77;;;20246:21:146;20303:2;20283:18;;;20276:30;20342:34;20322:18;;;20315:62;20413:29;20393:18;;;20386:57;20460:19;;5384:158:77;20062:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;20692:2:146;5626:162:77;;;20674:21:146;20731:2;20711:18;;;20704:30;20770:34;20750:18;;;20743:62;20841:28;20821:18;;;20814:56;20887:19;;5626:162:77;20490:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;21437:2:146;7009:171:77;;;21419:21:146;21476:2;21456:18;;;21449:30;21515:34;21495:18;;;21488:62;21586:28;21566:18;;;21559:56;21632:19;;7009:171:77;21235:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;21864:2:146;7843:185:77;;;21846:21:146;21903:2;21883:18;;;21876:30;21942:34;21922:18;;;21915:62;22013:31;21993:18;;;21986:59;22062:19;;7843:185:77;21662:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;22294:2:146;8463:156:77;;;22276:21:146;22333:2;22313:18;;;22306:30;22372:34;22352:18;;;22345:62;22443:27;22423:18;;;22416:55;22488:19;;8463:156:77;22092:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;22720:2:146;8703:160:77;;;22702:21:146;22759:2;22739:18;;;22732:30;22798:34;22778:18;;;22771:62;22869:26;22849:18;;;22842:54;22913:19;;8703:160:77;22518:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;23145:2:146;9439:60:77;;;23127:21:146;23184:2;23164:18;;;23157:30;23223:34;23203:18;;;23196:62;-1:-1:-1;;;23274:18:146;;;23267:48;23332:19;;9439:60:77;22943:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;23564:2:146;9556:50:77;;;23546:21:146;23603:2;23583:18;;;23576:30;23642:34;23622:18;;;23615:62;-1:-1:-1;;;23693:18:146;;;23686:38;23741:19;;9556:50:77;23362:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;24113:2:146;9641:47:77;;;24095:21:146;24152:2;24132:18;;;24125:30;24191:34;24171:18;;;24164:62;-1:-1:-1;;;24242:18:146;;;24235:35;24287:19;;9641:47:77;23911:401:146;2954:6741:77;;;;;;:::o;1978:1895:75:-;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;24519:2:146;2161:136:75;;;24501:21:146;24558:2;24538:18;;;24531:30;24597:34;24577:18;;;24570:62;24668:26;24648:18;;;24641:54;24712:19;;2161:136:75;24317:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;24944:2:146;2308:134:75;;;24926:21:146;24983:2;24963:18;;;24956:30;25022:34;25002:18;;;24995:62;-1:-1:-1;;;25073:18:146;;;25066:48;25131:19;;2308:134:75;24742:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;25363:2:146;12579:55:75;;;25345:21:146;25402:2;25382:18;;;25375:30;25441:28;25421:18;;;25414:56;25487:18;;12579:55:75;25161:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:121:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:121;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:121;3166:384;-1:-1:-1;;3166:384:121:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;25718:2:146;4505:137:75;;;25700:21:146;25757:2;25737:18;;;25730:30;25796:34;25776:18;;;25769:62;25867:27;25847:18;;;25840:55;25912:19;;4505:137:75;25516:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;26144:2:146;4653:136:75;;;26126:21:146;26183:2;26163:18;;;26156:30;26222:34;26202:18;;;26195:62;-1:-1:-1;;;26273:18:146;;;26266:50;26333:19;;4653:136:75;25942:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;27894:19:146;;;27938:2;27929:12;;27922:28;27975:2;27966:12;;27737:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;27894:19:146;;;27938:2;27929:12;;27922:28;27975:2;27966:12;;27737:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;;-1:-1:-1;1822:5:110;1283:551;-1:-1:-1;;;;1283:551:110:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;28674:2:146;6699:156:75;;;28656:21:146;28713:2;28693:18;;;28686:30;-1:-1:-1;;;;;;;;;;;28732:18:146;;;28725:62;28823:34;28803:18;;;28796:62;-1:-1:-1;;;28874:19:146;;;28867:45;28929:19;;6699:156:75;28472:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;29161:2:146;7025:177:75;;;29143:21:146;29200:2;29180:18;;;29173:30;29239:34;29219:18;;;29212:62;29310:34;29290:18;;;29283:62;-1:-1:-1;;;29361:19:146;;;29354:44;29415:19;;7025:177:75;28959:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;29647:2:146;7387:164:75;;;29629:21:146;29686:2;29666:18;;;29659:30;-1:-1:-1;;;;;;;;;;;29705:18:146;;;29698:62;29796:34;29776:18;;;29769:62;-1:-1:-1;;;29847:19:146;;;29840:48;29905:19;;7387:164:75;29445:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;30137:2:146;7721:159:75;;;30119:21:146;30176:2;30156:18;;;30149:30;-1:-1:-1;;;;;;;;;;;30195:18:146;;;30188:62;30286:34;30266:18;;;30259:62;-1:-1:-1;;;30337:19:146;;;30330:41;30388:19;;7721:159:75;29935:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;30620:2:146;8042:142:75;;;30602:21:146;30659:2;30639:18;;;30632:30;-1:-1:-1;;;;;;;;;;;30678:18:146;;;30671:62;30769:34;30749:18;;;30742:62;-1:-1:-1;;;30820:19:146;;;30813:39;30869:19;;8042:142:75;30418:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;31101:2:146;8199:168:75;;;31083:21:146;31140:2;31120:18;;;31113:30;-1:-1:-1;;;;;;;;;;;31159:18:146;;;31152:62;31250:34;31230:18;;;31223:62;-1:-1:-1;;;31301:19:146;;;31294:43;31354:19;;8199:168:75;30899:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;31586:2:146;8617:153:75;;;31568:21:146;31625:2;31605:18;;;31598:30;-1:-1:-1;;;;;;;;;;;31644:18:146;;;31637:62;31735:34;31715:18;;;31708:62;-1:-1:-1;;;31786:19:146;;;31779:41;31837:19;;8617:153:75;31384:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;32069:2:146;8935:161:75;;;32051:21:146;32108:2;32088:18;;;32081:30;-1:-1:-1;;;;;;;;;;;32127:18:146;;;32120:62;32218:34;32198:18;;;32191:62;-1:-1:-1;;;32269:19:146;;;32262:44;32323:19;;8935:161:75;31867:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;32555:2:146;9266:157:75;;;32537:21:146;32594:2;32574:18;;;32567:30;-1:-1:-1;;;;;;;;;;;32613:18:146;;;32606:62;32704:34;32684:18;;;32677:62;-1:-1:-1;;;32755:19:146;;;32748:39;32804:19;;9266:157:75;32353:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;33036:2:146;9588:141:75;;;33018:21:146;33075:2;33055:18;;;33048:30;-1:-1:-1;;;;;;;;;;;33094:18:146;;;33087:62;33185:34;33165:18;;;33158:62;-1:-1:-1;;;33236:19:146;;;33229:37;33283:19;;9588:141:75;32834:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;33515:2:146;9744:168:75;;;33497:21:146;33554:2;33534:18;;;33527:30;-1:-1:-1;;;;;;;;;;;33573:18:146;;;33566:62;33664:34;33644:18;;;33637:62;-1:-1:-1;;;33715:19:146;;;33708:41;33766:19;;9744:168:75;33313:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;33998:2:146;858:50:74;;;33980:21:146;34037:2;34017:18;;;34010:30;-1:-1:-1;;;34056:18:146;;;34049:44;34110:18;;858:50:74;33796:338:146;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;33998:2:146;922:53:74;;;33980:21:146;34037:2;34017:18;;;34010:30;-1:-1:-1;;;34056:18:146;;;34049:44;34110:18;;922:53:74;33796:338:146;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;34341:2:146;989:63:74;;;34323:21:146;34380:2;34360:18;;;34353:30;-1:-1:-1;;;34399:18:146;;;34392:47;34456:18;;989:63:74;34139:341:146;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;34687:2:146;11438:55:75;;;34669:21:146;34726:2;34706:18;;;34699:30;34765:28;34745:18;;;34738:56;34811:18;;11438:55:75;34485:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;34687:2:146;11598:72:75;;;34669:21:146;34726:2;34706:18;;;34699:30;34765:28;34745:18;;;34738:56;34811:18;;11598:72:75;34485:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:146:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:146;;14:180;-1:-1:-1;14:180:146:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:255::-;742:2;727:18;;775:1;764:13;;754:47;;781:18;;:::i;846:347::-;897:8;907:6;961:3;954:4;946:6;942:17;938:27;928:55;;979:1;976;969:12;928:55;-1:-1:-1;1002:20:146;;-1:-1:-1;;;;;1034:30:146;;1031:50;;;1077:1;1074;1067:12;1031:50;1114:4;1106:6;1102:17;1090:29;;1166:3;1159:4;1150:6;1142;1138:19;1134:30;1131:39;1128:59;;;1183:1;1180;1173:12;1128:59;846:347;;;;;:::o;1198:367::-;1261:8;1271:6;1325:3;1318:4;1310:6;1306:17;1302:27;1292:55;;1343:1;1340;1333:12;1292:55;-1:-1:-1;1366:20:146;;-1:-1:-1;;;;;1398:30:146;;1395:50;;;1441:1;1438;1431:12;1395:50;1478:4;1470:6;1466:17;1454:29;;1538:3;1531:4;1521:6;1518:1;1514:14;1506:6;1502:27;1498:38;1495:47;1492:67;;;1555:1;1552;1545:12;1570:127;1631:10;1626:3;1622:20;1619:1;1612:31;1662:4;1659:1;1652:15;1686:4;1683:1;1676:15;1702:275;1773:2;1767:9;1838:2;1819:13;;-1:-1:-1;;1815:27:146;1803:40;;-1:-1:-1;;;;;1858:34:146;;1894:22;;;1855:62;1852:88;;;1920:18;;:::i;:::-;1956:2;1949:22;1702:275;;-1:-1:-1;1702:275:146:o;1982:530::-;2024:5;2077:3;2070:4;2062:6;2058:17;2054:27;2044:55;;2095:1;2092;2085:12;2044:55;2131:6;2118:20;-1:-1:-1;;;;;2153:2:146;2150:26;2147:52;;;2179:18;;:::i;:::-;2223:55;2266:2;2247:13;;-1:-1:-1;;2243:27:146;2272:4;2239:38;2223:55;:::i;:::-;2303:2;2294:7;2287:19;2349:3;2342:4;2337:2;2329:6;2325:15;2321:26;2318:35;2315:55;;;2366:1;2363;2356:12;2315:55;2431:2;2424:4;2416:6;2412:17;2405:4;2396:7;2392:18;2379:55;2479:1;2454:16;;;2472:4;2450:27;2443:38;;;;2458:7;1982:530;-1:-1:-1;;;1982:530:146:o;2517:161::-;2582:5;2627:3;2618:6;2613:3;2609:16;2605:26;2602:46;;;2644:1;2641;2634:12;2602:46;-1:-1:-1;2666:6:146;2517:161;-1:-1:-1;2517:161:146:o;2683:1546::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;3039:3;3027:9;3018:7;3014:23;3010:33;3007:53;;;3056:1;3053;3046:12;3007:53;3096:9;3083:23;-1:-1:-1;;;;;3166:2:146;3158:6;3155:14;3152:34;;;3182:1;3179;3172:12;3152:34;3221:58;3271:7;3262:6;3251:9;3247:22;3221:58;:::i;:::-;3298:8;;-1:-1:-1;3195:84:146;-1:-1:-1;3386:2:146;3371:18;;3358:32;;-1:-1:-1;3402:16:146;;;3399:36;;;3431:1;3428;3421:12;3399:36;3470:72;3534:7;3523:8;3512:9;3508:24;3470:72;:::i;:::-;3561:8;;-1:-1:-1;3444:98:146;-1:-1:-1;3643:2:146;3628:18;;3615:32;;-1:-1:-1;3700:2:146;3685:18;;3672:32;;-1:-1:-1;3716:16:146;;;3713:36;;;3745:1;3742;3735:12;3713:36;3784:72;3848:7;3837:8;3826:9;3822:24;3784:72;:::i;:::-;3875:8;;-1:-1:-1;3758:98:146;-1:-1:-1;3963:3:146;3948:19;;3935:33;;-1:-1:-1;3980:16:146;;;3977:36;;;4009:1;4006;3999:12;3977:36;;4032:51;4075:7;4064:8;4053:9;4049:24;4032:51;:::i;:::-;4022:61;;;4130:3;4119:9;4115:19;4102:33;4092:43;;4154:69;4215:7;4209:3;4198:9;4194:19;4154:69;:::i;:::-;4144:79;;2683:1546;;;;;;;;;;;;;:::o;4234:163::-;4301:20;;4361:10;4350:22;;4340:33;;4330:61;;4387:1;4384;4377:12;4402:184;4460:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:52;;;4529:1;4526;4519:12;4481:52;4552:28;4570:9;4552:28;:::i;4591:131::-;-1:-1:-1;;;;;4666:31:146;;4656:42;;4646:70;;4712:1;4709;4702:12;4727:684;4925:3;4910:19;;4987:10;4960:25;4978:6;4960:25;:::i;:::-;4956:42;4945:9;4938:61;5046:4;5038:6;5034:17;5021:31;5061;5086:5;5061:31;:::i;:::-;-1:-1:-1;;;;;5168:14:146;;;5161:4;5146:20;;5139:44;5232:4;5220:17;;5207:31;;5247:33;5207:31;5247:33;:::i;:::-;5318:16;5311:4;5296:20;;5289:46;5398:4;5386:17;;;5373:31;5351:20;;;;5344:61;;;;4727:684;:::o;5416:250::-;5501:1;5511:113;5525:6;5522:1;5519:13;5511:113;;;5601:11;;;5595:18;5582:11;;;5575:39;5547:2;5540:10;5511:113;;;-1:-1:-1;;5658:1:146;5640:16;;5633:27;5416:250::o;5671:270::-;5712:3;5750:5;5744:12;5777:6;5772:3;5765:19;5793:76;5862:6;5855:4;5850:3;5846:14;5839:4;5832:5;5828:16;5793:76;:::i;:::-;5923:2;5902:15;-1:-1:-1;;5898:29:146;5889:39;;;;5930:4;5885:50;;5671:270;-1:-1:-1;;5671:270:146:o;5946:695::-;6205:3;6194:9;6187:22;6246:6;6240:3;6229:9;6225:19;6218:35;6304:6;6296;6290:3;6279:9;6275:19;6262:49;6361:1;6355:3;6346:6;6335:9;6331:22;6327:32;6320:43;6168:4;6422:2;6418:7;6413:2;6405:6;6401:15;6397:29;6386:9;6382:45;6489:3;6477:9;6473:2;6469:18;6465:28;6458:4;6447:9;6443:20;6436:58;6511:38;6544:3;6540:2;6536:12;6528:6;6511:38;:::i;:::-;6580:2;6565:18;;6558:34;;;;-1:-1:-1;;6623:2:146;6608:18;6601:34;6503:46;5946:695;-1:-1:-1;;;5946:695:146:o;6998:171::-;7065:20;;-1:-1:-1;;;;;7114:30:146;;7104:41;;7094:69;;7159:1;7156;7149:12;7174:256;7240:6;7248;7301:2;7289:9;7280:7;7276:23;7272:32;7269:52;;;7317:1;7314;7307:12;7269:52;7340:28;7358:9;7340:28;:::i;:::-;7330:38;;7387:37;7420:2;7409:9;7405:18;7387:37;:::i;:::-;7377:47;;7174:256;;;;;:::o;7632:273::-;7724:6;7777:2;7765:9;7756:7;7752:23;7748:32;7745:52;;;7793:1;7790;7783:12;7745:52;7825:9;7819:16;7844:31;7869:5;7844:31;:::i;8116:184::-;8186:6;8239:2;8227:9;8218:7;8214:23;8210:32;8207:52;;;8255:1;8252;8245:12;8207:52;-1:-1:-1;8278:16:146;;8116:184;-1:-1:-1;8116:184:146:o;9011:934::-;9147:9;-1:-1:-1;;;;;9222:2:146;9214:6;9211:14;9208:40;;;9228:18;;:::i;:::-;9274:6;9271:1;9267:14;9300:4;9324:28;9348:2;9344;9340:11;9324:28;:::i;:::-;9386:19;;;9456:14;;;;9421:12;;;;9493:14;9482:26;;9479:46;;;9521:1;9518;9511:12;9479:46;9545:5;9559:353;9575:6;9570:3;9567:15;9559:353;;;9661:3;9648:17;9697:2;9684:11;9681:19;9678:109;;;9741:1;9770:2;9766;9759:14;9678:109;9812:57;9854:14;9840:11;9833:5;9829:23;9812:57;:::i;:::-;9800:70;;-1:-1:-1;9890:12:146;;;;9592;;9559:353;;;-1:-1:-1;9934:5:146;9011:934;-1:-1:-1;;;;;;;9011:934:146:o;9950:247::-;10009:6;10062:2;10050:9;10041:7;10037:23;10033:32;10030:52;;;10078:1;10075;10068:12;10030:52;10117:9;10104:23;10136:31;10161:5;10136:31;:::i;10555:277::-;10622:6;10675:2;10663:9;10654:7;10650:23;10646:32;10643:52;;;10691:1;10688;10681:12;10643:52;10723:9;10717:16;10776:5;10769:13;10762:21;10755:5;10752:32;10742:60;;10798:1;10795;10788:12;12091:127;12152:10;12147:3;12143:20;12140:1;12133:31;12183:4;12180:1;12173:15;12207:4;12204:1;12197:15;12223:128;12290:9;;;12311:11;;;12308:37;;;12325:18;;:::i;12759:127::-;12820:10;12815:3;12811:20;12808:1;12801:31;12851:4;12848:1;12841:15;12875:4;12872:1;12865:15;12891:120;12931:1;12957;12947:35;;12962:18;;:::i;:::-;-1:-1:-1;12996:9:146;;12891:120::o;13016:168::-;13056:7;13122:1;13118;13114:6;13110:14;13107:1;13104:21;13099:1;13092:9;13085:17;13081:45;13078:71;;;13129:18;;:::i;:::-;-1:-1:-1;13169:9:146;;13016:168::o;13189:125::-;13254:9;;;13275:10;;;13272:36;;;13288:18;;:::i;13319:183::-;-1:-1:-1;;;;;13438:10:146;;;13426;;;13422:27;;13461:12;;;13458:38;;;13476:18;;:::i;13507:112::-;13539:1;13565;13555:35;;13570:18;;:::i;:::-;-1:-1:-1;13604:9:146;;13507:112::o;13983:127::-;14044:10;14039:3;14035:20;14032:1;14025:31;14075:4;14072:1;14065:15;14099:4;14096:1;14089:15;15943:1113;16300:25;;;16394:10;16382:23;;16344:2;16362:18;;;16355:51;;;;-1:-1:-1;;;;;16442:32:146;;16437:2;16422:18;;16415:60;-1:-1:-1;;;;;16511:31:146;;16506:2;16491:18;;16484:59;16287:3;16574;16559:19;;16552:32;;;16633:13;;16272:19;;;16655:22;;;16239:4;;16735:15;;;;16708:3;16693:19;;;16239:4;16778:169;16792:6;16789:1;16786:13;16778:169;;;16853:13;;16841:26;;16922:15;;;;16887:12;;;;16814:1;16807:9;16778:169;;;16782:3;;16993:9;16988:3;16984:19;16978:3;16967:9;16963:19;16956:48;17021:29;17046:3;17038:6;17021:29;:::i;17061:287::-;17190:3;17228:6;17222:13;17244:66;17303:6;17298:3;17291:4;17283:6;17279:17;17244:66;:::i;:::-;17326:16;;;;;17061:287;-1:-1:-1;;17061:287:146:o;17353:290::-;17422:6;17475:2;17463:9;17454:7;17450:23;17446:32;17443:52;;;17491:1;17488;17481:12;17443:52;17517:16;;-1:-1:-1;;;;;;17562:32:146;;17552:43;;17542:71;;17609:1;17606;17599:12;20917:157;20947:1;20981:4;20978:1;20974:12;21005:3;20995:37;;21012:18;;:::i;:::-;21064:3;21057:4;21054:1;21050:12;21046:22;21041:27;;;20917:157;;;;:::o;21079:151::-;21169:4;21162:12;;;21148;;;21144:31;;21187:14;;21184:40;;;21204:18;;:::i;23771:135::-;23810:3;23831:17;;;23828:43;;23851:18;;:::i;:::-;-1:-1:-1;23898:1:146;23887:13;;23771:135::o;26363:422::-;26452:1;26495:5;26452:1;26509:270;26530:7;26520:8;26517:21;26509:270;;;26589:4;26585:1;26581:6;26577:17;26571:4;26568:27;26565:53;;;26598:18;;:::i;:::-;26648:7;26638:8;26634:22;26631:55;;;26668:16;;;;26631:55;26747:22;;;;26707:15;;;;26509:270;;;26513:3;26363:422;;;;;:::o;26790:806::-;26839:5;26869:8;26859:80;;-1:-1:-1;26910:1:146;26924:5;;26859:80;26958:4;26948:76;;-1:-1:-1;26995:1:146;27009:5;;26948:76;27040:4;27058:1;27053:59;;;;27126:1;27121:130;;;;27033:218;;27053:59;27083:1;27074:10;;27097:5;;;27121:130;27158:3;27148:8;27145:17;27142:43;;;27165:18;;:::i;:::-;-1:-1:-1;;27221:1:146;27207:16;;27236:5;;27033:218;;27335:2;27325:8;27322:16;27316:3;27310:4;27307:13;27303:36;27297:2;27287:8;27284:16;27279:2;27273:4;27270:12;27266:35;27263:77;27260:159;;;-1:-1:-1;27372:19:146;;;27404:5;;27260:159;27451:34;27476:8;27470:4;27451:34;:::i;:::-;27521:6;27517:1;27513:6;27509:19;27500:7;27497:32;27494:58;;;27532:18;;:::i;:::-;27570:20;;26790:806;-1:-1:-1;;;26790:806:146:o;27601:131::-;27661:5;27690:36;27717:8;27711:4;27690:36;:::i;27989:478::-;28191:2;28173:21;;;28230:2;28210:18;;;28203:30;28269:34;28264:2;28249:18;;28242:62;28340:34;28335:2;28320:18;;28313:62;-1:-1:-1;;;28406:3:146;28391:19;;28384:41;28457:3;28442:19;;27989:478::o", + "linkReferences": {} }, "methodIdentifiers": { "eventsPublished(bytes32)": "3cca331c", "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": "bbe6d642", "subscriptions(bytes32)": "94259c6c" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}}},\"title\":\"TelepathyPublisher\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"A contract that can publish events to a ISubscriptionReceiver contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPublisher.sol\":\"TelepathyPublisher\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}}},\"title\":\"TelepathyPublisher\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"A contract that can publish events to a ISubscriptionReceiver contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPublisher.sol\":\"TelepathyPublisher\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -585,10 +567,10 @@ "license": null }, "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", "urls": [ - "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", - "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", + "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" ], "license": null }, diff --git a/out/TelepathyRouter.sol/TelepathyRouter.json b/out/TelepathyRouter.sol/TelepathyRouter.json index 2c364d7..80200b8 100644 --- a/out/TelepathyRouter.sol/TelepathyRouter.json +++ b/out/TelepathyRouter.sol/TelepathyRouter.json @@ -1012,32 +1012,14 @@ } ], "bytecode": { - "object": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e8565b603254610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60325460ff9081161015620000e6576032805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615fb362000120600039600081816109f901528181610a3901528181610da601528181610de60152610e750152615fb36000f3fe6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004615055565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a36600461508e565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b5366004615115565b6107be565b3480156102c657600080fd5b506102da6102d5366004615175565b6108c4565b005b3480156102e857600080fd5b5061028c6102f7366004615190565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615f5e83398151915281565b34801561033a57600080fd5b506102da6103493660046151a9565b610947565b34801561035a57600080fd5b506102da6103693660046151a9565b610971565b34801561037a57600080fd5b506102da6103893660046151d5565b6109ef565b34801561039a57600080fd5b5061024a6103a9366004615175565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d93660046152e9565b610ace565b3480156103ea57600080fd5b5061040e6103f9366004615190565b60076020526000908152604090205460ff1681565b60405161025691906153fc565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da610458366004615424565b610d9c565b34801561046957600080fd5b5061028c610e68565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b9366004615175565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da61050736600461551f565b610f1b565b34801561051857600080fd5b506102da61121e565b34801561052d57600080fd5b5061028c61053c366004615115565b611303565b34801561054d57600080fd5b5061028c61055c366004615633565b611384565b34801561056d57600080fd5b506104d461057c366004615175565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b2366004615674565b6113dd565b3480156105c357600080fd5b5061028c6105d2366004615190565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff36600461571e565b6116f2565b34801561061057600080fd5b5061024a61061f3660046151a9565b6118a3565b34801561063057600080fd5b506102da6118ce565b34801561064557600080fd5b506102da610654366004615175565b6119b3565b34801561066557600080fd5b50610679610674366004615190565b611a30565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be366004615633565b611a6a565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da6107163660046151a9565b611ac3565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b366004615761565b611ae8565b34801561075c57600080fd5b5061028c600080516020615ed783398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107e257604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036108085760405163b0747d8160e01b815260040160405180910390fd5b600080610821876001600160a01b0388165b8787611b63565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161085683615794565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b2919061580a565b60405180910390a39695505050505050565b6108dc600080516020615f5e833981519152336118a3565b6109015760405162461bcd60e51b81526004016108f89061581d565b60405180910390fd5b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096281611bda565b61096c8383611be4565b505050565b6001600160a01b03811633146109e15760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108f8565b6109eb8282611c6a565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a375760405162461bcd60e51b81526004016108f890615872565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a80600080516020615f17833981519152546001600160a01b031690565b6001600160a01b031614610aa65760405162461bcd60e51b81526004016108f8906158be565b610aaf81611cd1565b60408051600080825260208201909252610acb91839190611d05565b50565b610ad6611e70565b600080610ae38b8b611ec9565b91509150610af48260400151612133565b610b018260400151612262565b6000808e8e810190610b13919061590a565b91509150610b258285604001516122be565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190615934565b905080610bfb5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016108f8565b6000610c448b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a0151869150889088906124f2565b905080610c935760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016108f8565b505050506000610cf8878790610ca9919061594d565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261276e565b9050818114610d415760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b50610d8382828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b2192505050565b5050610d8f6001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610de45760405162461bcd60e51b81526004016108f890615872565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e2d600080516020615f17833981519152546001600160a01b031690565b6001600160a01b031614610e535760405162461bcd60e51b81526004016108f8906158be565b610e5c82611cd1565b6109eb82826001611d05565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f085760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f8565b50600080516020615f1783398151915290565b603254610100900460ff1615808015610f3b5750603254600160ff909116105b80610f555750303b158015610f55575060325460ff166001145b610fb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f8565b6032805460ff191660011790558015610fdb576032805461ff0019166101001790555b610fe3612ccf565b610feb612d00565b611003600080516020615f5e83398151915284611be4565b61101b600080516020615ed783398151915285611be4565b611026600085611be4565b61102e612d00565b855187511461103c57600080fd5b845187511461104a57600080fd5b865161105d9060039060208a0190614f7b565b5060005b60035463ffffffff821610156111b157868163ffffffff1681518110611089576110896159b4565b60200260200101516004600060038463ffffffff16815481106110ae576110ae6159b4565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112a5761112a6159b4565b60200260200101516005600060038463ffffffff168154811061114f5761114f6159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a9816159ca565b915050611061565b506000805483151560ff19918216179091556008805490911660011790558015611215576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b611236600080516020615f5e833981519152336118a3565b6112525760405162461bcd60e51b81526004016108f89061581d565b60005b60035463ffffffff821610156112d75760006006600060038463ffffffff1681548110611284576112846159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112cf816159ca565b915050611255565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661132757604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361134d5760405163b0747d8160e01b815260040160405180910390fd5b600080611363876001600160a01b03881661081a565b6002805492945090925082916001600160401b031690600061085683615794565b6000805460ff166113a857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036113ce5760405163b0747d8160e01b815260040160405180910390fd5b60008061082187878787611b63565b6113e5611e70565b6000806113f28888611ec9565b915091506114038260400151612133565b6114108260400151612262565b61141e8983604001516122be565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115d05760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa15801561150b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152f9190615934565b905060008190036115825760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016108f8565b6115b661158f898b61594d565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612d27565b600083815260096020526040902081905592506115e29050565b60008181526009602052604090205491505b6000846020015160016040516020016116109291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061165882856116538a8c61594d565b612e1e565b90508481146116a15760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b505050506116e682828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b2192505050565b50506112156001603355565b61170a600080516020615ed7833981519152336118a3565b6117265760405162461bcd60e51b81526004016108f8906159e3565b6000805b600354811015611792578463ffffffff166003828154811061174e5761174e6159b4565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117805760019150611792565b8061178a81615a38565b91505061172a565b508061181b57600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118e6600080516020615f5e833981519152336118a3565b6119025760405162461bcd60e51b81526004016108f89061581d565b60005b60035463ffffffff821610156119875760016006600060038463ffffffff1681548110611934576119346159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff19169115159190911790558061197f816159ca565b915050611905565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119cb600080516020615f5e833981519152336118a3565b6119e75760405162461bcd60e51b81526004016108f89061581d565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a4057600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a8e57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff1603611ab45760405163b0747d8160e01b815260040160405180910390fd5b60008061136387878787611b63565b600082815260c96020526040902060010154611ade81611bda565b61096c8383611c6a565b611b00600080516020615f5e833981519152336118a3565b611b1c5760405162461bcd60e51b81526004016108f89061581d565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bc69360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612eba92505050565b805160208201209097909650945050505050565b610acb8133612ef5565b611bee82826118a3565b6109eb57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c263390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c7482826118a3565b156109eb57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611ce9600080516020615ed7833981519152336118a3565b610acb5760405162461bcd60e51b81526004016108f8906159e3565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d385761096c83612f4e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d92575060408051601f3d908101601f19168201909252611d8f91810190615934565b60015b611df55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f8565b600080516020615f178339815191528114611e645760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f8565b5061096c838383612fea565b600260335403611ec25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108f8565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f4685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061301592505050565b905060008585604051611f5a929190615a51565b60405190819003902090506000808281526007602052604090205460ff166002811115611f8957611f896153e6565b14611fd65760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016108f8565b46826080015163ffffffff161461201e5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016108f8565b600854825160ff9081169116146120685760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016108f8565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120b3575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121265760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016108f8565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b03166121995760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122169190615a61565b610acb5760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016108f8565b63ffffffff811660009081526006602052604090205460ff1615610acb5760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016108f8565b63ffffffff81166000908152600460205260409020546001600160a01b03166123245760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b19190615934565b6000036124005760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016108f8565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248a9190615934565b6124949042615a7e565b9050607881101561096c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016108f8565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af415801561254c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125709190615934565b9050600081856001600160401b03161061258b57601b61258e565b60075b60ff169050600082866001600160401b0316106125ca576120006125bb846001600160401b038916615a7e565b6125c59190615aa7565b6125df565b6125df6120006001600160401b038816615aa7565b90506000866001600160401b0316886001600160401b03160361261e5750600b61260b81610200615abb565b61261790610183615ada565b9050612753565b61200061262b888a615aed565b6001600160401b03161161268d5750600b612647816020615abb565b612652906006615ada565b90506126696120006001600160401b038916615b14565b61267561200083615abb565b61267f9190615ada565b905061260b81610200615abb565b876001600160401b0316876001600160401b0316101561270b5750600b826126b6826020615abb565b6126c09190615ada565b90506126cd816002615abb565b6126d8906000615ada565b9050816126e9630100000083615abb565b6126f39190615ada565b9050612700816002615abb565b612652906001615ada565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016108f8565b61275f8b828c8c6130da565b9b9a5050505050505050505050565b60008061277c878a8a6130f4565b9050600081600081518110612793576127936159b4565b01602001516001600160f81b03191690506000600160f81b8214806127c55750600160f91b6001600160f81b03198316145b156127d257506001612837565b600360fe1b6001600160f81b03198316106127ef57506000612837565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016108f8565b6000602084019050600060405180604001604052808487516128599190615a7e565b81526020016128688585615ada565b90529050600061287782613994565b905080516004146128c35760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016108f8565b60006128e8826003815181106128db576128db6159b4565b6020026020010151613994565b905080518c1061293a5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016108f8565b6000612951828e815181106128db576128db6159b4565b905080516003146129af5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016108f8565b60006129d4826000815181106129c7576129c76159b4565b6020026020010151613bb9565b90508c6001600160a01b0316816001600160a01b031614612a475760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016108f8565b6000612a5f836001815181106128db576128db6159b4565b90508c612a8582600081518110612a7857612a786159b4565b6020026020010151613c23565b14612ae85760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016108f8565b612b0a818d81518110612afd57612afd6159b4565b6020026020010151613c2a565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612b5093929190615b28565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612ba29190615b58565b6000604051808303816000865af19150503d8060008114612bdf576040519150601f19603f3d011682016040523d82523d6000602084013e612be4565b606091505b5080519195509350600092506020039050612c2657600082806020019051810190612c0f9190615b74565b6001600160e01b031916631dee306b60e11b149150505b828015612c305750805b15612c53576000858152600760205260409020805460ff19166002179055612c6d565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612cb8929190615b91565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612cf65760405162461bcd60e51b81526004016108f890615bb5565b612cfe613d2d565b565b603254610100900460ff16612cfe5760405162461bcd60e51b81526004016108f890615bb5565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612d8c82604051602001612d7691815260200190565b60405160208183030381529060405287866130f4565b90506000815111612dd85760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016108f8565b6000612deb612de683613d54565b613994565b90508051600414612dfb57600080fd5b612e1181600281518110612a7857612a786159b4565b93505050505b9392505050565b600080612e4d85604051602001612e3791815260200190565b60405160208183030381529060405284866130f4565b90506000815111612ea05760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016108f8565b612eb1612eac82613d54565b613c23565b95945050505050565b606087878787878787604051602001612ed99796959493929190615c00565b6040516020818303038152906040529050979650505050505050565b612eff82826118a3565b6109eb57612f0c81613da7565b612f17836020613db9565b604051602001612f28929190615c87565b60408051601f198184030181529082905262461bcd60e51b82526108f89160040161580a565b6001600160a01b0381163b612fbb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f8565b600080516020615f1783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612ff383613f54565b6000825111806130005750805b1561096c5761300f8383613f94565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916130c9918a91906130c4908290615a7e565b61407f565b60c088015250949695505050505050565b6000806130e886868661416b565b90921495945050505050565b6060600084511161313f5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016108f8565b600061314a846142fa565b90506000613157866143e8565b905060008460405160200161316e91815260200190565b60405160208183030381529060405290506000805b845181101561393d5760008582815181106131a0576131a06159b4565b6020026020010151905084518311156132125760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016108f8565b826000036132b157805180516020918201206040516132609261323a92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6132ac5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016108f8565b6133a7565b80515160201161333757805180516020918201206040516132db9261323a92910190815260200190565b6132ac5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016108f8565b8051845160208087019190912082519190920120146133a75760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016108f8565b6133b360106001615ada565b8160200151510361356057845183036134f85760006133ef82602001516010815181106133e2576133e26159b4565b6020026020010151614502565b905060008151116134685760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016108f8565b600187516134769190615a7e565b83146134ea5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016108f8565b9650612e1795505050505050565b600085848151811061350c5761350c6159b4565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110613537576135376159b4565b6020026020010151905061354a81614625565b9550613557600186615ada565b9450505061392a565b6002816020015151036138d15760006135788261464a565b905060008160008151811061358f5761358f6159b4565b016020015160f81c905060006135a6600283615cfc565b6135b1906002615d1e565b905060006135c2848360ff1661466e565b905060006135d08a8961466e565b905060006135de83836146a4565b9050808351146136565760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016108f8565b60ff85166002148061366b575060ff85166003145b1561381157808251146136e65760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016108f8565b600061370288602001516001815181106133e2576133e26159b4565b9050600081511161377b5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016108f8565b60018d516137899190615a7e565b89146137fd5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016108f8565b9c50612e179b505050505050505050505050565b60ff85161580613824575060ff85166001145b15613863576138508760200151600181518110613843576138436159b4565b6020026020010151614625565b995061385c818a615ada565b98506138c6565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016108f8565b50505050505061392a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016108f8565b508061393581615a38565b915050613183565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016108f8565b606060008060006139a485614723565b9194509250905060018160018111156139bf576139bf6153e6565b14613a325760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016108f8565b8451613a3e8385615ada565b14613aa65760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016108f8565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081613abf5790505090506000845b8751811015613bad57600080613b326040518060400160405280858d60000151613b169190615a7e565b8152602001858d60200151613b2b9190615ada565b9052614723565b509150915060405180604001604052808383613b4e9190615ada565b8152602001848c60200151613b639190615ada565b815250858581518110613b7857613b786159b4565b6020908102919091010152613b8e600185615ada565b9350613b9a8183615ada565b613ba49084615ada565b92505050613aec565b50815295945050505050565b8051600090600103613bcd57506000919050565b8151601514613c1e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016108f8565b6107b8825b60006107b8825b6000602182600001511115613c815760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000806000613c8f85614723565b919450925090506000816001811115613caa57613caa6153e6565b14613cf75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000838660200151613d099190615ada565b80519091506020841015613d235760208490036101000a90045b9695505050505050565b603254610100900460ff16612cc85760405162461bcd60e51b81526004016108f890615bb5565b60408051808201909152600080825260208201526000825111613d895760405162461bcd60e51b81526004016108f890615d37565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613dc8836002615abb565b613dd3906002615ada565b6001600160401b03811115613dea57613dea615234565b6040519080825280601f01601f191660200182016040528015613e14576020820181803683370190505b509050600360fc1b81600081518110613e2f57613e2f6159b4565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613e5e57613e5e6159b4565b60200101906001600160f81b031916908160001a9053506000613e82846002615abb565b613e8d906001615ada565b90505b6001811115613f05576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613ec157613ec16159b4565b1a60f81b828281518110613ed757613ed76159b4565b60200101906001600160f81b031916908160001a90535060049490941c93613efe81615da7565b9050613e90565b508315612e175760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108f8565b613f5d81612f4e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613ffc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108f8565b600080846001600160a01b0316846040516140179190615b58565b600060405180830381855af49150503d8060008114614052576040519150601f19603f3d011682016040523d82523d6000602084013e614057565b606091505b5091509150612eb18282604051806060016040528060278152602001615f3760279139614de6565b60608161408d81601f615ada565b10156140ab5760405162461bcd60e51b81526004016108f890615dbe565b6140b58284615ada565b845110156140f95760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b6060821580156141185760405191506000825260208201604052614162565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614151578051835260209283019201614139565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161417c9190615ada565b614187906002615eca565b1161419157600080fd5b8360005b84600114614162576141a8600286615b14565b6001036142475760028482815181106141c3576141c36159b4565b6020026020010151836040516020016141e6929190918252602082015260400190565b60408051601f198184030181529082905261420091615b58565b602060405180830381855afa15801561421d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142409190615934565b91506142db565b60028285838151811061425c5761425c6159b4565b602002602001015160405160200161427e929190918252602082015260400190565b60408051601f198184030181529082905261429891615b58565b602060405180830381855afa1580156142b5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142d89190615934565b91505b6142e6600286615aa7565b9450806142f281615a38565b915050614195565b80516060906000816001600160401b0381111561431957614319615234565b60405190808252806020026020018201604052801561435e57816020015b60408051808201909152606080825260208201528152602001906001900390816143375790505b50905060005b828110156143e0576040518060400160405280868381518110614389576143896159b4565b602002602001015181526020016143b88784815181106143ab576143ab6159b4565b6020026020010151614dff565b8152508282815181106143cd576143cd6159b4565b6020908102919091010152600101614364565b509392505050565b805160609060006143fa826002615abb565b6001600160401b0381111561441157614411615234565b6040519080825280601f01601f19166020018201604052801561443b576020820181803683370190505b5090506000805b838110156144f85785818151811061445c5761445c6159b4565b6020910101516001600160f81b03198116925060041c60ff60f41b1683614484836002615abb565b81518110614494576144946159b4565b60200101906001600160f81b031916908160001a905350600f60f81b8216836144be836002615abb565b6144c9906001615ada565b815181106144d9576144d96159b4565b60200101906001600160f81b031916908160001a905350600101614442565b5090949350505050565b6060600080600061451285614723565b91945092509050600081600181111561452d5761452d6153e6565b146145a05760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016108f8565b6145aa8284615ada565b8551146146165760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016108f8565b612eb185602001518484614e0d565b606060208260000151106146415761463c82614502565b6107b8565b6107b882614ead565b60606107b861466983602001516000815181106133e2576133e26159b4565b6143e8565b60608251821061468d57506040805160208101909152600081526107b8565b612e17838384865161469f9190615a7e565b614ec3565b600080600083518551106146b95783516146bc565b84515b90505b808210801561471357508382815181106146db576146db6159b4565b602001015160f81c60f81b6001600160f81b031916858381518110614702576147026159b4565b01602001516001600160f81b031916145b156143e0578160010191506146bf565b60008060008084600001511161474b5760405162461bcd60e51b81526004016108f890615d37565b6020840151805160001a607f8111614770576000600160009450945094505050614ddf565b60b781116148cd576000614785608083615a7e565b9050808760000151116148055760405162461bcd60e51b815260206004820152604e6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016108f8565b6001838101516001600160f81b03191690821415806148325750600160ff1b6001600160f81b0319821610155b6148ba5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016108f8565b5060019550935060009250614ddf915050565b60bf8111614b0e5760006148e260b783615a7e565b9050808760000151116149655760405162461bcd60e51b81526020600482015260516024820152600080516020615ef783398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016108f8565b60018301516001600160f81b03191660008190036149ec5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016108f8565b600184015160088302610100031c60378111614a6f5760405162461bcd60e51b81526020600482015260486024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016108f8565b614a798184615ada565b895111614af15760405162461bcd60e51b815260206004820152604c6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016108f8565b614afc836001615ada565b9750955060009450614ddf9350505050565b60f78111614bb0576000614b2360c083615a7e565b905080876000015111614b9f5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016108f8565b600195509350849250614ddf915050565b6000614bbd60f783615a7e565b905080876000015111614c3c5760405162461bcd60e51b815260206004820152604d6024820152600080516020615ef783398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016108f8565b60018301516001600160f81b0319166000819003614cc15760405162461bcd60e51b81526020600482015260486024820152600080516020615ef783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016108f8565b600184015160088302610100031c60378111614d425760405162461bcd60e51b81526020600482015260466024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016108f8565b614d4c8184615ada565b895111614dc25760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016108f8565b614dcd836001615ada565b9750955060019450614ddf9350505050565b9193909250565b60608315614df5575081612e17565b612e178383614f51565b60606107b8612de683613d54565b60606000826001600160401b03811115614e2957614e29615234565b6040519080825280601f01601f191660200182016040528015614e53576020820181803683370190505b50905082600003614e65579050612e17565b6000614e718587615ada565b90506020820160005b85811015614e92578281015182820152602001614e7a565b85811115614ea1576000868301525b50919695505050505050565b60606107b8826020015160008460000151614e0d565b60608182601f011015614ee85760405162461bcd60e51b81526004016108f890615dbe565b828284011015614f0a5760405162461bcd60e51b81526004016108f890615dbe565b818301845110156140f95760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b815115614f615781518083602001fd5b8060405162461bcd60e51b81526004016108f8919061580a565b8280548282559060005260206000209060070160089004810192821561501a5791602002820160005b83821115614fe857835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614fa4565b80156150185782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614fe8565b505b5061502692915061502a565b5090565b5b80821115615026576000815560010161502b565b6001600160e01b031981168114610acb57600080fd5b60006020828403121561506757600080fd5b8135612e178161503f565b80356001600160401b038116811461508957600080fd5b919050565b6000602082840312156150a057600080fd5b612e1782615072565b803563ffffffff8116811461508957600080fd5b80356001600160a01b038116811461508957600080fd5b60008083601f8401126150e657600080fd5b5081356001600160401b038111156150fd57600080fd5b60208301915083602082850101111561212c57600080fd5b6000806000806060858703121561512b57600080fd5b615134856150a9565b9350615142602086016150bd565b925060408501356001600160401b0381111561515d57600080fd5b615169878288016150d4565b95989497509550505050565b60006020828403121561518757600080fd5b612e17826150a9565b6000602082840312156151a257600080fd5b5035919050565b600080604083850312156151bc57600080fd5b823591506151cc602084016150bd565b90509250929050565b6000602082840312156151e757600080fd5b612e17826150bd565b60008083601f84011261520257600080fd5b5081356001600160401b0381111561521957600080fd5b6020830191508360208260051b850101111561212c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561527257615272615234565b604052919050565b600082601f83011261528b57600080fd5b81356001600160401b038111156152a4576152a4615234565b6152b7601f8201601f191660200161524a565b8181528460208386010111156152cc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561530a57600080fd5b6001600160401b03808d35111561532057600080fd5b61532d8e8e358f016150d4565b909c509a5060208d013581101561534357600080fd5b6153538e60208f01358f016150d4565b909a50985060408d013581101561536957600080fd5b6153798e60408f01358f016151f0565b909850965060608d0135955060808d013581101561539657600080fd5b6153a68e60808f01358f016151f0565b909550935060a08d01358110156153bc57600080fd5b506153cd8d60a08e01358e0161527a565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b602081016003831061541e57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561543757600080fd5b615440836150bd565b915060208301356001600160401b0381111561545b57600080fd5b6154678582860161527a565b9150509250929050565b60006001600160401b0382111561548a5761548a615234565b5060051b60200190565b600082601f8301126154a557600080fd5b813560206154ba6154b583615471565b61524a565b82815260059290921b840181019181810190868411156154d957600080fd5b8286015b848110156154fb576154ee816150bd565b83529183019183016154dd565b509695505050505050565b8015158114610acb57600080fd5b803561508981615506565b60008060008060008060c0878903121561553857600080fd5b86356001600160401b038082111561554f57600080fd5b818901915089601f83011261556357600080fd5b813560206155736154b583615471565b82815260059290921b8401810191818101908d84111561559257600080fd5b948201945b838610156155b7576155a8866150a9565b82529482019490820190615597565b9a50508a0135925050808211156155cd57600080fd5b6155d98a838b01615494565b965060408901359150808211156155ef57600080fd5b506155fc89828a01615494565b94505061560b606088016150bd565b9250615619608088016150bd565b915061562760a08801615514565b90509295509295509295565b6000806000806060858703121561564957600080fd5b615652856150a9565b93506020850135925060408501356001600160401b0381111561515d57600080fd5b60008060008060008060006080888a03121561568f57600080fd5b61569888615072565b965060208801356001600160401b03808211156156b457600080fd5b6156c08b838c016150d4565b909850965060408a01359150808211156156d957600080fd5b6156e58b838c016151f0565b909650945060608a01359150808211156156fe57600080fd5b5061570b8a828b016151f0565b989b979a50959850939692959293505050565b60008060006060848603121561573357600080fd5b61573c846150a9565b925061574a602085016150bd565b9150615758604085016150bd565b90509250925092565b60006020828403121561577357600080fd5b8135612e1781615506565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b038083168181036157b0576157b061577e565b6001019392505050565b60005b838110156157d55781810151838201526020016157bd565b50506000910152565b600081518084526157f68160208601602086016157ba565b601f01601f19169290920160200192915050565b602081526000612e1760208301846157de565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000806040838503121561591d57600080fd5b61592683615072565b91506151cc60208401615072565b60006020828403121561594657600080fd5b5051919050565b600061595b6154b584615471565b80848252602080830192508560051b85013681111561597957600080fd5b855b81811015614ea15780356001600160401b0381111561599a5760008081fd5b6159a636828a0161527a565b86525093820193820161597b565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff8083168181036157b0576157b061577e565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b600060018201615a4a57615a4a61577e565b5060010190565b8183823760009101908152919050565b600060208284031215615a7357600080fd5b8151612e1781615506565b818103818111156107b8576107b861577e565b634e487b7160e01b600052601260045260246000fd5b600082615ab657615ab6615a91565b500490565b6000816000190483118215151615615ad557615ad561577e565b500290565b808201808211156107b8576107b861577e565b6001600160401b03828116828216039080821115615b0d57615b0d61577e565b5092915050565b600082615b2357615b23615a91565b500690565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612eb1908301846157de565b60008251615b6a8184602087016157ba565b9190910192915050565b600060208284031215615b8657600080fd5b8151612e178161503f565b604081526000615ba460408301856157de565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615c748160458501602087016157ba565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615cbf8160178501602088016157ba565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615cf08160288401602088016157ba565b01602801949350505050565b600060ff831680615d0f57615d0f615a91565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b861577e565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615db657615db661577e565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615e21578160001904821115615e0757615e0761577e565b80851615615e1457918102915b93841c9390800290615deb565b509250929050565b600082615e38575060016107b8565b81615e45575060006107b8565b8160018114615e5b5760028114615e6557615e81565b60019150506107b8565b60ff841115615e7657615e7661577e565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615ea4575081810a6107b8565b615eae8383615de6565b8060001904821115615ec257615ec261577e565b029392505050565b6000612e178383615e2956fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212209920968ca2549dc136114884cdd68cb7192890d709c1df8ba30e5a5f0825170164736f6c63430008100033", + "object": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e8565b603254610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60325460ff9081161015620000e6576032805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615f7c62000120600039600081816109f901528181610a3901528181610da601528181610de60152610e750152615f7c6000f3fe6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004615023565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a366004615057565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b53660046150de565b6107be565b3480156102c657600080fd5b506102da6102d536600461513e565b6108c4565b005b3480156102e857600080fd5b5061028c6102f7366004615159565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615f2783398151915281565b34801561033a57600080fd5b506102da610349366004615172565b610947565b34801561035a57600080fd5b506102da610369366004615172565b610971565b34801561037a57600080fd5b506102da61038936600461519e565b6109ef565b34801561039a57600080fd5b5061024a6103a936600461513e565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d93660046152b2565b610ace565b3480156103ea57600080fd5b5061040e6103f9366004615159565b60076020526000908152604090205460ff1681565b60405161025691906153c5565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da6104583660046153ed565b610d9c565b34801561046957600080fd5b5061028c610e68565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b936600461513e565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da6105073660046154e8565b610f1b565b34801561051857600080fd5b506102da61121e565b34801561052d57600080fd5b5061028c61053c3660046150de565b611303565b34801561054d57600080fd5b5061028c61055c3660046155fc565b611384565b34801561056d57600080fd5b506104d461057c36600461513e565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b236600461563d565b6113dd565b3480156105c357600080fd5b5061028c6105d2366004615159565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff3660046156e7565b6116f2565b34801561061057600080fd5b5061024a61061f366004615172565b6118a3565b34801561063057600080fd5b506102da6118ce565b34801561064557600080fd5b506102da61065436600461513e565b6119b3565b34801561066557600080fd5b50610679610674366004615159565b611a30565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be3660046155fc565b611a6a565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da610716366004615172565b611ac3565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b36600461572a565b611ae8565b34801561075c57600080fd5b5061028c600080516020615ea083398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107e257604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036108085760405163b0747d8160e01b815260040160405180910390fd5b600080610821876001600160a01b0388165b8787611b63565b600280546001600160401b0390811660009081526001602052604081208490558254949650929450849316916108568361575d565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b291906157d3565b60405180910390a39695505050505050565b6108dc600080516020615f27833981519152336118a3565b6109015760405162461bcd60e51b81526004016108f8906157e6565b60405180910390fd5b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096281611bda565b61096c8383611be4565b505050565b6001600160a01b03811633146109e15760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108f8565b6109eb8282611c6a565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a375760405162461bcd60e51b81526004016108f89061583b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a80600080516020615ee0833981519152546001600160a01b031690565b6001600160a01b031614610aa65760405162461bcd60e51b81526004016108f890615887565b610aaf81611cd1565b60408051600080825260208201909252610acb91839190611d05565b50565b610ad6611e70565b600080610ae38b8b611ec9565b91509150610af48260400151612133565b610b018260400151612262565b6000808e8e810190610b1391906158d3565b91509150610b258285604001516122be565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb491906158fd565b905080610bfb5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016108f8565b6000610c448b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a0151869150889088906124f2565b905080610c935760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016108f8565b505050506000610cf8878790610ca99190615916565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026126fc565b9050818114610d415760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b50610d8382828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612aaf92505050565b5050610d8f6001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610de45760405162461bcd60e51b81526004016108f89061583b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e2d600080516020615ee0833981519152546001600160a01b031690565b6001600160a01b031614610e535760405162461bcd60e51b81526004016108f890615887565b610e5c82611cd1565b6109eb82826001611d05565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f085760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f8565b50600080516020615ee083398151915290565b603254610100900460ff1615808015610f3b5750603254600160ff909116105b80610f555750303b158015610f55575060325460ff166001145b610fb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f8565b6032805460ff191660011790558015610fdb576032805461ff0019166101001790555b610fe3612c5d565b610feb612c8e565b611003600080516020615f2783398151915284611be4565b61101b600080516020615ea083398151915285611be4565b611026600085611be4565b61102e612c8e565b855187511461103c57600080fd5b845187511461104a57600080fd5b865161105d9060039060208a0190614f49565b5060005b60035463ffffffff821610156111b157868163ffffffff16815181106110895761108961597d565b60200260200101516004600060038463ffffffff16815481106110ae576110ae61597d565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112a5761112a61597d565b60200260200101516005600060038463ffffffff168154811061114f5761114f61597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a981615993565b915050611061565b506000805483151560ff19918216179091556008805490911660011790558015611215576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b611236600080516020615f27833981519152336118a3565b6112525760405162461bcd60e51b81526004016108f8906157e6565b60005b60035463ffffffff821610156112d75760006006600060038463ffffffff16815481106112845761128461597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112cf81615993565b915050611255565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661132757604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361134d5760405163b0747d8160e01b815260040160405180910390fd5b600080611363876001600160a01b03881661081a565b6002805492945090925082916001600160401b03169060006108568361575d565b6000805460ff166113a857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036113ce5760405163b0747d8160e01b815260040160405180910390fd5b60008061082187878787611b63565b6113e5611e70565b6000806113f28888611ec9565b915091506114038260400151612133565b6114108260400151612262565b61141e8983604001516122be565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115d05760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa15801561150b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152f91906158fd565b905060008190036115825760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016108f8565b6115b661158f898b615916565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612cb5565b600083815260096020526040902081905592506115e29050565b60008181526009602052604090205491505b6000846020015160016040516020016116109291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061165882856116538a8c615916565b612dac565b90508481146116a15760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b505050506116e682828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612aaf92505050565b50506112156001603355565b61170a600080516020615ea0833981519152336118a3565b6117265760405162461bcd60e51b81526004016108f8906159ac565b6000805b600354811015611792578463ffffffff166003828154811061174e5761174e61597d565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117805760019150611792565b8061178a81615a01565b91505061172a565b508061181b57600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118e6600080516020615f27833981519152336118a3565b6119025760405162461bcd60e51b81526004016108f8906157e6565b60005b60035463ffffffff821610156119875760016006600060038463ffffffff16815481106119345761193461597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff19169115159190911790558061197f81615993565b915050611905565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119cb600080516020615f27833981519152336118a3565b6119e75760405162461bcd60e51b81526004016108f8906157e6565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a4057600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a8e57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff1603611ab45760405163b0747d8160e01b815260040160405180910390fd5b60008061136387878787611b63565b600082815260c96020526040902060010154611ade81611bda565b61096c8383611c6a565b611b00600080516020615f27833981519152336118a3565b611b1c5760405162461bcd60e51b81526004016108f8906157e6565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bc69360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612e4892505050565b805160208201209097909650945050505050565b610acb8133612e83565b611bee82826118a3565b6109eb57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c263390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c7482826118a3565b156109eb57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611ce9600080516020615ea0833981519152336118a3565b610acb5760405162461bcd60e51b81526004016108f8906159ac565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d385761096c83612edc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d92575060408051601f3d908101601f19168201909252611d8f918101906158fd565b60015b611df55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f8565b600080516020615ee08339815191528114611e645760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f8565b5061096c838383612f78565b600260335403611ec25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108f8565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f4685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612fa392505050565b905060008585604051611f5a929190615a1a565b60405190819003902090506000808281526007602052604090205460ff166002811115611f8957611f896153af565b14611fd65760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016108f8565b46826080015163ffffffff161461201e5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016108f8565b600854825160ff9081169116146120685760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016108f8565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120b3575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121265760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016108f8565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b03166121995760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122169190615a2a565b610acb5760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016108f8565b63ffffffff811660009081526006602052604090205460ff1615610acb5760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016108f8565b63ffffffff81166000908152600460205260409020546001600160a01b03166123245760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b191906158fd565b6000036124005760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016108f8565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248a91906158fd565b6124949042615a47565b9050607881101561096c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016108f8565b6000806124fe83613068565b9050600081856001600160401b03161061251957601b61251c565b60075b60ff169050600082866001600160401b03161061255857612000612549846001600160401b038916615a47565b6125539190615a70565b61256d565b61256d6120006001600160401b038816615a70565b90506000866001600160401b0316886001600160401b0316036125ac5750600b61259981610200615a84565b6125a590610183615aa3565b90506126e1565b6120006125b9888a615ab6565b6001600160401b03161161261b5750600b6125d5816020615a84565b6125e0906006615aa3565b90506125f76120006001600160401b038916615add565b61260361200083615a84565b61260d9190615aa3565b905061259981610200615a84565b876001600160401b0316876001600160401b031610156126995750600b82612644826020615a84565b61264e9190615aa3565b905061265b816002615a84565b612666906000615aa3565b905081612677630100000083615a84565b6126819190615aa3565b905061268e816002615a84565b6125e0906001615aa3565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016108f8565b6126ed8b828c8c6130a8565b9b9a5050505050505050505050565b60008061270a878a8a6130c2565b90506000816000815181106127215761272161597d565b01602001516001600160f81b03191690506000600160f81b8214806127535750600160f91b6001600160f81b03198316145b15612760575060016127c5565b600360fe1b6001600160f81b031983161061277d575060006127c5565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016108f8565b6000602084019050600060405180604001604052808487516127e79190615a47565b81526020016127f68585615aa3565b90529050600061280582613962565b905080516004146128515760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016108f8565b6000612876826003815181106128695761286961597d565b6020026020010151613962565b905080518c106128c85760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016108f8565b60006128df828e815181106128695761286961597d565b9050805160031461293d5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016108f8565b6000612962826000815181106129555761295561597d565b6020026020010151613b87565b90508c6001600160a01b0316816001600160a01b0316146129d55760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016108f8565b60006129ed836001815181106128695761286961597d565b90508c612a1382600081518110612a0657612a0661597d565b6020026020010151613bf1565b14612a765760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016108f8565b612a98818d81518110612a8b57612a8b61597d565b6020026020010151613bf8565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612ade93929190615af1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612b309190615b21565b6000604051808303816000865af19150503d8060008114612b6d576040519150601f19603f3d011682016040523d82523d6000602084013e612b72565b606091505b5080519195509350600092506020039050612bb457600082806020019051810190612b9d9190615b3d565b6001600160e01b031916631dee306b60e11b149150505b828015612bbe5750805b15612be1576000858152600760205260409020805460ff19166002179055612bfb565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612c46929190615b5a565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612c845760405162461bcd60e51b81526004016108f890615b7e565b612c8c613cfb565b565b603254610100900460ff16612c8c5760405162461bcd60e51b81526004016108f890615b7e565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612d1a82604051602001612d0491815260200190565b60405160208183030381529060405287866130c2565b90506000815111612d665760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016108f8565b6000612d79612d7483613d22565b613962565b90508051600414612d8957600080fd5b612d9f81600281518110612a0657612a0661597d565b93505050505b9392505050565b600080612ddb85604051602001612dc591815260200190565b60405160208183030381529060405284866130c2565b90506000815111612e2e5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016108f8565b612e3f612e3a82613d22565b613bf1565b95945050505050565b606087878787878787604051602001612e679796959493929190615bc9565b6040516020818303038152906040529050979650505050505050565b612e8d82826118a3565b6109eb57612e9a81613d75565b612ea5836020613d87565b604051602001612eb6929190615c50565b60408051601f198184030181529082905262461bcd60e51b82526108f8916004016157d3565b6001600160a01b0381163b612f495760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f8565b600080516020615ee083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612f8183613f22565b600082511180612f8e5750805b1561096c57612f9d8383613f62565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091613057918a9190613052908290615a47565b61404d565b60c088015250949695505050505050565b60008163ffffffff166001036130825750625ec000919050565b8163ffffffff1660050361309a5750624f4000919050565b50600019919050565b919050565b6000806130b6868686614139565b90921495945050505050565b6060600084511161310d5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016108f8565b6000613118846142c8565b90506000613125866143b6565b905060008460405160200161313c91815260200190565b60405160208183030381529060405290506000805b845181101561390b57600085828151811061316e5761316e61597d565b6020026020010151905084518311156131e05760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016108f8565b8260000361327f578051805160209182012060405161322e9261320892910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61327a5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016108f8565b613375565b80515160201161330557805180516020918201206040516132a99261320892910190815260200190565b61327a5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016108f8565b8051845160208087019190912082519190920120146133755760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016108f8565b61338160106001615aa3565b8160200151510361352e57845183036134c65760006133bd82602001516010815181106133b0576133b061597d565b60200260200101516144d0565b905060008151116134365760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016108f8565b600187516134449190615a47565b83146134b85760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016108f8565b9650612da595505050505050565b60008584815181106134da576134da61597d565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106135055761350561597d565b60200260200101519050613518816145f3565b9550613525600186615aa3565b945050506138f8565b60028160200151510361389f57600061354682614618565b905060008160008151811061355d5761355d61597d565b016020015160f81c90506000613574600283615cc5565b61357f906002615ce7565b90506000613590848360ff1661463c565b9050600061359e8a8961463c565b905060006135ac8383614672565b9050808351146136245760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016108f8565b60ff851660021480613639575060ff85166003145b156137df57808251146136b45760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016108f8565b60006136d088602001516001815181106133b0576133b061597d565b905060008151116137495760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016108f8565b60018d516137579190615a47565b89146137cb5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016108f8565b9c50612da59b505050505050505050505050565b60ff851615806137f2575060ff85166001145b156138315761381e87602001516001815181106138115761381161597d565b60200260200101516145f3565b995061382a818a615aa3565b9850613894565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016108f8565b5050505050506138f8565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016108f8565b508061390381615a01565b915050613151565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016108f8565b60606000806000613972856146f1565b91945092509050600181600181111561398d5761398d6153af565b14613a005760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016108f8565b8451613a0c8385615aa3565b14613a745760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016108f8565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081613a8d5790505090506000845b8751811015613b7b57600080613b006040518060400160405280858d60000151613ae49190615a47565b8152602001858d60200151613af99190615aa3565b90526146f1565b509150915060405180604001604052808383613b1c9190615aa3565b8152602001848c60200151613b319190615aa3565b815250858581518110613b4657613b4661597d565b6020908102919091010152613b5c600185615aa3565b9350613b688183615aa3565b613b729084615aa3565b92505050613aba565b50815295945050505050565b8051600090600103613b9b57506000919050565b8151601514613bec5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016108f8565b6107b8825b60006107b8825b6000602182600001511115613c4f5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000806000613c5d856146f1565b919450925090506000816001811115613c7857613c786153af565b14613cc55760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000838660200151613cd79190615aa3565b80519091506020841015613cf15760208490036101000a90045b9695505050505050565b603254610100900460ff16612c565760405162461bcd60e51b81526004016108f890615b7e565b60408051808201909152600080825260208201526000825111613d575760405162461bcd60e51b81526004016108f890615d00565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613d96836002615a84565b613da1906002615aa3565b6001600160401b03811115613db857613db86151fd565b6040519080825280601f01601f191660200182016040528015613de2576020820181803683370190505b509050600360fc1b81600081518110613dfd57613dfd61597d565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613e2c57613e2c61597d565b60200101906001600160f81b031916908160001a9053506000613e50846002615a84565b613e5b906001615aa3565b90505b6001811115613ed3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613e8f57613e8f61597d565b1a60f81b828281518110613ea557613ea561597d565b60200101906001600160f81b031916908160001a90535060049490941c93613ecc81615d70565b9050613e5e565b508315612da55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108f8565b613f2b81612edc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613fca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108f8565b600080846001600160a01b031684604051613fe59190615b21565b600060405180830381855af49150503d8060008114614020576040519150601f19603f3d011682016040523d82523d6000602084013e614025565b606091505b5091509150612e3f8282604051806060016040528060278152602001615f0060279139614db4565b60608161405b81601f615aa3565b10156140795760405162461bcd60e51b81526004016108f890615d87565b6140838284615aa3565b845110156140c75760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b6060821580156140e65760405191506000825260208201604052614130565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561411f578051835260209283019201614107565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161414a9190615aa3565b614155906002615e93565b1161415f57600080fd5b8360005b8460011461413057614176600286615add565b6001036142155760028482815181106141915761419161597d565b6020026020010151836040516020016141b4929190918252602082015260400190565b60408051601f19818403018152908290526141ce91615b21565b602060405180830381855afa1580156141eb573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061420e91906158fd565b91506142a9565b60028285838151811061422a5761422a61597d565b602002602001015160405160200161424c929190918252602082015260400190565b60408051601f198184030181529082905261426691615b21565b602060405180830381855afa158015614283573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142a691906158fd565b91505b6142b4600286615a70565b9450806142c081615a01565b915050614163565b80516060906000816001600160401b038111156142e7576142e76151fd565b60405190808252806020026020018201604052801561432c57816020015b60408051808201909152606080825260208201528152602001906001900390816143055790505b50905060005b828110156143ae5760405180604001604052808683815181106143575761435761597d565b602002602001015181526020016143868784815181106143795761437961597d565b6020026020010151614dcd565b81525082828151811061439b5761439b61597d565b6020908102919091010152600101614332565b509392505050565b805160609060006143c8826002615a84565b6001600160401b038111156143df576143df6151fd565b6040519080825280601f01601f191660200182016040528015614409576020820181803683370190505b5090506000805b838110156144c65785818151811061442a5761442a61597d565b6020910101516001600160f81b03198116925060041c60ff60f41b1683614452836002615a84565b815181106144625761446261597d565b60200101906001600160f81b031916908160001a905350600f60f81b82168361448c836002615a84565b614497906001615aa3565b815181106144a7576144a761597d565b60200101906001600160f81b031916908160001a905350600101614410565b5090949350505050565b606060008060006144e0856146f1565b9194509250905060008160018111156144fb576144fb6153af565b1461456e5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016108f8565b6145788284615aa3565b8551146145e45760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016108f8565b612e3f85602001518484614ddb565b6060602082600001511061460f5761460a826144d0565b6107b8565b6107b882614e7b565b60606107b861463783602001516000815181106133b0576133b061597d565b6143b6565b60608251821061465b57506040805160208101909152600081526107b8565b612da5838384865161466d9190615a47565b614e91565b6000806000835185511061468757835161468a565b84515b90505b80821080156146e157508382815181106146a9576146a961597d565b602001015160f81c60f81b6001600160f81b0319168583815181106146d0576146d061597d565b01602001516001600160f81b031916145b156143ae5781600101915061468d565b6000806000808460000151116147195760405162461bcd60e51b81526004016108f890615d00565b6020840151805160001a607f811161473e576000600160009450945094505050614dad565b60b7811161489b576000614753608083615a47565b9050808760000151116147d35760405162461bcd60e51b815260206004820152604e6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016108f8565b6001838101516001600160f81b03191690821415806148005750600160ff1b6001600160f81b0319821610155b6148885760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016108f8565b5060019550935060009250614dad915050565b60bf8111614adc5760006148b060b783615a47565b9050808760000151116149335760405162461bcd60e51b81526020600482015260516024820152600080516020615ec083398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016108f8565b60018301516001600160f81b03191660008190036149ba5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016108f8565b600184015160088302610100031c60378111614a3d5760405162461bcd60e51b81526020600482015260486024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016108f8565b614a478184615aa3565b895111614abf5760405162461bcd60e51b815260206004820152604c6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016108f8565b614aca836001615aa3565b9750955060009450614dad9350505050565b60f78111614b7e576000614af160c083615a47565b905080876000015111614b6d5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016108f8565b600195509350849250614dad915050565b6000614b8b60f783615a47565b905080876000015111614c0a5760405162461bcd60e51b815260206004820152604d6024820152600080516020615ec083398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016108f8565b60018301516001600160f81b0319166000819003614c8f5760405162461bcd60e51b81526020600482015260486024820152600080516020615ec083398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016108f8565b600184015160088302610100031c60378111614d105760405162461bcd60e51b81526020600482015260466024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016108f8565b614d1a8184615aa3565b895111614d905760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016108f8565b614d9b836001615aa3565b9750955060019450614dad9350505050565b9193909250565b60608315614dc3575081612da5565b612da58383614f1f565b60606107b8612d7483613d22565b60606000826001600160401b03811115614df757614df76151fd565b6040519080825280601f01601f191660200182016040528015614e21576020820181803683370190505b50905082600003614e33579050612da5565b6000614e3f8587615aa3565b90506020820160005b85811015614e60578281015182820152602001614e48565b85811115614e6f576000868301525b50919695505050505050565b60606107b8826020015160008460000151614ddb565b60608182601f011015614eb65760405162461bcd60e51b81526004016108f890615d87565b828284011015614ed85760405162461bcd60e51b81526004016108f890615d87565b818301845110156140c75760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b815115614f2f5781518083602001fd5b8060405162461bcd60e51b81526004016108f891906157d3565b82805482825590600052602060002090600701600890048101928215614fe85791602002820160005b83821115614fb657835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614f72565b8015614fe65782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614fb6565b505b50614ff4929150614ff8565b5090565b5b80821115614ff45760008155600101614ff9565b6001600160e01b031981168114610acb57600080fd5b60006020828403121561503557600080fd5b8135612da58161500d565b80356001600160401b03811681146130a357600080fd5b60006020828403121561506957600080fd5b612da582615040565b803563ffffffff811681146130a357600080fd5b80356001600160a01b03811681146130a357600080fd5b60008083601f8401126150af57600080fd5b5081356001600160401b038111156150c657600080fd5b60208301915083602082850101111561212c57600080fd5b600080600080606085870312156150f457600080fd5b6150fd85615072565b935061510b60208601615086565b925060408501356001600160401b0381111561512657600080fd5b6151328782880161509d565b95989497509550505050565b60006020828403121561515057600080fd5b612da582615072565b60006020828403121561516b57600080fd5b5035919050565b6000806040838503121561518557600080fd5b8235915061519560208401615086565b90509250929050565b6000602082840312156151b057600080fd5b612da582615086565b60008083601f8401126151cb57600080fd5b5081356001600160401b038111156151e257600080fd5b6020830191508360208260051b850101111561212c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561523b5761523b6151fd565b604052919050565b600082601f83011261525457600080fd5b81356001600160401b0381111561526d5761526d6151fd565b615280601f8201601f1916602001615213565b81815284602083860101111561529557600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156152d357600080fd5b6001600160401b03808d3511156152e957600080fd5b6152f68e8e358f0161509d565b909c509a5060208d013581101561530c57600080fd5b61531c8e60208f01358f0161509d565b909a50985060408d013581101561533257600080fd5b6153428e60408f01358f016151b9565b909850965060608d0135955060808d013581101561535f57600080fd5b61536f8e60808f01358f016151b9565b909550935060a08d013581101561538557600080fd5b506153968d60a08e01358e01615243565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b60208101600383106153e757634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561540057600080fd5b61540983615086565b915060208301356001600160401b0381111561542457600080fd5b61543085828601615243565b9150509250929050565b60006001600160401b03821115615453576154536151fd565b5060051b60200190565b600082601f83011261546e57600080fd5b8135602061548361547e8361543a565b615213565b82815260059290921b840181019181810190868411156154a257600080fd5b8286015b848110156154c4576154b781615086565b83529183019183016154a6565b509695505050505050565b8015158114610acb57600080fd5b80356130a3816154cf565b60008060008060008060c0878903121561550157600080fd5b86356001600160401b038082111561551857600080fd5b818901915089601f83011261552c57600080fd5b8135602061553c61547e8361543a565b82815260059290921b8401810191818101908d84111561555b57600080fd5b948201945b838610156155805761557186615072565b82529482019490820190615560565b9a50508a01359250508082111561559657600080fd5b6155a28a838b0161545d565b965060408901359150808211156155b857600080fd5b506155c589828a0161545d565b9450506155d460608801615086565b92506155e260808801615086565b91506155f060a088016154dd565b90509295509295509295565b6000806000806060858703121561561257600080fd5b61561b85615072565b93506020850135925060408501356001600160401b0381111561512657600080fd5b60008060008060008060006080888a03121561565857600080fd5b61566188615040565b965060208801356001600160401b038082111561567d57600080fd5b6156898b838c0161509d565b909850965060408a01359150808211156156a257600080fd5b6156ae8b838c016151b9565b909650945060608a01359150808211156156c757600080fd5b506156d48a828b016151b9565b989b979a50959850939692959293505050565b6000806000606084860312156156fc57600080fd5b61570584615072565b925061571360208501615086565b915061572160408501615086565b90509250925092565b60006020828403121561573c57600080fd5b8135612da5816154cf565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681810361577957615779615747565b6001019392505050565b60005b8381101561579e578181015183820152602001615786565b50506000910152565b600081518084526157bf816020860160208601615783565b601f01601f19169290920160200192915050565b602081526000612da560208301846157a7565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600080604083850312156158e657600080fd5b6158ef83615040565b915061519560208401615040565b60006020828403121561590f57600080fd5b5051919050565b600061592461547e8461543a565b80848252602080830192508560051b85013681111561594257600080fd5b855b81811015614e6f5780356001600160401b038111156159635760008081fd5b61596f36828a01615243565b865250938201938201615944565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff80831681810361577957615779615747565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b600060018201615a1357615a13615747565b5060010190565b8183823760009101908152919050565b600060208284031215615a3c57600080fd5b8151612da5816154cf565b818103818111156107b8576107b8615747565b634e487b7160e01b600052601260045260246000fd5b600082615a7f57615a7f615a5a565b500490565b6000816000190483118215151615615a9e57615a9e615747565b500290565b808201808211156107b8576107b8615747565b6001600160401b03828116828216039080821115615ad657615ad6615747565b5092915050565b600082615aec57615aec615a5a565b500690565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612e3f908301846157a7565b60008251615b33818460208701615783565b9190910192915050565b600060208284031215615b4f57600080fd5b8151612da58161500d565b604081526000615b6d60408301856157a7565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615c3d816045850160208701615783565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615c88816017850160208801615783565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615cb9816028840160208801615783565b01602801949350505050565b600060ff831680615cd857615cd8615a5a565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b8615747565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615d7f57615d7f615747565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615dea578160001904821115615dd057615dd0615747565b80851615615ddd57918102915b93841c9390800290615db4565b509250929050565b600082615e01575060016107b8565b81615e0e575060006107b8565b8160018114615e245760028114615e2e57615e4a565b60019150506107b8565b60ff841115615e3f57615e3f615747565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615e6d575081810a6107b8565b615e778383615daf565b8060001904821115615e8b57615e8b615747565b029392505050565b6000612da58383615df256fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220d1e681f8339d20f7fcc3322c41e55c3dcb7cdb430c94d44ac0291a618458e04664736f6c63430008100033", "sourceMap": "698:1544:102:-:0;;;1332:4:38;1289:48;;987:53:102;;;;;;;;;-1:-1:-1;1011:22:102;:20;:22::i;:::-;698:1544;;5928:279:37;5996:13;;;;;;;5995:14;5987:66;;;;-1:-1:-1;;;5987:66:37;;216:2:146;5987:66:37;;;198:21:146;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:146;;;338:37;392:19;;5987:66:37;;;;;;;;6067:12;;6082:15;6067:12;;;:30;6063:138;;;6113:12;:30;;-1:-1:-1;;6113:30:37;6128:15;6113:30;;;;;;6162:28;;564:36:146;;;6162:28:37;;552:2:146;537:18;6162:28:37;;;;;;;6063:138;5928:279::o;422:184:146:-;698:1544:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "linkReferences": { - "src/libraries/BeaconChainForks.sol": { - "BeaconChainForks": [ - { - "start": 9778, - "length": 20 - } - ] - } - } + "linkReferences": {} }, "deployedBytecode": { - "object": "0x6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004615055565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a36600461508e565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b5366004615115565b6107be565b3480156102c657600080fd5b506102da6102d5366004615175565b6108c4565b005b3480156102e857600080fd5b5061028c6102f7366004615190565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615f5e83398151915281565b34801561033a57600080fd5b506102da6103493660046151a9565b610947565b34801561035a57600080fd5b506102da6103693660046151a9565b610971565b34801561037a57600080fd5b506102da6103893660046151d5565b6109ef565b34801561039a57600080fd5b5061024a6103a9366004615175565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d93660046152e9565b610ace565b3480156103ea57600080fd5b5061040e6103f9366004615190565b60076020526000908152604090205460ff1681565b60405161025691906153fc565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da610458366004615424565b610d9c565b34801561046957600080fd5b5061028c610e68565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b9366004615175565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da61050736600461551f565b610f1b565b34801561051857600080fd5b506102da61121e565b34801561052d57600080fd5b5061028c61053c366004615115565b611303565b34801561054d57600080fd5b5061028c61055c366004615633565b611384565b34801561056d57600080fd5b506104d461057c366004615175565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b2366004615674565b6113dd565b3480156105c357600080fd5b5061028c6105d2366004615190565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff36600461571e565b6116f2565b34801561061057600080fd5b5061024a61061f3660046151a9565b6118a3565b34801561063057600080fd5b506102da6118ce565b34801561064557600080fd5b506102da610654366004615175565b6119b3565b34801561066557600080fd5b50610679610674366004615190565b611a30565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be366004615633565b611a6a565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da6107163660046151a9565b611ac3565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b366004615761565b611ae8565b34801561075c57600080fd5b5061028c600080516020615ed783398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107e257604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036108085760405163b0747d8160e01b815260040160405180910390fd5b600080610821876001600160a01b0388165b8787611b63565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161085683615794565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b2919061580a565b60405180910390a39695505050505050565b6108dc600080516020615f5e833981519152336118a3565b6109015760405162461bcd60e51b81526004016108f89061581d565b60405180910390fd5b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096281611bda565b61096c8383611be4565b505050565b6001600160a01b03811633146109e15760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108f8565b6109eb8282611c6a565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a375760405162461bcd60e51b81526004016108f890615872565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a80600080516020615f17833981519152546001600160a01b031690565b6001600160a01b031614610aa65760405162461bcd60e51b81526004016108f8906158be565b610aaf81611cd1565b60408051600080825260208201909252610acb91839190611d05565b50565b610ad6611e70565b600080610ae38b8b611ec9565b91509150610af48260400151612133565b610b018260400151612262565b6000808e8e810190610b13919061590a565b91509150610b258285604001516122be565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190615934565b905080610bfb5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016108f8565b6000610c448b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a0151869150889088906124f2565b905080610c935760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016108f8565b505050506000610cf8878790610ca9919061594d565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261276e565b9050818114610d415760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b50610d8382828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b2192505050565b5050610d8f6001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610de45760405162461bcd60e51b81526004016108f890615872565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e2d600080516020615f17833981519152546001600160a01b031690565b6001600160a01b031614610e535760405162461bcd60e51b81526004016108f8906158be565b610e5c82611cd1565b6109eb82826001611d05565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f085760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f8565b50600080516020615f1783398151915290565b603254610100900460ff1615808015610f3b5750603254600160ff909116105b80610f555750303b158015610f55575060325460ff166001145b610fb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f8565b6032805460ff191660011790558015610fdb576032805461ff0019166101001790555b610fe3612ccf565b610feb612d00565b611003600080516020615f5e83398151915284611be4565b61101b600080516020615ed783398151915285611be4565b611026600085611be4565b61102e612d00565b855187511461103c57600080fd5b845187511461104a57600080fd5b865161105d9060039060208a0190614f7b565b5060005b60035463ffffffff821610156111b157868163ffffffff1681518110611089576110896159b4565b60200260200101516004600060038463ffffffff16815481106110ae576110ae6159b4565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112a5761112a6159b4565b60200260200101516005600060038463ffffffff168154811061114f5761114f6159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a9816159ca565b915050611061565b506000805483151560ff19918216179091556008805490911660011790558015611215576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b611236600080516020615f5e833981519152336118a3565b6112525760405162461bcd60e51b81526004016108f89061581d565b60005b60035463ffffffff821610156112d75760006006600060038463ffffffff1681548110611284576112846159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112cf816159ca565b915050611255565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661132757604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361134d5760405163b0747d8160e01b815260040160405180910390fd5b600080611363876001600160a01b03881661081a565b6002805492945090925082916001600160401b031690600061085683615794565b6000805460ff166113a857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036113ce5760405163b0747d8160e01b815260040160405180910390fd5b60008061082187878787611b63565b6113e5611e70565b6000806113f28888611ec9565b915091506114038260400151612133565b6114108260400151612262565b61141e8983604001516122be565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115d05760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa15801561150b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152f9190615934565b905060008190036115825760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016108f8565b6115b661158f898b61594d565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612d27565b600083815260096020526040902081905592506115e29050565b60008181526009602052604090205491505b6000846020015160016040516020016116109291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061165882856116538a8c61594d565b612e1e565b90508481146116a15760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b505050506116e682828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b2192505050565b50506112156001603355565b61170a600080516020615ed7833981519152336118a3565b6117265760405162461bcd60e51b81526004016108f8906159e3565b6000805b600354811015611792578463ffffffff166003828154811061174e5761174e6159b4565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117805760019150611792565b8061178a81615a38565b91505061172a565b508061181b57600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118e6600080516020615f5e833981519152336118a3565b6119025760405162461bcd60e51b81526004016108f89061581d565b60005b60035463ffffffff821610156119875760016006600060038463ffffffff1681548110611934576119346159b4565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff19169115159190911790558061197f816159ca565b915050611905565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119cb600080516020615f5e833981519152336118a3565b6119e75760405162461bcd60e51b81526004016108f89061581d565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a4057600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a8e57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff1603611ab45760405163b0747d8160e01b815260040160405180910390fd5b60008061136387878787611b63565b600082815260c96020526040902060010154611ade81611bda565b61096c8383611c6a565b611b00600080516020615f5e833981519152336118a3565b611b1c5760405162461bcd60e51b81526004016108f89061581d565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bc69360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612eba92505050565b805160208201209097909650945050505050565b610acb8133612ef5565b611bee82826118a3565b6109eb57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c263390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c7482826118a3565b156109eb57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611ce9600080516020615ed7833981519152336118a3565b610acb5760405162461bcd60e51b81526004016108f8906159e3565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d385761096c83612f4e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d92575060408051601f3d908101601f19168201909252611d8f91810190615934565b60015b611df55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f8565b600080516020615f178339815191528114611e645760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f8565b5061096c838383612fea565b600260335403611ec25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108f8565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f4685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061301592505050565b905060008585604051611f5a929190615a51565b60405190819003902090506000808281526007602052604090205460ff166002811115611f8957611f896153e6565b14611fd65760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016108f8565b46826080015163ffffffff161461201e5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016108f8565b600854825160ff9081169116146120685760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016108f8565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120b3575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121265760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016108f8565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b03166121995760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122169190615a61565b610acb5760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016108f8565b63ffffffff811660009081526006602052604090205460ff1615610acb5760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016108f8565b63ffffffff81166000908152600460205260409020546001600160a01b03166123245760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b19190615934565b6000036124005760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016108f8565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248a9190615934565b6124949042615a7e565b9050607881101561096c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016108f8565b60405163082b2af760e31b815263ffffffff82166004820152600090819073__$083586bac2d506cf8c8f15e692f942458b$__9063415957b890602401602060405180830381865af415801561254c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125709190615934565b9050600081856001600160401b03161061258b57601b61258e565b60075b60ff169050600082866001600160401b0316106125ca576120006125bb846001600160401b038916615a7e565b6125c59190615aa7565b6125df565b6125df6120006001600160401b038816615aa7565b90506000866001600160401b0316886001600160401b03160361261e5750600b61260b81610200615abb565b61261790610183615ada565b9050612753565b61200061262b888a615aed565b6001600160401b03161161268d5750600b612647816020615abb565b612652906006615ada565b90506126696120006001600160401b038916615b14565b61267561200083615abb565b61267f9190615ada565b905061260b81610200615abb565b876001600160401b0316876001600160401b0316101561270b5750600b826126b6826020615abb565b6126c09190615ada565b90506126cd816002615abb565b6126d8906000615ada565b9050816126e9630100000083615abb565b6126f39190615ada565b9050612700816002615abb565b612652906001615ada565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016108f8565b61275f8b828c8c6130da565b9b9a5050505050505050505050565b60008061277c878a8a6130f4565b9050600081600081518110612793576127936159b4565b01602001516001600160f81b03191690506000600160f81b8214806127c55750600160f91b6001600160f81b03198316145b156127d257506001612837565b600360fe1b6001600160f81b03198316106127ef57506000612837565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016108f8565b6000602084019050600060405180604001604052808487516128599190615a7e565b81526020016128688585615ada565b90529050600061287782613994565b905080516004146128c35760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016108f8565b60006128e8826003815181106128db576128db6159b4565b6020026020010151613994565b905080518c1061293a5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016108f8565b6000612951828e815181106128db576128db6159b4565b905080516003146129af5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016108f8565b60006129d4826000815181106129c7576129c76159b4565b6020026020010151613bb9565b90508c6001600160a01b0316816001600160a01b031614612a475760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016108f8565b6000612a5f836001815181106128db576128db6159b4565b90508c612a8582600081518110612a7857612a786159b4565b6020026020010151613c23565b14612ae85760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016108f8565b612b0a818d81518110612afd57612afd6159b4565b6020026020010151613c2a565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612b5093929190615b28565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612ba29190615b58565b6000604051808303816000865af19150503d8060008114612bdf576040519150601f19603f3d011682016040523d82523d6000602084013e612be4565b606091505b5080519195509350600092506020039050612c2657600082806020019051810190612c0f9190615b74565b6001600160e01b031916631dee306b60e11b149150505b828015612c305750805b15612c53576000858152600760205260409020805460ff19166002179055612c6d565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612cb8929190615b91565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612cf65760405162461bcd60e51b81526004016108f890615bb5565b612cfe613d2d565b565b603254610100900460ff16612cfe5760405162461bcd60e51b81526004016108f890615bb5565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612d8c82604051602001612d7691815260200190565b60405160208183030381529060405287866130f4565b90506000815111612dd85760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016108f8565b6000612deb612de683613d54565b613994565b90508051600414612dfb57600080fd5b612e1181600281518110612a7857612a786159b4565b93505050505b9392505050565b600080612e4d85604051602001612e3791815260200190565b60405160208183030381529060405284866130f4565b90506000815111612ea05760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016108f8565b612eb1612eac82613d54565b613c23565b95945050505050565b606087878787878787604051602001612ed99796959493929190615c00565b6040516020818303038152906040529050979650505050505050565b612eff82826118a3565b6109eb57612f0c81613da7565b612f17836020613db9565b604051602001612f28929190615c87565b60408051601f198184030181529082905262461bcd60e51b82526108f89160040161580a565b6001600160a01b0381163b612fbb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f8565b600080516020615f1783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612ff383613f54565b6000825111806130005750805b1561096c5761300f8383613f94565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916130c9918a91906130c4908290615a7e565b61407f565b60c088015250949695505050505050565b6000806130e886868661416b565b90921495945050505050565b6060600084511161313f5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016108f8565b600061314a846142fa565b90506000613157866143e8565b905060008460405160200161316e91815260200190565b60405160208183030381529060405290506000805b845181101561393d5760008582815181106131a0576131a06159b4565b6020026020010151905084518311156132125760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016108f8565b826000036132b157805180516020918201206040516132609261323a92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6132ac5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016108f8565b6133a7565b80515160201161333757805180516020918201206040516132db9261323a92910190815260200190565b6132ac5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016108f8565b8051845160208087019190912082519190920120146133a75760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016108f8565b6133b360106001615ada565b8160200151510361356057845183036134f85760006133ef82602001516010815181106133e2576133e26159b4565b6020026020010151614502565b905060008151116134685760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016108f8565b600187516134769190615a7e565b83146134ea5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016108f8565b9650612e1795505050505050565b600085848151811061350c5761350c6159b4565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110613537576135376159b4565b6020026020010151905061354a81614625565b9550613557600186615ada565b9450505061392a565b6002816020015151036138d15760006135788261464a565b905060008160008151811061358f5761358f6159b4565b016020015160f81c905060006135a6600283615cfc565b6135b1906002615d1e565b905060006135c2848360ff1661466e565b905060006135d08a8961466e565b905060006135de83836146a4565b9050808351146136565760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016108f8565b60ff85166002148061366b575060ff85166003145b1561381157808251146136e65760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016108f8565b600061370288602001516001815181106133e2576133e26159b4565b9050600081511161377b5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016108f8565b60018d516137899190615a7e565b89146137fd5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016108f8565b9c50612e179b505050505050505050505050565b60ff85161580613824575060ff85166001145b15613863576138508760200151600181518110613843576138436159b4565b6020026020010151614625565b995061385c818a615ada565b98506138c6565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016108f8565b50505050505061392a565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016108f8565b508061393581615a38565b915050613183565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016108f8565b606060008060006139a485614723565b9194509250905060018160018111156139bf576139bf6153e6565b14613a325760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016108f8565b8451613a3e8385615ada565b14613aa65760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016108f8565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081613abf5790505090506000845b8751811015613bad57600080613b326040518060400160405280858d60000151613b169190615a7e565b8152602001858d60200151613b2b9190615ada565b9052614723565b509150915060405180604001604052808383613b4e9190615ada565b8152602001848c60200151613b639190615ada565b815250858581518110613b7857613b786159b4565b6020908102919091010152613b8e600185615ada565b9350613b9a8183615ada565b613ba49084615ada565b92505050613aec565b50815295945050505050565b8051600090600103613bcd57506000919050565b8151601514613c1e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016108f8565b6107b8825b60006107b8825b6000602182600001511115613c815760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000806000613c8f85614723565b919450925090506000816001811115613caa57613caa6153e6565b14613cf75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000838660200151613d099190615ada565b80519091506020841015613d235760208490036101000a90045b9695505050505050565b603254610100900460ff16612cc85760405162461bcd60e51b81526004016108f890615bb5565b60408051808201909152600080825260208201526000825111613d895760405162461bcd60e51b81526004016108f890615d37565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613dc8836002615abb565b613dd3906002615ada565b6001600160401b03811115613dea57613dea615234565b6040519080825280601f01601f191660200182016040528015613e14576020820181803683370190505b509050600360fc1b81600081518110613e2f57613e2f6159b4565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613e5e57613e5e6159b4565b60200101906001600160f81b031916908160001a9053506000613e82846002615abb565b613e8d906001615ada565b90505b6001811115613f05576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613ec157613ec16159b4565b1a60f81b828281518110613ed757613ed76159b4565b60200101906001600160f81b031916908160001a90535060049490941c93613efe81615da7565b9050613e90565b508315612e175760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108f8565b613f5d81612f4e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613ffc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108f8565b600080846001600160a01b0316846040516140179190615b58565b600060405180830381855af49150503d8060008114614052576040519150601f19603f3d011682016040523d82523d6000602084013e614057565b606091505b5091509150612eb18282604051806060016040528060278152602001615f3760279139614de6565b60608161408d81601f615ada565b10156140ab5760405162461bcd60e51b81526004016108f890615dbe565b6140b58284615ada565b845110156140f95760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b6060821580156141185760405191506000825260208201604052614162565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614151578051835260209283019201614139565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161417c9190615ada565b614187906002615eca565b1161419157600080fd5b8360005b84600114614162576141a8600286615b14565b6001036142475760028482815181106141c3576141c36159b4565b6020026020010151836040516020016141e6929190918252602082015260400190565b60408051601f198184030181529082905261420091615b58565b602060405180830381855afa15801561421d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142409190615934565b91506142db565b60028285838151811061425c5761425c6159b4565b602002602001015160405160200161427e929190918252602082015260400190565b60408051601f198184030181529082905261429891615b58565b602060405180830381855afa1580156142b5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142d89190615934565b91505b6142e6600286615aa7565b9450806142f281615a38565b915050614195565b80516060906000816001600160401b0381111561431957614319615234565b60405190808252806020026020018201604052801561435e57816020015b60408051808201909152606080825260208201528152602001906001900390816143375790505b50905060005b828110156143e0576040518060400160405280868381518110614389576143896159b4565b602002602001015181526020016143b88784815181106143ab576143ab6159b4565b6020026020010151614dff565b8152508282815181106143cd576143cd6159b4565b6020908102919091010152600101614364565b509392505050565b805160609060006143fa826002615abb565b6001600160401b0381111561441157614411615234565b6040519080825280601f01601f19166020018201604052801561443b576020820181803683370190505b5090506000805b838110156144f85785818151811061445c5761445c6159b4565b6020910101516001600160f81b03198116925060041c60ff60f41b1683614484836002615abb565b81518110614494576144946159b4565b60200101906001600160f81b031916908160001a905350600f60f81b8216836144be836002615abb565b6144c9906001615ada565b815181106144d9576144d96159b4565b60200101906001600160f81b031916908160001a905350600101614442565b5090949350505050565b6060600080600061451285614723565b91945092509050600081600181111561452d5761452d6153e6565b146145a05760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016108f8565b6145aa8284615ada565b8551146146165760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016108f8565b612eb185602001518484614e0d565b606060208260000151106146415761463c82614502565b6107b8565b6107b882614ead565b60606107b861466983602001516000815181106133e2576133e26159b4565b6143e8565b60608251821061468d57506040805160208101909152600081526107b8565b612e17838384865161469f9190615a7e565b614ec3565b600080600083518551106146b95783516146bc565b84515b90505b808210801561471357508382815181106146db576146db6159b4565b602001015160f81c60f81b6001600160f81b031916858381518110614702576147026159b4565b01602001516001600160f81b031916145b156143e0578160010191506146bf565b60008060008084600001511161474b5760405162461bcd60e51b81526004016108f890615d37565b6020840151805160001a607f8111614770576000600160009450945094505050614ddf565b60b781116148cd576000614785608083615a7e565b9050808760000151116148055760405162461bcd60e51b815260206004820152604e6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016108f8565b6001838101516001600160f81b03191690821415806148325750600160ff1b6001600160f81b0319821610155b6148ba5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016108f8565b5060019550935060009250614ddf915050565b60bf8111614b0e5760006148e260b783615a7e565b9050808760000151116149655760405162461bcd60e51b81526020600482015260516024820152600080516020615ef783398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016108f8565b60018301516001600160f81b03191660008190036149ec5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016108f8565b600184015160088302610100031c60378111614a6f5760405162461bcd60e51b81526020600482015260486024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016108f8565b614a798184615ada565b895111614af15760405162461bcd60e51b815260206004820152604c6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016108f8565b614afc836001615ada565b9750955060009450614ddf9350505050565b60f78111614bb0576000614b2360c083615a7e565b905080876000015111614b9f5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016108f8565b600195509350849250614ddf915050565b6000614bbd60f783615a7e565b905080876000015111614c3c5760405162461bcd60e51b815260206004820152604d6024820152600080516020615ef783398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016108f8565b60018301516001600160f81b0319166000819003614cc15760405162461bcd60e51b81526020600482015260486024820152600080516020615ef783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016108f8565b600184015160088302610100031c60378111614d425760405162461bcd60e51b81526020600482015260466024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016108f8565b614d4c8184615ada565b895111614dc25760405162461bcd60e51b815260206004820152604a6024820152600080516020615ef783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016108f8565b614dcd836001615ada565b9750955060019450614ddf9350505050565b9193909250565b60608315614df5575081612e17565b612e178383614f51565b60606107b8612de683613d54565b60606000826001600160401b03811115614e2957614e29615234565b6040519080825280601f01601f191660200182016040528015614e53576020820181803683370190505b50905082600003614e65579050612e17565b6000614e718587615ada565b90506020820160005b85811015614e92578281015182820152602001614e7a565b85811115614ea1576000868301525b50919695505050505050565b60606107b8826020015160008460000151614e0d565b60608182601f011015614ee85760405162461bcd60e51b81526004016108f890615dbe565b828284011015614f0a5760405162461bcd60e51b81526004016108f890615dbe565b818301845110156140f95760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b815115614f615781518083602001fd5b8060405162461bcd60e51b81526004016108f8919061580a565b8280548282559060005260206000209060070160089004810192821561501a5791602002820160005b83821115614fe857835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614fa4565b80156150185782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614fe8565b505b5061502692915061502a565b5090565b5b80821115615026576000815560010161502b565b6001600160e01b031981168114610acb57600080fd5b60006020828403121561506757600080fd5b8135612e178161503f565b80356001600160401b038116811461508957600080fd5b919050565b6000602082840312156150a057600080fd5b612e1782615072565b803563ffffffff8116811461508957600080fd5b80356001600160a01b038116811461508957600080fd5b60008083601f8401126150e657600080fd5b5081356001600160401b038111156150fd57600080fd5b60208301915083602082850101111561212c57600080fd5b6000806000806060858703121561512b57600080fd5b615134856150a9565b9350615142602086016150bd565b925060408501356001600160401b0381111561515d57600080fd5b615169878288016150d4565b95989497509550505050565b60006020828403121561518757600080fd5b612e17826150a9565b6000602082840312156151a257600080fd5b5035919050565b600080604083850312156151bc57600080fd5b823591506151cc602084016150bd565b90509250929050565b6000602082840312156151e757600080fd5b612e17826150bd565b60008083601f84011261520257600080fd5b5081356001600160401b0381111561521957600080fd5b6020830191508360208260051b850101111561212c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561527257615272615234565b604052919050565b600082601f83011261528b57600080fd5b81356001600160401b038111156152a4576152a4615234565b6152b7601f8201601f191660200161524a565b8181528460208386010111156152cc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561530a57600080fd5b6001600160401b03808d35111561532057600080fd5b61532d8e8e358f016150d4565b909c509a5060208d013581101561534357600080fd5b6153538e60208f01358f016150d4565b909a50985060408d013581101561536957600080fd5b6153798e60408f01358f016151f0565b909850965060608d0135955060808d013581101561539657600080fd5b6153a68e60808f01358f016151f0565b909550935060a08d01358110156153bc57600080fd5b506153cd8d60a08e01358e0161527a565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b602081016003831061541e57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561543757600080fd5b615440836150bd565b915060208301356001600160401b0381111561545b57600080fd5b6154678582860161527a565b9150509250929050565b60006001600160401b0382111561548a5761548a615234565b5060051b60200190565b600082601f8301126154a557600080fd5b813560206154ba6154b583615471565b61524a565b82815260059290921b840181019181810190868411156154d957600080fd5b8286015b848110156154fb576154ee816150bd565b83529183019183016154dd565b509695505050505050565b8015158114610acb57600080fd5b803561508981615506565b60008060008060008060c0878903121561553857600080fd5b86356001600160401b038082111561554f57600080fd5b818901915089601f83011261556357600080fd5b813560206155736154b583615471565b82815260059290921b8401810191818101908d84111561559257600080fd5b948201945b838610156155b7576155a8866150a9565b82529482019490820190615597565b9a50508a0135925050808211156155cd57600080fd5b6155d98a838b01615494565b965060408901359150808211156155ef57600080fd5b506155fc89828a01615494565b94505061560b606088016150bd565b9250615619608088016150bd565b915061562760a08801615514565b90509295509295509295565b6000806000806060858703121561564957600080fd5b615652856150a9565b93506020850135925060408501356001600160401b0381111561515d57600080fd5b60008060008060008060006080888a03121561568f57600080fd5b61569888615072565b965060208801356001600160401b03808211156156b457600080fd5b6156c08b838c016150d4565b909850965060408a01359150808211156156d957600080fd5b6156e58b838c016151f0565b909650945060608a01359150808211156156fe57600080fd5b5061570b8a828b016151f0565b989b979a50959850939692959293505050565b60008060006060848603121561573357600080fd5b61573c846150a9565b925061574a602085016150bd565b9150615758604085016150bd565b90509250925092565b60006020828403121561577357600080fd5b8135612e1781615506565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b038083168181036157b0576157b061577e565b6001019392505050565b60005b838110156157d55781810151838201526020016157bd565b50506000910152565b600081518084526157f68160208601602086016157ba565b601f01601f19169290920160200192915050565b602081526000612e1760208301846157de565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000806040838503121561591d57600080fd5b61592683615072565b91506151cc60208401615072565b60006020828403121561594657600080fd5b5051919050565b600061595b6154b584615471565b80848252602080830192508560051b85013681111561597957600080fd5b855b81811015614ea15780356001600160401b0381111561599a5760008081fd5b6159a636828a0161527a565b86525093820193820161597b565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff8083168181036157b0576157b061577e565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b600060018201615a4a57615a4a61577e565b5060010190565b8183823760009101908152919050565b600060208284031215615a7357600080fd5b8151612e1781615506565b818103818111156107b8576107b861577e565b634e487b7160e01b600052601260045260246000fd5b600082615ab657615ab6615a91565b500490565b6000816000190483118215151615615ad557615ad561577e565b500290565b808201808211156107b8576107b861577e565b6001600160401b03828116828216039080821115615b0d57615b0d61577e565b5092915050565b600082615b2357615b23615a91565b500690565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612eb1908301846157de565b60008251615b6a8184602087016157ba565b9190910192915050565b600060208284031215615b8657600080fd5b8151612e178161503f565b604081526000615ba460408301856157de565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615c748160458501602087016157ba565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615cbf8160178501602088016157ba565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615cf08160288401602088016157ba565b01602801949350505050565b600060ff831680615d0f57615d0f615a91565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b861577e565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615db657615db661577e565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615e21578160001904821115615e0757615e0761577e565b80851615615e1457918102915b93841c9390800290615deb565b509250929050565b600082615e38575060016107b8565b81615e45575060006107b8565b8160018114615e5b5760028114615e6557615e81565b60019150506107b8565b60ff841115615e7657615e7661577e565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615ea4575081810a6107b8565b615eae8383615de6565b8060001904821115615ec257615ec261577e565b029392505050565b6000612e178383615e2956fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212209920968ca2549dc136114884cdd68cb7192890d709c1df8ba30e5a5f0825170164736f6c63430008100033", - "sourceMap": "698:1544:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2903:213:31;;;;;;;;;;-1:-1:-1;2903:213:31;;;;;:::i;:::-;;:::i;:::-;;;565:14:146;;558:22;540:41;;528:2;513:18;2903:213:31;;;;;;;;527:42:103;;;;;;;;;;-1:-1:-1;527:42:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1103:25:146;;;1091:2;1076:18;527:42:103;957:177:146;3438:539:99;;;;;;;;;;-1:-1:-1;3438:539:99;;;;;:::i;:::-;;:::i;3147:128:101:-;;;;;;;;;;-1:-1:-1;3147:128:101;;;;;:::i;:::-;;:::i;:::-;;4708:129:31;;;;;;;;;;-1:-1:-1;4708:129:31;;;;;:::i;:::-;4782:7;4808:12;;;:6;:12;;;;;:22;;;;4708:129;1199:66:101;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1199:66:101;;5133:145:31;;;;;;;;;;-1:-1:-1;5133:145:31;;;;;:::i;:::-;;:::i;6242:214::-;;;;;;;;;;-1:-1:-1;6242:214:31;;;;;:::i;:::-;;:::i;3317:197:38:-;;;;;;;;;;-1:-1:-1;3317:197:38;;;;;:::i;:::-;;:::i;1291:37:103:-;;;;;;;;;;-1:-1:-1;1291:37:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;4866:1928:100;;;;;;;;;;-1:-1:-1;4866:1928:100;;;;;:::i;:::-;;:::i;1398:54:103:-;;;;;;;;;;-1:-1:-1;1398:54:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;;-1:-1:-1;434:26:103;;;;;;;;1876:109:100;;;;;;;;;;-1:-1:-1;1957:14:100;:21;1876:109;;3763:222:38;;;;;;:::i;:::-;;:::i;3006:131::-;;;;;;;;;;;;;:::i;1690:20:103:-;;;;;;;;;;-1:-1:-1;1690:20:103;;;;;;;;;;;7434:4:146;7422:17;;;7404:36;;7392:2;7377:18;1690:20:103;7262:184:146;1164:46:103;;;;;;;;;;-1:-1:-1;1164:46:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;7615:32:146;;;7597:51;;7585:2;7570:18;1164:46:103;7451:203:146;1118:958:102;;;;;;;;;;-1:-1:-1;1118:958:102;;;;;:::i;:::-;;:::i;3463:198:101:-;;;;;;;;;;;;;:::i;1864:488:99:-;;;;;;;;;;-1:-1:-1;1864:488:99;;;;;:::i;:::-;;:::i;2914:518::-;;;;;;;;;;-1:-1:-1;2914:518:99;;;;;:::i;:::-;;:::i;999:51:103:-;;;;;;;;;;-1:-1:-1;999:51:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;;;;;-1:-1:-1;2394:1820:100;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;;;;;-1:-1:-1;1936:51:103;;;;;:::i;:::-;;;;;;;;;;;;;;3987:684:101;;;;;;;;;;-1:-1:-1;3987:684:101;;;;;:::i;:::-;;:::i;3203:145:31:-;;;;;;;;;;-1:-1:-1;3203:145:31;;;;;:::i;:::-;;:::i;2432:193:101:-;;;;;;;;;;;;;:::i;2827:123::-;;;;;;;;;;-1:-1:-1;2827:123:101;;;;;:::i;:::-;;:::i;879:30:103:-;;;;;;;;;;-1:-1:-1;879:30:103;;;;;:::i;:::-;;:::i;:::-;;;13007:10:146;12995:23;;;12977:42;;12965:2;12950:18;879:30:103;12833:192:146;2324:49:31;;;;;;;;;;-1:-1:-1;2324:49:31;2369:4;2324:49;;1391:467:99;;;;;;;;;;-1:-1:-1;1391:467:99;;;;;:::i;:::-;;:::i;634:19:103:-;;;;;;;;;;-1:-1:-1;634:19:103;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;13192:31:146;;;13174:50;;13162:2;13147:18;634:19:103;13030:200:146;5558:147:31;;;;;;;;;;-1:-1:-1;5558:147:31;;;;;:::i;:::-;;:::i;924:58:100:-;;;;;;;;;;;;973:9;924:58;;2097:142:101;;;;;;;;;;-1:-1:-1;2097:142:101;;;;;:::i;:::-;;:::i;1370:66::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1370:66:101;;837:33:102;;;;;;;;;;;;869:1;837:33;;2903:213:31;2988:4;-1:-1:-1;;;;;;3011:58:31;;-1:-1:-1;;;3011:58:31;;:98;;-1:-1:-1;;;;;;;;;;1168:51:44;;;3073:36:31;3004:105;2903:213;-1:-1:-1;;2903:213:31:o;3438:539:99:-;3603:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3648:13:::1;3626:18;:35;;::::0;3622:71:::1;;3670:23;;-1:-1:-1::0;;;3670:23:99::1;;;;;;;;;;;3622:71;3704:20;::::0;3761:85:::1;3780:18:::0;-1:-1:-1;;;;;337:22:113;;3800:39:99::1;3841:4;;3761:18;:85::i;:::-;3865:5;::::0;;-1:-1:-1;;;;;3865:5:99;;::::1;3856:15;::::0;;;:8:::1;:15;::::0;;;;:29;;;3912:7;;3703:143;;-1:-1:-1;3703:143:99;;-1:-1:-1;3703:143:99;;3912:7:::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;;-1:-1:-1::0;;;;;3900:42:99::1;;3934:7;3900:42;;;;;;:::i;:::-;;;;;;;;3959:11:::0;3438:539;-1:-1:-1;;;;;;3438:539:99:o;3147:128:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;;;;;;;;;3213:15:::1;::::0;::::1;3231:5;3213:15:::0;;;:6:::1;:15;::::0;;;;;:23;;-1:-1:-1;;3213:23:101::1;::::0;;3251:17;::::1;::::0;3231:5;3251:17:::1;3147:128:::0;:::o;5133:145:31:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5246:25:::1;5257:4;5263:7;5246:10;:25::i;:::-;5133:145:::0;;;:::o;6242:214::-;-1:-1:-1;;;;;6337:23:31;;929:10:41;6337:23:31;6329:83;;;;-1:-1:-1;;;6329:83:31;;15203:2:146;6329:83:31;;;15185:21:146;15242:2;15222:18;;;15215:30;15281:34;15261:18;;;15254:62;-1:-1:-1;;;15332:18:146;;;15325:45;15387:19;;6329:83:31;15001:411:146;6329:83:31;6423:26;6435:4;6441:7;6423:11;:26::i;:::-;6242:214;;:::o;3317:197:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3400:36:::1;3418:17;3400;:36::i;:::-;3487:12;::::0;;3497:1:::1;3487:12:::0;;;::::1;::::0;::::1;::::0;;;3446:61:::1;::::0;3468:17;;3487:12;3446:21:::1;:61::i;:::-;3317:197:::0;:::o;4866:1928:100:-;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;13192:31:146;;5661:52:100;;::::1;13174:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;13147:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;17101:2:146;5727:58:100::1;::::0;::::1;17083:21:146::0;17140:2;17120:18;;;17113:30;-1:-1:-1;;;17159:18:146;;;17152:51;17220:18;;5727:58:100::1;16899:345:146::0;5727:58:100::1;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;17451:2:146;5965:47:100::1;::::0;::::1;17433:21:146::0;17490:2;17470:18;;;17463:30;17529:29;17509:18;;;17502:57;17576:18;;5965:47:100::1;17249:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;18690:2:146;6648:67:100::1;::::0;::::1;18672:21:146::0;18729:2;18709:18;;;18702:30;-1:-1:-1;;;18748:18:146;;;18741:51;18809:18;;6648:67:100::1;18488:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;3763:222:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3880:36:::1;3898:17;3880;:36::i;:::-;3926:52;3948:17;3967:4;3973;3926:21;:52::i;3006:131::-:0;3084:7;2324:4;-1:-1:-1;;;;;2333:6:38;2316:23;;2308:92;;;;-1:-1:-1;;;2308:92:38;;19040:2:146;2308:92:38;;;19022:21:146;19079:2;19059:18;;;19052:30;19118:34;19098:18;;;19091:62;19189:26;19169:18;;;19162:54;19233:19;;2308:92:38;18838:420:146;2308:92:38;-1:-1:-1;;;;;;;;;;;;3006:131:38;:::o;1118:958:102:-;3291:13:37;;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:37;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:37;1476:19:40;:23;;;3376:66:37;;-1:-1:-1;3425:12:37;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:37;;19465:2:146;3314:201:37;;;19447:21:146;19504:2;19484:18;;;19477:30;19543:34;19523:18;;;19516:62;-1:-1:-1;;;19594:18:146;;;19587:44;19648:19;;3314:201:37;19263:410:146;3314:201:37;3525:12;:16;;-1:-1:-1;;3525:16:37;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:37;;;;;3551:65;1380:24:102::1;:22;:24::i;:::-;1414:22;:20;:22::i;:::-;1446:36;-1:-1:-1::0;;;;;;;;;;;1472:9:102::1;1446:10;:36::i;:::-;1492;-1:-1:-1::0;;;;;;;;;;;1518:9:102::1;1492:10;:36::i;:::-;1538:41;2369:4:31;1569:9:102::0;1538:10:::1;:41::i;:::-;1589:24;:22;:24::i;:::-;1658:13;:20;1632:15;:22;:46;1624:55;;;::::0;::::1;;1723:13;:20;1697:15;:22;:46;1689:55;;;::::0;::::1;;1755:32:::0;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1802:8;1797:204;1820:14;:21:::0;1816:25:::1;::::0;::::1;;1797:204;;;1909:13;1923:1;1909:16;;;;;;;;;;:::i;:::-;;;;;;;1862:12;:31;1875:14;1890:1;1875:17;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1862:31;;;;;;;;;;;;;;;;:64;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;;1974:13;1988:1;1974:16;;;;;;;;;;:::i;:::-;;;;;;;1940:12;:31;1953:14;1968:1;1953:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;1940:31:::0;;;::::1;::::0;;;;;;;;:50;;-1:-1:-1;;;;;;1940:50:102::1;-1:-1:-1::0;;;;;1940:50:102;;;::::1;::::0;;;::::1;::::0;;1843:3;::::1;::::0;::::1;:::i;:::-;;;;1797:204;;;-1:-1:-1::0;2010:14:102::1;:32:::0;;;::::1;;-1:-1:-1::0;;2010:32:102;;::::1;;::::0;;;2052:7:::1;:17:::0;;;;::::1;2010:32:::0;2052:17:::1;::::0;;3636:99:37;;;;3670:13;:21;;-1:-1:-1;;3670:21:37;;;3710:14;;-1:-1:-1;7404:36:146;;3710:14:37;;7392:2:146;7377:18;3710:14:37;;;;;;;3636:99;3258:483;1118:958:102;;;;;;:::o;3463:198:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;3523:8:::1;3518:109;3541:14;:21:::0;3537:25:::1;::::0;::::1;;3518:109;;;3611:5;3583:6;:25;3590:14;3605:1;3590:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;3583:25:::0;;;::::1;::::0;;;;;;;;:33;;-1:-1:-1;;3583:33:101::1;::::0;::::1;;::::0;;;::::1;::::0;;3564:3;::::1;::::0;::::1;:::i;:::-;;;;3518:109;;;-1:-1:-1::0;3641:13:101::1;::::0;::::1;::::0;;;::::1;3463:198::o:0;1864:488:99:-;2013:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;2062:13:::1;2040:18;:35;;::::0;2036:71:::1;;2084:23;;-1:-1:-1::0;;;2084:23:99::1;;;;;;;;;;;2036:71;2118:20;::::0;2175:85:::1;2194:18:::0;-1:-1:-1;;;;;337:22:113;;2214:39:99::1;245:122:113::0;2175:85:99::1;2287:5;:7:::0;;2117:143;;-1:-1:-1;2117:143:99;;-1:-1:-1;2117:143:99;;-1:-1:-1;;;;;2287:7:99::1;::::0;:5:::1;:7;::::0;::::1;:::i;2914:518::-:0;3079:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3124:13:::1;3102:18;:35;;::::0;3098:71:::1;;3146:23;;-1:-1:-1::0;;;3146:23:99::1;;;;;;;;;;;3098:71;3180:20;3202:19:::0;3237:64:::1;3256:18;3276;3296:4;;3237:18;:64::i;2394:1820:100:-:0;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;20434:3:146;20412:16;;;;-1:-1:-1;;;;;;20408:43:146;2955:82:100;;::::1;20396:56:146::0;20507:3;20485:16;;;-1:-1:-1;;;;;;20481:51:146;20468:11;;;20461:72;20571:2;20567:15;-1:-1:-1;;;;;;20567:15:146;20549:12;;;20542:75;2955:82:100;;;;;;;;;20633:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;13192:31:146;;3301:61:100;;::::1;13174:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;13147:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;20858:2:146;3380:67:100::1;::::0;::::1;20840:21:146::0;20897:2;20877:18;;;20870:30;20936:33;20916:18;;;20909:61;20987:18;;3380:67:100::1;20656:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;21206:31:146;;;;21188:50;;21269:2;21254:18;;21247:34;21176:2;21161:18;;21016:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;1103:25:146::0;3826:80:100;;;;;;;;;1076:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;18690:2:146;4090:31:100::1;::::0;::::1;18672:21:146::0;18729:2;18709:18;;;18702:30;-1:-1:-1;;;18748:18:146;;;18741:51;18809:18;;4090:31:100::1;18488:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;3987:684:101;1689:34;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;:::-;4135:18:::1;4176:9:::0;4171:186:::1;4195:14;:21:::0;4191:25;::::1;4171:186;;;4262:7;4241:28;;:14;4256:1;4241:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;::::1;;;:28:::0;4237:110:::1;;4305:4;4289:20;;4327:5;;4237:110;4218:3:::0;::::1;::::0;::::1;:::i;:::-;;;;4171:186;;;;4371:13;4366:117;;4400:14;:28:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4400:28:101;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;;;;::::1;;;::::0;;::::1;::::0;::::1;;::::0;;::::1;;::::0;;4447:25:::1;::::0;4400:28;;4447:25:::1;::::0;::::1;4366:117;4492:21;::::0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;:49;;-1:-1:-1;;;;;4492:49:101;;::::1;-1:-1:-1::0;;;;;;4492:49:101;;::::1;::::0;::::1;::::0;;;4551:12:::1;:21:::0;;;;;;:35;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;4601:63;;22066:34:146;;;22116:18;;;22109:43;;;;4601:63:101::1;::::0;22001:18:146;4601:63:101::1;;;;;;;4125:546;3987:684:::0;;;:::o;3203:145:31:-;3289:4;3312:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3312:29:31;;;;;;;;;;;;;;;3203:145::o;2432:193:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2490:8:::1;2485:108;2508:14;:21:::0;2504:25:::1;::::0;::::1;;2485:108;;;2578:4;2550:6;:25;2557:14;2572:1;2557:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;2550:25:::0;;;::::1;::::0;;;;;;;;:32;;-1:-1:-1;;2550:32:101::1;::::0;::::1;;::::0;;;::::1;::::0;;2531:3;::::1;::::0;::::1;:::i;:::-;;;;2485:108;;;-1:-1:-1::0;2607:11:101::1;::::0;::::1;::::0;;;::::1;2432:193::o:0;2827:123::-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2891:15:::1;::::0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:22;;-1:-1:-1;;2891:22:101::1;2909:4;2891:22;::::0;;2928:15;::::1;::::0;2891;2928::::1;2827:123:::0;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1391:467:99:-;1540:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;1589:13:::1;1567:18;:35;;::::0;1563:71:::1;;1611:23;;-1:-1:-1::0;;;1611:23:99::1;;;;;;;;;;;1563:71;1645:20;1667:19:::0;1702:64:::1;1721:18;1741;1761:4;;1702:18;:64::i;5558:147:31:-:0;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5672:26:::1;5684:4;5690:7;5672:11;:26::i;2097:142:101:-:0;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2170:14:::1;:24:::0;;-1:-1:-1;;2170:24:101::1;::::0;::::1;;::::0;;::::1;::::0;;;2209:23:::1;::::0;540:41:146;;;2209:23:101::1;::::0;528:2:146;513:18;2209:23:101::1;;;;;;;2097:142:::0;:::o;4535:497:99:-;4801:7;;4822:5;;4765:213;;;;;;;;;;;;;;;;;;;;;;4692:25;;4719:19;;4765:213;;4801:7;;;;;-1:-1:-1;;;;;4822:5:99;;;;4848:13;;4876:10;;4900:18;;4932;;4964:4;;;;;;4765:213;;4964:4;;;;4765:213;;;;;;;;;-1:-1:-1;4765:22:99;;-1:-1:-1;;;4765:213:99:i;:::-;5002:23;;;;;;4750:228;;5002:23;;-1:-1:-1;4535:497:99;-1:-1:-1;;;;;4535:497:99:o;3642:103:31:-;3708:30;3719:4;929:10:41;3708::31;:30::i;7791:233::-;7874:22;7882:4;7888:7;7874;:22::i;:::-;7869:149;;7912:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7912:29:31;;;;;;;;;:36;;-1:-1:-1;;7912:36:31;7944:4;7912:36;;;7994:12;929:10:41;;850:96;7994:12:31;-1:-1:-1;;;;;7967:40:31;7985:7;-1:-1:-1;;;;;7967:40:31;7979:4;7967:40;;;;;;;;;;7791:233;;:::o;8195:234::-;8278:22;8286:4;8292:7;8278;:22::i;:::-;8274:149;;;8348:5;8316:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8316:29:31;;;;;;;;;;:37;;-1:-1:-1;;8316:37:31;;;8372:40;929:10:41;;8316:12:31;;8372:40;;8348:5;8372:40;8195:234;;:::o;2153:87:102:-;1689:34:101;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;2938:974:35:-;951:66;3384:59;;;3380:526;;;3459:37;3478:17;3459:18;:37::i;3380:526::-;3560:17;-1:-1:-1;;;;;3531:61:35;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3531:63:35;;;;;;;;-1:-1:-1;;3531:63:35;;;;;;;;;;;;:::i;:::-;;;3527:302;;3758:56;;-1:-1:-1;;;3758:56:35;;22365:2:146;3758:56:35;;;22347:21:146;22404:2;22384:18;;;22377:30;22443:34;22423:18;;;22416:62;-1:-1:-1;;;22494:18:146;;;22487:44;22548:19;;3758:56:35;22163:410:146;3527:302:35;-1:-1:-1;;;;;;;;;;;3644:28:35;;3636:82;;;;-1:-1:-1;;;3636:82:35;;22780:2:146;3636:82:35;;;22762:21:146;22819:2;22799:18;;;22792:30;22858:34;22838:18;;;22831:62;-1:-1:-1;;;22909:18:146;;;22902:39;22958:19;;3636:82:35;22578:405:146;3636:82:35;3595:138;3842:53;3860:17;3879:4;3885:9;3842:17;:53::i;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;23190:2:146;2704:63:39;;;23172:21:146;23229:2;23209:18;;;23202:30;23268:33;23248:18;;;23241:61;23319:18;;2704:63:39;22988:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;23826:2:146;8369:35:100;;;23808:21:146;23865:2;23845:18;;;23838:30;23904:27;23884:18;;;23877:55;23949:18;;8369:35:100;23624:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;24180:2:146;8484:22:100;;;24162:21:146;24219:2;24199:18;;;24192:30;-1:-1:-1;;;24238:18:146;;;24231:42;24290:18;;8484:22:100;23978:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;24521:2:146;8569:24:100;;;24503:21:146;24560:2;24540:18;;;24533:30;-1:-1:-1;;;24579:18:146;;;24572:44;24633:18;;8569:24:100;24319:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;24864:2:146;8779:65:100;;;24846:21:146;24903:2;24883:18;;;24876:30;24942:34;24922:18;;;24915:62;25013:25;24993:18;;;24986:53;25056:19;;8779:65:100;24662:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;25288:2:146;6959:81:100;;;25270:21:146;25327:2;25307:18;;;25300:30;-1:-1:-1;;;25346:18:146;;;25339:54;25410:18;;6959:81:100;25086:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;25891:2:146;7050:76:100;;;25873:21:146;25930:2;25910:18;;;25903:30;25969:31;25949:18;;;25942:59;26018:18;;7050:76:100;25689:353:146;7194:121:100;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;26249:2:146;7260:48:100;;;26231:21:146;26288:2;26268:18;;;26261:30;-1:-1:-1;;;26307:18:146;;;26300:49;26366:18;;7260:48:100;26047:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;25288:2:146;7471:81:100;;;25270:21:146;25327:2;25307:18;;;25300:30;-1:-1:-1;;;25346:18:146;;;25339:54;25410:18;;7471:81:100;25086:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;13192:31:146;;7570:38:100;;;13174:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;13147:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;26786:2:146;7562:86:100;;;26768:21:146;26825:2;26805:18;;;26798:30;26864:32;26844:18;;;26837:60;26914:18;;7562:86:100;26584:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;13192:31:146;;7698:38:100;;;13174:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;13147:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;27278:2:146;7746:84:100;;;27260:21:146;27317:2;27297:18;;;27290:30;27356:34;27336:18;;;27329:62;-1:-1:-1;;;27407:18:146;;;27400:32;27449:19;;7746:84:100;27076:398:146;3094:1947:110;3372:46;;-1:-1:-1;;;3372:46:110;;;12995:23:146;;3372:46:110;;;12977:42:146;3330:4:110;;;;3372:16;;:31;;12950:18:146;;3372:46:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;28751:2:146;4896:40:110;;;28733:21:146;28790:2;28770:18;;;28763:30;28829:32;28809:18;;;28802:60;28879:18;;4896:40:110;28549:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;29110:2:146;2652:38:111;;;29092:21:146;29149:2;29129:18;;;29122:30;29188;29168:18;;;29161:58;29236:18;;2652:38:111;28908:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;29467:2:146;3233:58:111;;;29449:21:146;29506:2;29486:18;;;29479:30;-1:-1:-1;;;29525:18:146;;;29518:52;29587:18;;3233:58:111;29265:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;29818:2:146;3450:58:111;;;29800:21:146;29857:2;29837:18;;;29830:30;29896:25;29876:18;;;29869:53;29939:18;;3450:58:111;29616:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;30170:2:146;3594:70:111;;;30152:21:146;30209:2;30189:18;;;30182:30;30248:34;30228:18;;;30221:62;-1:-1:-1;;;30299:18:146;;;30292:32;30341:19;;3594:70:111;29968:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;30573:2:146;3803:85:111;;;30555:21:146;30612:2;30592:18;;;30585:30;30651:34;30631:18;;;30624:62;-1:-1:-1;;;30702:18:146;;;30695:37;30749:19;;3803:85:111;30371:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;30981:2:146;4057:142:111;;;30963:21:146;31020:2;31000:18;;;30993:30;31059:34;31039:18;;;31032:62;-1:-1:-1;;;31110:18:146;;;31103:43;31163:19;;4057:142:111;30779:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;2873:209:39:-;1787:1;3053:7;:22;2873:209::o;1868:111::-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;:::-;1938:34:39::1;:32;:34::i;:::-;1868:111::o:0;2025:65:31:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;735:581:111:-;927:33;;-1:-1:-1;;;;;;33008:2:146;33004:15;;;33000:53;927:33:111;;;32988:66:146;872:7:111;;;;33070:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;33222:19:146;;33266:2;33257:12;;33093:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;33482:2:146;1072:58:111;;;33464:21:146;33521:2;33501:18;;;33494:30;-1:-1:-1;;;33540:18:146;;;33533:52;33602:18;;1072:58:111;33280:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;33222:19:146;;33266:2;33257:12;;33093:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;33833:2:146;601:65:111;;;33815:21:146;33872:2;33852:18;;;33845:30;33911;33891:18;;;33884:58;33959:18;;601:65:111;33631:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;3800:489:108:-;4049:12;4110:7;4131:5;4150:13;4177;4204:18;4236;4268:4;4080:202;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4073:209;;3800:489;;;;;;;;;:::o;4026:501:31:-;4114:22;4122:4;4128:7;4114;:22::i;:::-;4109:412;;4297:39;4328:7;4297:30;:39::i;:::-;4407:49;4446:4;4453:2;4407:30;:49::i;:::-;4204:274;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4204:274:31;;;;;;;;;;-1:-1:-1;;;4152:358:31;;;;;;;:::i;1805:281:35:-;-1:-1:-1;;;;;1476:19:40;;;1878:106:35;;;;-1:-1:-1;;;1878:106:35;;36109:2:146;1878:106:35;;;36091:21:146;36148:2;36128:18;;;36121:30;36187:34;36167:18;;;36160:62;-1:-1:-1;;;36238:18:146;;;36231:43;36291:19;;1878:106:35;35907:409:146;1878:106:35;-1:-1:-1;;;;;;;;;;;1994:85:35;;-1:-1:-1;;;;;;1994:85:35;-1:-1:-1;;;;;1994:85:35;;;;;;;;;;1805:281::o;2478:288::-;2616:29;2627:17;2616:10;:29::i;:::-;2673:1;2659:4;:11;:15;:28;;;;2678:9;2659:28;2655:105;;;2703:46;2725:17;2744:4;2703:21;:46::i;:::-;;2478:288;;;:::o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;36523:2:146;3101:49:77;;;36505:21:146;36562:2;36542:18;;;36535:30;-1:-1:-1;;;36581:18:146;;;36574:51;36642:18;;3101:49:77;36321:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;33222:19:146;;33266:2;33257:12;;33093:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;36873:2:146;3636:134:77;;;36855:21:146;36912:2;36892:18;;;36885:30;36951:34;36931:18;;;36924:62;-1:-1:-1;;;37002:18:146;;;36995:44;37056:19;;3636:134:77;36671:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;33222:19:146;;;33266:2;33257:12;;33093:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;37288:2:146;3893:176:77;;;37270:21:146;37327:2;37307:18;;;37300:30;37366:31;37346:18;;;37339:59;37415:18;;3893:176:77;37086:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;33222:19:146;;;33266:2;33257:12;;33093:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;37646:2:146;4222:186:77;;;37628:21:146;37685:2;37665:18;;;37658:30;37724:34;37704:18;;;37697:62;-1:-1:-1;;;37775:18:146;;;37768:37;37822:19;;4222:186:77;37444:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;38054:2:146;4509:156:77;;;38036:21:146;38093:2;38073:18;;;38066:30;38132:34;38112:18;;;38105:62;-1:-1:-1;;;38183:18:146;;;38176:36;38229:19;;4509:156:77;37852:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;38461:2:146;5384:158:77;;;38443:21:146;38500:2;38480:18;;;38473:30;38539:34;38519:18;;;38512:62;38610:29;38590:18;;;38583:57;38657:19;;5384:158:77;38259:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;38889:2:146;5626:162:77;;;38871:21:146;38928:2;38908:18;;;38901:30;38967:34;38947:18;;;38940:62;39038:28;39018:18;;;39011:56;39084:19;;5626:162:77;38687:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;39634:2:146;7009:171:77;;;39616:21:146;39673:2;39653:18;;;39646:30;39712:34;39692:18;;;39685:62;39783:28;39763:18;;;39756:56;39829:19;;7009:171:77;39432:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;40061:2:146;7843:185:77;;;40043:21:146;40100:2;40080:18;;;40073:30;40139:34;40119:18;;;40112:62;40210:31;40190:18;;;40183:59;40259:19;;7843:185:77;39859:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;40491:2:146;8463:156:77;;;40473:21:146;40530:2;40510:18;;;40503:30;40569:34;40549:18;;;40542:62;40640:27;40620:18;;;40613:55;40685:19;;8463:156:77;40289:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;40917:2:146;8703:160:77;;;40899:21:146;40956:2;40936:18;;;40929:30;40995:34;40975:18;;;40968:62;41066:26;41046:18;;;41039:54;41110:19;;8703:160:77;40715:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;41342:2:146;9439:60:77;;;41324:21:146;41381:2;41361:18;;;41354:30;41420:34;41400:18;;;41393:62;-1:-1:-1;;;41471:18:146;;;41464:48;41529:19;;9439:60:77;41140:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;41761:2:146;9556:50:77;;;41743:21:146;41800:2;41780:18;;;41773:30;41839:34;41819:18;;;41812:62;-1:-1:-1;;;41890:18:146;;;41883:38;41938:19;;9556:50:77;41559:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;42170:2:146;9641:47:77;;;42152:21:146;42209:2;42189:18;;;42182:30;42248:34;42228:18;;;42221:62;-1:-1:-1;;;42299:18:146;;;42292:35;42344:19;;9641:47:77;41968:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;42576:2:146;2161:136:75;;;42558:21:146;42615:2;42595:18;;;42588:30;42654:34;42634:18;;;42627:62;42725:26;42705:18;;;42698:54;42769:19;;2161:136:75;42374:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;43001:2:146;2308:134:75;;;42983:21:146;43040:2;43020:18;;;43013:30;43079:34;43059:18;;;43052:62;-1:-1:-1;;;43130:18:146;;;43123:48;43188:19;;2308:134:75;42799:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;43420:2:146;12579:55:75;;;43402:21:146;43459:2;43439:18;;;43432:30;43498:28;43478:18;;;43471:56;43544:18;;12579:55:75;43218:350:146;12579:55:75;12668:16;12680:3;12160:122;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;43775:2:146;11438:55:75;;;43757:21:146;43814:2;43794:18;;;43787:30;43853:28;43833:18;;;43826:56;43899:18;;11438:55:75;43573:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;43775:2:146;11598:72:75;;;43757:21:146;43814:2;43794:18;;;43787:30;43853:28;43833:18;;;43826:56;43899:18;;11598:72:75;43573:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1985:109:39:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;1385:419:75:-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;2146:149:43:-;2204:13;2236:52;-1:-1:-1;;;;;2248:22:43;;333:2;1557:437;1632:13;1657:19;1689:10;1693:6;1689:1;:10;:::i;:::-;:14;;1702:1;1689:14;:::i;:::-;-1:-1:-1;;;;;1679:25:43;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1679:25:43;;1657:47;;-1:-1:-1;;;1714:6:43;1721:1;1714:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1714:15:43;;;;;;;;;-1:-1:-1;;;1739:6:43;1746:1;1739:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1739:15:43;;;;;;;;-1:-1:-1;1769:9:43;1781:10;1785:6;1781:1;:10;:::i;:::-;:14;;1794:1;1781:14;:::i;:::-;1769:26;;1764:128;1801:1;1797;:5;1764:128;;;-1:-1:-1;;;1844:5:43;1852:3;1844:11;1835:21;;;;;;;:::i;:::-;;;;1823:6;1830:1;1823:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1823:33:43;;;;;;;;-1:-1:-1;1880:1:43;1870:11;;;;;1804:3;;;:::i;:::-;;;1764:128;;;-1:-1:-1;1909:10:43;;1901:55;;;;-1:-1:-1;;;1901:55:43;;44754:2:146;1901:55:43;;;44736:21:146;;;44773:18;;;44766:30;44832:34;44812:18;;;44805:62;44884:18;;1901:55:43;44552:356:146;2192:152:35;2258:37;2277:17;2258:18;:37::i;:::-;2310:27;;-1:-1:-1;;;;;2310:27:35;;;;;;;;2192:152;:::o;7088:455::-;7171:12;-1:-1:-1;;;;;1476:19:40;;;7195:88:35;;;;-1:-1:-1;;;7195:88:35;;45115:2:146;7195:88:35;;;45097:21:146;45154:2;45134:18;;;45127:30;45193:34;45173:18;;;45166:62;-1:-1:-1;;;45244:18:146;;;45237:36;45290:19;;7195:88:35;44913:402:146;7195:88:35;7354:12;7368:23;7395:6;-1:-1:-1;;;;;7395:19:35;7415:4;7395:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:67;;;;7437:99;7473:7;7482:10;7437:99;;;;;;;;;;;;;;;;;:35;:99::i;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;45865:2:146;409:63:108;;;45847:21:146;45904:2;45884:18;;;45877:30;-1:-1:-1;;;45923:18:146;;;45916:47;45980:18;;409:63:108;45663:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;47540:19:146;;;47584:2;47575:12;;47568:28;47621:2;47612:12;;47383:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;47540:19:146;;;47584:2;47575:12;;47568:28;47621:2;47612:12;;47383:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;47837:2:146;4505:137:75;;;47819:21:146;47876:2;47856:18;;;47849:30;47915:34;47895:18;;;47888:62;47986:27;47966:18;;;47959:55;48031:19;;4505:137:75;47635:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;48263:2:146;4653:136:75;;;48245:21:146;48302:2;48282:18;;;48275:30;48341:34;48321:18;;;48314:62;-1:-1:-1;;;48392:18:146;;;48385:50;48452:19;;4653:136:75;48061:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;48684:2:146;6699:156:75;;;48666:21:146;48723:2;48703:18;;;48696:30;-1:-1:-1;;;;;;;;;;;48742:18:146;;;48735:62;48833:34;48813:18;;;48806:62;-1:-1:-1;;;48884:19:146;;;48877:45;48939:19;;6699:156:75;48482:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;49171:2:146;7025:177:75;;;49153:21:146;49210:2;49190:18;;;49183:30;49249:34;49229:18;;;49222:62;49320:34;49300:18;;;49293:62;-1:-1:-1;;;49371:19:146;;;49364:44;49425:19;;7025:177:75;48969:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;49657:2:146;7387:164:75;;;49639:21:146;49696:2;49676:18;;;49669:30;-1:-1:-1;;;;;;;;;;;49715:18:146;;;49708:62;49806:34;49786:18;;;49779:62;-1:-1:-1;;;49857:19:146;;;49850:48;49915:19;;7387:164:75;49455:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;50147:2:146;7721:159:75;;;50129:21:146;50186:2;50166:18;;;50159:30;-1:-1:-1;;;;;;;;;;;50205:18:146;;;50198:62;50296:34;50276:18;;;50269:62;-1:-1:-1;;;50347:19:146;;;50340:41;50398:19;;7721:159:75;49945:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;50630:2:146;8042:142:75;;;50612:21:146;50669:2;50649:18;;;50642:30;-1:-1:-1;;;;;;;;;;;50688:18:146;;;50681:62;50779:34;50759:18;;;50752:62;-1:-1:-1;;;50830:19:146;;;50823:39;50879:19;;8042:142:75;50428:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;51111:2:146;8199:168:75;;;51093:21:146;51150:2;51130:18;;;51123:30;-1:-1:-1;;;;;;;;;;;51169:18:146;;;51162:62;51260:34;51240:18;;;51233:62;-1:-1:-1;;;51311:19:146;;;51304:43;51364:19;;8199:168:75;50909:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;51596:2:146;8617:153:75;;;51578:21:146;51635:2;51615:18;;;51608:30;-1:-1:-1;;;;;;;;;;;51654:18:146;;;51647:62;51745:34;51725:18;;;51718:62;-1:-1:-1;;;51796:19:146;;;51789:41;51847:19;;8617:153:75;51394:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;52079:2:146;8935:161:75;;;52061:21:146;52118:2;52098:18;;;52091:30;-1:-1:-1;;;;;;;;;;;52137:18:146;;;52130:62;52228:34;52208:18;;;52201:62;-1:-1:-1;;;52279:19:146;;;52272:44;52333:19;;8935:161:75;51877:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;52565:2:146;9266:157:75;;;52547:21:146;52604:2;52584:18;;;52577:30;-1:-1:-1;;;;;;;;;;;52623:18:146;;;52616:62;52714:34;52694:18;;;52687:62;-1:-1:-1;;;52765:19:146;;;52758:39;52814:19;;9266:157:75;52363:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;53046:2:146;9588:141:75;;;53028:21:146;53085:2;53065:18;;;53058:30;-1:-1:-1;;;;;;;;;;;53104:18:146;;;53097:62;53195:34;53175:18;;;53168:62;-1:-1:-1;;;53246:19:146;;;53239:37;53293:19;;9588:141:75;52844:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;53525:2:146;9744:168:75;;;53507:21:146;53564:2;53544:18;;;53537:30;-1:-1:-1;;;;;;;;;;;53583:18:146;;;53576:62;53674:34;53654:18;;;53647:62;-1:-1:-1;;;53725:19:146;;;53718:41;53776:19;;9744:168:75;53323:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;7438:295:40:-;7584:12;7612:7;7608:119;;;-1:-1:-1;7642:10:40;7635:17;;7608:119;7683:33;7691:10;7703:12;7683:7;:33::i;4047:125:75:-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;45865:2:146;989:63:74;;;45847:21:146;45904:2;45884:18;;;45877:30;-1:-1:-1;;;45923:18:146;;;45916:47;45980:18;;989:63:74;45663:341:146;7739:540:40;7898:17;;:21;7894:379;;8126:10;8120:17;8182:15;8169:10;8165:2;8161:19;8154:44;7894:379;8249:12;8242:20;;-1:-1:-1;;;8242:20:40;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:146;-1:-1:-1;;;;;;88:32:146;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:171::-;659:20;;-1:-1:-1;;;;;708:30:146;;698:41;;688:69;;753:1;750;743:12;688:69;592:171;;;:::o;768:184::-;826:6;879:2;867:9;858:7;854:23;850:32;847:52;;;895:1;892;885:12;847:52;918:28;936:9;918:28;:::i;1139:163::-;1206:20;;1266:10;1255:22;;1245:33;;1235:61;;1292:1;1289;1282:12;1307:173;1375:20;;-1:-1:-1;;;;;1424:31:146;;1414:42;;1404:70;;1470:1;1467;1460:12;1485:347;1536:8;1546:6;1600:3;1593:4;1585:6;1581:17;1577:27;1567:55;;1618:1;1615;1608:12;1567:55;-1:-1:-1;1641:20:146;;-1:-1:-1;;;;;1673:30:146;;1670:50;;;1716:1;1713;1706:12;1670:50;1753:4;1745:6;1741:17;1729:29;;1805:3;1798:4;1789:6;1781;1777:19;1773:30;1770:39;1767:59;;;1822:1;1819;1812:12;1837:555;1924:6;1932;1940;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2040:28;2058:9;2040:28;:::i;:::-;2030:38;;2087;2121:2;2110:9;2106:18;2087:38;:::i;:::-;2077:48;;2176:2;2165:9;2161:18;2148:32;-1:-1:-1;;;;;2195:6:146;2192:30;2189:50;;;2235:1;2232;2225:12;2189:50;2274:58;2324:7;2315:6;2304:9;2300:22;2274:58;:::i;:::-;1837:555;;;;-1:-1:-1;2351:8:146;-1:-1:-1;;;;1837:555:146:o;2397:184::-;2455:6;2508:2;2496:9;2487:7;2483:23;2479:32;2476:52;;;2524:1;2521;2514:12;2476:52;2547:28;2565:9;2547:28;:::i;2586:180::-;2645:6;2698:2;2686:9;2677:7;2673:23;2669:32;2666:52;;;2714:1;2711;2704:12;2666:52;-1:-1:-1;2737:23:146;;2586:180;-1:-1:-1;2586:180:146:o;2771:254::-;2839:6;2847;2900:2;2888:9;2879:7;2875:23;2871:32;2868:52;;;2916:1;2913;2906:12;2868:52;2952:9;2939:23;2929:33;;2981:38;3015:2;3004:9;3000:18;2981:38;:::i;:::-;2971:48;;2771:254;;;;;:::o;3030:186::-;3089:6;3142:2;3130:9;3121:7;3117:23;3113:32;3110:52;;;3158:1;3155;3148:12;3110:52;3181:29;3200:9;3181:29;:::i;3221:367::-;3284:8;3294:6;3348:3;3341:4;3333:6;3329:17;3325:27;3315:55;;3366:1;3363;3356:12;3315:55;-1:-1:-1;3389:20:146;;-1:-1:-1;;;;;3421:30:146;;3418:50;;;3464:1;3461;3454:12;3418:50;3501:4;3493:6;3489:17;3477:29;;3561:3;3554:4;3544:6;3541:1;3537:14;3529:6;3525:27;3521:38;3518:47;3515:67;;;3578:1;3575;3568:12;3593:127;3654:10;3649:3;3645:20;3642:1;3635:31;3685:4;3682:1;3675:15;3709:4;3706:1;3699:15;3725:275;3796:2;3790:9;3861:2;3842:13;;-1:-1:-1;;3838:27:146;3826:40;;-1:-1:-1;;;;;3881:34:146;;3917:22;;;3878:62;3875:88;;;3943:18;;:::i;:::-;3979:2;3972:22;3725:275;;-1:-1:-1;3725:275:146:o;4005:530::-;4047:5;4100:3;4093:4;4085:6;4081:17;4077:27;4067:55;;4118:1;4115;4108:12;4067:55;4154:6;4141:20;-1:-1:-1;;;;;4176:2:146;4173:26;4170:52;;;4202:18;;:::i;:::-;4246:55;4289:2;4270:13;;-1:-1:-1;;4266:27:146;4295:4;4262:38;4246:55;:::i;:::-;4326:2;4317:7;4310:19;4372:3;4365:4;4360:2;4352:6;4348:15;4344:26;4341:35;4338:55;;;4389:1;4386;4379:12;4338:55;4454:2;4447:4;4439:6;4435:17;4428:4;4419:7;4415:18;4402:55;4502:1;4477:16;;;4495:4;4473:27;4466:38;;;;4481:7;4005:530;-1:-1:-1;;;4005:530:146:o;4540:1652::-;4749:6;4757;4765;4773;4781;4789;4797;4805;4813;4821;4829:7;4883:3;4871:9;4862:7;4858:23;4854:33;4851:53;;;4900:1;4897;4890:12;4851:53;-1:-1:-1;;;;;4981:2:146;4969:9;4956:23;4953:31;4950:51;;;4997:1;4994;4987:12;4950:51;5036:75;5103:7;5090:9;5077:23;5066:9;5062:39;5036:75;:::i;:::-;5130:8;;-1:-1:-1;5157:8:146;-1:-1:-1;5208:2:146;5193:18;;5180:32;5177:40;-1:-1:-1;5174:60:146;;;5230:1;5227;5220:12;5174:60;5269:84;5345:7;5338:2;5327:9;5323:18;5310:32;5299:9;5295:48;5269:84;:::i;:::-;5372:8;;-1:-1:-1;5399:8:146;-1:-1:-1;5450:2:146;5435:18;;5422:32;5419:40;-1:-1:-1;5416:60:146;;;5472:1;5469;5462:12;5416:60;5511:96;5599:7;5592:2;5581:9;5577:18;5564:32;5553:9;5549:48;5511:96;:::i;:::-;5626:8;;-1:-1:-1;5653:8:146;-1:-1:-1;5708:2:146;5693:18;;5680:32;;-1:-1:-1;5755:3:146;5740:19;;5727:33;5724:41;-1:-1:-1;5721:61:146;;;5778:1;5775;5768:12;5721:61;5817:97;5906:7;5898:3;5887:9;5883:19;5870:33;5859:9;5855:49;5817:97;:::i;:::-;5933:8;;-1:-1:-1;5960:8:146;-1:-1:-1;6011:3:146;5996:19;;5983:33;5980:41;-1:-1:-1;5977:61:146;;;6034:1;6031;6024:12;5977:61;;6057:76;6125:7;6117:3;6106:9;6102:19;6089:33;6078:9;6074:49;6057:76;:::i;:::-;6047:86;;6181:3;6170:9;6166:19;6153:33;6142:44;;4540:1652;;;;;;;;;;;;;;:::o;6197:127::-;6258:10;6253:3;6249:20;6246:1;6239:31;6289:4;6286:1;6279:15;6313:4;6310:1;6303:15;6329:347;6480:2;6465:18;;6513:1;6502:13;;6492:144;;6558:10;6553:3;6549:20;6546:1;6539:31;6593:4;6590:1;6583:15;6621:4;6618:1;6611:15;6492:144;6645:25;;;6329:347;:::o;6863:394::-;6940:6;6948;7001:2;6989:9;6980:7;6976:23;6972:32;6969:52;;;7017:1;7014;7007:12;6969:52;7040:29;7059:9;7040:29;:::i;:::-;7030:39;;7120:2;7109:9;7105:18;7092:32;-1:-1:-1;;;;;7139:6:146;7136:30;7133:50;;;7179:1;7176;7169:12;7133:50;7202:49;7243:7;7234:6;7223:9;7219:22;7202:49;:::i;:::-;7192:59;;;6863:394;;;;;:::o;7659:182::-;7718:4;-1:-1:-1;;;;;7743:6:146;7740:30;7737:56;;;7773:18;;:::i;:::-;-1:-1:-1;7818:1:146;7814:14;7830:4;7810:25;;7659:182::o;7846:667::-;7900:5;7953:3;7946:4;7938:6;7934:17;7930:27;7920:55;;7971:1;7968;7961:12;7920:55;8007:6;7994:20;8033:4;8057:59;8073:42;8112:2;8073:42;:::i;:::-;8057:59;:::i;:::-;8150:15;;;8236:1;8232:10;;;;8220:23;;8216:32;;;8181:12;;;;8260:15;;;8257:35;;;8288:1;8285;8278:12;8257:35;8324:2;8316:6;8312:15;8336:148;8352:6;8347:3;8344:15;8336:148;;;8418:23;8437:3;8418:23;:::i;:::-;8406:36;;8462:12;;;;8369;;8336:148;;;-1:-1:-1;8502:5:146;7846:667;-1:-1:-1;;;;;;7846:667:146:o;8518:118::-;8604:5;8597:13;8590:21;8583:5;8580:32;8570:60;;8626:1;8623;8616:12;8641:128;8706:20;;8735:28;8706:20;8735:28;:::i;8774:1588::-;8949:6;8957;8965;8973;8981;8989;9042:3;9030:9;9021:7;9017:23;9013:33;9010:53;;;9059:1;9056;9049:12;9010:53;9099:9;9086:23;-1:-1:-1;;;;;9169:2:146;9161:6;9158:14;9155:34;;;9185:1;9182;9175:12;9155:34;9223:6;9212:9;9208:22;9198:32;;9268:7;9261:4;9257:2;9253:13;9249:27;9239:55;;9290:1;9287;9280:12;9239:55;9326:2;9313:16;9348:4;9372:59;9388:42;9427:2;9388:42;:::i;9372:59::-;9465:15;;;9547:1;9543:10;;;;9535:19;;9531:28;;;9496:12;;;;9571:19;;;9568:39;;;9603:1;9600;9593:12;9568:39;9627:11;;;;9647:147;9663:6;9658:3;9655:15;9647:147;;;9729:22;9747:3;9729:22;:::i;:::-;9717:35;;9680:12;;;;9772;;;;9647:147;;;9813:5;-1:-1:-1;;9856:18:146;;9843:32;;-1:-1:-1;;9887:16:146;;;9884:36;;;9916:1;9913;9906:12;9884:36;9939:63;9994:7;9983:8;9972:9;9968:24;9939:63;:::i;:::-;9929:73;;10055:2;10044:9;10040:18;10027:32;10011:48;;10084:2;10074:8;10071:16;10068:36;;;10100:1;10097;10090:12;10068:36;;10123:63;10178:7;10167:8;10156:9;10152:24;10123:63;:::i;:::-;10113:73;;;10205:38;10239:2;10228:9;10224:18;10205:38;:::i;:::-;10195:48;;10262:39;10296:3;10285:9;10281:19;10262:39;:::i;:::-;10252:49;;10320:36;10351:3;10340:9;10336:19;10320:36;:::i;:::-;10310:46;;8774:1588;;;;;;;;:::o;10367:549::-;10454:6;10462;10470;10478;10531:2;10519:9;10510:7;10506:23;10502:32;10499:52;;;10547:1;10544;10537:12;10499:52;10570:28;10588:9;10570:28;:::i;:::-;10560:38;;10645:2;10634:9;10630:18;10617:32;10607:42;;10700:2;10689:9;10685:18;10672:32;-1:-1:-1;;;;;10719:6:146;10716:30;10713:50;;;10759:1;10756;10749:12;11151:1155;11323:6;11331;11339;11347;11355;11363;11371;11424:3;11412:9;11403:7;11399:23;11395:33;11392:53;;;11441:1;11438;11431:12;11392:53;11464:28;11482:9;11464:28;:::i;:::-;11454:38;;11543:2;11532:9;11528:18;11515:32;-1:-1:-1;;;;;11607:2:146;11599:6;11596:14;11593:34;;;11623:1;11620;11613:12;11593:34;11662:58;11712:7;11703:6;11692:9;11688:22;11662:58;:::i;:::-;11739:8;;-1:-1:-1;11636:84:146;-1:-1:-1;11827:2:146;11812:18;;11799:32;;-1:-1:-1;11843:16:146;;;11840:36;;;11872:1;11869;11862:12;11840:36;11911:72;11975:7;11964:8;11953:9;11949:24;11911:72;:::i;:::-;12002:8;;-1:-1:-1;11885:98:146;-1:-1:-1;12090:2:146;12075:18;;12062:32;;-1:-1:-1;12106:16:146;;;12103:36;;;12135:1;12132;12125:12;12103:36;;12174:72;12238:7;12227:8;12216:9;12212:24;12174:72;:::i;:::-;11151:1155;;;;-1:-1:-1;11151:1155:146;;-1:-1:-1;11151:1155:146;;;;12148:98;;-1:-1:-1;;;11151:1155:146:o;12311:332::-;12387:6;12395;12403;12456:2;12444:9;12435:7;12431:23;12427:32;12424:52;;;12472:1;12469;12462:12;12424:52;12495:28;12513:9;12495:28;:::i;:::-;12485:38;;12542;12576:2;12565:9;12561:18;12542:38;:::i;:::-;12532:48;;12599:38;12633:2;12622:9;12618:18;12599:38;:::i;:::-;12589:48;;12311:332;;;;;:::o;13235:241::-;13291:6;13344:2;13332:9;13323:7;13319:23;13315:32;13312:52;;;13360:1;13357;13350:12;13312:52;13399:9;13386:23;13418:28;13440:5;13418:28;:::i;13481:127::-;13542:10;13537:3;13533:20;13530:1;13523:31;13573:4;13570:1;13563:15;13597:4;13594:1;13587:15;13613:209;13651:3;-1:-1:-1;;;;;13732:2:146;13725:5;13721:14;13759:2;13750:7;13747:15;13744:41;;13765:18;;:::i;:::-;13814:1;13801:15;;13613:209;-1:-1:-1;;;13613:209:146:o;13827:250::-;13912:1;13922:113;13936:6;13933:1;13930:13;13922:113;;;14012:11;;;14006:18;13993:11;;;13986:39;13958:2;13951:10;13922:113;;;-1:-1:-1;;14069:1:146;14051:16;;14044:27;13827:250::o;14082:270::-;14123:3;14161:5;14155:12;14188:6;14183:3;14176:19;14204:76;14273:6;14266:4;14261:3;14257:14;14250:4;14243:5;14239:16;14204:76;:::i;:::-;14334:2;14313:15;-1:-1:-1;;14309:29:146;14300:39;;;;14341:4;14296:50;;14082:270;-1:-1:-1;;14082:270:146:o;14357:217::-;14504:2;14493:9;14486:21;14467:4;14524:44;14564:2;14553:9;14549:18;14541:6;14524:44;:::i;14579:417::-;14781:2;14763:21;;;14820:2;14800:18;;;14793:30;14859:34;14854:2;14839:18;;14832:62;-1:-1:-1;;;14925:2:146;14910:18;;14903:51;14986:3;14971:19;;14579:417::o;15417:408::-;15619:2;15601:21;;;15658:2;15638:18;;;15631:30;15697:34;15692:2;15677:18;;15670:62;-1:-1:-1;;;15763:2:146;15748:18;;15741:42;15815:3;15800:19;;15417:408::o;15830:::-;16032:2;16014:21;;;16071:2;16051:18;;;16044:30;16110:34;16105:2;16090:18;;16083:62;-1:-1:-1;;;16176:2:146;16161:18;;16154:42;16228:3;16213:19;;15830:408::o;16243:256::-;16309:6;16317;16370:2;16358:9;16349:7;16345:23;16341:32;16338:52;;;16386:1;16383;16376:12;16338:52;16409:28;16427:9;16409:28;:::i;:::-;16399:38;;16456:37;16489:2;16478:9;16474:18;16456:37;:::i;16710:184::-;16780:6;16833:2;16821:9;16812:7;16808:23;16804:32;16801:52;;;16849:1;16846;16839:12;16801:52;-1:-1:-1;16872:16:146;;16710:184;-1:-1:-1;16710:184:146:o;17605:878::-;17741:9;17776:63;17792:46;17831:6;17792:46;:::i;17776:63::-;17861:3;17885:6;17880:3;17873:19;17911:4;17940:2;17935:3;17931:12;17924:19;;17984:6;17981:1;17977:14;17970:5;17966:26;18015:14;18007:6;18004:26;18001:46;;;18043:1;18040;18033:12;18001:46;18067:5;18081:369;18097:6;18092:3;18089:15;18081:369;;;18183:3;18170:17;-1:-1:-1;;;;;18206:11:146;18203:35;18200:125;;;18279:1;18308:2;18304;18297:14;18200:125;18350:57;18392:14;18378:11;18371:5;18367:23;18350:57;:::i;:::-;18338:70;;-1:-1:-1;18428:12:146;;;;18114;;18081:369;;19678:127;19739:10;19734:3;19730:20;19727:1;19720:31;19770:4;19767:1;19760:15;19794:4;19791:1;19784:15;19810:201;19848:3;19876:10;19921:2;19914:5;19910:14;19948:2;19939:7;19936:15;19933:41;;19954:18;;:::i;21292:417::-;21494:2;21476:21;;;21533:2;21513:18;;;21506:30;21572:34;21567:2;21552:18;;21545:62;-1:-1:-1;;;21638:2:146;21623:18;;21616:51;21699:3;21684:19;;21292:417::o;21714:135::-;21753:3;21774:17;;;21771:43;;21794:18;;:::i;:::-;-1:-1:-1;21841:1:146;21830:13;;21714:135::o;23348:271::-;23531:6;23523;23518:3;23505:33;23487:3;23557:16;;23582:13;;;23557:16;23348:271;-1:-1:-1;23348:271:146:o;25439:245::-;25506:6;25559:2;25547:9;25538:7;25534:23;25530:32;25527:52;;;25575:1;25572;25565:12;25527:52;25607:9;25601:16;25626:28;25648:5;25626:28;:::i;26943:128::-;27010:9;;;27031:11;;;27028:37;;;27045:18;;:::i;27684:127::-;27745:10;27740:3;27736:20;27733:1;27726:31;27776:4;27773:1;27766:15;27800:4;27797:1;27790:15;27816:120;27856:1;27882;27872:35;;27887:18;;:::i;:::-;-1:-1:-1;27921:9:146;;27816:120::o;27941:168::-;27981:7;28047:1;28043;28039:6;28035:14;28032:1;28029:21;28024:1;28017:9;28010:17;28006:45;28003:71;;;28054:18;;:::i;:::-;-1:-1:-1;28094:9:146;;27941:168::o;28114:125::-;28179:9;;;28200:10;;;28197:36;;;28213:18;;:::i;28244:183::-;-1:-1:-1;;;;;28363:10:146;;;28351;;;28347:27;;28386:12;;;28383:38;;;28401:18;;:::i;:::-;28383:38;28244:183;;;;:::o;28432:112::-;28464:1;28490;28480:35;;28495:18;;:::i;:::-;-1:-1:-1;28529:9:146;;28432:112::o;31193:400::-;31406:10;31394:23;;31376:42;;-1:-1:-1;;;;;31454:32:146;;31449:2;31434:18;;31427:60;31523:2;31518;31503:18;;31496:30;;;-1:-1:-1;;31543:44:146;;31568:18;;31560:6;31543:44;:::i;31598:287::-;31727:3;31765:6;31759:13;31781:66;31840:6;31835:3;31828:4;31820:6;31816:17;31781:66;:::i;:::-;31863:16;;;;;31598:287;-1:-1:-1;;31598:287:146:o;31890:249::-;31959:6;32012:2;32000:9;31991:7;31987:23;31983:32;31980:52;;;32028:1;32025;32018:12;31980:52;32060:9;32054:16;32079:30;32103:5;32079:30;:::i;32144:298::-;32313:2;32302:9;32295:21;32276:4;32333:44;32373:2;32362:9;32358:18;32350:6;32333:44;:::i;:::-;32325:52;;32427:6;32420:14;32413:22;32408:2;32397:9;32393:18;32386:50;32144:298;;;;;:::o;32447:407::-;32649:2;32631:21;;;32688:2;32668:18;;;32661:30;32727:34;32722:2;32707:18;;32700:62;-1:-1:-1;;;32793:2:146;32778:18;;32771:41;32844:3;32829:19;;32447:407::o;33988:873::-;-1:-1:-1;;;;;;34331:3:146;34309:16;;;34305:36;34293:49;;-1:-1:-1;;;;;;34397:3:146;34375:16;;;34371:51;34367:1;34358:11;;34351:72;-1:-1:-1;;;;;;34446:3:146;34495:16;;;34491:25;;34487:1;34478:11;;34471:46;-1:-1:-1;;;;;;34555:2:146;34551:15;;;34547:53;34542:2;34533:12;;34526:75;34635:16;;;34631:25;34626:2;34617:12;;34610:47;34682:2;34673:12;;34666:28;;;34717:13;;-1:-1:-1;;34739:75:146;34717:13;34802:2;34793:12;;34786:4;34774:17;;34739:75;:::i;:::-;34834:16;;;;34852:2;34830:25;;33988:873;-1:-1:-1;;;;;;;;33988:873:146:o;34866:812::-;35277:25;35272:3;35265:38;35247:3;35332:6;35326:13;35348:75;35416:6;35411:2;35406:3;35402:12;35395:4;35387:6;35383:17;35348:75;:::i;:::-;-1:-1:-1;;;35482:2:146;35442:16;;;35474:11;;;35467:40;35532:13;;35554:76;35532:13;35616:2;35608:11;;35601:4;35589:17;;35554:76;:::i;:::-;35650:17;35669:2;35646:26;;34866:812;-1:-1:-1;;;;34866:812:146:o;39114:157::-;39144:1;39178:4;39175:1;39171:12;39202:3;39192:37;;39209:18;;:::i;:::-;39261:3;39254:4;39251:1;39247:12;39243:22;39238:27;;;39114:157;;;;:::o;39276:151::-;39366:4;39359:12;;;39345;;;39341:31;;39384:14;;39381:40;;;39401:18;;:::i;43928:478::-;44130:2;44112:21;;;44169:2;44149:18;;;44142:30;44208:34;44203:2;44188:18;;44181:62;44279:34;44274:2;44259:18;;44252:62;-1:-1:-1;;;44345:3:146;44330:19;;44323:41;44396:3;44381:19;;43928:478::o;44411:136::-;44450:3;44478:5;44468:39;;44487:18;;:::i;:::-;-1:-1:-1;;;44523:18:146;;44411:136::o;45320:338::-;45522:2;45504:21;;;45561:2;45541:18;;;45534:30;-1:-1:-1;;;45595:2:146;45580:18;;45573:44;45649:2;45634:18;;45320:338::o;46009:422::-;46098:1;46141:5;46098:1;46155:270;46176:7;46166:8;46163:21;46155:270;;;46235:4;46231:1;46227:6;46223:17;46217:4;46214:27;46211:53;;;46244:18;;:::i;:::-;46294:7;46284:8;46280:22;46277:55;;;46314:16;;;;46277:55;46393:22;;;;46353:15;;;;46155:270;;;46159:3;46009:422;;;;;:::o;46436:806::-;46485:5;46515:8;46505:80;;-1:-1:-1;46556:1:146;46570:5;;46505:80;46604:4;46594:76;;-1:-1:-1;46641:1:146;46655:5;;46594:76;46686:4;46704:1;46699:59;;;;46772:1;46767:130;;;;46679:218;;46699:59;46729:1;46720:10;;46743:5;;;46767:130;46804:3;46794:8;46791:17;46788:43;;;46811:18;;:::i;:::-;-1:-1:-1;;46867:1:146;46853:16;;46882:5;;46679:218;;46981:2;46971:8;46968:16;46962:3;46956:4;46953:13;46949:36;46943:2;46933:8;46930:16;46925:2;46919:4;46916:12;46912:35;46909:77;46906:159;;;-1:-1:-1;47018:19:146;;;47050:5;;46906:159;47097:34;47122:8;47116:4;47097:34;:::i;:::-;47167:6;47163:1;47159:6;47155:19;47146:7;47143:32;47140:58;;;47178:18;;:::i;:::-;47216:20;;46436:806;-1:-1:-1;;;46436:806:146:o;47247:131::-;47307:5;47336:36;47363:8;47357:4;47336:36;:::i", - "linkReferences": { - "src/libraries/BeaconChainForks.sol": { - "BeaconChainForks": [ - { - "start": 9490, - "length": 20 - } - ] - } - }, + "object": "0x6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004615023565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a366004615057565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b53660046150de565b6107be565b3480156102c657600080fd5b506102da6102d536600461513e565b6108c4565b005b3480156102e857600080fd5b5061028c6102f7366004615159565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615f2783398151915281565b34801561033a57600080fd5b506102da610349366004615172565b610947565b34801561035a57600080fd5b506102da610369366004615172565b610971565b34801561037a57600080fd5b506102da61038936600461519e565b6109ef565b34801561039a57600080fd5b5061024a6103a936600461513e565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d93660046152b2565b610ace565b3480156103ea57600080fd5b5061040e6103f9366004615159565b60076020526000908152604090205460ff1681565b60405161025691906153c5565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da6104583660046153ed565b610d9c565b34801561046957600080fd5b5061028c610e68565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b936600461513e565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da6105073660046154e8565b610f1b565b34801561051857600080fd5b506102da61121e565b34801561052d57600080fd5b5061028c61053c3660046150de565b611303565b34801561054d57600080fd5b5061028c61055c3660046155fc565b611384565b34801561056d57600080fd5b506104d461057c36600461513e565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b236600461563d565b6113dd565b3480156105c357600080fd5b5061028c6105d2366004615159565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff3660046156e7565b6116f2565b34801561061057600080fd5b5061024a61061f366004615172565b6118a3565b34801561063057600080fd5b506102da6118ce565b34801561064557600080fd5b506102da61065436600461513e565b6119b3565b34801561066557600080fd5b50610679610674366004615159565b611a30565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be3660046155fc565b611a6a565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da610716366004615172565b611ac3565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b36600461572a565b611ae8565b34801561075c57600080fd5b5061028c600080516020615ea083398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107e257604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036108085760405163b0747d8160e01b815260040160405180910390fd5b600080610821876001600160a01b0388165b8787611b63565b600280546001600160401b0390811660009081526001602052604081208490558254949650929450849316916108568361575d565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b291906157d3565b60405180910390a39695505050505050565b6108dc600080516020615f27833981519152336118a3565b6109015760405162461bcd60e51b81526004016108f8906157e6565b60405180910390fd5b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096281611bda565b61096c8383611be4565b505050565b6001600160a01b03811633146109e15760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108f8565b6109eb8282611c6a565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a375760405162461bcd60e51b81526004016108f89061583b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a80600080516020615ee0833981519152546001600160a01b031690565b6001600160a01b031614610aa65760405162461bcd60e51b81526004016108f890615887565b610aaf81611cd1565b60408051600080825260208201909252610acb91839190611d05565b50565b610ad6611e70565b600080610ae38b8b611ec9565b91509150610af48260400151612133565b610b018260400151612262565b6000808e8e810190610b1391906158d3565b91509150610b258285604001516122be565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb491906158fd565b905080610bfb5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016108f8565b6000610c448b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a0151869150889088906124f2565b905080610c935760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016108f8565b505050506000610cf8878790610ca99190615916565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026126fc565b9050818114610d415760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b50610d8382828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612aaf92505050565b5050610d8f6001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610de45760405162461bcd60e51b81526004016108f89061583b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e2d600080516020615ee0833981519152546001600160a01b031690565b6001600160a01b031614610e535760405162461bcd60e51b81526004016108f890615887565b610e5c82611cd1565b6109eb82826001611d05565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f085760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f8565b50600080516020615ee083398151915290565b603254610100900460ff1615808015610f3b5750603254600160ff909116105b80610f555750303b158015610f55575060325460ff166001145b610fb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f8565b6032805460ff191660011790558015610fdb576032805461ff0019166101001790555b610fe3612c5d565b610feb612c8e565b611003600080516020615f2783398151915284611be4565b61101b600080516020615ea083398151915285611be4565b611026600085611be4565b61102e612c8e565b855187511461103c57600080fd5b845187511461104a57600080fd5b865161105d9060039060208a0190614f49565b5060005b60035463ffffffff821610156111b157868163ffffffff16815181106110895761108961597d565b60200260200101516004600060038463ffffffff16815481106110ae576110ae61597d565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112a5761112a61597d565b60200260200101516005600060038463ffffffff168154811061114f5761114f61597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a981615993565b915050611061565b506000805483151560ff19918216179091556008805490911660011790558015611215576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b611236600080516020615f27833981519152336118a3565b6112525760405162461bcd60e51b81526004016108f8906157e6565b60005b60035463ffffffff821610156112d75760006006600060038463ffffffff16815481106112845761128461597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112cf81615993565b915050611255565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661132757604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361134d5760405163b0747d8160e01b815260040160405180910390fd5b600080611363876001600160a01b03881661081a565b6002805492945090925082916001600160401b03169060006108568361575d565b6000805460ff166113a857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036113ce5760405163b0747d8160e01b815260040160405180910390fd5b60008061082187878787611b63565b6113e5611e70565b6000806113f28888611ec9565b915091506114038260400151612133565b6114108260400151612262565b61141e8983604001516122be565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115d05760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa15801561150b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152f91906158fd565b905060008190036115825760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016108f8565b6115b661158f898b615916565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612cb5565b600083815260096020526040902081905592506115e29050565b60008181526009602052604090205491505b6000846020015160016040516020016116109291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061165882856116538a8c615916565b612dac565b90508481146116a15760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b505050506116e682828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612aaf92505050565b50506112156001603355565b61170a600080516020615ea0833981519152336118a3565b6117265760405162461bcd60e51b81526004016108f8906159ac565b6000805b600354811015611792578463ffffffff166003828154811061174e5761174e61597d565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117805760019150611792565b8061178a81615a01565b91505061172a565b508061181b57600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118e6600080516020615f27833981519152336118a3565b6119025760405162461bcd60e51b81526004016108f8906157e6565b60005b60035463ffffffff821610156119875760016006600060038463ffffffff16815481106119345761193461597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff19169115159190911790558061197f81615993565b915050611905565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119cb600080516020615f27833981519152336118a3565b6119e75760405162461bcd60e51b81526004016108f8906157e6565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a4057600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a8e57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff1603611ab45760405163b0747d8160e01b815260040160405180910390fd5b60008061136387878787611b63565b600082815260c96020526040902060010154611ade81611bda565b61096c8383611c6a565b611b00600080516020615f27833981519152336118a3565b611b1c5760405162461bcd60e51b81526004016108f8906157e6565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bc69360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612e4892505050565b805160208201209097909650945050505050565b610acb8133612e83565b611bee82826118a3565b6109eb57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c263390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c7482826118a3565b156109eb57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611ce9600080516020615ea0833981519152336118a3565b610acb5760405162461bcd60e51b81526004016108f8906159ac565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d385761096c83612edc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d92575060408051601f3d908101601f19168201909252611d8f918101906158fd565b60015b611df55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f8565b600080516020615ee08339815191528114611e645760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f8565b5061096c838383612f78565b600260335403611ec25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108f8565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f4685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612fa392505050565b905060008585604051611f5a929190615a1a565b60405190819003902090506000808281526007602052604090205460ff166002811115611f8957611f896153af565b14611fd65760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016108f8565b46826080015163ffffffff161461201e5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016108f8565b600854825160ff9081169116146120685760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016108f8565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120b3575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121265760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016108f8565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b03166121995760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122169190615a2a565b610acb5760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016108f8565b63ffffffff811660009081526006602052604090205460ff1615610acb5760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016108f8565b63ffffffff81166000908152600460205260409020546001600160a01b03166123245760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b191906158fd565b6000036124005760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016108f8565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248a91906158fd565b6124949042615a47565b9050607881101561096c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016108f8565b6000806124fe83613068565b9050600081856001600160401b03161061251957601b61251c565b60075b60ff169050600082866001600160401b03161061255857612000612549846001600160401b038916615a47565b6125539190615a70565b61256d565b61256d6120006001600160401b038816615a70565b90506000866001600160401b0316886001600160401b0316036125ac5750600b61259981610200615a84565b6125a590610183615aa3565b90506126e1565b6120006125b9888a615ab6565b6001600160401b03161161261b5750600b6125d5816020615a84565b6125e0906006615aa3565b90506125f76120006001600160401b038916615add565b61260361200083615a84565b61260d9190615aa3565b905061259981610200615a84565b876001600160401b0316876001600160401b031610156126995750600b82612644826020615a84565b61264e9190615aa3565b905061265b816002615a84565b612666906000615aa3565b905081612677630100000083615a84565b6126819190615aa3565b905061268e816002615a84565b6125e0906001615aa3565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016108f8565b6126ed8b828c8c6130a8565b9b9a5050505050505050505050565b60008061270a878a8a6130c2565b90506000816000815181106127215761272161597d565b01602001516001600160f81b03191690506000600160f81b8214806127535750600160f91b6001600160f81b03198316145b15612760575060016127c5565b600360fe1b6001600160f81b031983161061277d575060006127c5565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016108f8565b6000602084019050600060405180604001604052808487516127e79190615a47565b81526020016127f68585615aa3565b90529050600061280582613962565b905080516004146128515760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016108f8565b6000612876826003815181106128695761286961597d565b6020026020010151613962565b905080518c106128c85760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016108f8565b60006128df828e815181106128695761286961597d565b9050805160031461293d5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016108f8565b6000612962826000815181106129555761295561597d565b6020026020010151613b87565b90508c6001600160a01b0316816001600160a01b0316146129d55760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016108f8565b60006129ed836001815181106128695761286961597d565b90508c612a1382600081518110612a0657612a0661597d565b6020026020010151613bf1565b14612a765760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016108f8565b612a98818d81518110612a8b57612a8b61597d565b6020026020010151613bf8565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612ade93929190615af1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612b309190615b21565b6000604051808303816000865af19150503d8060008114612b6d576040519150601f19603f3d011682016040523d82523d6000602084013e612b72565b606091505b5080519195509350600092506020039050612bb457600082806020019051810190612b9d9190615b3d565b6001600160e01b031916631dee306b60e11b149150505b828015612bbe5750805b15612be1576000858152600760205260409020805460ff19166002179055612bfb565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612c46929190615b5a565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612c845760405162461bcd60e51b81526004016108f890615b7e565b612c8c613cfb565b565b603254610100900460ff16612c8c5760405162461bcd60e51b81526004016108f890615b7e565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612d1a82604051602001612d0491815260200190565b60405160208183030381529060405287866130c2565b90506000815111612d665760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016108f8565b6000612d79612d7483613d22565b613962565b90508051600414612d8957600080fd5b612d9f81600281518110612a0657612a0661597d565b93505050505b9392505050565b600080612ddb85604051602001612dc591815260200190565b60405160208183030381529060405284866130c2565b90506000815111612e2e5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016108f8565b612e3f612e3a82613d22565b613bf1565b95945050505050565b606087878787878787604051602001612e679796959493929190615bc9565b6040516020818303038152906040529050979650505050505050565b612e8d82826118a3565b6109eb57612e9a81613d75565b612ea5836020613d87565b604051602001612eb6929190615c50565b60408051601f198184030181529082905262461bcd60e51b82526108f8916004016157d3565b6001600160a01b0381163b612f495760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f8565b600080516020615ee083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612f8183613f22565b600082511180612f8e5750805b1561096c57612f9d8383613f62565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091613057918a9190613052908290615a47565b61404d565b60c088015250949695505050505050565b60008163ffffffff166001036130825750625ec000919050565b8163ffffffff1660050361309a5750624f4000919050565b50600019919050565b919050565b6000806130b6868686614139565b90921495945050505050565b6060600084511161310d5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016108f8565b6000613118846142c8565b90506000613125866143b6565b905060008460405160200161313c91815260200190565b60405160208183030381529060405290506000805b845181101561390b57600085828151811061316e5761316e61597d565b6020026020010151905084518311156131e05760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016108f8565b8260000361327f578051805160209182012060405161322e9261320892910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61327a5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016108f8565b613375565b80515160201161330557805180516020918201206040516132a99261320892910190815260200190565b61327a5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016108f8565b8051845160208087019190912082519190920120146133755760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016108f8565b61338160106001615aa3565b8160200151510361352e57845183036134c65760006133bd82602001516010815181106133b0576133b061597d565b60200260200101516144d0565b905060008151116134365760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016108f8565b600187516134449190615a47565b83146134b85760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016108f8565b9650612da595505050505050565b60008584815181106134da576134da61597d565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106135055761350561597d565b60200260200101519050613518816145f3565b9550613525600186615aa3565b945050506138f8565b60028160200151510361389f57600061354682614618565b905060008160008151811061355d5761355d61597d565b016020015160f81c90506000613574600283615cc5565b61357f906002615ce7565b90506000613590848360ff1661463c565b9050600061359e8a8961463c565b905060006135ac8383614672565b9050808351146136245760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016108f8565b60ff851660021480613639575060ff85166003145b156137df57808251146136b45760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016108f8565b60006136d088602001516001815181106133b0576133b061597d565b905060008151116137495760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016108f8565b60018d516137579190615a47565b89146137cb5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016108f8565b9c50612da59b505050505050505050505050565b60ff851615806137f2575060ff85166001145b156138315761381e87602001516001815181106138115761381161597d565b60200260200101516145f3565b995061382a818a615aa3565b9850613894565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016108f8565b5050505050506138f8565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016108f8565b508061390381615a01565b915050613151565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016108f8565b60606000806000613972856146f1565b91945092509050600181600181111561398d5761398d6153af565b14613a005760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016108f8565b8451613a0c8385615aa3565b14613a745760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016108f8565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081613a8d5790505090506000845b8751811015613b7b57600080613b006040518060400160405280858d60000151613ae49190615a47565b8152602001858d60200151613af99190615aa3565b90526146f1565b509150915060405180604001604052808383613b1c9190615aa3565b8152602001848c60200151613b319190615aa3565b815250858581518110613b4657613b4661597d565b6020908102919091010152613b5c600185615aa3565b9350613b688183615aa3565b613b729084615aa3565b92505050613aba565b50815295945050505050565b8051600090600103613b9b57506000919050565b8151601514613bec5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016108f8565b6107b8825b60006107b8825b6000602182600001511115613c4f5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000806000613c5d856146f1565b919450925090506000816001811115613c7857613c786153af565b14613cc55760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000838660200151613cd79190615aa3565b80519091506020841015613cf15760208490036101000a90045b9695505050505050565b603254610100900460ff16612c565760405162461bcd60e51b81526004016108f890615b7e565b60408051808201909152600080825260208201526000825111613d575760405162461bcd60e51b81526004016108f890615d00565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613d96836002615a84565b613da1906002615aa3565b6001600160401b03811115613db857613db86151fd565b6040519080825280601f01601f191660200182016040528015613de2576020820181803683370190505b509050600360fc1b81600081518110613dfd57613dfd61597d565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613e2c57613e2c61597d565b60200101906001600160f81b031916908160001a9053506000613e50846002615a84565b613e5b906001615aa3565b90505b6001811115613ed3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613e8f57613e8f61597d565b1a60f81b828281518110613ea557613ea561597d565b60200101906001600160f81b031916908160001a90535060049490941c93613ecc81615d70565b9050613e5e565b508315612da55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108f8565b613f2b81612edc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613fca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108f8565b600080846001600160a01b031684604051613fe59190615b21565b600060405180830381855af49150503d8060008114614020576040519150601f19603f3d011682016040523d82523d6000602084013e614025565b606091505b5091509150612e3f8282604051806060016040528060278152602001615f0060279139614db4565b60608161405b81601f615aa3565b10156140795760405162461bcd60e51b81526004016108f890615d87565b6140838284615aa3565b845110156140c75760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b6060821580156140e65760405191506000825260208201604052614130565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561411f578051835260209283019201614107565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161414a9190615aa3565b614155906002615e93565b1161415f57600080fd5b8360005b8460011461413057614176600286615add565b6001036142155760028482815181106141915761419161597d565b6020026020010151836040516020016141b4929190918252602082015260400190565b60408051601f19818403018152908290526141ce91615b21565b602060405180830381855afa1580156141eb573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061420e91906158fd565b91506142a9565b60028285838151811061422a5761422a61597d565b602002602001015160405160200161424c929190918252602082015260400190565b60408051601f198184030181529082905261426691615b21565b602060405180830381855afa158015614283573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142a691906158fd565b91505b6142b4600286615a70565b9450806142c081615a01565b915050614163565b80516060906000816001600160401b038111156142e7576142e76151fd565b60405190808252806020026020018201604052801561432c57816020015b60408051808201909152606080825260208201528152602001906001900390816143055790505b50905060005b828110156143ae5760405180604001604052808683815181106143575761435761597d565b602002602001015181526020016143868784815181106143795761437961597d565b6020026020010151614dcd565b81525082828151811061439b5761439b61597d565b6020908102919091010152600101614332565b509392505050565b805160609060006143c8826002615a84565b6001600160401b038111156143df576143df6151fd565b6040519080825280601f01601f191660200182016040528015614409576020820181803683370190505b5090506000805b838110156144c65785818151811061442a5761442a61597d565b6020910101516001600160f81b03198116925060041c60ff60f41b1683614452836002615a84565b815181106144625761446261597d565b60200101906001600160f81b031916908160001a905350600f60f81b82168361448c836002615a84565b614497906001615aa3565b815181106144a7576144a761597d565b60200101906001600160f81b031916908160001a905350600101614410565b5090949350505050565b606060008060006144e0856146f1565b9194509250905060008160018111156144fb576144fb6153af565b1461456e5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016108f8565b6145788284615aa3565b8551146145e45760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016108f8565b612e3f85602001518484614ddb565b6060602082600001511061460f5761460a826144d0565b6107b8565b6107b882614e7b565b60606107b861463783602001516000815181106133b0576133b061597d565b6143b6565b60608251821061465b57506040805160208101909152600081526107b8565b612da5838384865161466d9190615a47565b614e91565b6000806000835185511061468757835161468a565b84515b90505b80821080156146e157508382815181106146a9576146a961597d565b602001015160f81c60f81b6001600160f81b0319168583815181106146d0576146d061597d565b01602001516001600160f81b031916145b156143ae5781600101915061468d565b6000806000808460000151116147195760405162461bcd60e51b81526004016108f890615d00565b6020840151805160001a607f811161473e576000600160009450945094505050614dad565b60b7811161489b576000614753608083615a47565b9050808760000151116147d35760405162461bcd60e51b815260206004820152604e6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016108f8565b6001838101516001600160f81b03191690821415806148005750600160ff1b6001600160f81b0319821610155b6148885760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016108f8565b5060019550935060009250614dad915050565b60bf8111614adc5760006148b060b783615a47565b9050808760000151116149335760405162461bcd60e51b81526020600482015260516024820152600080516020615ec083398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016108f8565b60018301516001600160f81b03191660008190036149ba5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016108f8565b600184015160088302610100031c60378111614a3d5760405162461bcd60e51b81526020600482015260486024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016108f8565b614a478184615aa3565b895111614abf5760405162461bcd60e51b815260206004820152604c6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016108f8565b614aca836001615aa3565b9750955060009450614dad9350505050565b60f78111614b7e576000614af160c083615a47565b905080876000015111614b6d5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016108f8565b600195509350849250614dad915050565b6000614b8b60f783615a47565b905080876000015111614c0a5760405162461bcd60e51b815260206004820152604d6024820152600080516020615ec083398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016108f8565b60018301516001600160f81b0319166000819003614c8f5760405162461bcd60e51b81526020600482015260486024820152600080516020615ec083398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016108f8565b600184015160088302610100031c60378111614d105760405162461bcd60e51b81526020600482015260466024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016108f8565b614d1a8184615aa3565b895111614d905760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016108f8565b614d9b836001615aa3565b9750955060019450614dad9350505050565b9193909250565b60608315614dc3575081612da5565b612da58383614f1f565b60606107b8612d7483613d22565b60606000826001600160401b03811115614df757614df76151fd565b6040519080825280601f01601f191660200182016040528015614e21576020820181803683370190505b50905082600003614e33579050612da5565b6000614e3f8587615aa3565b90506020820160005b85811015614e60578281015182820152602001614e48565b85811115614e6f576000868301525b50919695505050505050565b60606107b8826020015160008460000151614ddb565b60608182601f011015614eb65760405162461bcd60e51b81526004016108f890615d87565b828284011015614ed85760405162461bcd60e51b81526004016108f890615d87565b818301845110156140c75760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b815115614f2f5781518083602001fd5b8060405162461bcd60e51b81526004016108f891906157d3565b82805482825590600052602060002090600701600890048101928215614fe85791602002820160005b83821115614fb657835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614f72565b8015614fe65782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614fb6565b505b50614ff4929150614ff8565b5090565b5b80821115614ff45760008155600101614ff9565b6001600160e01b031981168114610acb57600080fd5b60006020828403121561503557600080fd5b8135612da58161500d565b80356001600160401b03811681146130a357600080fd5b60006020828403121561506957600080fd5b612da582615040565b803563ffffffff811681146130a357600080fd5b80356001600160a01b03811681146130a357600080fd5b60008083601f8401126150af57600080fd5b5081356001600160401b038111156150c657600080fd5b60208301915083602082850101111561212c57600080fd5b600080600080606085870312156150f457600080fd5b6150fd85615072565b935061510b60208601615086565b925060408501356001600160401b0381111561512657600080fd5b6151328782880161509d565b95989497509550505050565b60006020828403121561515057600080fd5b612da582615072565b60006020828403121561516b57600080fd5b5035919050565b6000806040838503121561518557600080fd5b8235915061519560208401615086565b90509250929050565b6000602082840312156151b057600080fd5b612da582615086565b60008083601f8401126151cb57600080fd5b5081356001600160401b038111156151e257600080fd5b6020830191508360208260051b850101111561212c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561523b5761523b6151fd565b604052919050565b600082601f83011261525457600080fd5b81356001600160401b0381111561526d5761526d6151fd565b615280601f8201601f1916602001615213565b81815284602083860101111561529557600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156152d357600080fd5b6001600160401b03808d3511156152e957600080fd5b6152f68e8e358f0161509d565b909c509a5060208d013581101561530c57600080fd5b61531c8e60208f01358f0161509d565b909a50985060408d013581101561533257600080fd5b6153428e60408f01358f016151b9565b909850965060608d0135955060808d013581101561535f57600080fd5b61536f8e60808f01358f016151b9565b909550935060a08d013581101561538557600080fd5b506153968d60a08e01358e01615243565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b60208101600383106153e757634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561540057600080fd5b61540983615086565b915060208301356001600160401b0381111561542457600080fd5b61543085828601615243565b9150509250929050565b60006001600160401b03821115615453576154536151fd565b5060051b60200190565b600082601f83011261546e57600080fd5b8135602061548361547e8361543a565b615213565b82815260059290921b840181019181810190868411156154a257600080fd5b8286015b848110156154c4576154b781615086565b83529183019183016154a6565b509695505050505050565b8015158114610acb57600080fd5b80356130a3816154cf565b60008060008060008060c0878903121561550157600080fd5b86356001600160401b038082111561551857600080fd5b818901915089601f83011261552c57600080fd5b8135602061553c61547e8361543a565b82815260059290921b8401810191818101908d84111561555b57600080fd5b948201945b838610156155805761557186615072565b82529482019490820190615560565b9a50508a01359250508082111561559657600080fd5b6155a28a838b0161545d565b965060408901359150808211156155b857600080fd5b506155c589828a0161545d565b9450506155d460608801615086565b92506155e260808801615086565b91506155f060a088016154dd565b90509295509295509295565b6000806000806060858703121561561257600080fd5b61561b85615072565b93506020850135925060408501356001600160401b0381111561512657600080fd5b60008060008060008060006080888a03121561565857600080fd5b61566188615040565b965060208801356001600160401b038082111561567d57600080fd5b6156898b838c0161509d565b909850965060408a01359150808211156156a257600080fd5b6156ae8b838c016151b9565b909650945060608a01359150808211156156c757600080fd5b506156d48a828b016151b9565b989b979a50959850939692959293505050565b6000806000606084860312156156fc57600080fd5b61570584615072565b925061571360208501615086565b915061572160408501615086565b90509250925092565b60006020828403121561573c57600080fd5b8135612da5816154cf565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681810361577957615779615747565b6001019392505050565b60005b8381101561579e578181015183820152602001615786565b50506000910152565b600081518084526157bf816020860160208601615783565b601f01601f19169290920160200192915050565b602081526000612da560208301846157a7565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600080604083850312156158e657600080fd5b6158ef83615040565b915061519560208401615040565b60006020828403121561590f57600080fd5b5051919050565b600061592461547e8461543a565b80848252602080830192508560051b85013681111561594257600080fd5b855b81811015614e6f5780356001600160401b038111156159635760008081fd5b61596f36828a01615243565b865250938201938201615944565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff80831681810361577957615779615747565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b600060018201615a1357615a13615747565b5060010190565b8183823760009101908152919050565b600060208284031215615a3c57600080fd5b8151612da5816154cf565b818103818111156107b8576107b8615747565b634e487b7160e01b600052601260045260246000fd5b600082615a7f57615a7f615a5a565b500490565b6000816000190483118215151615615a9e57615a9e615747565b500290565b808201808211156107b8576107b8615747565b6001600160401b03828116828216039080821115615ad657615ad6615747565b5092915050565b600082615aec57615aec615a5a565b500690565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612e3f908301846157a7565b60008251615b33818460208701615783565b9190910192915050565b600060208284031215615b4f57600080fd5b8151612da58161500d565b604081526000615b6d60408301856157a7565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615c3d816045850160208701615783565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615c88816017850160208801615783565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615cb9816028840160208801615783565b01602801949350505050565b600060ff831680615cd857615cd8615a5a565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b8615747565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615d7f57615d7f615747565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615dea578160001904821115615dd057615dd0615747565b80851615615ddd57918102915b93841c9390800290615db4565b509250929050565b600082615e01575060016107b8565b81615e0e575060006107b8565b8160018114615e245760028114615e2e57615e4a565b60019150506107b8565b60ff841115615e3f57615e3f615747565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615e6d575081810a6107b8565b615e778383615daf565b8060001904821115615e8b57615e8b615747565b029392505050565b6000612da58383615df256fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220d1e681f8339d20f7fcc3322c41e55c3dcb7cdb430c94d44ac0291a618458e04664736f6c63430008100033", + "sourceMap": "698:1544:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2903:213:31;;;;;;;;;;-1:-1:-1;2903:213:31;;;;;:::i;:::-;;:::i;:::-;;;565:14:146;;558:22;540:41;;528:2;513:18;2903:213:31;;;;;;;;527:42:103;;;;;;;;;;-1:-1:-1;527:42:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1103:25:146;;;1091:2;1076:18;527:42:103;957:177:146;3438:539:99;;;;;;;;;;-1:-1:-1;3438:539:99;;;;;:::i;:::-;;:::i;3147:128:101:-;;;;;;;;;;-1:-1:-1;3147:128:101;;;;;:::i;:::-;;:::i;:::-;;4708:129:31;;;;;;;;;;-1:-1:-1;4708:129:31;;;;;:::i;:::-;4782:7;4808:12;;;:6;:12;;;;;:22;;;;4708:129;1199:66:101;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1199:66:101;;5133:145:31;;;;;;;;;;-1:-1:-1;5133:145:31;;;;;:::i;:::-;;:::i;6242:214::-;;;;;;;;;;-1:-1:-1;6242:214:31;;;;;:::i;:::-;;:::i;3317:197:38:-;;;;;;;;;;-1:-1:-1;3317:197:38;;;;;:::i;:::-;;:::i;1291:37:103:-;;;;;;;;;;-1:-1:-1;1291:37:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;4866:1928:100;;;;;;;;;;-1:-1:-1;4866:1928:100;;;;;:::i;:::-;;:::i;1398:54:103:-;;;;;;;;;;-1:-1:-1;1398:54:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;;-1:-1:-1;434:26:103;;;;;;;;1876:109:100;;;;;;;;;;-1:-1:-1;1957:14:100;:21;1876:109;;3763:222:38;;;;;;:::i;:::-;;:::i;3006:131::-;;;;;;;;;;;;;:::i;1690:20:103:-;;;;;;;;;;-1:-1:-1;1690:20:103;;;;;;;;;;;7434:4:146;7422:17;;;7404:36;;7392:2;7377:18;1690:20:103;7262:184:146;1164:46:103;;;;;;;;;;-1:-1:-1;1164:46:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;7615:32:146;;;7597:51;;7585:2;7570:18;1164:46:103;7451:203:146;1118:958:102;;;;;;;;;;-1:-1:-1;1118:958:102;;;;;:::i;:::-;;:::i;3463:198:101:-;;;;;;;;;;;;;:::i;1864:488:99:-;;;;;;;;;;-1:-1:-1;1864:488:99;;;;;:::i;:::-;;:::i;2914:518::-;;;;;;;;;;-1:-1:-1;2914:518:99;;;;;:::i;:::-;;:::i;999:51:103:-;;;;;;;;;;-1:-1:-1;999:51:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;;;;;-1:-1:-1;2394:1820:100;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;;;;;-1:-1:-1;1936:51:103;;;;;:::i;:::-;;;;;;;;;;;;;;3987:684:101;;;;;;;;;;-1:-1:-1;3987:684:101;;;;;:::i;:::-;;:::i;3203:145:31:-;;;;;;;;;;-1:-1:-1;3203:145:31;;;;;:::i;:::-;;:::i;2432:193:101:-;;;;;;;;;;;;;:::i;2827:123::-;;;;;;;;;;-1:-1:-1;2827:123:101;;;;;:::i;:::-;;:::i;879:30:103:-;;;;;;;;;;-1:-1:-1;879:30:103;;;;;:::i;:::-;;:::i;:::-;;;13007:10:146;12995:23;;;12977:42;;12965:2;12950:18;879:30:103;12833:192:146;2324:49:31;;;;;;;;;;-1:-1:-1;2324:49:31;2369:4;2324:49;;1391:467:99;;;;;;;;;;-1:-1:-1;1391:467:99;;;;;:::i;:::-;;:::i;634:19:103:-;;;;;;;;;;-1:-1:-1;634:19:103;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;13192:31:146;;;13174:50;;13162:2;13147:18;634:19:103;13030:200:146;5558:147:31;;;;;;;;;;-1:-1:-1;5558:147:31;;;;;:::i;:::-;;:::i;924:58:100:-;;;;;;;;;;;;973:9;924:58;;2097:142:101;;;;;;;;;;-1:-1:-1;2097:142:101;;;;;:::i;:::-;;:::i;1370:66::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1370:66:101;;837:33:102;;;;;;;;;;;;869:1;837:33;;2903:213:31;2988:4;-1:-1:-1;;;;;;3011:58:31;;-1:-1:-1;;;3011:58:31;;:98;;-1:-1:-1;;;;;;;;;;1168:51:44;;;3073:36:31;3004:105;2903:213;-1:-1:-1;;2903:213:31:o;3438:539:99:-;3603:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3648:13:::1;3626:18;:35;;::::0;3622:71:::1;;3670:23;;-1:-1:-1::0;;;3670:23:99::1;;;;;;;;;;;3622:71;3704:20;::::0;3761:85:::1;3780:18:::0;-1:-1:-1;;;;;337:22:113;;3800:39:99::1;3841:4;;3761:18;:85::i;:::-;3865:5;::::0;;-1:-1:-1;;;;;3865:5:99;;::::1;3856:15;::::0;;;:8:::1;:15;::::0;;;;:29;;;3912:7;;3703:143;;-1:-1:-1;3703:143:99;;-1:-1:-1;3703:143:99;;3912:7:::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;;-1:-1:-1::0;;;;;3900:42:99::1;;3934:7;3900:42;;;;;;:::i;:::-;;;;;;;;3959:11:::0;3438:539;-1:-1:-1;;;;;;3438:539:99:o;3147:128:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;;;;;;;;;3213:15:::1;::::0;::::1;3231:5;3213:15:::0;;;:6:::1;:15;::::0;;;;;:23;;-1:-1:-1;;3213:23:101::1;::::0;;3251:17;::::1;::::0;3231:5;3251:17:::1;3147:128:::0;:::o;5133:145:31:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5246:25:::1;5257:4;5263:7;5246:10;:25::i;:::-;5133:145:::0;;;:::o;6242:214::-;-1:-1:-1;;;;;6337:23:31;;929:10:41;6337:23:31;6329:83;;;;-1:-1:-1;;;6329:83:31;;15203:2:146;6329:83:31;;;15185:21:146;15242:2;15222:18;;;15215:30;15281:34;15261:18;;;15254:62;-1:-1:-1;;;15332:18:146;;;15325:45;15387:19;;6329:83:31;15001:411:146;6329:83:31;6423:26;6435:4;6441:7;6423:11;:26::i;:::-;6242:214;;:::o;3317:197:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3400:36:::1;3418:17;3400;:36::i;:::-;3487:12;::::0;;3497:1:::1;3487:12:::0;;;::::1;::::0;::::1;::::0;;;3446:61:::1;::::0;3468:17;;3487:12;3446:21:::1;:61::i;:::-;3317:197:::0;:::o;4866:1928:100:-;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;13192:31:146;;5661:52:100;;::::1;13174:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;13147:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;17101:2:146;5727:58:100::1;::::0;::::1;17083:21:146::0;17140:2;17120:18;;;17113:30;-1:-1:-1;;;17159:18:146;;;17152:51;17220:18;;5727:58:100::1;16899:345:146::0;5727:58:100::1;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;17451:2:146;5965:47:100::1;::::0;::::1;17433:21:146::0;17490:2;17470:18;;;17463:30;17529:29;17509:18;;;17502:57;17576:18;;5965:47:100::1;17249:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;18690:2:146;6648:67:100::1;::::0;::::1;18672:21:146::0;18729:2;18709:18;;;18702:30;-1:-1:-1;;;18748:18:146;;;18741:51;18809:18;;6648:67:100::1;18488:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;3763:222:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3880:36:::1;3898:17;3880;:36::i;:::-;3926:52;3948:17;3967:4;3973;3926:21;:52::i;3006:131::-:0;3084:7;2324:4;-1:-1:-1;;;;;2333:6:38;2316:23;;2308:92;;;;-1:-1:-1;;;2308:92:38;;19040:2:146;2308:92:38;;;19022:21:146;19079:2;19059:18;;;19052:30;19118:34;19098:18;;;19091:62;19189:26;19169:18;;;19162:54;19233:19;;2308:92:38;18838:420:146;2308:92:38;-1:-1:-1;;;;;;;;;;;;3006:131:38;:::o;1118:958:102:-;3291:13:37;;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:37;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:37;1476:19:40;:23;;;3376:66:37;;-1:-1:-1;3425:12:37;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:37;;19465:2:146;3314:201:37;;;19447:21:146;19504:2;19484:18;;;19477:30;19543:34;19523:18;;;19516:62;-1:-1:-1;;;19594:18:146;;;19587:44;19648:19;;3314:201:37;19263:410:146;3314:201:37;3525:12;:16;;-1:-1:-1;;3525:16:37;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:37;;;;;3551:65;1380:24:102::1;:22;:24::i;:::-;1414:22;:20;:22::i;:::-;1446:36;-1:-1:-1::0;;;;;;;;;;;1472:9:102::1;1446:10;:36::i;:::-;1492;-1:-1:-1::0;;;;;;;;;;;1518:9:102::1;1492:10;:36::i;:::-;1538:41;2369:4:31;1569:9:102::0;1538:10:::1;:41::i;:::-;1589:24;:22;:24::i;:::-;1658:13;:20;1632:15;:22;:46;1624:55;;;::::0;::::1;;1723:13;:20;1697:15;:22;:46;1689:55;;;::::0;::::1;;1755:32:::0;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1802:8;1797:204;1820:14;:21:::0;1816:25:::1;::::0;::::1;;1797:204;;;1909:13;1923:1;1909:16;;;;;;;;;;:::i;:::-;;;;;;;1862:12;:31;1875:14;1890:1;1875:17;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1862:31;;;;;;;;;;;;;;;;:64;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;;1974:13;1988:1;1974:16;;;;;;;;;;:::i;:::-;;;;;;;1940:12;:31;1953:14;1968:1;1953:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;1940:31:::0;;;::::1;::::0;;;;;;;;:50;;-1:-1:-1;;;;;;1940:50:102::1;-1:-1:-1::0;;;;;1940:50:102;;;::::1;::::0;;;::::1;::::0;;1843:3;::::1;::::0;::::1;:::i;:::-;;;;1797:204;;;-1:-1:-1::0;2010:14:102::1;:32:::0;;;::::1;;-1:-1:-1::0;;2010:32:102;;::::1;;::::0;;;2052:7:::1;:17:::0;;;;::::1;2010:32:::0;2052:17:::1;::::0;;3636:99:37;;;;3670:13;:21;;-1:-1:-1;;3670:21:37;;;3710:14;;-1:-1:-1;7404:36:146;;3710:14:37;;7392:2:146;7377:18;3710:14:37;;;;;;;3636:99;3258:483;1118:958:102;;;;;;:::o;3463:198:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;3523:8:::1;3518:109;3541:14;:21:::0;3537:25:::1;::::0;::::1;;3518:109;;;3611:5;3583:6;:25;3590:14;3605:1;3590:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;3583:25:::0;;;::::1;::::0;;;;;;;;:33;;-1:-1:-1;;3583:33:101::1;::::0;::::1;;::::0;;;::::1;::::0;;3564:3;::::1;::::0;::::1;:::i;:::-;;;;3518:109;;;-1:-1:-1::0;3641:13:101::1;::::0;::::1;::::0;;;::::1;3463:198::o:0;1864:488:99:-;2013:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;2062:13:::1;2040:18;:35;;::::0;2036:71:::1;;2084:23;;-1:-1:-1::0;;;2084:23:99::1;;;;;;;;;;;2036:71;2118:20;::::0;2175:85:::1;2194:18:::0;-1:-1:-1;;;;;337:22:113;;2214:39:99::1;245:122:113::0;2175:85:99::1;2287:5;:7:::0;;2117:143;;-1:-1:-1;2117:143:99;;-1:-1:-1;2117:143:99;;-1:-1:-1;;;;;2287:7:99::1;::::0;:5:::1;:7;::::0;::::1;:::i;2914:518::-:0;3079:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3124:13:::1;3102:18;:35;;::::0;3098:71:::1;;3146:23;;-1:-1:-1::0;;;3146:23:99::1;;;;;;;;;;;3098:71;3180:20;3202:19:::0;3237:64:::1;3256:18;3276;3296:4;;3237:18;:64::i;2394:1820:100:-:0;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;20434:3:146;20412:16;;;;-1:-1:-1;;;;;;20408:43:146;2955:82:100;;::::1;20396:56:146::0;20507:3;20485:16;;;-1:-1:-1;;;;;;20481:51:146;20468:11;;;20461:72;20571:2;20567:15;-1:-1:-1;;;;;;20567:15:146;20549:12;;;20542:75;2955:82:100;;;;;;;;;20633:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;13192:31:146;;3301:61:100;;::::1;13174:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;13147:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;20858:2:146;3380:67:100::1;::::0;::::1;20840:21:146::0;20897:2;20877:18;;;20870:30;20936:33;20916:18;;;20909:61;20987:18;;3380:67:100::1;20656:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;21206:31:146;;;;21188:50;;21269:2;21254:18;;21247:34;21176:2;21161:18;;21016:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;1103:25:146::0;3826:80:100;;;;;;;;;1076:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;18690:2:146;4090:31:100::1;::::0;::::1;18672:21:146::0;18729:2;18709:18;;;18702:30;-1:-1:-1;;;18748:18:146;;;18741:51;18809:18;;4090:31:100::1;18488:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;3987:684:101;1689:34;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;:::-;4135:18:::1;4176:9:::0;4171:186:::1;4195:14;:21:::0;4191:25;::::1;4171:186;;;4262:7;4241:28;;:14;4256:1;4241:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;::::1;;;:28:::0;4237:110:::1;;4305:4;4289:20;;4327:5;;4237:110;4218:3:::0;::::1;::::0;::::1;:::i;:::-;;;;4171:186;;;;4371:13;4366:117;;4400:14;:28:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4400:28:101;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;;;;::::1;;;::::0;;::::1;::::0;::::1;;::::0;;::::1;;::::0;;4447:25:::1;::::0;4400:28;;4447:25:::1;::::0;::::1;4366:117;4492:21;::::0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;:49;;-1:-1:-1;;;;;4492:49:101;;::::1;-1:-1:-1::0;;;;;;4492:49:101;;::::1;::::0;::::1;::::0;;;4551:12:::1;:21:::0;;;;;;:35;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;4601:63;;22066:34:146;;;22116:18;;;22109:43;;;;4601:63:101::1;::::0;22001:18:146;4601:63:101::1;;;;;;;4125:546;3987:684:::0;;;:::o;3203:145:31:-;3289:4;3312:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3312:29:31;;;;;;;;;;;;;;;3203:145::o;2432:193:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2490:8:::1;2485:108;2508:14;:21:::0;2504:25:::1;::::0;::::1;;2485:108;;;2578:4;2550:6;:25;2557:14;2572:1;2557:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;2550:25:::0;;;::::1;::::0;;;;;;;;:32;;-1:-1:-1;;2550:32:101::1;::::0;::::1;;::::0;;;::::1;::::0;;2531:3;::::1;::::0;::::1;:::i;:::-;;;;2485:108;;;-1:-1:-1::0;2607:11:101::1;::::0;::::1;::::0;;;::::1;2432:193::o:0;2827:123::-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2891:15:::1;::::0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:22;;-1:-1:-1;;2891:22:101::1;2909:4;2891:22;::::0;;2928:15;::::1;::::0;2891;2928::::1;2827:123:::0;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1391:467:99:-;1540:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;1589:13:::1;1567:18;:35;;::::0;1563:71:::1;;1611:23;;-1:-1:-1::0;;;1611:23:99::1;;;;;;;;;;;1563:71;1645:20;1667:19:::0;1702:64:::1;1721:18;1741;1761:4;;1702:18;:64::i;5558:147:31:-:0;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5672:26:::1;5684:4;5690:7;5672:11;:26::i;2097:142:101:-:0;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2170:14:::1;:24:::0;;-1:-1:-1;;2170:24:101::1;::::0;::::1;;::::0;;::::1;::::0;;;2209:23:::1;::::0;540:41:146;;;2209:23:101::1;::::0;528:2:146;513:18;2209:23:101::1;;;;;;;2097:142:::0;:::o;4535:497:99:-;4801:7;;4822:5;;4765:213;;;;;;;;;;;;;;;;;;;;;;4692:25;;4719:19;;4765:213;;4801:7;;;;;-1:-1:-1;;;;;4822:5:99;;;;4848:13;;4876:10;;4900:18;;4932;;4964:4;;;;;;4765:213;;4964:4;;;;4765:213;;;;;;;;;-1:-1:-1;4765:22:99;;-1:-1:-1;;;4765:213:99:i;:::-;5002:23;;;;;;4750:228;;5002:23;;-1:-1:-1;4535:497:99;-1:-1:-1;;;;;4535:497:99:o;3642:103:31:-;3708:30;3719:4;929:10:41;3708::31;:30::i;7791:233::-;7874:22;7882:4;7888:7;7874;:22::i;:::-;7869:149;;7912:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7912:29:31;;;;;;;;;:36;;-1:-1:-1;;7912:36:31;7944:4;7912:36;;;7994:12;929:10:41;;850:96;7994:12:31;-1:-1:-1;;;;;7967:40:31;7985:7;-1:-1:-1;;;;;7967:40:31;7979:4;7967:40;;;;;;;;;;7791:233;;:::o;8195:234::-;8278:22;8286:4;8292:7;8278;:22::i;:::-;8274:149;;;8348:5;8316:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8316:29:31;;;;;;;;;;:37;;-1:-1:-1;;8316:37:31;;;8372:40;929:10:41;;8316:12:31;;8372:40;;8348:5;8372:40;8195:234;;:::o;2153:87:102:-;1689:34:101;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;2938:974:35:-;951:66;3384:59;;;3380:526;;;3459:37;3478:17;3459:18;:37::i;3380:526::-;3560:17;-1:-1:-1;;;;;3531:61:35;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3531:63:35;;;;;;;;-1:-1:-1;;3531:63:35;;;;;;;;;;;;:::i;:::-;;;3527:302;;3758:56;;-1:-1:-1;;;3758:56:35;;22365:2:146;3758:56:35;;;22347:21:146;22404:2;22384:18;;;22377:30;22443:34;22423:18;;;22416:62;-1:-1:-1;;;22494:18:146;;;22487:44;22548:19;;3758:56:35;22163:410:146;3527:302:35;-1:-1:-1;;;;;;;;;;;3644:28:35;;3636:82;;;;-1:-1:-1;;;3636:82:35;;22780:2:146;3636:82:35;;;22762:21:146;22819:2;22799:18;;;22792:30;22858:34;22838:18;;;22831:62;-1:-1:-1;;;22909:18:146;;;22902:39;22958:19;;3636:82:35;22578:405:146;3636:82:35;3595:138;3842:53;3860:17;3879:4;3885:9;3842:17;:53::i;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;23190:2:146;2704:63:39;;;23172:21:146;23229:2;23209:18;;;23202:30;23268:33;23248:18;;;23241:61;23319:18;;2704:63:39;22988:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;23826:2:146;8369:35:100;;;23808:21:146;23865:2;23845:18;;;23838:30;23904:27;23884:18;;;23877:55;23949:18;;8369:35:100;23624:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;24180:2:146;8484:22:100;;;24162:21:146;24219:2;24199:18;;;24192:30;-1:-1:-1;;;24238:18:146;;;24231:42;24290:18;;8484:22:100;23978:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;24521:2:146;8569:24:100;;;24503:21:146;24560:2;24540:18;;;24533:30;-1:-1:-1;;;24579:18:146;;;24572:44;24633:18;;8569:24:100;24319:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;24864:2:146;8779:65:100;;;24846:21:146;24903:2;24883:18;;;24876:30;24942:34;24922:18;;;24915:62;25013:25;24993:18;;;24986:53;25056:19;;8779:65:100;24662:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;25288:2:146;6959:81:100;;;25270:21:146;25327:2;25307:18;;;25300:30;-1:-1:-1;;;25346:18:146;;;25339:54;25410:18;;6959:81:100;25086:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;25891:2:146;7050:76:100;;;25873:21:146;25930:2;25910:18;;;25903:30;25969:31;25949:18;;;25942:59;26018:18;;7050:76:100;25689:353:146;7194:121:100;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;26249:2:146;7260:48:100;;;26231:21:146;26288:2;26268:18;;;26261:30;-1:-1:-1;;;26307:18:146;;;26300:49;26366:18;;7260:48:100;26047:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;25288:2:146;7471:81:100;;;25270:21:146;25327:2;25307:18;;;25300:30;-1:-1:-1;;;25346:18:146;;;25339:54;25410:18;;7471:81:100;25086:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;13192:31:146;;7570:38:100;;;13174:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;13147:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;26786:2:146;7562:86:100;;;26768:21:146;26825:2;26805:18;;;26798:30;26864:32;26844:18;;;26837:60;26914:18;;7562:86:100;26584:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;13192:31:146;;7698:38:100;;;13174:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;13147:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;27278:2:146;7746:84:100;;;27260:21:146;27317:2;27297:18;;;27290:30;27356:34;27336:18;;;27329:62;-1:-1:-1;;;27407:18:146;;;27400:32;27449:19;;7746:84:100;27076:398:146;3094:1947:110;3330:4;3346:23;3372:46;3404:13;3372:31;:46::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;28546:2:146;4896:40:110;;;28528:21:146;28585:2;28565:18;;;28558:30;28624:32;28604:18;;;28597:60;28674:18;;4896:40:110;28344:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;28905:2:146;2652:38:111;;;28887:21:146;28944:2;28924:18;;;28917:30;28983;28963:18;;;28956:58;29031:18;;2652:38:111;28703:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;29262:2:146;3233:58:111;;;29244:21:146;29301:2;29281:18;;;29274:30;-1:-1:-1;;;29320:18:146;;;29313:52;29382:18;;3233:58:111;29060:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;29613:2:146;3450:58:111;;;29595:21:146;29652:2;29632:18;;;29625:30;29691:25;29671:18;;;29664:53;29734:18;;3450:58:111;29411:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;29965:2:146;3594:70:111;;;29947:21:146;30004:2;29984:18;;;29977:30;30043:34;30023:18;;;30016:62;-1:-1:-1;;;30094:18:146;;;30087:32;30136:19;;3594:70:111;29763:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;30368:2:146;3803:85:111;;;30350:21:146;30407:2;30387:18;;;30380:30;30446:34;30426:18;;;30419:62;-1:-1:-1;;;30497:18:146;;;30490:37;30544:19;;3803:85:111;30166:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;30776:2:146;4057:142:111;;;30758:21:146;30815:2;30795:18;;;30788:30;30854:34;30834:18;;;30827:62;-1:-1:-1;;;30905:18:146;;;30898:43;30958:19;;4057:142:111;30574:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;2873:209:39:-;1787:1;3053:7;:22;2873:209::o;1868:111::-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;:::-;1938:34:39::1;:32;:34::i;:::-;1868:111::o:0;2025:65:31:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;735:581:111:-;927:33;;-1:-1:-1;;;;;;32803:2:146;32799:15;;;32795:53;927:33:111;;;32783:66:146;872:7:111;;;;32865:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;33017:19:146;;33061:2;33052:12;;32888:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;33277:2:146;1072:58:111;;;33259:21:146;33316:2;33296:18;;;33289:30;-1:-1:-1;;;33335:18:146;;;33328:52;33397:18;;1072:58:111;33075:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;33017:19:146;;33061:2;33052:12;;32888:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;33628:2:146;601:65:111;;;33610:21:146;33667:2;33647:18;;;33640:30;33706;33686:18;;;33679:58;33754:18;;601:65:111;33426:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;3800:489:108:-;4049:12;4110:7;4131:5;4150:13;4177;4204:18;4236;4268:4;4080:202;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4073:209;;3800:489;;;;;;;;;:::o;4026:501:31:-;4114:22;4122:4;4128:7;4114;:22::i;:::-;4109:412;;4297:39;4328:7;4297:30;:39::i;:::-;4407:49;4446:4;4453:2;4407:30;:49::i;:::-;4204:274;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4204:274:31;;;;;;;;;;-1:-1:-1;;;4152:358:31;;;;;;;:::i;1805:281:35:-;-1:-1:-1;;;;;1476:19:40;;;1878:106:35;;;;-1:-1:-1;;;1878:106:35;;35904:2:146;1878:106:35;;;35886:21:146;35943:2;35923:18;;;35916:30;35982:34;35962:18;;;35955:62;-1:-1:-1;;;36033:18:146;;;36026:43;36086:19;;1878:106:35;35702:409:146;1878:106:35;-1:-1:-1;;;;;;;;;;;1994:85:35;;-1:-1:-1;;;;;;1994:85:35;-1:-1:-1;;;;;1994:85:35;;;;;;;;;;1805:281::o;2478:288::-;2616:29;2627:17;2616:10;:29::i;:::-;2673:1;2659:4;:11;:15;:28;;;;2678:9;2659:28;2655:105;;;2703:46;2725:17;2744:4;2703:21;:46::i;:::-;;2478:288;;;:::o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;56:776:107:-;125:7;240:13;:18;;257:1;240:18;236:590;;-1:-1:-1;383:7:107;;56:776;-1:-1:-1;56:776:107:o;236:590::-;411:13;:18;;428:1;411:18;407:419;;-1:-1:-1;619:7:107;;56:776;-1:-1:-1;56:776:107:o;407:419::-;-1:-1:-1;;;803:12:107;56:776;-1:-1:-1;56:776:107:o;407:419::-;56:776;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;36318:2:146;3101:49:77;;;36300:21:146;36357:2;36337:18;;;36330:30;-1:-1:-1;;;36376:18:146;;;36369:51;36437:18;;3101:49:77;36116:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;33017:19:146;;33061:2;33052:12;;32888:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;36668:2:146;3636:134:77;;;36650:21:146;36707:2;36687:18;;;36680:30;36746:34;36726:18;;;36719:62;-1:-1:-1;;;36797:18:146;;;36790:44;36851:19;;3636:134:77;36466:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;33017:19:146;;;33061:2;33052:12;;32888:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;37083:2:146;3893:176:77;;;37065:21:146;37122:2;37102:18;;;37095:30;37161:31;37141:18;;;37134:59;37210:18;;3893:176:77;36881:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;33017:19:146;;;33061:2;33052:12;;32888:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;37441:2:146;4222:186:77;;;37423:21:146;37480:2;37460:18;;;37453:30;37519:34;37499:18;;;37492:62;-1:-1:-1;;;37570:18:146;;;37563:37;37617:19;;4222:186:77;37239:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;37849:2:146;4509:156:77;;;37831:21:146;37888:2;37868:18;;;37861:30;37927:34;37907:18;;;37900:62;-1:-1:-1;;;37978:18:146;;;37971:36;38024:19;;4509:156:77;37647:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;38256:2:146;5384:158:77;;;38238:21:146;38295:2;38275:18;;;38268:30;38334:34;38314:18;;;38307:62;38405:29;38385:18;;;38378:57;38452:19;;5384:158:77;38054:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;38684:2:146;5626:162:77;;;38666:21:146;38723:2;38703:18;;;38696:30;38762:34;38742:18;;;38735:62;38833:28;38813:18;;;38806:56;38879:19;;5626:162:77;38482:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;39429:2:146;7009:171:77;;;39411:21:146;39468:2;39448:18;;;39441:30;39507:34;39487:18;;;39480:62;39578:28;39558:18;;;39551:56;39624:19;;7009:171:77;39227:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;39856:2:146;7843:185:77;;;39838:21:146;39895:2;39875:18;;;39868:30;39934:34;39914:18;;;39907:62;40005:31;39985:18;;;39978:59;40054:19;;7843:185:77;39654:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;40286:2:146;8463:156:77;;;40268:21:146;40325:2;40305:18;;;40298:30;40364:34;40344:18;;;40337:62;40435:27;40415:18;;;40408:55;40480:19;;8463:156:77;40084:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;40712:2:146;8703:160:77;;;40694:21:146;40751:2;40731:18;;;40724:30;40790:34;40770:18;;;40763:62;40861:26;40841:18;;;40834:54;40905:19;;8703:160:77;40510:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;41137:2:146;9439:60:77;;;41119:21:146;41176:2;41156:18;;;41149:30;41215:34;41195:18;;;41188:62;-1:-1:-1;;;41266:18:146;;;41259:48;41324:19;;9439:60:77;40935:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;41556:2:146;9556:50:77;;;41538:21:146;41595:2;41575:18;;;41568:30;41634:34;41614:18;;;41607:62;-1:-1:-1;;;41685:18:146;;;41678:38;41733:19;;9556:50:77;41354:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;41965:2:146;9641:47:77;;;41947:21:146;42004:2;41984:18;;;41977:30;42043:34;42023:18;;;42016:62;-1:-1:-1;;;42094:18:146;;;42087:35;42139:19;;9641:47:77;41763:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;42371:2:146;2161:136:75;;;42353:21:146;42410:2;42390:18;;;42383:30;42449:34;42429:18;;;42422:62;42520:26;42500:18;;;42493:54;42564:19;;2161:136:75;42169:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;42796:2:146;2308:134:75;;;42778:21:146;42835:2;42815:18;;;42808:30;42874:34;42854:18;;;42847:62;-1:-1:-1;;;42925:18:146;;;42918:48;42983:19;;2308:134:75;42594:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;43215:2:146;12579:55:75;;;43197:21:146;43254:2;43234:18;;;43227:30;43293:28;43273:18;;;43266:56;43339:18;;12579:55:75;43013:350:146;12579:55:75;12668:16;12680:3;12160:122;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;43570:2:146;11438:55:75;;;43552:21:146;43609:2;43589:18;;;43582:30;43648:28;43628:18;;;43621:56;43694:18;;11438:55:75;43368:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;43570:2:146;11598:72:75;;;43552:21:146;43609:2;43589:18;;;43582:30;43648:28;43628:18;;;43621:56;43694:18;;11598:72:75;43368:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1985:109:39:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;1385:419:75:-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;2146:149:43:-;2204:13;2236:52;-1:-1:-1;;;;;2248:22:43;;333:2;1557:437;1632:13;1657:19;1689:10;1693:6;1689:1;:10;:::i;:::-;:14;;1702:1;1689:14;:::i;:::-;-1:-1:-1;;;;;1679:25:43;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1679:25:43;;1657:47;;-1:-1:-1;;;1714:6:43;1721:1;1714:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1714:15:43;;;;;;;;;-1:-1:-1;;;1739:6:43;1746:1;1739:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1739:15:43;;;;;;;;-1:-1:-1;1769:9:43;1781:10;1785:6;1781:1;:10;:::i;:::-;:14;;1794:1;1781:14;:::i;:::-;1769:26;;1764:128;1801:1;1797;:5;1764:128;;;-1:-1:-1;;;1844:5:43;1852:3;1844:11;1835:21;;;;;;;:::i;:::-;;;;1823:6;1830:1;1823:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1823:33:43;;;;;;;;-1:-1:-1;1880:1:43;1870:11;;;;;1804:3;;;:::i;:::-;;;1764:128;;;-1:-1:-1;1909:10:43;;1901:55;;;;-1:-1:-1;;;1901:55:43;;44549:2:146;1901:55:43;;;44531:21:146;;;44568:18;;;44561:30;44627:34;44607:18;;;44600:62;44679:18;;1901:55:43;44347:356:146;2192:152:35;2258:37;2277:17;2258:18;:37::i;:::-;2310:27;;-1:-1:-1;;;;;2310:27:35;;;;;;;;2192:152;:::o;7088:455::-;7171:12;-1:-1:-1;;;;;1476:19:40;;;7195:88:35;;;;-1:-1:-1;;;7195:88:35;;44910:2:146;7195:88:35;;;44892:21:146;44949:2;44929:18;;;44922:30;44988:34;44968:18;;;44961:62;-1:-1:-1;;;45039:18:146;;;45032:36;45085:19;;7195:88:35;44708:402:146;7195:88:35;7354:12;7368:23;7395:6;-1:-1:-1;;;;;7395:19:35;7415:4;7395:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:67;;;;7437:99;7473:7;7482:10;7437:99;;;;;;;;;;;;;;;;;:35;:99::i;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;45660:2:146;409:63:108;;;45642:21:146;45699:2;45679:18;;;45672:30;-1:-1:-1;;;45718:18:146;;;45711:47;45775:18;;409:63:108;45458:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;47335:19:146;;;47379:2;47370:12;;47363:28;47416:2;47407:12;;47178:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;47335:19:146;;;47379:2;47370:12;;47363:28;47416:2;47407:12;;47178:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;47632:2:146;4505:137:75;;;47614:21:146;47671:2;47651:18;;;47644:30;47710:34;47690:18;;;47683:62;47781:27;47761:18;;;47754:55;47826:19;;4505:137:75;47430:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;48058:2:146;4653:136:75;;;48040:21:146;48097:2;48077:18;;;48070:30;48136:34;48116:18;;;48109:62;-1:-1:-1;;;48187:18:146;;;48180:50;48247:19;;4653:136:75;47856:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;48479:2:146;6699:156:75;;;48461:21:146;48518:2;48498:18;;;48491:30;-1:-1:-1;;;;;;;;;;;48537:18:146;;;48530:62;48628:34;48608:18;;;48601:62;-1:-1:-1;;;48679:19:146;;;48672:45;48734:19;;6699:156:75;48277:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;48966:2:146;7025:177:75;;;48948:21:146;49005:2;48985:18;;;48978:30;49044:34;49024:18;;;49017:62;49115:34;49095:18;;;49088:62;-1:-1:-1;;;49166:19:146;;;49159:44;49220:19;;7025:177:75;48764:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;49452:2:146;7387:164:75;;;49434:21:146;49491:2;49471:18;;;49464:30;-1:-1:-1;;;;;;;;;;;49510:18:146;;;49503:62;49601:34;49581:18;;;49574:62;-1:-1:-1;;;49652:19:146;;;49645:48;49710:19;;7387:164:75;49250:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;49942:2:146;7721:159:75;;;49924:21:146;49981:2;49961:18;;;49954:30;-1:-1:-1;;;;;;;;;;;50000:18:146;;;49993:62;50091:34;50071:18;;;50064:62;-1:-1:-1;;;50142:19:146;;;50135:41;50193:19;;7721:159:75;49740:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;50425:2:146;8042:142:75;;;50407:21:146;50464:2;50444:18;;;50437:30;-1:-1:-1;;;;;;;;;;;50483:18:146;;;50476:62;50574:34;50554:18;;;50547:62;-1:-1:-1;;;50625:19:146;;;50618:39;50674:19;;8042:142:75;50223:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;50906:2:146;8199:168:75;;;50888:21:146;50945:2;50925:18;;;50918:30;-1:-1:-1;;;;;;;;;;;50964:18:146;;;50957:62;51055:34;51035:18;;;51028:62;-1:-1:-1;;;51106:19:146;;;51099:43;51159:19;;8199:168:75;50704:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;51391:2:146;8617:153:75;;;51373:21:146;51430:2;51410:18;;;51403:30;-1:-1:-1;;;;;;;;;;;51449:18:146;;;51442:62;51540:34;51520:18;;;51513:62;-1:-1:-1;;;51591:19:146;;;51584:41;51642:19;;8617:153:75;51189:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;51874:2:146;8935:161:75;;;51856:21:146;51913:2;51893:18;;;51886:30;-1:-1:-1;;;;;;;;;;;51932:18:146;;;51925:62;52023:34;52003:18;;;51996:62;-1:-1:-1;;;52074:19:146;;;52067:44;52128:19;;8935:161:75;51672:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;52360:2:146;9266:157:75;;;52342:21:146;52399:2;52379:18;;;52372:30;-1:-1:-1;;;;;;;;;;;52418:18:146;;;52411:62;52509:34;52489:18;;;52482:62;-1:-1:-1;;;52560:19:146;;;52553:39;52609:19;;9266:157:75;52158:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;52841:2:146;9588:141:75;;;52823:21:146;52880:2;52860:18;;;52853:30;-1:-1:-1;;;;;;;;;;;52899:18:146;;;52892:62;52990:34;52970:18;;;52963:62;-1:-1:-1;;;53041:19:146;;;53034:37;53088:19;;9588:141:75;52639:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;53320:2:146;9744:168:75;;;53302:21:146;53359:2;53339:18;;;53332:30;-1:-1:-1;;;;;;;;;;;53378:18:146;;;53371:62;53469:34;53449:18;;;53442:62;-1:-1:-1;;;53520:19:146;;;53513:41;53571:19;;9744:168:75;53118:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;7438:295:40:-;7584:12;7612:7;7608:119;;;-1:-1:-1;7642:10:40;7635:17;;7608:119;7683:33;7691:10;7703:12;7683:7;:33::i;4047:125:75:-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;45660:2:146;989:63:74;;;45642:21:146;45699:2;45679:18;;;45672:30;-1:-1:-1;;;45718:18:146;;;45711:47;45775:18;;989:63:74;45458:341:146;7739:540:40;7898:17;;:21;7894:379;;8126:10;8120:17;8182:15;8169:10;8165:2;8161:19;8154:44;7894:379;8249:12;8242:20;;-1:-1:-1;;;8242:20:40;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:146;-1:-1:-1;;;;;;88:32:146;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:171::-;659:20;;-1:-1:-1;;;;;708:30:146;;698:41;;688:69;;753:1;750;743:12;768:184;826:6;879:2;867:9;858:7;854:23;850:32;847:52;;;895:1;892;885:12;847:52;918:28;936:9;918:28;:::i;1139:163::-;1206:20;;1266:10;1255:22;;1245:33;;1235:61;;1292:1;1289;1282:12;1307:173;1375:20;;-1:-1:-1;;;;;1424:31:146;;1414:42;;1404:70;;1470:1;1467;1460:12;1485:347;1536:8;1546:6;1600:3;1593:4;1585:6;1581:17;1577:27;1567:55;;1618:1;1615;1608:12;1567:55;-1:-1:-1;1641:20:146;;-1:-1:-1;;;;;1673:30:146;;1670:50;;;1716:1;1713;1706:12;1670:50;1753:4;1745:6;1741:17;1729:29;;1805:3;1798:4;1789:6;1781;1777:19;1773:30;1770:39;1767:59;;;1822:1;1819;1812:12;1837:555;1924:6;1932;1940;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2040:28;2058:9;2040:28;:::i;:::-;2030:38;;2087;2121:2;2110:9;2106:18;2087:38;:::i;:::-;2077:48;;2176:2;2165:9;2161:18;2148:32;-1:-1:-1;;;;;2195:6:146;2192:30;2189:50;;;2235:1;2232;2225:12;2189:50;2274:58;2324:7;2315:6;2304:9;2300:22;2274:58;:::i;:::-;1837:555;;;;-1:-1:-1;2351:8:146;-1:-1:-1;;;;1837:555:146:o;2397:184::-;2455:6;2508:2;2496:9;2487:7;2483:23;2479:32;2476:52;;;2524:1;2521;2514:12;2476:52;2547:28;2565:9;2547:28;:::i;2586:180::-;2645:6;2698:2;2686:9;2677:7;2673:23;2669:32;2666:52;;;2714:1;2711;2704:12;2666:52;-1:-1:-1;2737:23:146;;2586:180;-1:-1:-1;2586:180:146:o;2771:254::-;2839:6;2847;2900:2;2888:9;2879:7;2875:23;2871:32;2868:52;;;2916:1;2913;2906:12;2868:52;2952:9;2939:23;2929:33;;2981:38;3015:2;3004:9;3000:18;2981:38;:::i;:::-;2971:48;;2771:254;;;;;:::o;3030:186::-;3089:6;3142:2;3130:9;3121:7;3117:23;3113:32;3110:52;;;3158:1;3155;3148:12;3110:52;3181:29;3200:9;3181:29;:::i;3221:367::-;3284:8;3294:6;3348:3;3341:4;3333:6;3329:17;3325:27;3315:55;;3366:1;3363;3356:12;3315:55;-1:-1:-1;3389:20:146;;-1:-1:-1;;;;;3421:30:146;;3418:50;;;3464:1;3461;3454:12;3418:50;3501:4;3493:6;3489:17;3477:29;;3561:3;3554:4;3544:6;3541:1;3537:14;3529:6;3525:27;3521:38;3518:47;3515:67;;;3578:1;3575;3568:12;3593:127;3654:10;3649:3;3645:20;3642:1;3635:31;3685:4;3682:1;3675:15;3709:4;3706:1;3699:15;3725:275;3796:2;3790:9;3861:2;3842:13;;-1:-1:-1;;3838:27:146;3826:40;;-1:-1:-1;;;;;3881:34:146;;3917:22;;;3878:62;3875:88;;;3943:18;;:::i;:::-;3979:2;3972:22;3725:275;;-1:-1:-1;3725:275:146:o;4005:530::-;4047:5;4100:3;4093:4;4085:6;4081:17;4077:27;4067:55;;4118:1;4115;4108:12;4067:55;4154:6;4141:20;-1:-1:-1;;;;;4176:2:146;4173:26;4170:52;;;4202:18;;:::i;:::-;4246:55;4289:2;4270:13;;-1:-1:-1;;4266:27:146;4295:4;4262:38;4246:55;:::i;:::-;4326:2;4317:7;4310:19;4372:3;4365:4;4360:2;4352:6;4348:15;4344:26;4341:35;4338:55;;;4389:1;4386;4379:12;4338:55;4454:2;4447:4;4439:6;4435:17;4428:4;4419:7;4415:18;4402:55;4502:1;4477:16;;;4495:4;4473:27;4466:38;;;;4481:7;4005:530;-1:-1:-1;;;4005:530:146:o;4540:1652::-;4749:6;4757;4765;4773;4781;4789;4797;4805;4813;4821;4829:7;4883:3;4871:9;4862:7;4858:23;4854:33;4851:53;;;4900:1;4897;4890:12;4851:53;-1:-1:-1;;;;;4981:2:146;4969:9;4956:23;4953:31;4950:51;;;4997:1;4994;4987:12;4950:51;5036:75;5103:7;5090:9;5077:23;5066:9;5062:39;5036:75;:::i;:::-;5130:8;;-1:-1:-1;5157:8:146;-1:-1:-1;5208:2:146;5193:18;;5180:32;5177:40;-1:-1:-1;5174:60:146;;;5230:1;5227;5220:12;5174:60;5269:84;5345:7;5338:2;5327:9;5323:18;5310:32;5299:9;5295:48;5269:84;:::i;:::-;5372:8;;-1:-1:-1;5399:8:146;-1:-1:-1;5450:2:146;5435:18;;5422:32;5419:40;-1:-1:-1;5416:60:146;;;5472:1;5469;5462:12;5416:60;5511:96;5599:7;5592:2;5581:9;5577:18;5564:32;5553:9;5549:48;5511:96;:::i;:::-;5626:8;;-1:-1:-1;5653:8:146;-1:-1:-1;5708:2:146;5693:18;;5680:32;;-1:-1:-1;5755:3:146;5740:19;;5727:33;5724:41;-1:-1:-1;5721:61:146;;;5778:1;5775;5768:12;5721:61;5817:97;5906:7;5898:3;5887:9;5883:19;5870:33;5859:9;5855:49;5817:97;:::i;:::-;5933:8;;-1:-1:-1;5960:8:146;-1:-1:-1;6011:3:146;5996:19;;5983:33;5980:41;-1:-1:-1;5977:61:146;;;6034:1;6031;6024:12;5977:61;;6057:76;6125:7;6117:3;6106:9;6102:19;6089:33;6078:9;6074:49;6057:76;:::i;:::-;6047:86;;6181:3;6170:9;6166:19;6153:33;6142:44;;4540:1652;;;;;;;;;;;;;;:::o;6197:127::-;6258:10;6253:3;6249:20;6246:1;6239:31;6289:4;6286:1;6279:15;6313:4;6310:1;6303:15;6329:347;6480:2;6465:18;;6513:1;6502:13;;6492:144;;6558:10;6553:3;6549:20;6546:1;6539:31;6593:4;6590:1;6583:15;6621:4;6618:1;6611:15;6492:144;6645:25;;;6329:347;:::o;6863:394::-;6940:6;6948;7001:2;6989:9;6980:7;6976:23;6972:32;6969:52;;;7017:1;7014;7007:12;6969:52;7040:29;7059:9;7040:29;:::i;:::-;7030:39;;7120:2;7109:9;7105:18;7092:32;-1:-1:-1;;;;;7139:6:146;7136:30;7133:50;;;7179:1;7176;7169:12;7133:50;7202:49;7243:7;7234:6;7223:9;7219:22;7202:49;:::i;:::-;7192:59;;;6863:394;;;;;:::o;7659:182::-;7718:4;-1:-1:-1;;;;;7743:6:146;7740:30;7737:56;;;7773:18;;:::i;:::-;-1:-1:-1;7818:1:146;7814:14;7830:4;7810:25;;7659:182::o;7846:667::-;7900:5;7953:3;7946:4;7938:6;7934:17;7930:27;7920:55;;7971:1;7968;7961:12;7920:55;8007:6;7994:20;8033:4;8057:59;8073:42;8112:2;8073:42;:::i;:::-;8057:59;:::i;:::-;8150:15;;;8236:1;8232:10;;;;8220:23;;8216:32;;;8181:12;;;;8260:15;;;8257:35;;;8288:1;8285;8278:12;8257:35;8324:2;8316:6;8312:15;8336:148;8352:6;8347:3;8344:15;8336:148;;;8418:23;8437:3;8418:23;:::i;:::-;8406:36;;8462:12;;;;8369;;8336:148;;;-1:-1:-1;8502:5:146;7846:667;-1:-1:-1;;;;;;7846:667:146:o;8518:118::-;8604:5;8597:13;8590:21;8583:5;8580:32;8570:60;;8626:1;8623;8616:12;8641:128;8706:20;;8735:28;8706:20;8735:28;:::i;8774:1588::-;8949:6;8957;8965;8973;8981;8989;9042:3;9030:9;9021:7;9017:23;9013:33;9010:53;;;9059:1;9056;9049:12;9010:53;9099:9;9086:23;-1:-1:-1;;;;;9169:2:146;9161:6;9158:14;9155:34;;;9185:1;9182;9175:12;9155:34;9223:6;9212:9;9208:22;9198:32;;9268:7;9261:4;9257:2;9253:13;9249:27;9239:55;;9290:1;9287;9280:12;9239:55;9326:2;9313:16;9348:4;9372:59;9388:42;9427:2;9388:42;:::i;9372:59::-;9465:15;;;9547:1;9543:10;;;;9535:19;;9531:28;;;9496:12;;;;9571:19;;;9568:39;;;9603:1;9600;9593:12;9568:39;9627:11;;;;9647:147;9663:6;9658:3;9655:15;9647:147;;;9729:22;9747:3;9729:22;:::i;:::-;9717:35;;9680:12;;;;9772;;;;9647:147;;;9813:5;-1:-1:-1;;9856:18:146;;9843:32;;-1:-1:-1;;9887:16:146;;;9884:36;;;9916:1;9913;9906:12;9884:36;9939:63;9994:7;9983:8;9972:9;9968:24;9939:63;:::i;:::-;9929:73;;10055:2;10044:9;10040:18;10027:32;10011:48;;10084:2;10074:8;10071:16;10068:36;;;10100:1;10097;10090:12;10068:36;;10123:63;10178:7;10167:8;10156:9;10152:24;10123:63;:::i;:::-;10113:73;;;10205:38;10239:2;10228:9;10224:18;10205:38;:::i;:::-;10195:48;;10262:39;10296:3;10285:9;10281:19;10262:39;:::i;:::-;10252:49;;10320:36;10351:3;10340:9;10336:19;10320:36;:::i;:::-;10310:46;;8774:1588;;;;;;;;:::o;10367:549::-;10454:6;10462;10470;10478;10531:2;10519:9;10510:7;10506:23;10502:32;10499:52;;;10547:1;10544;10537:12;10499:52;10570:28;10588:9;10570:28;:::i;:::-;10560:38;;10645:2;10634:9;10630:18;10617:32;10607:42;;10700:2;10689:9;10685:18;10672:32;-1:-1:-1;;;;;10719:6:146;10716:30;10713:50;;;10759:1;10756;10749:12;11151:1155;11323:6;11331;11339;11347;11355;11363;11371;11424:3;11412:9;11403:7;11399:23;11395:33;11392:53;;;11441:1;11438;11431:12;11392:53;11464:28;11482:9;11464:28;:::i;:::-;11454:38;;11543:2;11532:9;11528:18;11515:32;-1:-1:-1;;;;;11607:2:146;11599:6;11596:14;11593:34;;;11623:1;11620;11613:12;11593:34;11662:58;11712:7;11703:6;11692:9;11688:22;11662:58;:::i;:::-;11739:8;;-1:-1:-1;11636:84:146;-1:-1:-1;11827:2:146;11812:18;;11799:32;;-1:-1:-1;11843:16:146;;;11840:36;;;11872:1;11869;11862:12;11840:36;11911:72;11975:7;11964:8;11953:9;11949:24;11911:72;:::i;:::-;12002:8;;-1:-1:-1;11885:98:146;-1:-1:-1;12090:2:146;12075:18;;12062:32;;-1:-1:-1;12106:16:146;;;12103:36;;;12135:1;12132;12125:12;12103:36;;12174:72;12238:7;12227:8;12216:9;12212:24;12174:72;:::i;:::-;11151:1155;;;;-1:-1:-1;11151:1155:146;;-1:-1:-1;11151:1155:146;;;;12148:98;;-1:-1:-1;;;11151:1155:146:o;12311:332::-;12387:6;12395;12403;12456:2;12444:9;12435:7;12431:23;12427:32;12424:52;;;12472:1;12469;12462:12;12424:52;12495:28;12513:9;12495:28;:::i;:::-;12485:38;;12542;12576:2;12565:9;12561:18;12542:38;:::i;:::-;12532:48;;12599:38;12633:2;12622:9;12618:18;12599:38;:::i;:::-;12589:48;;12311:332;;;;;:::o;13235:241::-;13291:6;13344:2;13332:9;13323:7;13319:23;13315:32;13312:52;;;13360:1;13357;13350:12;13312:52;13399:9;13386:23;13418:28;13440:5;13418:28;:::i;13481:127::-;13542:10;13537:3;13533:20;13530:1;13523:31;13573:4;13570:1;13563:15;13597:4;13594:1;13587:15;13613:209;13651:3;-1:-1:-1;;;;;13732:2:146;13725:5;13721:14;13759:2;13750:7;13747:15;13744:41;;13765:18;;:::i;:::-;13814:1;13801:15;;13613:209;-1:-1:-1;;;13613:209:146:o;13827:250::-;13912:1;13922:113;13936:6;13933:1;13930:13;13922:113;;;14012:11;;;14006:18;13993:11;;;13986:39;13958:2;13951:10;13922:113;;;-1:-1:-1;;14069:1:146;14051:16;;14044:27;13827:250::o;14082:270::-;14123:3;14161:5;14155:12;14188:6;14183:3;14176:19;14204:76;14273:6;14266:4;14261:3;14257:14;14250:4;14243:5;14239:16;14204:76;:::i;:::-;14334:2;14313:15;-1:-1:-1;;14309:29:146;14300:39;;;;14341:4;14296:50;;14082:270;-1:-1:-1;;14082:270:146:o;14357:217::-;14504:2;14493:9;14486:21;14467:4;14524:44;14564:2;14553:9;14549:18;14541:6;14524:44;:::i;14579:417::-;14781:2;14763:21;;;14820:2;14800:18;;;14793:30;14859:34;14854:2;14839:18;;14832:62;-1:-1:-1;;;14925:2:146;14910:18;;14903:51;14986:3;14971:19;;14579:417::o;15417:408::-;15619:2;15601:21;;;15658:2;15638:18;;;15631:30;15697:34;15692:2;15677:18;;15670:62;-1:-1:-1;;;15763:2:146;15748:18;;15741:42;15815:3;15800:19;;15417:408::o;15830:::-;16032:2;16014:21;;;16071:2;16051:18;;;16044:30;16110:34;16105:2;16090:18;;16083:62;-1:-1:-1;;;16176:2:146;16161:18;;16154:42;16228:3;16213:19;;15830:408::o;16243:256::-;16309:6;16317;16370:2;16358:9;16349:7;16345:23;16341:32;16338:52;;;16386:1;16383;16376:12;16338:52;16409:28;16427:9;16409:28;:::i;:::-;16399:38;;16456:37;16489:2;16478:9;16474:18;16456:37;:::i;16710:184::-;16780:6;16833:2;16821:9;16812:7;16808:23;16804:32;16801:52;;;16849:1;16846;16839:12;16801:52;-1:-1:-1;16872:16:146;;16710:184;-1:-1:-1;16710:184:146:o;17605:878::-;17741:9;17776:63;17792:46;17831:6;17792:46;:::i;17776:63::-;17861:3;17885:6;17880:3;17873:19;17911:4;17940:2;17935:3;17931:12;17924:19;;17984:6;17981:1;17977:14;17970:5;17966:26;18015:14;18007:6;18004:26;18001:46;;;18043:1;18040;18033:12;18001:46;18067:5;18081:369;18097:6;18092:3;18089:15;18081:369;;;18183:3;18170:17;-1:-1:-1;;;;;18206:11:146;18203:35;18200:125;;;18279:1;18308:2;18304;18297:14;18200:125;18350:57;18392:14;18378:11;18371:5;18367:23;18350:57;:::i;:::-;18338:70;;-1:-1:-1;18428:12:146;;;;18114;;18081:369;;19678:127;19739:10;19734:3;19730:20;19727:1;19720:31;19770:4;19767:1;19760:15;19794:4;19791:1;19784:15;19810:201;19848:3;19876:10;19921:2;19914:5;19910:14;19948:2;19939:7;19936:15;19933:41;;19954:18;;:::i;21292:417::-;21494:2;21476:21;;;21533:2;21513:18;;;21506:30;21572:34;21567:2;21552:18;;21545:62;-1:-1:-1;;;21638:2:146;21623:18;;21616:51;21699:3;21684:19;;21292:417::o;21714:135::-;21753:3;21774:17;;;21771:43;;21794:18;;:::i;:::-;-1:-1:-1;21841:1:146;21830:13;;21714:135::o;23348:271::-;23531:6;23523;23518:3;23505:33;23487:3;23557:16;;23582:13;;;23557:16;23348:271;-1:-1:-1;23348:271:146:o;25439:245::-;25506:6;25559:2;25547:9;25538:7;25534:23;25530:32;25527:52;;;25575:1;25572;25565:12;25527:52;25607:9;25601:16;25626:28;25648:5;25626:28;:::i;26943:128::-;27010:9;;;27031:11;;;27028:37;;;27045:18;;:::i;27479:127::-;27540:10;27535:3;27531:20;27528:1;27521:31;27571:4;27568:1;27561:15;27595:4;27592:1;27585:15;27611:120;27651:1;27677;27667:35;;27682:18;;:::i;:::-;-1:-1:-1;27716:9:146;;27611:120::o;27736:168::-;27776:7;27842:1;27838;27834:6;27830:14;27827:1;27824:21;27819:1;27812:9;27805:17;27801:45;27798:71;;;27849:18;;:::i;:::-;-1:-1:-1;27889:9:146;;27736:168::o;27909:125::-;27974:9;;;27995:10;;;27992:36;;;28008:18;;:::i;28039:183::-;-1:-1:-1;;;;;28158:10:146;;;28146;;;28142:27;;28181:12;;;28178:38;;;28196:18;;:::i;:::-;28178:38;28039:183;;;;:::o;28227:112::-;28259:1;28285;28275:35;;28290:18;;:::i;:::-;-1:-1:-1;28324:9:146;;28227:112::o;30988:400::-;31201:10;31189:23;;31171:42;;-1:-1:-1;;;;;31249:32:146;;31244:2;31229:18;;31222:60;31318:2;31313;31298:18;;31291:30;;;-1:-1:-1;;31338:44:146;;31363:18;;31355:6;31338:44;:::i;31393:287::-;31522:3;31560:6;31554:13;31576:66;31635:6;31630:3;31623:4;31615:6;31611:17;31576:66;:::i;:::-;31658:16;;;;;31393:287;-1:-1:-1;;31393:287:146:o;31685:249::-;31754:6;31807:2;31795:9;31786:7;31782:23;31778:32;31775:52;;;31823:1;31820;31813:12;31775:52;31855:9;31849:16;31874:30;31898:5;31874:30;:::i;31939:298::-;32108:2;32097:9;32090:21;32071:4;32128:44;32168:2;32157:9;32153:18;32145:6;32128:44;:::i;:::-;32120:52;;32222:6;32215:14;32208:22;32203:2;32192:9;32188:18;32181:50;31939:298;;;;;:::o;32242:407::-;32444:2;32426:21;;;32483:2;32463:18;;;32456:30;32522:34;32517:2;32502:18;;32495:62;-1:-1:-1;;;32588:2:146;32573:18;;32566:41;32639:3;32624:19;;32242:407::o;33783:873::-;-1:-1:-1;;;;;;34126:3:146;34104:16;;;34100:36;34088:49;;-1:-1:-1;;;;;;34192:3:146;34170:16;;;34166:51;34162:1;34153:11;;34146:72;-1:-1:-1;;;;;;34241:3:146;34290:16;;;34286:25;;34282:1;34273:11;;34266:46;-1:-1:-1;;;;;;34350:2:146;34346:15;;;34342:53;34337:2;34328:12;;34321:75;34430:16;;;34426:25;34421:2;34412:12;;34405:47;34477:2;34468:12;;34461:28;;;34512:13;;-1:-1:-1;;34534:75:146;34512:13;34597:2;34588:12;;34581:4;34569:17;;34534:75;:::i;:::-;34629:16;;;;34647:2;34625:25;;33783:873;-1:-1:-1;;;;;;;;33783:873:146:o;34661:812::-;35072:25;35067:3;35060:38;35042:3;35127:6;35121:13;35143:75;35211:6;35206:2;35201:3;35197:12;35190:4;35182:6;35178:17;35143:75;:::i;:::-;-1:-1:-1;;;35277:2:146;35237:16;;;35269:11;;;35262:40;35327:13;;35349:76;35327:13;35411:2;35403:11;;35396:4;35384:17;;35349:76;:::i;:::-;35445:17;35464:2;35441:26;;34661:812;-1:-1:-1;;;;34661:812:146:o;38909:157::-;38939:1;38973:4;38970:1;38966:12;38997:3;38987:37;;39004:18;;:::i;:::-;39056:3;39049:4;39046:1;39042:12;39038:22;39033:27;;;38909:157;;;;:::o;39071:151::-;39161:4;39154:12;;;39140;;;39136:31;;39179:14;;39176:40;;;39196:18;;:::i;43723:478::-;43925:2;43907:21;;;43964:2;43944:18;;;43937:30;44003:34;43998:2;43983:18;;43976:62;44074:34;44069:2;44054:18;;44047:62;-1:-1:-1;;;44140:3:146;44125:19;;44118:41;44191:3;44176:19;;43723:478::o;44206:136::-;44245:3;44273:5;44263:39;;44282:18;;:::i;:::-;-1:-1:-1;;;44318:18:146;;44206:136::o;45115:338::-;45317:2;45299:21;;;45356:2;45336:18;;;45329:30;-1:-1:-1;;;45390:2:146;45375:18;;45368:44;45444:2;45429:18;;45115:338::o;45804:422::-;45893:1;45936:5;45893:1;45950:270;45971:7;45961:8;45958:21;45950:270;;;46030:4;46026:1;46022:6;46018:17;46012:4;46009:27;46006:53;;;46039:18;;:::i;:::-;46089:7;46079:8;46075:22;46072:55;;;46109:16;;;;46072:55;46188:22;;;;46148:15;;;;45950:270;;;45954:3;45804:422;;;;;:::o;46231:806::-;46280:5;46310:8;46300:80;;-1:-1:-1;46351:1:146;46365:5;;46300:80;46399:4;46389:76;;-1:-1:-1;46436:1:146;46450:5;;46389:76;46481:4;46499:1;46494:59;;;;46567:1;46562:130;;;;46474:218;;46494:59;46524:1;46515:10;;46538:5;;;46562:130;46599:3;46589:8;46586:17;46583:43;;;46606:18;;:::i;:::-;-1:-1:-1;;46662:1:146;46648:16;;46677:5;;46474:218;;46776:2;46766:8;46763:16;46757:3;46751:4;46748:13;46744:36;46738:2;46728:8;46725:16;46720:2;46714:4;46711:12;46707:35;46704:77;46701:159;;;-1:-1:-1;46813:19:146;;;46845:5;;46701:159;46892:34;46917:8;46911:4;46892:34;:::i;:::-;46962:6;46958:1;46954:6;46950:19;46941:7;46938:32;46935:58;;;46973:18;;:::i;:::-;47011:20;;46231:806;-1:-1:-1;;;46231:806:146:o;47042:131::-;47102:5;47131:36;47158:8;47152:4;47131:36;:::i", + "linkReferences": {}, "immutableReferences": { "29435": [ { @@ -1103,7 +1085,7 @@ "upgradeToAndCall(address,bytes)": "4f1ef286", "version()": "54fd4d50" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotSendToSameChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SendingDisabled\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Freeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"SendingEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lightClient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"SetLightClientAndBroadcaster\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"SourceChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Unfreeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UnfreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GUARDIAN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMELOCK_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"freeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"_sourceChainIds\",\"type\":\"uint32[]\"},{\"internalType\":\"address[]\",\"name\":\"_lightClients\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_broadcasters\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_timelock\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_sendingEnabled\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"lightclient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"setLightClientAndBroadcaster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setSendingEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"unfreeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unfreezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"freeze(uint32)\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"freezeAll()\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"send(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"sendViaStorage(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"details\":\"This is controlled by the timelock as it is a potentially dangerous method since both the light client and broadcaster address are critical in verifying that only valid sent messages are executed.\"},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unfreeze(uint32)\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"unfreezeAll()\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"Telepathy Router\",\"version\":1},\"userdoc\":{\"events\":{\"Freeze(uint32)\":{\"notice\":\"Emitted when freeze is called.\"},\"FreezeAll()\":{\"notice\":\"Emitted when freezeAll is called.\"},\"SendingEnabled(bool)\":{\"notice\":\"Emitted when the sendingEnabled flag is changed.\"},\"SetLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Emitted when setLightClientAndBroadcaster is called.\"},\"SourceChainAdded(uint32)\":{\"notice\":\"Emitted when a new source chain is added.\"},\"Unfreeze(uint32)\":{\"notice\":\"Emitted when unfreeze is called.\"},\"UnfreezeAll()\":{\"notice\":\"Emitted when unfreezeAll is called.\"}},\"kind\":\"user\",\"methods\":{\"GUARDIAN_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'guardian'.\"},\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"TIMELOCK_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'timelock'.\"},\"VERSION()\":{\"notice\":\"Returns current contract version.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"constructor\":{\"notice\":\"Prevents the implementation contract from being initialized outside of the upgradeable proxy.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"freeze(uint32)\":{\"notice\":\"Freezes messages from the specified chain.\"},\"freezeAll()\":{\"notice\":\"Freezes messages from all chains.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"initialize(uint32[],address[],address[],address,address,bool)\":{\"notice\":\"Initializes the contract and the parent contracts once.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"send(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.\"},\"sendViaStorage(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Sets the light client contract and broadcaster for a given chainId.\"},\"setSendingEnabled(bool)\":{\"notice\":\"Allows the owner to control whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"unfreeze(uint32)\":{\"notice\":\"Unfreezes messages from the specified chain.\"},\"unfreezeAll()\":{\"notice\":\"Unfreezes messages from all chains.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Send and receive arbitrary messages from other chains.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TelepathyRouter.sol\":\"TelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotSendToSameChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SendingDisabled\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Freeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"SendingEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lightClient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"SetLightClientAndBroadcaster\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"SourceChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Unfreeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UnfreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GUARDIAN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMELOCK_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"freeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"_sourceChainIds\",\"type\":\"uint32[]\"},{\"internalType\":\"address[]\",\"name\":\"_lightClients\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_broadcasters\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_timelock\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_sendingEnabled\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"lightclient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"setLightClientAndBroadcaster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setSendingEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"unfreeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unfreezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"freeze(uint32)\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"freezeAll()\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"send(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"sendViaStorage(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"details\":\"This is controlled by the timelock as it is a potentially dangerous method since both the light client and broadcaster address are critical in verifying that only valid sent messages are executed.\"},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unfreeze(uint32)\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"unfreezeAll()\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"Telepathy Router\",\"version\":1},\"userdoc\":{\"events\":{\"Freeze(uint32)\":{\"notice\":\"Emitted when freeze is called.\"},\"FreezeAll()\":{\"notice\":\"Emitted when freezeAll is called.\"},\"SendingEnabled(bool)\":{\"notice\":\"Emitted when the sendingEnabled flag is changed.\"},\"SetLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Emitted when setLightClientAndBroadcaster is called.\"},\"SourceChainAdded(uint32)\":{\"notice\":\"Emitted when a new source chain is added.\"},\"Unfreeze(uint32)\":{\"notice\":\"Emitted when unfreeze is called.\"},\"UnfreezeAll()\":{\"notice\":\"Emitted when unfreezeAll is called.\"}},\"kind\":\"user\",\"methods\":{\"GUARDIAN_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'guardian'.\"},\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"TIMELOCK_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'timelock'.\"},\"VERSION()\":{\"notice\":\"Returns current contract version.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"constructor\":{\"notice\":\"Prevents the implementation contract from being initialized outside of the upgradeable proxy.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"freeze(uint32)\":{\"notice\":\"Freezes messages from the specified chain.\"},\"freezeAll()\":{\"notice\":\"Freezes messages from all chains.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"initialize(uint32[],address[],address[],address,address,bool)\":{\"notice\":\"Initializes the contract and the parent contracts once.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"send(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.\"},\"sendViaStorage(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Sets the light client contract and broadcaster for a given chainId.\"},\"setSendingEnabled(bool)\":{\"notice\":\"Allows the owner to control whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"unfreeze(uint32)\":{\"notice\":\"Unfreezes messages from the specified chain.\"},\"unfreezeAll()\":{\"notice\":\"Unfreezes messages from all chains.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Send and receive arbitrary messages from other chains.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TelepathyRouter.sol\":\"TelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -2523,10 +2505,10 @@ "license": null }, "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", "urls": [ - "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", - "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", + "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" ], "license": null }, diff --git a/out/TelepathySubscriber.sol/TelepathySubscriber.json b/out/TelepathySubscriber.sol/TelepathySubscriber.json index 7329d70..0748acc 100644 --- a/out/TelepathySubscriber.sol/TelepathySubscriber.json +++ b/out/TelepathySubscriber.sol/TelepathySubscriber.json @@ -245,12 +245,12 @@ } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b50610527806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea264697066735822122030f05064d0b104ed0bcde3dae6b1387cf72d49641b7d6a92ab97ef408c7069bb64736f6c63430008100033", + "object": "0x608060405234801561001057600080fd5b50610527806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea2646970667358221220ff63b886676e4141d48a9f114405d4ff012a2c54a5ba7cefc32582b6d12384b564736f6c63430008100033", "sourceMap": "335:2199:125:-:0;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea264697066735822122030f05064d0b104ed0bcde3dae6b1387cf72d49641b7d6a92ab97ef408c7069bb64736f6c63430008100033", + "object": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea2646970667358221220ff63b886676e4141d48a9f114405d4ff012a2c54a5ba7cefc32582b6d12384b564736f6c63430008100033", "sourceMap": "335:2199:125:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;837:960:125;;;;;;:::i;:::-;;:::i;:::-;;;1806:25:146;;;1794:2;1779:18;837:960:125;1660:177:146;723:59:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1888:644:125:-;;;;;;:::i;:::-;;:::i;837:960::-;1056:7;1075:32;1122:73;;;;;;;;1135:14;1122:73;;;;;;1151:14;-1:-1:-1;;;;;1122:73:125;;;;;1167:16;-1:-1:-1;;;;;1122:73:125;;;;;1185:9;1122:73;;;1075:120;;1205:22;1251:12;1240:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1240:24:125;;;;;;;;;1230:35;;1240:24;1230:35;;;;;-1:-1:-1;1313:29:125;1280;;;;:13;:29;;;;;;;;;:62;;;;;;;:::i;:::-;;1276:141;;1365:41;;-1:-1:-1;;;1365:41:125;;;;;1806:25:146;;;1779:18;;1365:41:125;;;;;;;;1276:141;1426:29;;;;:13;:29;;;;;:61;;-1:-1:-1;;1426:61:125;1458:29;1426:61;;;1589:21;;;;;;;;1585:97;;;1633:38;;-1:-1:-1;;;1633:38:125;;3168:18:146;3213:15;;;1633:38:125;;;3195:34:146;3265:15;;3245:18;;;3238:43;3131:18;;1633:38:125;2988:299:146;1585:97:125;1735:8;1697:61;;1723:10;1697:61;;1707:14;1697:61;1745:12;1697:61;;;;;;:::i;:::-;;;;;;;;1776:14;837:960;-1:-1:-1;;;;;;;;837:960:125:o;1888:644::-;2009:7;2032:32;2079:67;;;;;;;;2092:14;2079:67;;;;;;2108:14;-1:-1:-1;;;;;2079:67:125;;;;;2124:10;-1:-1:-1;;;;;2079:67:125;;;;;2136:9;2079:67;;;2032:114;;2156:22;2202:12;2191:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2191:24:125;;;;;;;;;2181:35;;2191:24;2181:35;;;;;-1:-1:-1;2264:30:125;2231:29;;;;:13;:29;;;;;;;;;:63;;;;;;;:::i;:::-;;2227:138;;2317:37;;-1:-1:-1;;;2317:37:125;;;;;1806:25:146;;;1779:18;;2317:37:125;1660:177:146;2227:138:125;2406:30;2374:29;;;:13;:29;;;;;;;:62;;-1:-1:-1;;2374:62:125;;;2452:41;2374:29;;2452:41;;;;2480:12;;2452:41;:::i;:::-;;;;;;;;2511:14;1888:644;-1:-1:-1;;;;;1888:644:125:o;14:180:146:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:146;;14:180;-1:-1:-1;14:180:146:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:163::-;653:20;;713:10;702:22;;692:33;;682:61;;739:1;736;729:12;682:61;586:163;;;:::o;754:173::-;822:20;;-1:-1:-1;;;;;871:31:146;;861:42;;851:70;;917:1;914;907:12;932:171;999:20;;1059:18;1048:30;;1038:41;;1028:69;;1093:1;1090;1083:12;1108:547;1209:6;1217;1225;1233;1241;1249;1302:3;1290:9;1281:7;1277:23;1273:33;1270:53;;;1319:1;1316;1309:12;1270:53;1342:28;1360:9;1342:28;:::i;:::-;1332:38;;1389;1423:2;1412:9;1408:18;1389:38;:::i;:::-;1379:48;;1446:38;1480:2;1469:9;1465:18;1446:38;:::i;:::-;1436:48;;1531:2;1520:9;1516:18;1503:32;1493:42;;1554:38;1587:3;1576:9;1572:19;1554:38;:::i;:::-;1544:48;;1611:38;1644:3;1633:9;1629:19;1611:38;:::i;:::-;1601:48;;1108:547;;;;;;;;:::o;1842:255::-;1998:2;1983:18;;2031:1;2020:13;;2010:47;;2037:18;;:::i;2102:326::-;2178:6;2186;2194;2247:2;2235:9;2226:7;2222:23;2218:32;2215:52;;;2263:1;2260;2253:12;2215:52;2286:28;2304:9;2286:28;:::i;:::-;2276:38;;2333;2367:2;2356:9;2352:18;2333:38;:::i;:::-;2323:48;;2418:2;2407:9;2403:18;2390:32;2380:42;;2102:326;;;;;:::o;2433:550::-;2664:13;;2679:10;2660:30;2642:49;;2738:4;2726:17;;;2720:24;-1:-1:-1;;;;;2820:21:146;;;2798:20;;;2791:51;;;;2902:4;2890:17;;;2884:24;2880:33;;;2858:20;;;2851:63;2970:4;2958:17;;;2952:24;2930:20;;;2923:54;;;;2629:3;2614:19;;2433:550::o", "linkReferences": {} }, @@ -260,7 +260,7 @@ "subscriptions(bytes32)": "94259c6c", "unsubscribe(uint32,address,bytes32)": "97229719" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathySubscriber\",\"version\":1},\"userdoc\":{\"events\":{\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"This allows contracts to subscribe to cross-chain events from a source contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathySubscriber.sol\":\"TelepathySubscriber\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathySubscriber\",\"version\":1},\"userdoc\":{\"events\":{\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"This allows contracts to subscribe to cross-chain events from a source contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathySubscriber.sol\":\"TelepathySubscriber\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -766,10 +766,10 @@ "license": null }, "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", "urls": [ - "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", - "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", + "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" ], "license": null }, diff --git a/out/TelepathyValidator.sol/IBasicHomeAMB.json b/out/TelepathyValidator.sol/IBasicHomeAMB.json index bee2d3c..2dddad1 100644 --- a/out/TelepathyValidator.sol/IBasicHomeAMB.json +++ b/out/TelepathyValidator.sol/IBasicHomeAMB.json @@ -27,7 +27,7 @@ "methodIdentifiers": { "executeAffirmation(bytes)": "e7a2c01f" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"executeAffirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"IBasicHomeAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"executeAffirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"IBasicHomeAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -319,10 +319,10 @@ "license": null }, "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", "urls": [ - "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", - "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", + "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" ], "license": null }, diff --git a/out/TelepathyValidator.sol/TelepathyValidator.json b/out/TelepathyValidator.sol/TelepathyValidator.json index 10b98c9..aab1847 100644 --- a/out/TelepathyValidator.sol/TelepathyValidator.json +++ b/out/TelepathyValidator.sol/TelepathyValidator.json @@ -265,12 +265,12 @@ } ], "bytecode": { - "object": "0x6101206040523480156200001257600080fd5b5060405162000ddf38038062000ddf833981016040819052620000359162000213565b600080546001600160a01b0319166001600160a01b038916179055620000626200005c3390565b620000ab565b63ffffffff86166080526001600160a01b0380861660a0526001600160401b0380861660c052841660e0528216610100526200009e81620000fd565b50505050505050620002b2565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200010762000180565b6001600160a01b038116620001725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200017d81620000ab565b50565b6001546001600160a01b03163314620001dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000169565b565b80516001600160a01b0381168114620001f657600080fd5b919050565b80516001600160401b0381168114620001f657600080fd5b600080600080600080600060e0888a0312156200022f57600080fd5b6200023a88620001de565b9650602088015163ffffffff811681146200025457600080fd5b95506200026460408901620001de565b94506200027460608901620001fb565b93506200028460808901620001fb565b92506200029460a08901620001de565b9150620002a460c08901620001de565b905092959891949750929550565b60805160a05160c05160e05161010051610ac56200031a60003960006106230152600081816102140152818161053501526105600152600081816101ec01526104ef015260008181610186015261049201526000818161015f015261043e0152610ac56000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea2646970667358221220afbd2f6b009b12f8c290dad9e0ab4548c91301fc24c48578d06b6b161b4bf3e664736f6c63430008100033", + "object": "0x6101206040523480156200001257600080fd5b5060405162000ddf38038062000ddf833981016040819052620000359162000213565b600080546001600160a01b0319166001600160a01b038916179055620000626200005c3390565b620000ab565b63ffffffff86166080526001600160a01b0380861660a0526001600160401b0380861660c052841660e0528216610100526200009e81620000fd565b50505050505050620002b2565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200010762000180565b6001600160a01b038116620001725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200017d81620000ab565b50565b6001546001600160a01b03163314620001dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000169565b565b80516001600160a01b0381168114620001f657600080fd5b919050565b80516001600160401b0381168114620001f657600080fd5b600080600080600080600060e0888a0312156200022f57600080fd5b6200023a88620001de565b9650602088015163ffffffff811681146200025457600080fd5b95506200026460408901620001de565b94506200027460608901620001fb565b93506200028460808901620001fb565b92506200029460a08901620001de565b9150620002a460c08901620001de565b905092959891949750929550565b60805160a05160c05160e05161010051610ac56200031a60003960006106230152600081816102140152818161053501526105600152600081816101ec01526104ef015260008181610186015261049201526000818161015f015261043e0152610ac56000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea264697066735822122039024801fa5fd5c08053dea7f1c0ad819675317d9ec4ec486697dda62975415164736f6c63430008100033", "sourceMap": "516:3107:12:-:0;;;1419:499;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;392:15:128;:51;;-1:-1:-1;;;;;;392:51:128;-1:-1:-1;;;;;392:51:128;;;;;936:32:49;955:12;719:10:68;;640:96;955:12:49;936:18;:32::i;:::-;1685:38:12::1;::::0;::::1;;::::0;-1:-1:-1;;;;;1733:37:12;;::::1;;::::0;-1:-1:-1;;;;;1780:23:12;;::::1;;::::0;1813:19;::::1;;::::0;1842:34;::::1;;::::0;1886:25:::1;1904:6:::0;1886:17:::1;:25::i;:::-;1419:499:::0;;;;;;;516:3107;;2433:187:49;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;1373:2:146;2161:73:49::1;::::0;::::1;1355:21:146::0;1412:2;1392:18;;;1385:30;1451:34;1431:18;;;1424:62;-1:-1:-1;;;1502:18:146;;;1495:36;1548:19;;2161:73:49::1;;;;;;;;;2244:28;2263:8:::0;2244:18:::1;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;1780:2:146;1414:68:49;;;1762:21:146;;;1799:18;;;1792:30;1858:34;1838:18;;;1831:62;1910:18;;1414:68:49;1578:356:146;1414:68:49;1359:130::o;14:177:146:-;93:13;;-1:-1:-1;;;;;135:31:146;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:175::-;274:13;;-1:-1:-1;;;;;316:30:146;;306:41;;296:69;;361:1;358;351:12;376:790;497:6;505;513;521;529;537;545;598:3;586:9;577:7;573:23;569:33;566:53;;;615:1;612;605:12;566:53;638:40;668:9;638:40;:::i;:::-;628:50;;721:2;710:9;706:18;700:25;765:10;758:5;754:22;747:5;744:33;734:61;;791:1;788;781:12;734:61;814:5;-1:-1:-1;838:49:146;883:2;868:18;;838:49;:::i;:::-;828:59;;906:48;950:2;939:9;935:18;906:48;:::i;:::-;896:58;;973:49;1017:3;1006:9;1002:19;973:49;:::i;:::-;963:59;;1041:50;1086:3;1075:9;1071:19;1041:50;:::i;:::-;1031:60;;1110:50;1155:3;1144:9;1140:19;1110:50;:::i;:::-;1100:60;;376:790;;;;;;;;;;:::o;1578:356::-;516:3107:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea2646970667358221220afbd2f6b009b12f8c290dad9e0ab4548c91301fc24c48578d06b6b161b4bf3e664736f6c63430008100033", + "object": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea264697066735822122039024801fa5fd5c08053dea7f1c0ad819675317d9ec4ec486697dda62975415164736f6c63430008100033", "sourceMap": "516:3107:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2059:353;;;:::i;:::-;;;160:25:146;;;148:2;133:18;2059:353:12;;;;;;;;1346:29;;;;;;299:38:128;;;;;-1:-1:-1;;;;;299:38:128;;;;;;-1:-1:-1;;;;;385:32:146;;;367:51;;355:2;340:18;299:38:128;196:228:146;1831:101:49;;;:::i;:::-;;1201:85;1273:6;;-1:-1:-1;;;;;1273:6:49;1201:85;;1924:129:12;;;:::i;456:572:128:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3809:33:146;;;3791:52;;3779:2;3764:18;456:572:128;3647:202:146;2081:198:49;;;;;;:::i;:::-;;:::i;2059:353:12:-;2126:7;1094:13:49;:11;:13::i;:::-;2162:15:12::1;::::0;:212:::1;::::0;-1:-1:-1;;;2162:212:12;;4356:10:146;2201:21:12::1;4344:23:146::0;2162:212:12::1;::::0;::::1;4326:42:146::0;2236:20:12::1;-1:-1:-1::0;;;;;4442:15:146;;;4422:18;;;4415:43;2278:4:12::1;4474:18:146::0;;;4467:43;1095:53:12::1;4526:18:146::0;;;4519:34;4572:18;2332:10:12::1;4627:15:146::0;;4606:19;;;4599:44;2356:8:12::1;4680:15:146::0;4659:19;;;4652:44;2162:15:12;;::::1;::::0;:25:::1;::::0;4298:19:146;;2162:212:12::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2145:14;:229:::0;;;;-1:-1:-1;2059:353:12;:::o;1831:101:49:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1924:129:12:-;1094:13:49;:11;:13::i;:::-;2020:26:12::1;::::0;;-1:-1:-1;;1990:56:12;::::1;2020:26;::::0;;::::1;2019:27;1990:56;::::0;;1924:129::o;456:572:128:-;702:6;746:15;;-1:-1:-1;;;;;746:15:128;724:10;:38;720:110;;785:34;;-1:-1:-1;;;785:34:128;;808:10;785:34;;;367:51:146;340:18;;785:34:128;;;;;;;;720:110;839:121;870:15;887:14;903;919:5;926:12;940:10;839:17;:121::i;:::-;-1:-1:-1;;;;456:572:128;;;;;;;;:::o;2081:198:49:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;5098:2:146;2161:73:49::1;::::0;::::1;5080:21:146::0;5137:2;5117:18;;;5110:30;5176:34;5156:18;;;5149:62;-1:-1:-1;;;5227:18:146;;;5220:36;5273:19;;2161:73:49::1;4896:402:146::0;2161:73:49::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;5505:2:146;1414:68:49;;;5487:21:146;;;5524:18;;;5517:30;5583:34;5563:18;;;5556:62;5635:18;;1414:68:49;5303:356:146;2433:187:49;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2636:985:12:-;2907:21;2889:39;;:14;:39;;;2885:111;;2951:34;;-1:-1:-1;;;2951:34:12;;5838:10:146;5826:23;;2951:34:12;;;5808:42:146;5781:18;;2951:34:12;5664:192:146;2885:111:12;3028:20;-1:-1:-1;;;;;3010:38:12;:14;-1:-1:-1;;;;;3010:38:12;;3006:112;;3071:36;;-1:-1:-1;;;3071:36:12;;-1:-1:-1;;;;;385:32:146;;3071:36:12;;;367:51:146;340:18;;3071:36:12;196:228:146;3006:112:12;3140:10;3132:18;;:5;:18;;;:57;;;-1:-1:-1;3155:13:12;:8;:13;;;;;:33;;;3180:8;3172:16;;:5;:16;;;3155:33;3128:113;;;3212:18;;-1:-1:-1;;;3212:18:12;;6035::146;6023:31;;3212:18:12;;;6005:50:146;5978:18;;3212::12;5861:200:146;3128:113:12;3274:14;;3255:15;:33;3251:109;;3311:38;;-1:-1:-1;;;3311:38:12;;;;;160:25:146;;;133:18;;3311:38:12;14:177:146;3251:109:12;3371:19;3392:17;3424:9;3413:37;;;;;;;;;;;;:::i;:::-;3465:26;;3370:80;;-1:-1:-1;3370:80:12;-1:-1:-1;3465:26:12;;3461:90;;;3507:33;;-1:-1:-1;;;3507:33:12;;-1:-1:-1;;;;;3507:8:12;:27;;;;:33;;3535:4;;3507:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3461:90;3585:11;3597:1;3585:14;;;;;;;;:::i;:::-;;;;;;;3566:48;3601:6;3609:4;3566:48;;;;;;;:::i;:::-;;;;;;;;2875:746;;2636:985;;;;;;:::o;637:173:146:-;705:20;;-1:-1:-1;;;;;754:31:146;;744:42;;734:70;;800:1;797;790:12;734:70;637:173;;;:::o;815:127::-;876:10;871:3;867:20;864:1;857:31;907:4;904:1;897:15;931:4;928:1;921:15;947:275;1018:2;1012:9;1083:2;1064:13;;-1:-1:-1;;1060:27:146;1048:40;;1118:18;1103:34;;1139:22;;;1100:62;1097:88;;;1165:18;;:::i;:::-;1201:2;1194:22;947:275;;-1:-1:-1;947:275:146:o;1227:712::-;1281:5;1334:3;1327:4;1319:6;1315:17;1311:27;1301:55;;1352:1;1349;1342:12;1301:55;1388:6;1375:20;1414:4;1437:18;1433:2;1430:26;1427:52;;;1459:18;;:::i;:::-;1505:2;1502:1;1498:10;1528:28;1552:2;1548;1544:11;1528:28;:::i;:::-;1590:15;;;1660;;;1656:24;;;1621:12;;;;1692:15;;;1689:35;;;1720:1;1717;1710:12;1689:35;1756:2;1748:6;1744:15;1733:26;;1768:142;1784:6;1779:3;1776:15;1768:142;;;1850:17;;1838:30;;1801:12;;;;1888;;;;1768:142;;;1928:5;1227:712;-1:-1:-1;;;;;;;1227:712:146:o;1944:186::-;1992:4;2025:18;2017:6;2014:30;2011:56;;;2047:18;;:::i;:::-;-1:-1:-1;2113:2:146;2092:15;-1:-1:-1;;2088:29:146;2119:4;2084:40;;1944:186::o;2135:462::-;2177:5;2230:3;2223:4;2215:6;2211:17;2207:27;2197:55;;2248:1;2245;2238:12;2197:55;2284:6;2271:20;2315:48;2331:31;2359:2;2331:31;:::i;:::-;2315:48;:::i;:::-;2388:2;2379:7;2372:19;2434:3;2427:4;2422:2;2414:6;2410:15;2406:26;2403:35;2400:55;;;2451:1;2448;2441:12;2400:55;2516:2;2509:4;2501:6;2497:17;2490:4;2481:7;2477:18;2464:55;2564:1;2539:16;;;2557:4;2535:27;2528:38;;;;2543:7;2135:462;-1:-1:-1;;;2135:462:146:o;2602:1040::-;2738:6;2746;2754;2762;2770;2778;2831:3;2819:9;2810:7;2806:23;2802:33;2799:53;;;2848:1;2845;2838:12;2799:53;2884:9;2871:23;2861:33;;2944:2;2933:9;2929:18;2916:32;2988:10;2981:5;2977:22;2970:5;2967:33;2957:61;;3014:1;3011;3004:12;2957:61;3037:5;-1:-1:-1;3061:38:146;3095:2;3080:18;;3061:38;:::i;:::-;3051:48;;3151:2;3140:9;3136:18;3123:32;3174:18;3236:2;3227:7;3223:16;3214:7;3211:29;3201:57;;3254:1;3251;3244:12;3201:57;3277:7;;-1:-1:-1;3335:3:146;3320:19;;3307:33;;3352:14;;;3349:34;;;3379:1;3376;3369:12;3349:34;3402:61;3455:7;3446:6;3435:9;3431:22;3402:61;:::i;:::-;3392:71;;3516:3;3505:9;3501:19;3488:33;3472:49;;3546:2;3536:8;3533:16;3530:36;;;3562:1;3559;3552:12;3530:36;;3585:51;3628:7;3617:8;3606:9;3602:24;3585:51;:::i;:::-;3575:61;;;2602:1040;;;;;;;;:::o;3854:186::-;3913:6;3966:2;3954:9;3945:7;3941:23;3937:32;3934:52;;;3982:1;3979;3972:12;3934:52;4005:29;4024:9;4005:29;:::i;:::-;3995:39;3854:186;-1:-1:-1;;;3854:186:146:o;4707:184::-;4777:6;4830:2;4818:9;4809:7;4805:23;4801:32;4798:52;;;4846:1;4843;4836:12;4798:52;-1:-1:-1;4869:16:146;;4707:184;-1:-1:-1;4707:184:146:o;6066:250::-;6151:1;6161:113;6175:6;6172:1;6169:13;6161:113;;;6251:11;;;6245:18;6232:11;;;6225:39;6197:2;6190:10;6161:113;;;-1:-1:-1;;6308:1:146;6290:16;;6283:27;6066:250::o;6321:441::-;6374:5;6427:3;6420:4;6412:6;6408:17;6404:27;6394:55;;6445:1;6442;6435:12;6394:55;6474:6;6468:13;6505:48;6521:31;6549:2;6521:31;:::i;6505:48::-;6578:2;6569:7;6562:19;6624:3;6617:4;6612:2;6604:6;6600:15;6596:26;6593:35;6590:55;;;6641:1;6638;6631:12;6590:55;6654:77;6728:2;6721:4;6712:7;6708:18;6701:4;6693:6;6689:17;6654:77;:::i;:::-;6749:7;6321:441;-1:-1:-1;;;;6321:441:146:o;6767:558::-;6864:6;6872;6925:2;6913:9;6904:7;6900:23;6896:32;6893:52;;;6941:1;6938;6931:12;6893:52;6974:9;6968:16;7003:18;7044:2;7036:6;7033:14;7030:34;;;7060:1;7057;7050:12;7030:34;7083:60;7135:7;7126:6;7115:9;7111:22;7083:60;:::i;:::-;7073:70;;7189:2;7178:9;7174:18;7168:25;7152:41;;7218:2;7208:8;7205:16;7202:36;;;7234:1;7231;7224:12;7202:36;;7257:62;7311:7;7300:8;7289:9;7285:24;7257:62;:::i;:::-;7247:72;;;6767:558;;;;;:::o;7330:270::-;7371:3;7409:5;7403:12;7436:6;7431:3;7424:19;7452:76;7521:6;7514:4;7509:3;7505:14;7498:4;7491:5;7487:16;7452:76;:::i;:::-;7582:2;7561:15;-1:-1:-1;;7557:29:146;7548:39;;;;7589:4;7544:50;;7330:270;-1:-1:-1;;7330:270:146:o;7605:217::-;7752:2;7741:9;7734:21;7715:4;7772:44;7812:2;7801:9;7797:18;7789:6;7772:44;:::i;7827:127::-;7888:10;7883:3;7879:20;7876:1;7869:31;7919:4;7916:1;7909:15;7943:4;7940:1;7933:15;7959:377;8152:2;8141:9;8134:21;8115:4;8178:44;8218:2;8207:9;8203:18;8195:6;8178:44;:::i;:::-;8270:9;8262:6;8258:22;8253:2;8242:9;8238:18;8231:50;8298:32;8323:6;8315;8298:32;:::i;:::-;8290:40;7959:377;-1:-1:-1;;;;;7959:377:146:o", "linkReferences": {}, "immutableReferences": { @@ -336,7 +336,7 @@ "toggleExecuteAffirmations()": "a27c0863", "transferOwnership(address)": "f2fde38b" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyPubSub\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_homeAMB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"}],\"name\":\"InvalidSourceAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"}],\"name\":\"InvalidSourceChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubscriptionId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"NotFromTelepathyPubSub\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"AffirmationHandled\",\"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\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_subscriptionId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[]\",\"name\":\"_eventTopics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"_eventdata\",\"type\":\"bytes\"}],\"name\":\"handlePublish\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscribeToAffirmationEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscriptionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"telepathyPubSub\",\"outputs\":[{\"internalType\":\"contract TelepathyPubSub\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleExecuteAffirmations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"AFFIRMATION_EVENT_SIG\":{\"details\":\"Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData) where the encodedData is the ABI encoded message from the Foreign AMB.\"}},\"title\":\"TelepathyValidator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A validator for the ETH (Foreign) -> Gnosis (Home) bridge that relies on the Telepathy Protocol for proof of consensus in verifying the UserRequestForAffirmation event was emitted on Ethereum.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"TelepathyValidator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83\",\"urls\":[\"bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db\",\"dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyPubSub\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_homeAMB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"}],\"name\":\"InvalidSourceAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"}],\"name\":\"InvalidSourceChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubscriptionId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"NotFromTelepathyPubSub\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"AffirmationHandled\",\"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\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_subscriptionId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[]\",\"name\":\"_eventTopics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"_eventdata\",\"type\":\"bytes\"}],\"name\":\"handlePublish\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscribeToAffirmationEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscriptionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"telepathyPubSub\",\"outputs\":[{\"internalType\":\"contract TelepathyPubSub\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleExecuteAffirmations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"AFFIRMATION_EVENT_SIG\":{\"details\":\"Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData) where the encodedData is the ABI encoded message from the Foreign AMB.\"}},\"title\":\"TelepathyValidator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A validator for the ETH (Foreign) -> Gnosis (Home) bridge that relies on the Telepathy Protocol for proof of consensus in verifying the UserRequestForAffirmation event was emitted on Ethereum.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"TelepathyValidator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.16+commit.07a7930e" @@ -886,10 +886,10 @@ "license": null }, "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xdb54fb41ea01396656af5e6840553244d9fece2bb6580894f05ec6ca27628d83", + "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", "urls": [ - "bzz-raw://8f4413e51082324ca158da2b4047f611a46a16e2c36238ddd5fee4f3d37ba1db", - "dweb:/ipfs/QmX2Pxju2Qu82v6b7WQxdoovSikDWH46dE3Qm1NdfqFh3v" + "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", + "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" ], "license": null }, diff --git a/src/libraries/BeaconChainForks.sol b/src/libraries/BeaconChainForks.sol index 57f1621..ab71cc5 100644 --- a/src/libraries/BeaconChainForks.sol +++ b/src/libraries/BeaconChainForks.sol @@ -1,7 +1,7 @@ pragma solidity 0.8.16; library BeaconChainForks { - function getCapellaSlot(uint32 sourceChainId) public pure returns (uint256) { + function getCapellaSlot(uint32 sourceChainId) internal pure returns (uint256) { // Returns CAPELLA_FORK_EPOCH * SLOTS_PER_EPOCH for the corresponding beacon chain. if (sourceChainId == 1) { // https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/fork.md?plain=1#L30 From 0092dde56e5fa428b333f199f834fb3825983e61 Mon Sep 17 00:00:00 2001 From: Chris T Date: Thu, 6 Apr 2023 11:59:12 -0700 Subject: [PATCH 08/18] fix turbo ci (#302) * fix turbo ci * Fix github action trigger * test depends on build * use forge build --force * fix vercel GitOrigin-RevId: 13d885bf303018332f29e1f4155516e7a5754679 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 67eadeb..18b9e43 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,6 @@ "scripts": { "lint": "forge fmt --check src test script examples", "test": "forge test", - "build": "FOUNDRY_IGNORED_ERROR_CODES='[5740,1878]' forge build" + "build": "FOUNDRY_IGNORED_ERROR_CODES='[5740,1878]' forge build --force" } } From 8fe856d4022cab745d7ac3726f1b8be94d69bfb7 Mon Sep 17 00:00:00 2001 From: Chris T Date: Thu, 6 Apr 2023 16:52:13 -0700 Subject: [PATCH 09/18] Push ABI only instead of full foundry artifacts (#307) * ABI instead of full artifacts * Generate ABI only * Re-add ABI CI check * rename GitOrigin-RevId: adb453b9fd28a68b0c99212870e73cf80f8c9479 --- .gitignore | 31 +- abi/DrillLightClient.json | 550 + abi/DrillTelepathyRouter.json | 377 + abi/LightClient.json | 497 + abi/LightClientMock.json | 140 + abi/SourceAMB.json | 325 + abi/TargetAMB.json | 321 + abi/TelepathyPubSub.json | 371 + abi/TelepathyPublisher.json | 142 + abi/TelepathyRouter.json | 1012 ++ abi/TelepathySubscriber.json | 245 + abi/TelepathyValidator.json | 265 + abi/Timelock.json | 872 ++ build_with_abi.sh | 17 + .../DrillLightClient.json | 2138 --- .../DrillTelepathyRouter.json | 2080 --- out/LightClient.sol/LightClient.json | 11118 ---------------- out/LightClientMock.sol/LightClientMock.json | 1471 -- out/SourceAMB.sol/SourceAMB.json | 4302 ------ out/TargetAMB.sol/TargetAMB.json | 9642 -------------- out/TelepathyPubSub.sol/TelepathyPubSub.json | 1540 --- .../TelepathyPublisher.json | 6209 --------- out/TelepathyRouter.sol/TelepathyRouter.json | 4536 ------- .../TelepathySubscriber.json | 2947 ---- out/TelepathyValidator.sol/IBasicHomeAMB.json | 3454 ----- .../TelepathyValidator.json | 4021 ------ out/Timelock.sol/Timelock.json | 2330 ---- package.json | 5 +- 28 files changed, 5152 insertions(+), 55806 deletions(-) create mode 100644 abi/DrillLightClient.json create mode 100644 abi/DrillTelepathyRouter.json create mode 100644 abi/LightClient.json create mode 100644 abi/LightClientMock.json create mode 100644 abi/SourceAMB.json create mode 100644 abi/TargetAMB.json create mode 100644 abi/TelepathyPubSub.json create mode 100644 abi/TelepathyPublisher.json create mode 100644 abi/TelepathyRouter.json create mode 100644 abi/TelepathySubscriber.json create mode 100644 abi/TelepathyValidator.json create mode 100644 abi/Timelock.json create mode 100755 build_with_abi.sh delete mode 100644 out/DrillLightClient.sol/DrillLightClient.json delete mode 100644 out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json delete mode 100644 out/LightClient.sol/LightClient.json delete mode 100644 out/LightClientMock.sol/LightClientMock.json delete mode 100644 out/SourceAMB.sol/SourceAMB.json delete mode 100644 out/TargetAMB.sol/TargetAMB.json delete mode 100644 out/TelepathyPubSub.sol/TelepathyPubSub.json delete mode 100644 out/TelepathyPublisher.sol/TelepathyPublisher.json delete mode 100644 out/TelepathyRouter.sol/TelepathyRouter.json delete mode 100644 out/TelepathySubscriber.sol/TelepathySubscriber.json delete mode 100644 out/TelepathyValidator.sol/IBasicHomeAMB.json delete mode 100644 out/TelepathyValidator.sol/TelepathyValidator.json delete mode 100644 out/Timelock.sol/Timelock.json diff --git a/.gitignore b/.gitignore index f400302..100df80 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,21 @@ -abi/ +out/ broadcast/ cache/ logs/ lcov.info *foundryScriptOutput.json -out/* -out/**/*.abi.json -!out/LightClient.sol/ -!out/LightClientMock.sol/ -!out/SourceAMB.sol/ -!out/TargetAMB.sol/ -!out/DrillLightClient.sol/ -!out/DrillTelepathyRouter.sol/ -!out/Guardian.sol/ -!out/Timelock.sol/ -!out/TelepathyRouter.sol/ -!out/TelepathyPubSub.sol/ -!out/TelepathyPublisher.sol/ -!out/TelepathySubscriber.sol/ -!out/TelepathyValidator.sol/ \ No newline at end of file +abi/* +!abi/LightClient.json +!abi/LightClientMock.json +!abi/SourceAMB.json +!abi/TargetAMB.json +!abi/DrillLightClient.json +!abi/DrillTelepathyRouter.json +!abi/Guardian.json +!abi/Timelock.json +!abi/TelepathyRouter.json +!abi/TelepathyPubSub.json +!abi/TelepathyPublisher.json +!abi/TelepathySubscriber.json +!abi/TelepathyValidator.json \ No newline at end of file diff --git a/abi/DrillLightClient.json b/abi/DrillLightClient.json new file mode 100644 index 0000000..1550e27 --- /dev/null +++ b/abi/DrillLightClient.json @@ -0,0 +1,550 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "HeadUpdate", + "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": true, + "internalType": "uint256", + "name": "period", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "SyncCommitteeUpdate", + "type": "event" + }, + { + "inputs": [], + "name": "FINALITY_THRESHOLD", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GENESIS_TIME", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GENESIS_VALIDATORS_ROOT", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SECONDS_PER_SLOT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SLOTS_PER_PERIOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SOURCE_CHAIN_ID", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "consistent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + } + ], + "name": "emitFakeHeadUpdateEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_period", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + } + ], + "name": "emitFakeSyncCommitteeUpdateEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "executionStateRoots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "head", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "headers", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientStep", + "name": "step", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "syncCommitteeSSZ", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "syncCommitteePoseidon", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientRotate", + "name": "update", + "type": "tuple" + } + ], + "name": "rotate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientStep", + "name": "update", + "type": "tuple" + } + ], + "name": "step", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "syncCommitteePoseidons", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "timestamps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[65]", + "name": "input", + "type": "uint256[65]" + } + ], + "name": "verifyProofRotate", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[1]", + "name": "input", + "type": "uint256[1]" + } + ], + "name": "verifyProofStep", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/DrillTelepathyRouter.json b/abi/DrillTelepathyRouter.json new file mode 100644 index 0000000..75172e5 --- /dev/null +++ b/abi/DrillTelepathyRouter.json @@ -0,0 +1,377 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_guardian", + "type": "address" + }, + { + "internalType": "address", + "name": "_emitter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "ExecutedMessage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "MIN_LIGHT_CLIENT_DELAY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "_msgHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "emitFakeExecutedMessageEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes[]", + "name": "accountProof", + "type": "bytes[]" + }, + { + "internalType": "bytes[]", + "name": "storageProof", + "type": "bytes[]" + } + ], + "name": "executeMessage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + } + ], + "name": "executeMessageFromLog", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "freezeAll", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sourceChainIdsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/LightClient.json b/abi/LightClient.json new file mode 100644 index 0000000..38cdd7a --- /dev/null +++ b/abi/LightClient.json @@ -0,0 +1,497 @@ +[ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "genesisValidatorsRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "genesisTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "secondsPerSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "slotsPerPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "syncCommitteePeriod", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "syncCommitteePoseidon", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "finalityThreshold", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "HeadUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "period", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "SyncCommitteeUpdate", + "type": "event" + }, + { + "inputs": [], + "name": "FINALITY_THRESHOLD", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GENESIS_TIME", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GENESIS_VALIDATORS_ROOT", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SECONDS_PER_SLOT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SLOTS_PER_PERIOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SOURCE_CHAIN_ID", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "consistent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "executionStateRoots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "head", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "headers", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientStep", + "name": "step", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "syncCommitteeSSZ", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "syncCommitteePoseidon", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientRotate", + "name": "update", + "type": "tuple" + } + ], + "name": "rotate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "attestedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalizedSlot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "participation", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "finalizedHeaderRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "executionStateRoot", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + } + ], + "internalType": "struct Groth16Proof", + "name": "proof", + "type": "tuple" + } + ], + "internalType": "struct LightClientStep", + "name": "update", + "type": "tuple" + } + ], + "name": "step", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "syncCommitteePoseidons", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "timestamps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[65]", + "name": "input", + "type": "uint256[65]" + } + ], + "name": "verifyProofRotate", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2][2]", + "name": "b", + "type": "uint256[2][2]" + }, + { + "internalType": "uint256[2]", + "name": "c", + "type": "uint256[2]" + }, + { + "internalType": "uint256[1]", + "name": "input", + "type": "uint256[1]" + } + ], + "name": "verifyProofStep", + "outputs": [ + { + "internalType": "bool", + "name": "r", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/LightClientMock.json b/abi/LightClientMock.json new file mode 100644 index 0000000..2834cde --- /dev/null +++ b/abi/LightClientMock.json @@ -0,0 +1,140 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "HeadUpdate", + "type": "event" + }, + { + "inputs": [], + "name": "consistent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "executionStateRoots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "head", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "headers", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "executionRoot", + "type": "bytes32" + } + ], + "name": "setExecutionRoot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "headerRoot", + "type": "bytes32" + } + ], + "name": "setHeader", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "timestamps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/SourceAMB.json b/abi/SourceAMB.json new file mode 100644 index 0000000..95896ae --- /dev/null +++ b/abi/SourceAMB.json @@ -0,0 +1,325 @@ +[ + { + "inputs": [], + "name": "CannotSendToSameChain", + "type": "error" + }, + { + "inputs": [], + "name": "SendingDisabled", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "SentMessage", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/TargetAMB.json b/abi/TargetAMB.json new file mode 100644 index 0000000..3205765 --- /dev/null +++ b/abi/TargetAMB.json @@ -0,0 +1,321 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "ExecutedMessage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "MIN_LIGHT_CLIENT_DELAY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes[]", + "name": "accountProof", + "type": "bytes[]" + }, + { + "internalType": "bytes[]", + "name": "storageProof", + "type": "bytes[]" + } + ], + "name": "executeMessage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + } + ], + "name": "executeMessageFromLog", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sourceChainIdsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/TelepathyPubSub.json b/abi/TelepathyPubSub.json new file mode 100644 index 0000000..903543c --- /dev/null +++ b/abi/TelepathyPubSub.json @@ -0,0 +1,371 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_telepathyRouter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "endSlot", + "type": "uint64" + } + ], + "name": "InvalidSlotRange", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "name": "SubscriptionAlreadyActive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "name": "SubscriptionNotActive", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "name": "Publish", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "startSlot", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "endSlot", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false, + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "Subscribe", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false, + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "Unsubscribe", + "type": "event" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "eventsPublished", + "outputs": [ + { + "internalType": "enum PublishStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "publishEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "_startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "_endSlot", + "type": "uint64" + } + ], + "name": "subscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subscriptions", + "outputs": [ + { + "internalType": "enum SubscriptionStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + } + ], + "name": "unsubscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/TelepathyPublisher.json b/abi/TelepathyPublisher.json new file mode 100644 index 0000000..fdfc1ce --- /dev/null +++ b/abi/TelepathyPublisher.json @@ -0,0 +1,142 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "name": "Publish", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "eventsPublished", + "outputs": [ + { + "internalType": "enum PublishStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "publishEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subscriptions", + "outputs": [ + { + "internalType": "enum SubscriptionStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/TelepathyRouter.json b/abi/TelepathyRouter.json new file mode 100644 index 0000000..a948f7a --- /dev/null +++ b/abi/TelepathyRouter.json @@ -0,0 +1,1012 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "CannotSendToSameChain", + "type": "error" + }, + { + "inputs": [], + "name": "SendingDisabled", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "ExecutedMessage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "name": "Freeze", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "FreezeAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "SendingEnabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "SentMessage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "address", + "name": "lightClient", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "broadcaster", + "type": "address" + } + ], + "name": "SetLightClientAndBroadcaster", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "name": "SourceChainAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "name": "Unfreeze", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "UnfreezeAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GUARDIAN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_LIGHT_CLIENT_DELAY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TIMELOCK_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "broadcasters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes[]", + "name": "accountProof", + "type": "bytes[]" + }, + { + "internalType": "bytes[]", + "name": "storageProof", + "type": "bytes[]" + } + ], + "name": "executeMessage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "srcSlotTxSlotPack", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "messageBytes", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "receiptsRootProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "receiptsRoot", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "receiptProof", + "type": "bytes[]" + }, + { + "internalType": "bytes", + "name": "txIndexRLPEncoded", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "logIndex", + "type": "uint256" + } + ], + "name": "executeMessageFromLog", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "name": "freeze", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "freezeAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "frozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32[]", + "name": "_sourceChainIds", + "type": "uint32[]" + }, + { + "internalType": "address[]", + "name": "_lightClients", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "_broadcasters", + "type": "address[]" + }, + { + "internalType": "address", + "name": "_timelock", + "type": "address" + }, + { + "internalType": "address", + "name": "_guardian", + "type": "address" + }, + { + "internalType": "bool", + "name": "_sendingEnabled", + "type": "bool" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "lightClients", + "outputs": [ + { + "internalType": "contract ILightClient", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum MessageStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "messages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "destinationChainId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "destinationAddress", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "sendViaStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "sendingEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "lightclient", + "type": "address" + }, + { + "internalType": "address", + "name": "broadcaster", + "type": "address" + } + ], + "name": "setLightClientAndBroadcaster", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "setSendingEnabled", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "sourceChainIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sourceChainIdsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "storageRootCache", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "chainId", + "type": "uint32" + } + ], + "name": "unfreeze", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unfreezeAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/TelepathySubscriber.json b/abi/TelepathySubscriber.json new file mode 100644 index 0000000..29cd099 --- /dev/null +++ b/abi/TelepathySubscriber.json @@ -0,0 +1,245 @@ +[ + { + "inputs": [ + { + "internalType": "uint64", + "name": "startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "endSlot", + "type": "uint64" + } + ], + "name": "InvalidSlotRange", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "name": "SubscriptionAlreadyActive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "name": "SubscriptionNotActive", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "startSlot", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "endSlot", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false, + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "Subscribe", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "eventSig", + "type": "bytes32" + } + ], + "indexed": false, + "internalType": "struct Subscription", + "name": "subscription", + "type": "tuple" + } + ], + "name": "Unsubscribe", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "eventsPublished", + "outputs": [ + { + "internalType": "enum PublishStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_callbackAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "_startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "_endSlot", + "type": "uint64" + } + ], + "name": "subscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subscriptions", + "outputs": [ + { + "internalType": "enum SubscriptionStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_eventSig", + "type": "bytes32" + } + ], + "name": "unsubscribe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/TelepathyValidator.json b/abi/TelepathyValidator.json new file mode 100644 index 0000000..9233bd3 --- /dev/null +++ b/abi/TelepathyValidator.json @@ -0,0 +1,265 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_telepathyPubSub", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "uint64", + "name": "_startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "_endSlot", + "type": "uint64" + }, + { + "internalType": "address", + "name": "_homeAMB", + "type": "address" + }, + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "slot", + "type": "uint64" + } + ], + "name": "InvalidSlot", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + } + ], + "name": "InvalidSourceAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "sourceChainId", + "type": "uint32" + } + ], + "name": "InvalidSourceChain", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "subscriptionId", + "type": "bytes32" + } + ], + "name": "InvalidSubscriptionId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "NotFromTelepathyPubSub", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "messageId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "header", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "AffirmationHandled", + "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" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subscriptionId", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_sourceAddress", + "type": "address" + }, + { + "internalType": "uint64", + "name": "_slot", + "type": "uint64" + }, + { + "internalType": "bytes32[]", + "name": "_eventTopics", + "type": "bytes32[]" + }, + { + "internalType": "bytes", + "name": "_eventdata", + "type": "bytes" + } + ], + "name": "handlePublish", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "subscribeToAffirmationEvent", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "subscriptionId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "telepathyPubSub", + "outputs": [ + { + "internalType": "contract TelepathyPubSub", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "toggleExecuteAffirmations", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/Timelock.json b/abi/Timelock.json new file mode 100644 index 0000000..cf9446b --- /dev/null +++ b/abi/Timelock.json @@ -0,0 +1,872 @@ +[ + { + "inputs": [ + { + "internalType": "uint256", + "name": "minDelay", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "proposers", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "executors", + "type": "address[]" + }, + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "CallExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "CallScheduled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "Cancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldDuration", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newDuration", + "type": "uint256" + } + ], + "name": "MinDelayChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "CANCELLER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EXECUTOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PROPOSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TIMELOCK_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "cancel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "payload", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "executeBatch", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getMinDelay", + "outputs": [ + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "getTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "hashOperation", + "outputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "hashOperationBatch", + "outputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperation", + "outputs": [ + { + "internalType": "bool", + "name": "registered", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationDone", + "outputs": [ + { + "internalType": "bool", + "name": "done", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationPending", + "outputs": [ + { + "internalType": "bool", + "name": "pending", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationReady", + "outputs": [ + { + "internalType": "bool", + "name": "ready", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "schedule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "scheduleBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newDelay", + "type": "uint256" + } + ], + "name": "updateDelay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } +] \ No newline at end of file diff --git a/build_with_abi.sh b/build_with_abi.sh new file mode 100755 index 0000000..76d6800 --- /dev/null +++ b/build_with_abi.sh @@ -0,0 +1,17 @@ +echo "Generating ABI..." + +# Clean old build artifacts +rm -rf abi out + +# forge build: outputs normal forge .json files and .abi.json files to out/ +FOUNDRY_IGNORED_ERROR_CODES='[5740,1878]' forge build --extra-output-files abi + +# Move .abi.json files to abi/ +# and change extension from .abi.json to .json so typechain doesn't generate types like 'TelepathyRouterAbi' +mkdir abi +cp out/**/*.abi.json abi/ +for file in abi/*.abi.json; do + mv -- "$file" "${file%.abi.json}.json" +done + +echo "Generated ABI!" \ No newline at end of file diff --git a/out/DrillLightClient.sol/DrillLightClient.json b/out/DrillLightClient.sol/DrillLightClient.json deleted file mode 100644 index 874ebab..0000000 --- a/out/DrillLightClient.sol/DrillLightClient.json +++ /dev/null @@ -1,2138 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "emitter", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "slot", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - } - ], - "name": "HeadUpdate", - "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": true, - "internalType": "uint256", - "name": "period", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - } - ], - "name": "SyncCommitteeUpdate", - "type": "event" - }, - { - "inputs": [], - "name": "FINALITY_THRESHOLD", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "GENESIS_TIME", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "GENESIS_VALIDATORS_ROOT", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SECONDS_PER_SLOT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SLOTS_PER_PERIOD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SOURCE_CHAIN_ID", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "consistent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_slot", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_root", - "type": "bytes32" - } - ], - "name": "emitFakeHeadUpdateEvent", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_period", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_root", - "type": "bytes32" - } - ], - "name": "emitFakeSyncCommitteeUpdateEvent", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "executionStateRoots", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "head", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "headers", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "components": [ - { - "internalType": "uint256", - "name": "attestedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "finalizedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "participation", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "finalizedHeaderRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "executionStateRoot", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ], - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple" - } - ], - "internalType": "struct LightClientStep", - "name": "step", - "type": "tuple" - }, - { - "internalType": "bytes32", - "name": "syncCommitteeSSZ", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "syncCommitteePoseidon", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ], - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple" - } - ], - "internalType": "struct LightClientRotate", - "name": "update", - "type": "tuple" - } - ], - "name": "rotate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "attestedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "finalizedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "participation", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "finalizedHeaderRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "executionStateRoot", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ], - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple" - } - ], - "internalType": "struct LightClientStep", - "name": "update", - "type": "tuple" - } - ], - "name": "step", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "syncCommitteePoseidons", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "timestamps", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - }, - { - "internalType": "uint256[65]", - "name": "input", - "type": "uint256[65]" - } - ], - "name": "verifyProofRotate", - "outputs": [ - { - "internalType": "bool", - "name": "r", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - }, - { - "internalType": "uint256[1]", - "name": "input", - "type": "uint256[1]" - } - ], - "name": "verifyProofStep", - "outputs": [ - { - "internalType": "bool", - "name": "r", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": { - "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004eb538038062004eb5833981016040819052620000459162000264565b6000608081905260a081905260c081905260e0819052610100819052610120819052808080808080806200007a8180620000ae565b50505050505050506200009c620000966200012d60201b60201c565b62000131565b620000a78162000183565b5062000296565b60008281526005602052604090205415801590620000da57506000828152600560205260409020548114155b15620000ee5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200018d62000206565b6001600160a01b038116620001f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620002038162000131565b50565b6006546001600160a01b03163314620002625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001ef565b565b6000602082840312156200027757600080fd5b81516001600160a01b03811681146200028f57600080fd5b9392505050565b60805160a05160c05160e0516101005161012051614bb3620003026000396000818161031c01526109ba0152600061022201526000818161014101526109e50152600081816101980152610dd401526000818161037c0152610df8015260006102c20152614bb36000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea2646970667358221220f185b75d8b4ea2d0c2c1848a92033223914f4d1711f268c520e83f23fc79c18564736f6c63430008100033", - "sourceMap": "289:466:5:-:0;;;1711:29:114;;;-1:-1:-1;;1711:29:114;1736:4;1711:29;;;;;1824:23;345:118:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;386:1;2873:47:114;;;;2930:26;;;;2966:33;;;;3009;;;;3052:31;;;;3093:38;;;;386:1:5;;;;;;;3141:68:114;386:1:5;;3141:24:114;:68::i;:::-;2573:643;;;;;;;;936:32:49;955:12;:10;;;:12;;:::i;:::-;936:18;:32::i;:::-;430:26:5::2;448:7:::0;430:17:::2;:26::i;:::-;345:118:::0;289:466;;9106:393:114;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;640:96:68:-;719:10;;640:96::o;2433:187:49:-;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;511:2:146;2161:73:49::1;::::0;::::1;493:21:146::0;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:146;;;633:36;686:19;;2161:73:49::1;;;;;;;;;2244:28;2263:8:::0;2244:18:::1;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;918:2:146;1414:68:49;;;900:21:146;;;937:18;;;930:30;996:34;976:18;;;969:62;1048:18;;1414:68:49;716:356:146;1414:68:49;1359:130::o;14:290:146:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:146;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:146:o;716:356::-;289:466:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638bc33af3116100b8578063cb9709521161007c578063cb97095214610304578063da4b05e714610317578063e209e86314610351578063e5b708fe14610364578063f288246114610377578063f2fde38b1461039e57600080fd5b80638bc33af3146102795780638da5cb5b146102995780638f7dcfa3146102b4578063a8769acb146102bd578063b34711ab146102e457600080fd5b806356f90d79116100ff57806356f90d79146101e2578063715018a6146102025780637227d7851461020a57806374be21501461021d5780637623ee291461025957600080fd5b80632073ee701461013c5780632bcccca514610176578063304b907114610193578063474e04de146101ba5780634b4e4dff146101cf575b600080fd5b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6000546101839060ff1681565b604051901515815260200161016d565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6101c836600461462b565b6103b1565b005b6101cd6101dd366004614821565b6103ea565b6101636101f0366004614896565b60026020526000908152604090205481565b6101cd61043d565b6101836102183660046148af565b610451565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016d565b610163610267366004614896565b60046020526000908152604090205481565b610163610287366004614896565b60036020526000908152604090205481565b6006546040516001600160a01b03909116815260200161016d565b61016360015481565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101636102f2366004614896565b60056020526000908152604090205481565b6101cd610312366004614968565b610569565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016d565b6101cd61035f36600461462b565b6106aa565b61018361037236600461498c565b6106e3565b6101637f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6103ac366004614a44565b6107d7565b6103b9610850565b604051819083907f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f90600090a35050565b805160006103f7826108aa565b9050600061040883602001516109de565b90506000610417826001614a83565b905061042285610a10565b821561043657610436818660400151610b11565b5050505050565b610445610850565b61044f6000610b8e565b565b600061045b6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561053d5784816041811061050957610509614a96565b602002015182828151811061052057610520614a96565b60209081029190910101528061053581614aac565b9150506104ee565b506105488183610be0565b60000361055a57600192505050610561565b6000925050505b949350505050565b6000610574826108aa565b8251909150610581610dd0565b10156105e05760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156106415760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016105d7565b80156106625761065e826020015183606001518460800151610e2c565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016105d7565b6106b2610850565b604051819083907ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a0290600090a35050565b60006106ed6144d2565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156107cc5784816001811061079857610798614a96565b60200201518282815181106107af576107af614a96565b6020908102919091010152806107c481614aac565b91505061077d565b506105488183610ef9565b6107df610850565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61084d81610b8e565b50565b6006546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b6000806108ba83600001516109de565b600081815260056020526040812054919250036109375760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016105d7565b600a836040015110156109a65760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016105d7565b6109af83611084565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b6000610a0a7f000000000000000000000000000000000000000000000000000000000000000083614adb565b92915050565b6060810151610a1d614523565b602083015160005b6020811015610a7b57610a3a61010083614aef565b83610a4683601f614b03565b60418110610a5657610a56614a96565b6020020152610a6761010083614adb565b915080610a7381614aac565b915050610a25565b5083516060015160005b6020811015610adb57610a9a61010083614aef565b84610aa6836040614b03565b60418110610ab657610ab6614a96565b6020020152610ac761010083614adb565b915080610ad381614aac565b915050610a85565b506040850151610aea9061139d565b610400840152835160208501516040860151610b0892919086610451565b61043657600080fd5b60008281526005602052604090205415801590610b3c57506000828152600560205260409020548114155b15610b4f5750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0c6114e5565b905080608001515185516001610c229190614a83565b14610c645760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b8651811015610d555783878281518110610c9757610c97614a96565b602002602001015110610cec5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b610d4182610d3c8560800151846001610d059190614a83565b81518110610d1557610d15614a96565b60200260200101518a8581518110610d2f57610d2f614a96565b602002602001015161363e565b6136d4565b915080610d4d81614aac565b915050610c7b565b50610d7e818360800151600081518110610d7157610d71614a96565b60200260200101516136d4565b9050610db4610d90866000015161376d565b8660200151846000015185602001518587604001518b60400151896060015161380c565b610dc45760019350505050610a0a565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e1d7f000000000000000000000000000000000000000000000000000000000000000042614b03565b610e279190614adb565b905090565b60008381526002602052604090205415610e65576000838152600260205260409020548214610e60576000805460ff191690555b505050565b60008381526004602052604090205415610e9d576000838152600460205260409020548114610e60576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610f25613997565b905080608001515185516001610f3b9190614a83565b14610f7d5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016105d7565b604080518082019091526000808252602082018190525b86518110156110325783878281518110610fb057610fb0614a96565b6020026020010151106110055760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016105d7565b61101e82610d3c8560800151846001610d059190614a83565b91508061102a81614aac565b915050610f94565b5061104e818360800151600081518110610d7157610d71614a96565b9050610db4611060866000015161376d565b8660200151846000015185602001518587604001518b604001518960600151613d22565b6000611093826000015161139d565b905060006110a4836020015161139d565b905060006110b5846040015161139d565b905060006110c685600001516109de565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f198184030181529082905261110991614b16565b602060405180830381855afa158015611126573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111499190614b45565b9050600281886060015160405160200161116d929190918252602082015260400190565b60408051601f198184030181529082905261118791614b16565b602060405180830381855afa1580156111a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111c79190614b45565b9050600281856040516020016111e7929190918252602082015260400190565b60408051601f198184030181529082905261120191614b16565b602060405180830381855afa15801561121e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112419190614b45565b90506002818860800151604051602001611265929190918252602082015260400190565b60408051601f198184030181529082905261127f91614b16565b602060405180830381855afa15801561129c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112bf9190614b45565b9050600281836040516020016112df929190918252602082015260400190565b60408051601f19818403018152908290526112f991614b16565b602060405180830381855afa158015611316573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113399190614b45565b905060006113468261139d565b90506113576001600160fd1b614b03565b60a08901516040805160208082018352939094168085528251938301519183015190949293611388929091846106e3565b61139157600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6114ed614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161176857505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906117fb576117fb614a96565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b68488815250816080015160018151811061187257611872614a96565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106118e9576118e9614a96565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d815250816080015160038151811061196057611960614a96565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106119d7576119d7614a96565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f8152508160800151600581518110611a4e57611a4e614a96565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc88152508160800151600681518110611ac557611ac5614a96565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c58152508160800151600781518110611b3c57611b3c614a96565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f8152508160800151600881518110611bb357611bb3614a96565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b6148152508160800151600981518110611c2a57611c2a614a96565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611ca157611ca1614a96565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611d1857611d18614a96565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611d8f57611d8f614a96565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611e0657611e06614a96565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611e7d57611e7d614a96565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611ef457611ef4614a96565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611f6b57611f6b614a96565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611fe257611fe2614a96565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d815250816080015160128151811061205957612059614a96565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa581525081608001516013815181106120d0576120d0614a96565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf1815250816080015160148151811061214657612146614a96565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed381525081608001516015815181106121bd576121bd614a96565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d7815250816080015160168151811061223457612234614a96565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb481525081608001516017815181106122ab576122ab614a96565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab84815250816080015160188151811061232257612322614a96565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061239957612399614a96565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a8151811061241057612410614a96565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b8151811061248757612487614a96565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106124fe576124fe614a96565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d8151811061257557612575614a96565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106125ec576125ec614a96565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f8151811061266357612663614a96565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b781525081608001516020815181106126da576126da614a96565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b815250816080015160218151811061275157612751614a96565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f81525081608001516022815181106127c8576127c8614a96565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d418815250816080015160238151811061283f5761283f614a96565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106128b6576128b6614a96565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f815250816080015160258151811061292d5761292d614a96565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106129a4576129a4614a96565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad728152508160800151602781518110612a1b57612a1b614a96565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f048152508160800151602881518110612a9157612a91614a96565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba98152508160800151602981518110612b0857612b08614a96565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a81518110612b7f57612b7f614a96565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b81518110612bf657612bf6614a96565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612c6d57612c6d614a96565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612ce457612ce4614a96565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612d5b57612d5b614a96565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612dd257612dd2614a96565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612e4957612e49614a96565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612ec057612ec0614a96565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612f3757612f37614a96565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612fae57612fae614a96565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed863815250816080015160348151811061302557613025614a96565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef408815250816080015160358151811061309c5761309c614a96565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b815250816080015160368151811061311357613113614a96565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad759815250816080015160378151811061318a5761318a614a96565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b0815250816080015160388151811061320157613201614a96565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061327857613278614a96565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106132ef576132ef614a96565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b8151811061336657613366614a96565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c815181106133dd576133dd614a96565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d8151811061345457613454614a96565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e815181106134cb576134cb614a96565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f8151811061354257613542614a96565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb7081525081608001516040815181106135b9576135b9614a96565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f862815250816080015160418151811061363057613630614a96565b602002602001018190525090565b604080518082019091526000808252602082015261365a614593565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061368957fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016105d7565b505092915050565b60408051808201909152600080825260208201526136f06145b1565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa9050808061372a57fe5b50806136cc5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016105d7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156137b457506020830151155b156137d45750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516137f99190614aef565b6138039084614b03565b90529392505050565b60408051600480825260a08201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161382757505060408051600480825260a0820190925291925060009190602082015b6138716145cf565b8152602001906001900390816138695790505090508a8260008151811061389a5761389a614a96565b602002602001018190525088826001815181106138b9576138b9614a96565b602002602001018190525086826002815181106138d8576138d8614a96565b602002602001018190525084826003815181106138f7576138f7614a96565b6020026020010181905250898160008151811061391657613916614a96565b6020026020010181905250878160018151811061393557613935614a96565b6020026020010181905250858160028151811061395457613954614a96565b6020026020010181905250838160038151811061397357613973614a96565b60200260200101819052506139888282613e9e565b9b9a5050505050505050505050565b61399f614542565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b6040805180820190915260008082526020820152815260200190600190039081613c1857505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613cab57613cab614a96565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb15156815250816080015160018151811061363057613630614a96565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613d3d57505060408051600480825260a0820190925291925060009190602082015b613d876145cf565b815260200190600190039081613d7f5790505090508a82600081518110613db057613db0614a96565b60200260200101819052508882600181518110613dcf57613dcf614a96565b60200260200101819052508682600281518110613dee57613dee614a96565b60200260200101819052508482600381518110613e0d57613e0d614a96565b60200260200101819052508981600081518110613e2c57613e2c614a96565b60200260200101819052508781600181518110613e4b57613e4b614a96565b60200260200101819052508581600281518110613e6a57613e6a614a96565b60200260200101819052508381600381518110613e8957613e89614a96565b602002602001018190525061398882826141f6565b60008151835114613eea5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000613ef9826006614b5e565b905060008167ffffffffffffffff811115613f1657613f1661464d565b604051908082528060200260200182016040528015613f3f578160200160208202803683370190505b50905060005b8381101561417a57868181518110613f5f57613f5f614a96565b60200260200101516000015182826006613f799190614b5e565b613f84906000614a83565b81518110613f9457613f94614a96565b602002602001018181525050868181518110613fb257613fb2614a96565b60200260200101516020015182826006613fcc9190614b5e565b613fd7906001614a83565b81518110613fe757613fe7614a96565b60200260200101818152505085818151811061400557614005614a96565b602090810291909101015151518261401e836006614b5e565b614029906002614a83565b8151811061403957614039614a96565b60200260200101818152505085818151811061405757614057614a96565b60209081029190910181015151015182614072836006614b5e565b61407d906003614a83565b8151811061408d5761408d614a96565b6020026020010181815250508581815181106140ab576140ab614a96565b6020026020010151602001516000600281106140c9576140c9614a96565b6020020151826140da836006614b5e565b6140e5906004614a83565b815181106140f5576140f5614a96565b60200260200101818152505085818151811061411357614113614a96565b60200260200101516020015160016002811061413157614131614a96565b602002015182614142836006614b5e565b61414d906005614a83565b8151811061415d5761415d614a96565b60209081029190910101528061417281614aac565b915050613f45565b506141836145ef565b6000602082602086026020860160086107d05a03fa905080806141a257fe5b50806141e85760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016105d7565b505115159695505050505050565b600081518351146142425760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016105d7565b82516000614251826006614b5e565b905060008167ffffffffffffffff81111561426e5761426e61464d565b604051908082528060200260200182016040528015614297578160200160208202803683370190505b50905060005b8381101561417a578681815181106142b7576142b7614a96565b602002602001015160000151828260066142d19190614b5e565b6142dc906000614a83565b815181106142ec576142ec614a96565b60200260200101818152505086818151811061430a5761430a614a96565b602002602001015160200151828260066143249190614b5e565b61432f906001614a83565b8151811061433f5761433f614a96565b60200260200101818152505085818151811061435d5761435d614a96565b6020908102919091010151515182614376836006614b5e565b614381906002614a83565b8151811061439157614391614a96565b6020026020010181815250508581815181106143af576143af614a96565b602090810291909101810151510151826143ca836006614b5e565b6143d5906003614a83565b815181106143e5576143e5614a96565b60200260200101818152505085818151811061440357614403614a96565b60200260200101516020015160006002811061442157614421614a96565b602002015182614432836006614b5e565b61443d906004614a83565b8151811061444d5761444d614a96565b60200260200101818152505085818151811061446b5761446b614a96565b60200260200101516020015160016002811061448957614489614a96565b60200201518261449a836006614b5e565b6144a5906005614a83565b815181106144b5576144b5614a96565b6020908102919091010152806144ca81614aac565b91505061429d565b6040805160a0810190915260006060820181815260808301919091528152602081016144fc6145cf565b815260200161451e604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161456c6145cf565b81526020016145796145cf565b81526020016145866145cf565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806145e261460d565b815260200161451e61460d565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561463e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156146865761468661464d565b60405290565b600082601f83011261469d57600080fd5b6146a5614663565b8060408401858111156146b757600080fd5b845b818110156146d15780358452602093840193016146b9565b509095945050505050565b600082601f8301126146ed57600080fd5b6146f5614663565b80608084018581111561470757600080fd5b845b818110156146d15761471b878261468c565b8452602090930192604001614709565b6000610100828403121561473e57600080fd5b6040516060810181811067ffffffffffffffff821117156147615761476161464d565b604052905080614771848461468c565b815261478084604085016146dc565b60208201526147928460c0850161468c565b60408201525092915050565b60006101a082840312156147b157600080fd5b60405160c0810181811067ffffffffffffffff821117156147d4576147d461464d565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526148158460a0850161472b565b60a08201525092915050565b60006102e0828403121561483457600080fd5b6040516080810181811067ffffffffffffffff821117156148575761485761464d565b604052614864848461479e565b81526101a083013560208201526101c0830135604082015261488a846101e0850161472b565b60608201529392505050565b6000602082840312156148a857600080fd5b5035919050565b6000806000806109208086880312156148c757600080fd5b6148d1878761468c565b94506148e087604088016146dc565b93506148ef8760c0880161468c565b92508661011f87011261490157600080fd5b604051610820810181811067ffffffffffffffff821117156149255761492561464d565b60405290860190808883111561493a57600080fd5b61010088015b83811015614958578035825260209182019101614940565b5050809250505092959194509250565b60006101a0828403121561497b57600080fd5b614985838361479e565b9392505050565b6000806000806101208086880312156149a457600080fd5b6149ae878761468c565b94506149bd87604088016146dc565b93506149cc8760c0880161468c565b92508661011f8701126149de57600080fd5b604051602080820182811067ffffffffffffffff82111715614a0257614a0261464d565b604052918701918189841115614a1757600080fd5b61010089015b84811015614a345780358252908201908201614a1d565b5096999598509396509450505050565b600060208284031215614a5657600080fd5b81356001600160a01b038116811461498557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0a57610a0a614a6d565b634e487b7160e01b600052603260045260246000fd5b600060018201614abe57614abe614a6d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614aea57614aea614ac5565b500490565b600082614afe57614afe614ac5565b500690565b81810381811115610a0a57610a0a614a6d565b6000825160005b81811015614b375760208186018101518583015201614b1d565b506000920191825250919050565b600060208284031215614b5757600080fd5b5051919050565b6000816000190483118215151615614b7857614b78614a6d565b50029056fea2646970667358221220f185b75d8b4ea2d0c2c1848a92033223914f4d1711f268c520e83f23fc79c18564736f6c63430008100033", - "sourceMap": "289:466:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:41:114;;;;;;;;160:25:146;;;148:2;133:18;1170:41:114;;;;;;;;1711:29;;;;;;;;;;;;361:14:146;;354:22;336:41;;324:2;309:18;1711:29:114;196:187:146;1123:41:114;;;;;603:150:5;;;;;;:::i;:::-;;:::i;:::-;;4310:457:114;;;;;;:::i;:::-;;:::i;1918:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1831:101:49;;;:::i;26374:712:115:-;;;;;;:::i;:::-;;:::i;1217:39:114:-;;;;;;;;5817:10:146;5805:23;;;5787:42;;5775:2;5760:18;1217:39:114;5643:192:146;2218:54:114;;;;;;:::i;:::-;;;;;;;;;;;;;;2076:45;;;;;;:::i;:::-;;;;;;;;;;;;;;1201:85:49;1273:6;;1201:85;;-1:-1:-1;;;;;1273:6:49;;;5986:51:146;;5974:2;5959:18;1201:85:49;5840:203:146;1824:23:114;;;;;;1026:48;;;;;2365:57;;;;;;:::i;:::-;;;;;;;;;;;;;;3551:577;;;;;;:::i;:::-;;:::i;1262:42::-;;;;;;;;6472:6:146;6460:19;;;6442:38;;6430:2;6415:18;1262:42:114;6298:188:146;469:128:5;;;;;;:::i;:::-;;:::i;11270:699:116:-;;;;;;:::i;:::-;;:::i;1080:37:114:-;;;;;2081:198:49;;;;;;:::i;:::-;;:::i;603:150:5:-;1094:13:49;:11;:13::i;:::-;711:35:5::1;::::0;740:5;;731:7;;711:35:::1;::::0;;;::::1;603:150:::0;;:::o;4310:457:114:-;4414:11;;4378:33;4452:24;4414:11;4452;:24::i;:::-;4435:41;;4486:21;4510:48;4533:10;:24;;;4510:22;:48::i;:::-;4486:72;-1:-1:-1;4568:18:114;4589:17;4486:72;4605:1;4589:17;:::i;:::-;4568:38;;4617:27;4637:6;4617:19;:27::i;:::-;4659:9;4655:106;;;4684:66;4709:10;4721:6;:28;;;4684:24;:66::i;:::-;4368:399;;;;4310:457;:::o;1831:101:49:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;26374:712:115:-;26552:6;26570:24;;:::i;:::-;26614:33;;;;;;;;26636:4;;26614:33;;26636:4;26642;;;;26614:33;;;;26604:43;;;26667:61;;;;;;;26690:4;;:7;26667:61;;;;;;26699:4;;:7;;;26667:61;;;;;;;;;;;;;26710:4;;;;;:7;26667:61;;26719:4;:7;;;26667:61;;;;-1:-1:-1;;;26667:61:115;26657:7;;;:71;26748:33;;;;;;;26770:4;;26748:33;;26776:4;;;;26748:33;;;;26738:7;;;:43;26822:24;;26833:12;26822:24;;;;;;;;;-1:-1:-1;;26822:24:115;;;;;;;;;;;-1:-1:-1;26822:24:115;26791:55;;26861:9;26856:93;26880:12;26876:1;:16;26856:93;;;26930:5;26936:1;26930:8;;;;;;;:::i;:::-;;;;;26913:11;26925:1;26913:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;26894:3;;;;:::i;:::-;;;;26856:93;;;;26962:32;26975:11;26988:5;26962:12;:32::i;:::-;26998:1;26962:37;26958:122;;27022:4;27015:11;;;;;;26958:122;27064:5;27057:12;;;;26374:712;;;;;;;:::o;3551:577:114:-;3615:14;3632:19;3644:6;3632:11;:19::i;:::-;3685;;3615:36;;-1:-1:-1;3666:16:114;:14;:16::i;:::-;:38;3662:115;;;3720:46;;-1:-1:-1;;;3720:46:114;;8686:2:146;3720:46:114;;;8668:21:146;8725:2;8705:18;;;8698:30;8764:34;8744:18;;;8737:62;-1:-1:-1;;;8815:18:146;;;8808:34;8859:19;;3720:46:114;;;;;;;;3662:115;3814:4;;3791:6;:20;;;:27;3787:102;;;3834:44;;-1:-1:-1;;;3834:44:114;;9091:2:146;3834:44:114;;;9073:21:146;9130:2;9110:18;;;9103:30;9169:34;9149:18;;;9142:62;-1:-1:-1;;;9220:18:146;;;9213:32;9262:19;;3834:44:114;8889:398:146;3787:102:114;3903:9;3899:223;;;3928:119;3958:6;:20;;;3980:6;:26;;;4008:6;:25;;;3928:12;:119::i;:::-;3605:523;3551:577;:::o;3899:223::-;4078:33;;-1:-1:-1;;;4078:33:114;;9494:2:146;4078:33:114;;;9476:21:146;9533:2;9513:18;;;9506:30;9572:25;9552:18;;;9545:53;9615:18;;4078:33:114;9292:347:146;469:128:5;1094:13:49;:11;:13::i;:::-;566:24:5::1;::::0;584:5;;577;;566:24:::1;::::0;;;::::1;469:128:::0;;:::o;11270:699:116:-;11445:6;11463:22;;:::i;:::-;11505:31;;;;;;;;11525:4;;11505:31;;11525:4;11531;;;;11505:31;;;;11495:41;;;11556:59;;;;;;;11577:4;;:7;11556:59;;;;;;11586:4;;:7;;;11556:59;;;;;;;;;;;;;11597:4;;;;;:7;11556:59;;11606:4;:7;;;11556:59;;;;-1:-1:-1;;;11556:59:116;11546:7;;;:69;11635:31;;;;;;;11655:4;;11635:31;;11661:4;;;;11635:31;;;;11625:7;;;:41;11707:24;;11533:1;11707:24;;;;;;;;;-1:-1:-1;;11707:24:116;;;;;;11525:4;11707:24;;;;;-1:-1:-1;11707:24:116;11676:55;;11746:9;11741:93;11765:12;11761:1;:16;11741:93;;;11815:5;11821:1;11815:8;;;;;;;:::i;:::-;;;;;11798:11;11810:1;11798:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;11779:3;;;;:::i;:::-;;;;11741:93;;;;11847:30;11858:11;11871:5;11847:10;:30::i;2081:198:49:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;9846:2:146;2161:73:49::1;::::0;::::1;9828:21:146::0;9885:2;9865:18;;;9858:30;9924:34;9904:18;;;9897:62;-1:-1:-1;;;9975:18:146;;;9968:36;10021:19;;2161:73:49::1;9644:402:146::0;2161:73:49::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;10253:2:146;1414:68:49;;;10235:21:146;;;10272:18;;;10265:30;10331:34;10311:18;;;10304:62;10383:18;;1414:68:49;10051:356:146;4850:556:114;4925:4;4941:21;4965:43;4988:6;:19;;;4965:22;:43::i;:::-;5023:37;;;;:22;:37;;;;;;4941:67;;-1:-1:-1;5023:42:114;5019:286;;5081:63;;-1:-1:-1;;;5081:63:114;;10614:2:146;5081:63:114;;;10596:21:146;10653:2;10633:18;;;10626:30;10692:34;10672:18;;;10665:62;-1:-1:-1;;;10743:18:146;;;10736:51;10804:19;;5081:63:114;10412:417:146;5019:286:114;1371:2;5165:6;:20;;;:54;5161:144;;;5235:59;;-1:-1:-1;;;5235:59:114;;11036:2:146;5235:59:114;;;11018:21:146;11075:2;11055:18;;;11048:30;11114:34;11094:18;;;11087:62;-1:-1:-1;;;11165:18:146;;;11158:47;11222:19;;5235:59:114;10834:413:146;5161:144:114;5315:25;5333:6;5315:17;:25::i;:::-;-1:-1:-1;;5358:20:114;;;:41;5381:18;5358:41;-1:-1:-1;5358:41:114;4850:556::o;7603:125::-;7672:7;7698:23;7705:16;7698:4;:23;:::i;:::-;7691:30;7603:125;-1:-1:-1;;7603:125:114:o;6655:882::-;6769:12;;;;6791:25;;:::i;:::-;6869:23;;;;6827:31;6903:183;6927:2;6923:1;:6;6903:183;;;6971:32;6997:6;6971:23;:32;:::i;:::-;6950:6;6957:10;6966:1;6957:6;:10;:::i;:::-;6950:18;;;;;;;:::i;:::-;;;;:53;7043:32;7069:6;7043:23;:32;:::i;:::-;7017:58;-1:-1:-1;6931:3:114;;;;:::i;:::-;;;;6903:183;;;-1:-1:-1;7140:11:114;;:31;;;7095:34;7182:188;7206:2;7202:1;:6;7182:188;;;7246:35;7275:6;7246:26;:35;:::i;:::-;7229:6;7236;7241:1;7236:2;:6;:::i;:::-;7229:14;;;;;;;:::i;:::-;;;;:52;7324:35;7353:6;7324:26;:35;:::i;:::-;7295:64;-1:-1:-1;7210:3:114;;;;:::i;:::-;;;;7182:188;;;-1:-1:-1;7427:28:114;;;;7400:57;;:18;:57::i;:::-;7379:10;;;:79;7495:7;;7386:2;7504:7;;;7513;;;;7477:52;;7495:7;7504;7379:6;7477:17;:52::i;:::-;7469:61;;;;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;2433:187:49:-;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;25166:1155:115:-;25285:7;25349:77;25285:7;25467:20;:18;:20::i;:::-;25436:51;;25525:2;:5;;;:12;25505:5;:12;25520:1;25505:16;;;;:::i;:::-;:32;25497:63;;;;-1:-1:-1;;;25497:63:115;;11961:2:146;25497:63:115;;;11943:21:146;12000:2;11980:18;;;11973:30;-1:-1:-1;;;12019:18:146;;;12012:48;12077:18;;25497:63:115;11759:342:146;25497:63:115;25653:27;;;;;;;;;25617:33;25653:27;;;;;;;;;25690:240;25714:5;:12;25710:1;:16;25690:240;;;25766:18;25755:5;25761:1;25755:8;;;;;;;;:::i;:::-;;;;;;;:29;25747:73;;;;-1:-1:-1;;;25747:73:115;;12308:2:146;25747:73:115;;;12290:21:146;12347:2;12327:18;;;12320:30;12386:33;12366:18;;;12359:61;12437:18;;25747:73:115;12106:355:146;25747:73:115;25841:78;25864:4;25870:48;25895:2;:5;;;25901:1;25905;25901:5;;;;:::i;:::-;25895:12;;;;;;;;:::i;:::-;;;;;;;25909:5;25915:1;25909:8;;;;;;;;:::i;:::-;;;;;;;25870:24;:48::i;:::-;25841:22;:78::i;:::-;25834:85;-1:-1:-1;25728:3:115;;;;:::i;:::-;;;;25690:240;;;;25946:38;25969:4;25975:2;:5;;;25981:1;25975:8;;;;;;;;:::i;:::-;;;;;;;25946:22;:38::i;:::-;25939:45;;26012:265;26056:29;26077:5;:7;;;26056:20;:29::i;:::-;26103:5;:7;;;26128:2;:8;;;26154:2;:8;;;26180:4;26202:2;:9;;;26229:5;:7;;;26254:2;:9;;;26012:26;:265::i;:::-;25994:302;;26295:1;26288:8;;;;;;;25994:302;-1:-1:-1;26313:1:115;;25166:1155;-1:-1:-1;;;;;25166:1155:115:o;7818:133:114:-;7867:7;7928:16;7894:30;7912:12;7894:15;:30;:::i;:::-;7893:51;;;;:::i;:::-;7886:58;;7818:133;:::o;8310:721::-;8463:1;8438:13;;;:7;:13;;;;;;:27;8434:170;;8485:13;;;;:7;:13;;;;;;:36;;8481:93;;8554:5;8541:18;;-1:-1:-1;;8541:18:114;;;8481:93;8310:721;;;:::o;8434:170::-;8654:1;8617:25;;;:19;:25;;;;;;:39;8613:193;;8676:25;;;;:19;:25;;;;;;:47;;8672:104;;8756:5;8743:18;;-1:-1:-1;;8743:18:114;;;8310:721;;;:::o;8613:193::-;8816:4;:11;;;8837:13;;;;:7;:13;;;;;;;;:35;;;8882:19;:25;;;;;:46;;;8938:10;:16;;;;;;8957:15;8938:34;;8987:37;8853:19;;8823:4;;8987:37;;8837:13;8987:37;8310:721;;;:::o;10084:1133:116:-;10199:7;10263:77;10199:7;10379:18;:16;:18::i;:::-;10350:47;;10435:2;:5;;;:12;10415:5;:12;10430:1;10415:16;;;;:::i;:::-;:32;10407:63;;;;-1:-1:-1;;;10407:63:116;;11961:2:146;10407:63:116;;;11943:21:146;12000:2;11980:18;;;11973:30;-1:-1:-1;;;12019:18:146;;;12012:48;12077:18;;10407:63:116;11759:342:146;10407:63:116;10561:25;;;;;;;;;10527:31;10561:25;;;;;;;;;10596:236;10620:5;:12;10616:1;:16;10596:236;;;10672:18;10661:5;10667:1;10661:8;;;;;;;;:::i;:::-;;;;;;;:29;10653:73;;;;-1:-1:-1;;;10653:73:116;;12308:2:146;10653:73:116;;;12290:21:146;12347:2;12327:18;;;12320:30;12386:33;12366:18;;;12359:61;12437:18;;10653:73:116;12106:355:146;10653:73:116;10747:74;10768:4;10774:46;10797:2;:5;;;10803:1;10807;10803:5;;;;:::i;10747:74::-;10740:81;-1:-1:-1;10634:3:116;;;;:::i;:::-;;;;10596:236;;;;10848:36;10869:4;10875:2;:5;;;10881:1;10875:8;;;;;;;;:::i;10848:36::-;10841:43;;10912:261;10954:27;10973:5;:7;;;10954:18;:27::i;:::-;10999:5;:7;;;11024:2;:8;;;11050:2;:8;;;11076:4;11098:2;:9;;;11125:5;:7;;;11150:2;:9;;;10912:24;:261::i;5509:1064:114:-;5591:22;5616:39;5635:6;:19;;;5616:18;:39::i;:::-;5591:64;;5665:23;5691:40;5710:6;:20;;;5691:18;:40::i;:::-;5665:66;;5741:23;5767:40;5786:6;:20;;;5767:18;:40::i;:::-;5741:66;;5817:21;5841:43;5864:6;:19;;;5841:22;:43::i;:::-;5894:29;5926:37;;;:22;:37;;;;;;;;;6004:45;;;;;12623:19:146;;;12658:12;;;12651:28;;;5926:37:114;;-1:-1:-1;5997:53:114;;12695:12:146;;6004:45:114;;;-1:-1:-1;;6004:45:114;;;;;;;;;;5997:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5993:57;;6064:51;6084:1;6087:6;:26;;;6071:43;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6071:43:114;;;;-1:-1:-1;;6071:43:114;;;;;;;;;;6064:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6060:55;;6129:40;6149:1;6152:15;6136:32;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6136:32:114;;;;-1:-1:-1;;6136:32:114;;;;;;;;;;6129:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6125:44;;6183:50;6203:1;6206:6;:25;;;6190:42;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6190:42:114;;;;-1:-1:-1;;6190:42:114;;;;;;;;;;6183:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:54;;6247:46;6267:1;6270:21;6254:38;;;;;;;;12623:19:146;;;12667:2;12658:12;;12651:28;12704:2;12695:12;;12466:247;6254:38:114;;;;-1:-1:-1;;6254:38:114;;;;;;;;;;6247:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6243:50;-1:-1:-1;6303:9:114;6323:30;6243:50;6323:18;:30::i;:::-;6315:39;-1:-1:-1;6373:23:114;6395:1;-1:-1:-1;;;6373:23:114;:::i;:::-;6436:12;;;;6458:39;;;;;;;;;6368:29;;;;6458:39;;;6531:7;;6540;;;;6549;;;;6368:29;;6436:12;;6515:50;;6531:7;;6458:39;6515:15;:50::i;:::-;6507:59;;;;;;5581:992;;;;;;;;;5509:1064;:::o;385:892:110:-;443:7;637:1;562;566:66;562:70;561:77;;543:1;468;472:66;468:70;467:77;;466:173;462:177;;825:2;750:1;754:66;750:70;749:78;;730:2;655:1;659:66;655:70;654:78;;653:175;649:179;;1014:2;939:1;943:66;939:70;938:78;;919:2;844:1;848:66;844:70;843:78;;842:175;838:179;;1203:2;1128:1;1132:66;1128:70;1127:78;;1108:2;1033:1;-1:-1:-1;;1033:70:110;1032:78;;1031:175;1027:179;;1239:3;1234:1;:8;;1226:3;1221:1;:8;;1220:23;1216:27;;1268:1;1260:10;;1253:17;;385:892;;;:::o;7822:17338:115:-;7875:28;;:::i;:::-;7926:212;;;;;;;;7961:77;7926:212;;8052:76;7926:212;;;;;;;;7915:223;;;8160:465;;;;;;;;8213:76;8160:465;;;;;;8307:76;8160:465;;;;;;;;;;;;;;;;;;8429:77;8160:465;;8524:77;8160:465;;;;-1:-1:-1;;;8160:465:115;8149:8;;;:476;;;;8647:465;;;;;;;8700:77;8647:465;;;;;;8795:77;8647:465;;;;;;;;;;;;;8918:76;8647:465;;9012:76;8647:465;;;;-1:-1:-1;;;8647:465:115;8635:9;;;:477;9134:463;;;;;;;9187:76;9134:463;;;;;;9281:77;9134:463;;;;;;;;;;;;;9404:75;9134:463;;9497:76;9134:463;;;;-1:-1:-1;;;9134:463:115;9122:9;;;:475;9615:31;;9643:2;9615:31;;;;;;;;;;9643:2;9615:31;;;-1:-1:-1;;;;;;;;;;;;;;;;;9615:31:115;;;;;;;;;;;;-1:-1:-1;;9607:5:115;;;:39;;;9668:211;;;;;;;;;9703:76;9668:211;;9793:76;9668:211;;;;9657:5;;:8;;-1:-1:-1;;9657:8:115;;;;:::i;:::-;;;;;;:222;;;;9901:213;;;;;;;;9936:77;9901:213;;;;10027:77;9901:213;;;9890:2;:5;;;9896:1;9890:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10136:213;;;;;;;;10171:77;10136:213;;;;10262:77;10136:213;;;10125:2;:5;;;10131:1;10125:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10371:210;;;;;;;;10406:75;10371:210;;;;10495:76;10371:210;;;10360:2;:5;;;10366:1;10360:8;;;;;;;;:::i;:::-;;;;;;:221;;;;10603:212;;;;;;;;10638:77;10603:212;;;;10729:76;10603:212;;;10592:2;:5;;;10598:1;10592:8;;;;;;;;:::i;:::-;;;;;;:223;;;;10837:211;;;;;;;;10872:77;10837:211;;;;10963:75;10837:211;;;10826:2;:5;;;10832:1;10826:8;;;;;;;;:::i;:::-;;;;;;:222;;;;11070:213;;;;;;;;11105:77;11070:213;;;;11196:77;11070:213;;;11059:2;:5;;;11065:1;11059:8;;;;;;;;:::i;:::-;;;;;;:224;;;;11305:212;;;;;;;;11340:77;11305:212;;;;11431:76;11305:212;;;11294:2;:5;;;11300:1;11294:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11539:212;;;;;;;;11574:77;11539:212;;;;11665:76;11539:212;;;11528:2;:5;;;11534:1;11528:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11773:211;;;;;;;;11808:76;11773:211;;;;11898:76;11773:211;;;11762:2;:5;;;11768:1;11762:8;;;;;;;;:::i;:::-;;;;;;:222;;;;12007:212;;;;;;;;12042:77;12007:212;;;;12133:76;12007:212;;;11995:2;:5;;;12001:2;11995:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12242:213;;;;;;;;12277:77;12242:213;;;;12368:77;12242:213;;;12230:2;:5;;;12236:2;12230:9;;;;;;;;:::i;:::-;;;;;;:225;;;;12478:211;;;;;;;;12513:76;12478:211;;;;12603:76;12478:211;;;12466:2;:5;;;12472:2;12466:9;;;;;;;;:::i;:::-;;;;;;:223;;;;12712:212;;;;;;;;12747:76;12712:212;;;;12837:77;12712:212;;;12700:2;:5;;;12706:2;12700:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12947:211;;;;;;;;12982:76;12947:211;;;;13072:76;12947:211;;;12935:2;:5;;;12941:2;12935:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13181:213;;;;;;;;13216:77;13181:213;;;;13307:77;13181:213;;;13169:2;:5;;;13175:2;13169:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13417:213;;;;;;;;13452:77;13417:213;;;;13543:77;13417:213;;;13405:2;:5;;;13411:2;13405:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13653:211;;;;;;;;13688:76;13653:211;;;;13778:76;13653:211;;;13641:2;:5;;;13647:2;13641:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13887:212;;;;;;;;13922:76;13887:212;;;;14012:77;13887:212;;;13875:2;:5;;;13881:2;13875:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14122:212;;;;;;;;14157:77;14122:212;;;;14248:76;14122:212;;;14110:2;:5;;;14116:2;14110:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14357:211;;;;;;;;14392:77;14357:211;;;;14483:75;14357:211;;;14345:2;:5;;;14351:2;14345:9;;;;;;;;:::i;:::-;;;;;;:223;;;;14591:213;;;;;;;;14626:77;14591:213;;;;14717:77;14591:213;;;14579:2;:5;;;14585:2;14579:9;;;;;;;;:::i;:::-;;;;;;:225;;;;14827:213;;;;;;;;14862:77;14827:213;;;;14953:77;14827:213;;;14815:2;:5;;;14821:2;14815:9;;;;;;;;:::i;:::-;;;;;;:225;;;;15063:210;;;;;;;;15098:75;15063:210;;;;15187:76;15063:210;;;15051:2;:5;;;15057:2;15051:9;;;;;;;;:::i;:::-;;;;;;:222;;;;15296:212;;;;;;;;15331:77;15296:212;;;;15422:76;15296:212;;;15284:2;:5;;;15290:2;15284:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15531:212;;;;;;;;15566:76;15531:212;;;;15656:77;15531:212;;;15519:2;:5;;;15525:2;15519:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15766:212;;;;;;;;15801:77;15766:212;;;;15892:76;15766:212;;;15754:2;:5;;;15760:2;15754:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16001:213;;;;;;;;16036:77;16001:213;;;;16127:77;16001:213;;;15989:2;:5;;;15995:2;15989:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16237:213;;;;;;;;16272:77;16237:213;;;;16363:77;16237:213;;;16225:2;:5;;;16231:2;16225:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16473:213;;;;;;;;16508:77;16473:213;;;;16599:77;16473:213;;;16461:2;:5;;;16467:2;16461:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16709:212;;;;;;;;16744:76;16709:212;;;;16834:77;16709:212;;;16697:2;:5;;;16703:2;16697:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16944:213;;;;;;;;16979:77;16944:213;;;;17070:77;16944:213;;;16932:2;:5;;;16938:2;16932:9;;;;;;;;:::i;:::-;;;;;;:225;;;;17180:211;;;;;;;;17215:76;17180:211;;;;17305:76;17180:211;;;17168:2;:5;;;17174:2;17168:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17414:212;;;;;;;;17449:77;17414:212;;;;17540:76;17414:212;;;17402:2;:5;;;17408:2;17402:9;;;;;;;;:::i;:::-;;;;;;:224;;;;17649:211;;;;;;;;17684:76;17649:211;;;;17774:76;17649:211;;;17637:2;:5;;;17643:2;17637:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17883:212;;;;;;;;17918:77;17883:212;;;;18009:76;17883:212;;;17871:2;:5;;;17877:2;17871:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18118:212;;;;;;;;18153:76;18118:212;;;;18243:77;18118:212;;;18106:2;:5;;;18112:2;18106:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18353:213;;;;;;;;18388:77;18353:213;;;;18479:77;18353:213;;;18341:2;:5;;;18347:2;18341:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18589:213;;;;;;;;18624:77;18589:213;;;;18715:77;18589:213;;;18577:2;:5;;;18583:2;18577:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18825:213;;;;;;;;18860:77;18825:213;;;;18951:77;18825:213;;;18813:2;:5;;;18819:2;18813:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19061:211;;;;;;;;19096:77;19061:211;;;;19187:75;19061:211;;;19049:2;:5;;;19055:2;19049:9;;;;;;;;:::i;:::-;;;;;;:223;;;;19295:213;;;;;;;;19330:77;19295:213;;;;19421:77;19295:213;;;19283:2;:5;;;19289:2;19283:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19531:213;;;;;;;;19566:77;19531:213;;;;19657:77;19531:213;;;19519:2;:5;;;19525:2;19519:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19767:212;;;;;;;;19802:76;19767:212;;;;19892:77;19767:212;;;19755:2;:5;;;19761:2;19755:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20002:211;;;;;;;;20037:76;20002:211;;;;20127:76;20002:211;;;19990:2;:5;;;19996:2;19990:9;;;;;;;;:::i;:::-;;;;;;:223;;;;20236:212;;;;;;;;20271:77;20236:212;;;;20362:76;20236:212;;;20224:2;:5;;;20230:2;20224:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20471:212;;;;;;;;20506:77;20471:212;;;;20597:76;20471:212;;;20459:2;:5;;;20465:2;20459:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20706:213;;;;;;;;20741:77;20706:213;;;;20832:77;20706:213;;;20694:2;:5;;;20700:2;20694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;20942:212;;;;;;;;20977:77;20942:212;;;;21068:76;20942:212;;;20930:2;:5;;;20936:2;20930:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21177:212;;;;;;;;21212:76;21177:212;;;;21302:77;21177:212;;;21165:2;:5;;;21171:2;21165:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21412:213;;;;;;;;21447:77;21412:213;;;;21538:77;21412:213;;;21400:2;:5;;;21406:2;21400:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21648:213;;;;;;;;21683:77;21648:213;;;;21774:77;21648:213;;;21636:2;:5;;;21642:2;21636:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21884:211;;;;;;;;21919:76;21884:211;;;;22009:76;21884:211;;;21872:2;:5;;;21878:2;21872:9;;;;;;;;:::i;:::-;;;;;;:223;;;;22118:213;;;;;;;;22153:77;22118:213;;;;22244:77;22118:213;;;22106:2;:5;;;22112:2;22106:9;;;;;;;;:::i;:::-;;;;;;:225;;;;22354:212;;;;;;;;22389:76;22354:212;;;;22479:77;22354:212;;;22342:2;:5;;;22348:2;22342:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22589:212;;;;;;;;22624:76;22589:212;;;;22714:77;22589:212;;;22577:2;:5;;;22583:2;22577:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22824:212;;;;;;;;22859:76;22824:212;;;;22949:77;22824:212;;;22812:2;:5;;;22818:2;22812:9;;;;;;;;:::i;:::-;;;;;;:224;;;;23059:211;;;;;;;;23094:77;23059:211;;;;23185:75;23059:211;;;23047:2;:5;;;23053:2;23047:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23293:213;;;;;;;;23328:77;23293:213;;;;23419:77;23293:213;;;23281:2;:5;;;23287:2;23281:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23529:213;;;;;;;;23564:77;23529:213;;;;23655:77;23529:213;;;23517:2;:5;;;23523:2;23517:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23765:211;;;;;;;;23800:76;23765:211;;;;23890:76;23765:211;;;23753:2;:5;;;23759:2;23753:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23999:212;;;;;;;;24034:76;23999:212;;;;24124:77;23999:212;;;23987:2;:5;;;23993:2;23987:9;;;;;;;;:::i;:::-;;;;;;:224;;;;24234:213;;;;;;;;24269:77;24234:213;;;;24360:77;24234:213;;;24222:2;:5;;;24228:2;24222:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24470:213;;;;;;;;24505:77;24470:213;;;;24596:77;24470:213;;;24458:2;:5;;;24464:2;24458:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24706:213;;;;;;;;24741:77;24706:213;;;;24832:77;24706:213;;;24694:2;:5;;;24700:2;24694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24942:211;;;;;;;;24977:76;24942:211;;;;25067:76;24942:211;;;24930:2;:5;;;24936:2;24930:9;;;;;;;;:::i;:::-;;;;;;:223;;;;7822:17338;:::o;3929:557::-;-1:-1:-1;;;;;;;;;;;;;;;;;4029:23:115;;:::i;:::-;4073:3;;4062:14;;:8;4097:3;;;;4086:8;;;:14;4110:8;;;:12;;;-1:-1:-1;4300:4:115;4297:1;4291:4;4062:14;4281:1;4274:4;4267:5;4263:16;4252:53;4241:64;-1:-1:-1;4241:64:115;;4375:47;4402:20;4411:9;4375:47;;4449:7;4441:38;;;;-1:-1:-1;;;4441:38:115;;13526:2:146;4441:38:115;;;13508:21:146;13565:2;13545:18;;;13538:30;-1:-1:-1;;;13584:18:146;;;13577:48;13642:18;;4441:38:115;13324:342:146;4441:38:115;4019:467;;3929:557;;;;:::o;3151:622::-;-1:-1:-1;;;;;;;;;;;;;;;;;3286:23:115;;:::i;:::-;3330:4;;3319:15;;:8;3355:4;;;;3344:8;;;:15;3380:4;;3369:8;;;:15;3405:4;;;3394:8;;;;:15;;;;-1:-1:-1;;3584:1:115;3578:4;3319:15;3568:1;3561:4;3554:5;3550:16;3539:53;3528:64;-1:-1:-1;3528:64:115;;3662:47;3689:20;3698:9;3662:47;;3736:7;3728:38;;;;-1:-1:-1;;;3728:38:115;;13873:2:146;3728:38:115;;;13855:21:146;13912:2;13892:18;;;13885:30;-1:-1:-1;;;13931:18:146;;;13924:48;13989:18;;3728:38:115;13671:342:146;2742:357:115;-1:-1:-1;;;;;;;;;;;;;;;;;2982:3:115;;2891:77;;2982:8;:20;;;;-1:-1:-1;2994:3:115;;;;:8;2982:20;2978:71;;;-1:-1:-1;;3025:13:115;;;;;;;;;-1:-1:-1;3025:13:115;;;;;;;;2742:357;-1:-1:-1;2742:357:115:o;2978:71::-;3065:27;;;;;;;;3073:1;:3;;;3065:27;;;;3089:1;3083;:3;;;:7;;;;:::i;:::-;3078:13;;:1;:13;:::i;:::-;3065:27;;3058:34;2742:357;-1:-1:-1;;;2742:357:115:o;6832:568::-;7137:16;;;7151:1;7137:16;;;;;;;;;7099:4;;;;7137:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7137:16:115;;;;;;;;;;;;-1:-1:-1;;7185:16:115;;;7199:1;7185:16;;;;;;;;;7115:38;;-1:-1:-1;7163:19:115;;7185:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7163:38;;7219:2;7211;7214:1;7211:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7239:2;7231;7234:1;7231:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7259:2;7251;7254:1;7251:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7279:2;7271;7274:1;7271:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7299:2;7291;7294:1;7291:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7319:2;7311;7314:1;7311:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7339:2;7331;7334:1;7331:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7359:2;7351;7354:1;7351:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7378:15;7386:2;7390;7378:7;:15::i;:::-;7371:22;6832:568;-1:-1:-1;;;;;;;;;;;6832:568:115:o;7796:2282:116:-;7847:26;;:::i;:::-;7896:210;;;;;;;;7929:77;7896:210;;8020:76;7896:210;;;;;;;;7885:221;;;8128:463;;;;;;;;8179:76;8128:463;;;;;;8273:76;8128:463;;;;;;;;;;;;;;;;;;8395:77;8128:463;;8490:77;8128:463;;;;-1:-1:-1;;;8128:463:116;8117:8;;;:474;;;;8613:463;;;;;;;8664:77;8613:463;;;;;;8759:77;8613:463;;;;;;;;;;;;;8882:76;8613:463;;8976:76;8613:463;;;;-1:-1:-1;;;8613:463:116;8601:9;;;:475;9098:462;;;;;;;9149:76;9098:462;;;;;;9243:77;9098:462;;;;;;;;;;;;;9366:76;9098:462;;9460:76;9098:462;;;;-1:-1:-1;;;9098:462:116;9086:9;;;:474;9578:28;;9604:1;9578:28;;;;;;;;;9604:1;9578:28;;;-1:-1:-1;;;;;;;;;;;;;;;;;9578:28:116;;;;;;;;;;;;-1:-1:-1;;9570:5:116;;;:36;;;9628:210;;;;;;;;;9661:77;9628:210;;9752:76;9628:210;;;;9617:5;;:8;;-1:-1:-1;;9617:8:116;;;;:::i;:::-;;;;;;:221;;;;9860:211;;;;;;;;9893:77;9860:211;;;;9984:77;9860:211;;;9849:2;:5;;;9855:1;9849:8;;;;;;;;:::i;6830:568::-;7135:16;;;7149:1;7135:16;;;;;;;;;7097:4;;;;7135:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7135:16:116;;;;;;;;;;;;-1:-1:-1;;7183:16:116;;;7197:1;7183:16;;;;;;;;;7113:38;;-1:-1:-1;7161:19:116;;7183:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7161:38;;7217:2;7209;7212:1;7209:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7237:2;7229;7232:1;7229:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7257:2;7249;7252:1;7249:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7277:2;7269;7272:1;7269:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7297:2;7289;7292:1;7289:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7317:2;7309;7312:1;7309:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7337:2;7329;7332:1;7329:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7357:2;7349;7352:1;7349:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7376:15;7384:2;7388;7376:7;:15::i;4698:1073:115:-;4780:4;4817:2;:9;4804:2;:9;:22;4796:57;;;;-1:-1:-1;;;4796:57:115;;14220:2:146;4796:57:115;;;14202:21:146;14259:2;14239:18;;;14232:30;-1:-1:-1;;;14278:18:146;;;14271:52;14340:18;;4796:57:115;14018:346:146;4796:57:115;4882:9;;4863:16;4921:12;4882:9;4932:1;4921:12;:::i;:::-;4901:32;;4943:22;4979:9;4968:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4968:21:115;;4943:46;;5004:9;4999:302;5023:8;5019:1;:12;4999:302;;;5071:2;5074:1;5071:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5052:5;5058:1;5062;5058:5;;;;:::i;:::-;:9;;5066:1;5058:9;:::i;:::-;5052:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5111:2;5114:1;5111:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5092:5;5098:1;5102;5098:5;;;;:::i;:::-;:9;;5106:1;5098:9;:::i;:::-;5092:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5151:2;5154:1;5151:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5132:5;5138;:1;5142;5138:5;:::i;:::-;:9;;5146:1;5138:9;:::i;:::-;5132:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5194:2;5197:1;5194:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5175:5;5181;:1;5185;5181:5;:::i;:::-;:9;;5189:1;5181:9;:::i;:::-;5175:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5237:2;5240:1;5237:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5245:1;5237:10;;;;;;;:::i;:::-;;;;;5218:5;5224;:1;5228;5224:5;:::i;:::-;:9;;5232:1;5224:9;:::i;:::-;5218:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5280:2;5283:1;5280:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5288:1;5280:10;;;;;;;:::i;:::-;;;;;5261:5;5267;:1;5271;5267:5;:::i;:::-;:9;;5275:1;5267:9;:::i;:::-;5261:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5033:3;;;;:::i;:::-;;;;4999:302;;;;5310:21;;:::i;:::-;5341:12;5554:4;5549:3;5542:4;5531:9;5527:20;5520:4;5513:5;5509:16;5506:1;5499:4;5492:5;5488:16;5477:82;5450:109;-1:-1:-1;5450:109:115;;5629:47;5656:20;5665:9;5629:47;;5703:7;5695:41;;;;-1:-1:-1;;;5695:41:115;;14744:2:146;5695:41:115;;;14726:21:146;14783:2;14763:18;;;14756:30;-1:-1:-1;;;14802:18:146;;;14795:51;14863:18;;5695:41:115;14542:345:146;5695:41:115;-1:-1:-1;5753:6:115;:11;;;;-1:-1:-1;;;;;;4698:1073:115:o;4696::116:-;4778:4;4815:2;:9;4802:2;:9;:22;4794:57;;;;-1:-1:-1;;;4794:57:116;;14220:2:146;4794:57:116;;;14202:21:146;14259:2;14239:18;;;14232:30;-1:-1:-1;;;14278:18:146;;;14271:52;14340:18;;4794:57:116;14018:346:146;4794:57:116;4880:9;;4861:16;4919:12;4880:9;4930:1;4919:12;:::i;:::-;4899:32;;4941:22;4977:9;4966:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4966:21:116;;4941:46;;5002:9;4997:302;5021:8;5017:1;:12;4997:302;;;5069:2;5072:1;5069:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5050:5;5056:1;5060;5056:5;;;;:::i;:::-;:9;;5064:1;5056:9;:::i;:::-;5050:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5109:2;5112:1;5109:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5090:5;5096:1;5100;5096:5;;;;:::i;:::-;:9;;5104:1;5096:9;:::i;:::-;5090:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5149:2;5152:1;5149:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5130:5;5136;:1;5140;5136:5;:::i;:::-;:9;;5144:1;5136:9;:::i;:::-;5130:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5192:2;5195:1;5192:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5173:5;5179;:1;5183;5179:5;:::i;:::-;:9;;5187:1;5179:9;:::i;:::-;5173:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5235:2;5238:1;5235:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5243:1;5235:10;;;;;;;:::i;:::-;;;;;5216:5;5222;:1;5226;5222:5;:::i;:::-;:9;;5230:1;5222:9;:::i;:::-;5216:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5278:2;5281:1;5278:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5286:1;5278:10;;;;;;;:::i;:::-;;;;;5259:5;5265;:1;5269;5265:5;:::i;:::-;:9;;5273:1;5265:9;:::i;:::-;5259:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5031:3;;;;:::i;:::-;;;;4997:302;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;388:248:146:-;456:6;464;517:2;505:9;496:7;492:23;488:32;485:52;;;533:1;530;523:12;485:52;-1:-1:-1;;556:23:146;;;626:2;611:18;;;598:32;;-1:-1:-1;388:248:146:o;641:127::-;702:10;697:3;693:20;690:1;683:31;733:4;730:1;723:15;757:4;754:1;747:15;773:246;840:2;834:9;;;870:15;;915:18;900:34;;936:22;;;897:62;894:88;;;962:18;;:::i;:::-;998:2;991:22;773:246;:::o;1024:479::-;1074:5;1127:3;1120:4;1112:6;1108:17;1104:27;1094:55;;1145:1;1142;1135:12;1094:55;1169:17;;:::i;:::-;1208:3;1246:2;1238:6;1234:15;1272:3;1264:6;1261:15;1258:35;;;1289:1;1286;1279:12;1258:35;1313:6;1328:146;1344:6;1339:3;1336:15;1328:146;;;1412:17;;1400:30;;1459:4;1450:14;;;;1361;1328:146;;;-1:-1:-1;1492:5:146;;1024:479;-1:-1:-1;;;;;1024:479:146:o;1508:501::-;1564:5;1617:3;1610:4;1602:6;1598:17;1594:27;1584:55;;1635:1;1632;1625:12;1584:55;1659:17;;:::i;:::-;1698:3;1736;1728:6;1724:16;1763:3;1755:6;1752:15;1749:35;;;1780:1;1777;1770:12;1749:35;1804:6;1819:161;1835:6;1830:3;1827:15;1819:161;;;1901:34;1931:3;1926;1901:34;:::i;:::-;1889:47;;1965:4;1956:14;;;;1861:2;1852:12;1819:161;;2014:605;2073:5;2121:6;2109:9;2104:3;2100:19;2096:32;2093:52;;;2141:1;2138;2131:12;2093:52;2174:2;2168:9;2216:4;2208:6;2204:17;2287:6;2275:10;2272:22;2251:18;2239:10;2236:34;2233:62;2230:88;;;2298:18;;:::i;:::-;2334:2;2327:22;2367:6;-1:-1:-1;2367:6:146;2397:40;2433:3;2422:9;2397:40;:::i;:::-;2389:6;2382:56;2473:55;2524:3;2519:2;2508:9;2504:18;2473:55;:::i;:::-;2466:4;2458:6;2454:17;2447:82;2562:50;2608:3;2602;2591:9;2587:19;2562:50;:::i;:::-;2557:2;2549:6;2545:15;2538:75;;2014:605;;;;:::o;2624:773::-;2686:5;2734:6;2722:9;2717:3;2713:19;2709:32;2706:52;;;2754:1;2751;2744:12;2706:52;2787:2;2781:9;2829:4;2821:6;2817:17;2900:6;2888:10;2885:22;2864:18;2852:10;2849:34;2846:62;2843:88;;;2911:18;;:::i;:::-;2951:10;2947:2;2940:22;;2980:6;2971:15;;3023:9;3010:23;3002:6;2995:39;3095:2;3084:9;3080:18;3067:32;3062:2;3054:6;3050:15;3043:57;3161:2;3150:9;3146:18;3133:32;3128:2;3120:6;3116:15;3109:57;3227:2;3216:9;3212:18;3199:32;3194:2;3186:6;3182:15;3175:57;3294:3;3283:9;3279:19;3266:33;3260:3;3252:6;3248:16;3241:59;3334:56;3386:3;3380;3369:9;3365:19;3334:56;:::i;:::-;3328:3;3320:6;3316:16;3309:82;;2624:773;;;;:::o;3402:714::-;3497:6;3550:3;3538:9;3529:7;3525:23;3521:33;3518:53;;;3567:1;3564;3557:12;3518:53;3600:2;3594:9;3642:4;3634:6;3630:17;3713:6;3701:10;3698:22;3677:18;3665:10;3662:34;3659:62;3656:88;;;3724:18;;:::i;:::-;3760:2;3753:22;3799:53;3844:7;3833:9;3799:53;:::i;:::-;3791:6;3784:69;3916:3;3905:9;3901:19;3888:33;3881:4;3873:6;3869:17;3862:60;3983:3;3972:9;3968:19;3955:33;3950:2;3942:6;3938:15;3931:58;4024:60;4076:7;4070:3;4059:9;4055:19;4024:60;:::i;:::-;4017:4;4005:17;;3998:87;4009:6;3402:714;-1:-1:-1;;;3402:714:146:o;4121:180::-;4180:6;4233:2;4221:9;4212:7;4208:23;4204:32;4201:52;;;4249:1;4246;4239:12;4201:52;-1:-1:-1;4272:23:146;;4121:180;-1:-1:-1;4121:180:146:o;4488:1150::-;4690:6;4698;4706;4714;4745:4;4790:2;4778:9;4769:7;4765:23;4761:32;4758:52;;;4806:1;4803;4796:12;4758:52;4829:44;4865:7;4854:9;4829:44;:::i;:::-;4819:54;;4892:59;4943:7;4938:2;4927:9;4923:18;4892:59;:::i;:::-;4882:69;;4970:54;5016:7;5010:3;4999:9;4995:19;4970:54;:::i;:::-;4960:64;;5068:7;5062:3;5051:9;5047:19;5043:33;5033:61;;5090:1;5087;5080:12;5033:61;5123:2;5117:9;5165:4;5157:6;5153:17;5236:6;5224:10;5221:22;5200:18;5188:10;5185:34;5182:62;5179:88;;;5247:18;;:::i;:::-;5283:2;5276:22;5347:18;;;;5318:6;5377:19;;;5374:39;;;5409:1;5406;5399:12;5374:39;5448:3;5437:9;5433:19;5461:146;5477:6;5472:3;5469:15;5461:146;;;5545:17;;5533:30;;5592:4;5583:14;;;;5494;5461:146;;;5465:3;;5626:6;5616:16;;;;4488:1150;;;;;;;:::o;6048:245::-;6141:6;6194:3;6182:9;6173:7;6169:23;6165:33;6162:53;;;6211:1;6208;6201:12;6162:53;6234;6279:7;6268:9;6234:53;:::i;:::-;6224:63;6048:245;-1:-1:-1;;;6048:245:146:o;6491:1163::-;6692:6;6700;6708;6716;6747:3;6791:2;6779:9;6770:7;6766:23;6762:32;6759:52;;;6807:1;6804;6797:12;6759:52;6830:44;6866:7;6855:9;6830:44;:::i;:::-;6820:54;;6893:59;6944:7;6939:2;6928:9;6924:18;6893:59;:::i;:::-;6883:69;;6971:54;7017:7;7011:3;7000:9;6996:19;6971:54;:::i;:::-;6961:64;;7069:7;7063:3;7052:9;7048:19;7044:33;7034:61;;7091:1;7088;7081:12;7034:61;7124:2;7118:9;7146:2;7187;7179:6;7175:15;7256:6;7244:10;7241:22;7220:18;7208:10;7205:34;7202:62;7199:88;;;7267:18;;:::i;:::-;7303:2;7296:22;7367:18;;;;7338:6;7397:19;;;7394:39;;;7429:1;7426;7419:12;7394:39;7468:3;7457:9;7453:19;7481:142;7497:6;7492:3;7489:15;7481:142;;;7563:17;;7551:30;;7601:12;;;;7514;;7481:142;;;-1:-1:-1;6491:1163:146;;;;-1:-1:-1;6491:1163:146;;-1:-1:-1;7642:6:146;-1:-1:-1;;;;6491:1163:146:o;7659:286::-;7718:6;7771:2;7759:9;7750:7;7746:23;7742:32;7739:52;;;7787:1;7784;7777:12;7739:52;7813:23;;-1:-1:-1;;;;;7865:31:146;;7855:42;;7845:70;;7911:1;7908;7901:12;7950:127;8011:10;8006:3;8002:20;7999:1;7992:31;8042:4;8039:1;8032:15;8066:4;8063:1;8056:15;8082:125;8147:9;;;8168:10;;;8165:36;;;8181:18;;:::i;8212:127::-;8273:10;8268:3;8264:20;8261:1;8254:31;8304:4;8301:1;8294:15;8328:4;8325:1;8318:15;8344:135;8383:3;8404:17;;;8401:43;;8424:18;;:::i;:::-;-1:-1:-1;8471:1:146;8460:13;;8344:135::o;11252:127::-;11313:10;11308:3;11304:20;11301:1;11294:31;11344:4;11341:1;11334:15;11368:4;11365:1;11358:15;11384:120;11424:1;11450;11440:35;;11455:18;;:::i;:::-;-1:-1:-1;11489:9:146;;11384:120::o;11509:112::-;11541:1;11567;11557:35;;11572:18;;:::i;:::-;-1:-1:-1;11606:9:146;;11509:112::o;11626:128::-;11693:9;;;11714:11;;;11711:37;;;11728:18;;:::i;12718:412::-;12847:3;12885:6;12879:13;12910:1;12920:129;12934:6;12931:1;12928:13;12920:129;;;13032:4;13016:14;;;13012:25;;13006:32;12993:11;;;12986:53;12949:12;12920:129;;;-1:-1:-1;13104:1:146;13068:16;;13093:13;;;-1:-1:-1;13068:16:146;12718:412;-1:-1:-1;12718:412:146:o;13135:184::-;13205:6;13258:2;13246:9;13237:7;13233:23;13229:32;13226:52;;;13274:1;13271;13264:12;13226:52;-1:-1:-1;13297:16:146;;13135:184;-1:-1:-1;13135:184:146:o;14369:168::-;14409:7;14475:1;14471;14467:6;14463:14;14460:1;14457:21;14452:1;14445:9;14438:17;14434:45;14431:71;;;14482:18;;:::i;:::-;-1:-1:-1;14522:9:146;;14369:168::o", - "linkReferences": {}, - "immutableReferences": { - "44398": [ - { - "start": 706, - "length": 32 - } - ], - "44400": [ - { - "start": 892, - "length": 32 - }, - { - "start": 3576, - "length": 32 - } - ], - "44402": [ - { - "start": 408, - "length": 32 - }, - { - "start": 3540, - "length": 32 - } - ], - "44404": [ - { - "start": 321, - "length": 32 - }, - { - "start": 2533, - "length": 32 - } - ], - "44406": [ - { - "start": 546, - "length": 32 - } - ], - "44408": [ - { - "start": 796, - "length": 32 - }, - { - "start": 2490, - "length": 32 - } - ] - } - }, - "methodIdentifiers": { - "FINALITY_THRESHOLD()": "da4b05e7", - "GENESIS_TIME()": "f2882461", - "GENESIS_VALIDATORS_ROOT()": "a8769acb", - "SECONDS_PER_SLOT()": "304b9071", - "SLOTS_PER_PERIOD()": "2073ee70", - "SOURCE_CHAIN_ID()": "74be2150", - "consistent()": "2bcccca5", - "emitFakeHeadUpdateEvent(uint256,bytes32)": "e209e863", - "emitFakeSyncCommitteeUpdateEvent(uint256,bytes32)": "474e04de", - "executionStateRoots(uint256)": "7623ee29", - "head()": "8f7dcfa3", - "headers(uint256)": "56f90d79", - "owner()": "8da5cb5b", - "renounceOwnership()": "715018a6", - "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": "4b4e4dff", - "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": "cb970952", - "syncCommitteePoseidons(uint256)": "b34711ab", - "timestamps(uint256)": "8bc33af3", - "transferOwnership(address)": "f2fde38b", - "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": "7227d785", - "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": "e5b708fe" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_slot\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeHeadUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"emitFakeSyncCommitteeUpdateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"DrillLightClient\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillLightClient.sol\":\"DrillLightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillLightClient.sol\":{\"keccak256\":\"0x858baa5e6eadc452f96414ffdab698a5901c22d9153e36cdbb849dd9acf68cd0\",\"urls\":[\"bzz-raw://e3a1bc6eff225e20dc011129ca8edb5f46802f0f3b7610e6180f8b6f053c8823\",\"dweb:/ipfs/QmYAVhKMcgk1MsWyC9qRJuf9JLjUytSQQBcVGZoqL1TqAw\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "emitter", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "slot", - "type": "uint256", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "root", - "type": "bytes32", - "indexed": true - } - ], - "type": "event", - "name": "HeadUpdate", - "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": "uint256", - "name": "period", - "type": "uint256", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "root", - "type": "bytes32", - "indexed": true - } - ], - "type": "event", - "name": "SyncCommitteeUpdate", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "FINALITY_THRESHOLD", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "GENESIS_TIME", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "GENESIS_VALIDATORS_ROOT", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "SECONDS_PER_SLOT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "SLOTS_PER_PERIOD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "SOURCE_CHAIN_ID", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "consistent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_slot", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_root", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "emitFakeHeadUpdateEvent" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_period", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_root", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "emitFakeSyncCommitteeUpdateEvent" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "executionStateRoots", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "head", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "headers", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "renounceOwnership" - }, - { - "inputs": [ - { - "internalType": "struct LightClientRotate", - "name": "update", - "type": "tuple", - "components": [ - { - "internalType": "struct LightClientStep", - "name": "step", - "type": "tuple", - "components": [ - { - "internalType": "uint256", - "name": "attestedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "finalizedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "participation", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "finalizedHeaderRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "executionStateRoot", - "type": "bytes32" - }, - { - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple", - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ] - } - ] - }, - { - "internalType": "bytes32", - "name": "syncCommitteeSSZ", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "syncCommitteePoseidon", - "type": "bytes32" - }, - { - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple", - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ] - } - ] - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "rotate" - }, - { - "inputs": [ - { - "internalType": "struct LightClientStep", - "name": "update", - "type": "tuple", - "components": [ - { - "internalType": "uint256", - "name": "attestedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "finalizedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "participation", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "finalizedHeaderRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "executionStateRoot", - "type": "bytes32" - }, - { - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple", - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ] - } - ] - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "step" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "syncCommitteePoseidons", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "timestamps", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "transferOwnership" - }, - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - }, - { - "internalType": "uint256[65]", - "name": "input", - "type": "uint256[65]" - } - ], - "stateMutability": "view", - "type": "function", - "name": "verifyProofRotate", - "outputs": [ - { - "internalType": "bool", - "name": "r", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - }, - { - "internalType": "uint256[1]", - "name": "input", - "type": "uint256[1]" - } - ], - "stateMutability": "view", - "type": "function", - "name": "verifyProofStep", - "outputs": [ - { - "internalType": "bool", - "name": "r", - "type": "bool" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "owner()": { - "details": "Returns the address of the current owner." - }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." - }, - "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { - "details": "A commitment to the the next sync committeee is signed by the current sync committee." - }, - "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { - "details": "The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof" - }, - "transferOwnership(address)": { - "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." - }, - "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": { - "returns": { - "r": " bool true if proof is valid" - } - }, - "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": { - "returns": { - "r": " bool true if proof is valid" - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "consistent()": { - "notice": "Whether the light client has had conflicting variables for the same slot." - }, - "executionStateRoots(uint256)": { - "notice": "Maps from a slot to the current finalized ethereum1 execution state root." - }, - "head()": { - "notice": "The latest slot the light client has a finalized header for." - }, - "headers(uint256)": { - "notice": "Maps from a slot to a beacon block header root." - }, - "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { - "notice": "Sets the sync committee for the next sync committeee period." - }, - "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { - "notice": "Updates the head of the light client to the provided slot." - }, - "syncCommitteePoseidons(uint256)": { - "notice": "Maps from a period to the poseidon commitment for the sync committee." - }, - "timestamps(uint256)": { - "notice": "Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key" - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "examples/drills/DrillLightClient.sol": "DrillLightClient" - }, - "libraries": {} - }, - "sources": { - "examples/drills/DrillLightClient.sol": { - "keccak256": "0x858baa5e6eadc452f96414ffdab698a5901c22d9153e36cdbb849dd9acf68cd0", - "urls": [ - "bzz-raw://e3a1bc6eff225e20dc011129ca8edb5f46802f0f3b7610e6180f8b6f053c8823", - "dweb:/ipfs/QmYAVhKMcgk1MsWyC9qRJuf9JLjUytSQQBcVGZoqL1TqAw" - ], - "license": null - }, - "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { - "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", - "urls": [ - "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", - "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Context.sol": { - "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", - "urls": [ - "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", - "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" - ], - "license": "MIT" - }, - "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", - "urls": [ - "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", - "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" - ], - "license": null - }, - "src/libraries/SimpleSerialize.sol": { - "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", - "urls": [ - "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", - "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" - ], - "license": null - }, - "src/lightclient/LightClient.sol": { - "keccak256": "0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71", - "urls": [ - "bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806", - "dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa" - ], - "license": null - }, - "src/lightclient/RotateVerifier.sol": { - "keccak256": "0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf", - "urls": [ - "bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0", - "dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8" - ], - "license": "GPL-3.0" - }, - "src/lightclient/StepVerifier.sol": { - "keccak256": "0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418", - "urls": [ - "bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2", - "dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET" - ], - "license": "GPL-3.0" - }, - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "examples/drills/DrillLightClient.sol", - "id": 1010, - "exportedSymbols": { - "DrillLightClient": [ - 1009 - ], - "LightClient": [ - 45106 - ], - "Ownable": [ - 31597 - ] - }, - "nodeType": "SourceUnit", - "src": "0:756:5", - "nodes": [ - { - "id": 947, - "nodeType": "PragmaDirective", - "src": "0:23:5", - "nodes": [], - "literals": [ - "solidity", - "0.8", - ".16" - ] - }, - { - "id": 949, - "nodeType": "ImportDirective", - "src": "25:60:5", - "nodes": [], - "absolutePath": "src/lightclient/LightClient.sol", - "file": "src/lightclient/LightClient.sol", - "nameLocation": "-1:-1:-1", - "scope": 1010, - "sourceUnit": 45107, - "symbolAliases": [ - { - "foreign": { - "id": 948, - "name": "LightClient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45106, - "src": "33:11:5", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 951, - "nodeType": "ImportDirective", - "src": "86:66:5", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", - "file": "openzeppelin-contracts/access/Ownable.sol", - "nameLocation": "-1:-1:-1", - "scope": 1010, - "sourceUnit": 31598, - "symbolAliases": [ - { - "foreign": { - "id": 950, - "name": "Ownable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31597, - "src": "94:7:5", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 1009, - "nodeType": "ContractDefinition", - "src": "289:466:5", - "nodes": [ - { - "id": 978, - "nodeType": "FunctionDefinition", - "src": "345:118:5", - "nodes": [], - "body": { - "id": 977, - "nodeType": "Block", - "src": "420:43:5", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 974, - "name": "emitter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 958, - "src": "448:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 973, - "name": "transferOwnership", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31576, - "src": "430:17:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 975, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "430:26:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 976, - "nodeType": "ExpressionStatement", - "src": "430:26:5" - } - ] - }, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 961, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "386:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "30", - "id": 962, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "389:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "30", - "id": 963, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "392:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "30", - "id": 964, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "395:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "30", - "id": 965, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "398:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "30", - "id": 966, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "401:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "30", - "id": 967, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "404:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "30", - "id": 968, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "407:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 969, - "kind": "baseConstructorSpecifier", - "modifierName": { - "id": 960, - "name": "LightClient", - "nameLocations": [ - "374:11:5" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 45106, - "src": "374:11:5" - }, - "nodeType": "ModifierInvocation", - "src": "374:35:5" - }, - { - "arguments": [], - "id": 971, - "kind": "baseConstructorSpecifier", - "modifierName": { - "id": 970, - "name": "Ownable", - "nameLocations": [ - "410:7:5" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 31597, - "src": "410:7:5" - }, - "nodeType": "ModifierInvocation", - "src": "410:9:5" - } - ], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 959, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 958, - "mutability": "mutable", - "name": "emitter", - "nameLocation": "365:7:5", - "nodeType": "VariableDeclaration", - "scope": 978, - "src": "357:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 957, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "357:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "356:17:5" - }, - "returnParameters": { - "id": 972, - "nodeType": "ParameterList", - "parameters": [], - "src": "420:0:5" - }, - "scope": 1009, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 993, - "nodeType": "FunctionDefinition", - "src": "469:128:5", - "nodes": [], - "body": { - "id": 992, - "nodeType": "Block", - "src": "551:46:5", - "nodes": [], - "statements": [ - { - "eventCall": { - "arguments": [ - { - "id": 988, - "name": "_slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 980, - "src": "577:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 989, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 982, - "src": "584:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 987, - "name": "HeadUpdate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44457, - "src": "566:10:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (uint256,bytes32)" - } - }, - "id": 990, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "566:24:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 991, - "nodeType": "EmitStatement", - "src": "561:29:5" - } - ] - }, - "functionSelector": "e209e863", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 985, - "kind": "modifierInvocation", - "modifierName": { - "id": 984, - "name": "onlyOwner", - "nameLocations": [ - "541:9:5" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 31516, - "src": "541:9:5" - }, - "nodeType": "ModifierInvocation", - "src": "541:9:5" - } - ], - "name": "emitFakeHeadUpdateEvent", - "nameLocation": "478:23:5", - "parameters": { - "id": 983, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 980, - "mutability": "mutable", - "name": "_slot", - "nameLocation": "510:5:5", - "nodeType": "VariableDeclaration", - "scope": 993, - "src": "502:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 979, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "502:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 982, - "mutability": "mutable", - "name": "_root", - "nameLocation": "525:5:5", - "nodeType": "VariableDeclaration", - "scope": 993, - "src": "517:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 981, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "517:7:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "501:30:5" - }, - "returnParameters": { - "id": 986, - "nodeType": "ParameterList", - "parameters": [], - "src": "551:0:5" - }, - "scope": 1009, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 1008, - "nodeType": "FunctionDefinition", - "src": "603:150:5", - "nodes": [], - "body": { - "id": 1007, - "nodeType": "Block", - "src": "696:57:5", - "nodes": [], - "statements": [ - { - "eventCall": { - "arguments": [ - { - "id": 1003, - "name": "_period", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 995, - "src": "731:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1004, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 997, - "src": "740:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1002, - "name": "SyncCommitteeUpdate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44463, - "src": "711:19:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (uint256,bytes32)" - } - }, - "id": 1005, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "711:35:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1006, - "nodeType": "EmitStatement", - "src": "706:40:5" - } - ] - }, - "functionSelector": "474e04de", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1000, - "kind": "modifierInvocation", - "modifierName": { - "id": 999, - "name": "onlyOwner", - "nameLocations": [ - "686:9:5" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 31516, - "src": "686:9:5" - }, - "nodeType": "ModifierInvocation", - "src": "686:9:5" - } - ], - "name": "emitFakeSyncCommitteeUpdateEvent", - "nameLocation": "612:32:5", - "parameters": { - "id": 998, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 995, - "mutability": "mutable", - "name": "_period", - "nameLocation": "653:7:5", - "nodeType": "VariableDeclaration", - "scope": 1008, - "src": "645:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 994, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "645:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 997, - "mutability": "mutable", - "name": "_root", - "nameLocation": "670:5:5", - "nodeType": "VariableDeclaration", - "scope": 1008, - "src": "662:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 996, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "662:7:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "644:32:5" - }, - "returnParameters": { - "id": 1001, - "nodeType": "ParameterList", - "parameters": [], - "src": "696:0:5" - }, - "scope": 1009, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 953, - "name": "LightClient", - "nameLocations": [ - "318:11:5" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 45106, - "src": "318:11:5" - }, - "id": 954, - "nodeType": "InheritanceSpecifier", - "src": "318:11:5" - }, - { - "baseName": { - "id": 955, - "name": "Ownable", - "nameLocations": [ - "331:7:5" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 31597, - "src": "331:7:5" - }, - "id": 956, - "nodeType": "InheritanceSpecifier", - "src": "331:7:5" - } - ], - "canonicalName": "DrillLightClient", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 952, - "nodeType": "StructuredDocumentation", - "src": "154:135:5", - "text": "@title DrillLightClient\n @dev This contract is used solely for testing purposes and should not be used by production contracts." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 1009, - 31597, - 35292, - 45106, - 46888, - 47902, - 47936 - ], - "name": "DrillLightClient", - "nameLocation": "298:16:5", - "scope": 1010, - "usedErrors": [] - } - ] - }, - "id": 5 -} \ No newline at end of file diff --git a/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json b/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json deleted file mode 100644 index 6618beb..0000000 --- a/out/DrillTelepathyRouter.sol/DrillTelepathyRouter.json +++ /dev/null @@ -1,2080 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_guardian", - "type": "address" - }, - { - "internalType": "address", - "name": "_emitter", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "nonce", - "type": "uint64" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "message", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "bool", - "name": "status", - "type": "bool" - } - ], - "name": "ExecutedMessage", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "inputs": [], - "name": "MIN_LIGHT_CLIENT_DELAY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "broadcasters", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_chainId", - "type": "uint16" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "_msgHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_message", - "type": "bytes" - }, - { - "internalType": "bool", - "name": "_status", - "type": "bool" - } - ], - "name": "emitFakeExecutedMessageEvent", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "slot", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes[]", - "name": "accountProof", - "type": "bytes[]" - }, - { - "internalType": "bytes[]", - "name": "storageProof", - "type": "bytes[]" - } - ], - "name": "executeMessage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "srcSlotTxSlotPack", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes32[]", - "name": "receiptsRootProof", - "type": "bytes32[]" - }, - { - "internalType": "bytes32", - "name": "receiptsRoot", - "type": "bytes32" - }, - { - "internalType": "bytes[]", - "name": "receiptProof", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "txIndexRLPEncoded", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "logIndex", - "type": "uint256" - } - ], - "name": "executeMessageFromLog", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "freezeAll", - "outputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "frozen", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "lightClients", - "outputs": [ - { - "internalType": "contract ILightClient", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "messageStatus", - "outputs": [ - { - "internalType": "enum MessageStatus", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "name": "messages", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "sendingEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "sourceChainIds", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "sourceChainIdsLength", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "storageRootCache", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": { - "object": "0x60806040523480156200001157600080fd5b5060405162003f7738038062003f77833981016040819052620000349162000083565b606580546001600160a01b039384166001600160a01b03199182161790915560668054929093169116179055620000bb565b80516001600160a01b03811681146200007e57600080fd5b919050565b600080604083850312156200009757600080fd5b620000a28362000066565b9150620000b26020840162000066565b90509250929050565b613eac80620000cb6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b6101256101133660046135b2565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b6101463660046135cd565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e61017936600461372d565b6102f7565b005b6101a361018e36600461382a565b60076020526000908152604090205460ff1681565b60405161012f9190613859565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f23660046135cd565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d6102333660046135cd565b6004602052600090815260409020546001600160a01b031681565b61017e61025c366004613881565b6105ca565b61012561026f36600461382a565b60096020526000908152604090205481565b61017e6108ed565b61029c61029736600461382a565b610906565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613939565b610940565b610125607881565b6102ff6109a7565b60008061030c8b8b610a00565b9150915061031d8260400151610c6a565b61032a8260400151610d9c565b6000808e8e81019061033c91906139be565b9150915061034e828560400151610df8565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd91906139f1565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104728b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890611031565b9050806104c15760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105268787906104d79190613a0a565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261123b565b905081811461056f5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105b182828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115ee92505050565b50506105bd6001603355565b5050505050505050505050565b6105d26109a7565b6000806105df8888610a00565b915091506105f08260400151610c6a565b6105fd8260400151610d9c565b61060b898360400151610df8565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107c25760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072191906139f1565b905060008190036107745760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a8610781898b613a0a565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611795565b600083815260096020526040902081905592506107d49050565b60008181526009602052604090205491505b6000846020015160016040516020016108029291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084a82856108458a8c613a0a565b611891565b90508481146108935760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d882828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115ee92505050565b50506108e46001603355565b50505050505050565b6065546001600160a01b0316331461090457600080fd5b565b6003818154811061091657600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095757600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610998929190613add565b60405180910390a45050505050565b6002603354036109f95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7d85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061192d92505050565b905060008585604051610a91929190613b01565b60405190819003902090506000808281526007602052604090205460ff166002811115610ac057610ac0613843565b14610b0d5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b555760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9f5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610bea575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c5d5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610cd05760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190613b11565b610d995760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d995760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e5e5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb91906139f1565b600003610f3a5760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc491906139f1565b610fce9042613b44565b9050607881101561102c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b60008061103d836119f2565b9050600081856001600160401b03161061105857601b61105b565b60075b60ff169050600082866001600160401b03161061109757612000611088846001600160401b038916613b44565b6110929190613b6d565b6110ac565b6110ac6120006001600160401b038816613b6d565b90506000866001600160401b0316886001600160401b0316036110eb5750600b6110d881610200613b81565b6110e490610183613ba0565b9050611220565b6120006110f8888a613bb3565b6001600160401b03161161115a5750600b611114816020613b81565b61111f906006613ba0565b90506111366120006001600160401b038916613bda565b61114261200083613b81565b61114c9190613ba0565b90506110d881610200613b81565b876001600160401b0316876001600160401b031610156111d85750600b82611183826020613b81565b61118d9190613ba0565b905061119a816002613b81565b6111a5906000613ba0565b9050816111b6630100000083613b81565b6111c09190613ba0565b90506111cd816002613b81565b61111f906001613ba0565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f7400006044820152606401610420565b61122c8b828c8c611a32565b9b9a5050505050505050505050565b600080611249878a8a611a4c565b905060008160008151811061126057611260613bee565b01602001516001600160f81b03191690506000600160f81b8214806112925750600160f91b6001600160f81b03198316145b1561129f57506001611304565b600360fe1b6001600160f81b03198316106112bc57506000611304565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516113269190613b44565b81526020016113358585613ba0565b905290506000611344826122ec565b905080516004146113905760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b60006113b5826003815181106113a8576113a8613bee565b60200260200101516122ec565b905080518c106114075760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b600061141e828e815181106113a8576113a8613bee565b9050805160031461147c5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b60006114a18260008151811061149457611494613bee565b6020026020010151612511565b90508c6001600160a01b0316816001600160a01b0316146115145760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b600061152c836001815181106113a8576113a8613bee565b90508c6115528260008151811061154557611545613bee565b6020026020010151612585565b146115b55760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b6115d7818d815181106115ca576115ca613bee565b602002602001015161258c565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161161d93929190613c04565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b03168260405161166f9190613c34565b6000604051808303816000865af19150503d80600081146116ac576040519150601f19603f3d011682016040523d82523d6000602084013e6116b1565b606091505b50805191955093506000925060200390506116f3576000828060200190518101906116dc9190613c50565b6001600160e01b031916631dee306b60e11b149150505b8280156116fd5750805b15611720576000858152600760205260409020805460ff1916600217905561173a565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051611785929190613add565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117ff826040516020016117e991815260200190565b6040516020818303038152906040528786611a4c565b9050600081511161184b5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b600061185e6118598361268f565b6122ec565b9050805160041461186e57600080fd5b6118848160028151811061154557611545613bee565b93505050505b9392505050565b6000806118c0856040516020016118aa91815260200190565b6040516020818303038152906040528486611a4c565b905060008151116119135760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b61192461191f8261268f565b612585565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916119e1918a91906119dc908290613b44565b6126e2565b60c088015250949695505050505050565b60008163ffffffff16600103611a0c5750625ec000919050565b8163ffffffff16600503611a245750624f4000919050565b50600019919050565b919050565b600080611a408686866127ce565b90921495945050505050565b60606000845111611a975760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b6000611aa28461295d565b90506000611aaf86612a4b565b9050600084604051602001611ac691815260200190565b60405160208183030381529060405290506000805b8451811015612295576000858281518110611af857611af8613bee565b602002602001015190508451831115611b6a5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611c095780518051602091820120604051611bb892611b9292910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611c045760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611cff565b805151602011611c8f5780518051602091820120604051611c3392611b9292910190815260200190565b611c045760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611cff5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611d0b60106001613ba0565b81602001515103611eb85784518303611e50576000611d478260200151601081518110611d3a57611d3a613bee565b6020026020010151612b65565b90506000815111611dc05760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611dce9190613b44565b8314611e425760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b965061188a95505050505050565b6000858481518110611e6457611e64613bee565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611e8f57611e8f613bee565b60200260200101519050611ea281612c88565b9550611eaf600186613ba0565b94505050612282565b600281602001515103612229576000611ed082612cad565b9050600081600081518110611ee757611ee7613bee565b016020015160f81c90506000611efe600283613c7a565b611f09906002613c9c565b90506000611f1a848360ff16612cd1565b90506000611f288a89612cd1565b90506000611f368383612d07565b905080835114611fae5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611fc3575060ff85166003145b15612169578082511461203e5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b600061205a8860200151600181518110611d3a57611d3a613bee565b905060008151116120d35760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d516120e19190613b44565b89146121555760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c5061188a9b505050505050505050505050565b60ff8516158061217c575060ff85166001145b156121bb576121a8876020015160018151811061219b5761219b613bee565b6020026020010151612c88565b99506121b4818a613ba0565b985061221e565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b505050505050612282565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b508061228d81613cb5565b915050611adb565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b606060008060006122fc85612d86565b91945092509050600181600181111561231757612317613843565b1461238a5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516123968385613ba0565b146123fe5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816124175790505090506000845b87518110156125055760008061248a6040518060400160405280858d6000015161246e9190613b44565b8152602001858d602001516124839190613ba0565b9052612d86565b5091509150604051806040016040528083836124a69190613ba0565b8152602001848c602001516124bb9190613ba0565b8152508585815181106124d0576124d0613bee565b60209081029190910101526124e6600185613ba0565b93506124f28183613ba0565b6124fc9084613ba0565b92505050612444565b50815295945050505050565b805160009060010361252557506000919050565b81516015146125765760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b61257f82612585565b92915050565b600061257f825b60006021826000015111156125e35760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b60008060006125f185612d86565b91945092509050600081600181111561260c5761260c613843565b146126595760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600083866020015161266b9190613ba0565b805190915060208410156126855760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126c45760405162461bcd60e51b815260040161042090613cce565b50604080518082019091528151815260209182019181019190915290565b6060816126f081601f613ba0565b101561270e5760405162461bcd60e51b815260040161042090613d3e565b6127188284613ba0565b8451101561275c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b60608215801561277b57604051915060008252602082016040526127c5565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127b457805183526020928301920161279c565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127df9190613ba0565b6127ea906002613e4a565b116127f457600080fd5b8360005b846001146127c55761280b600286613bda565b6001036128aa57600284828151811061282657612826613bee565b602002602001015183604051602001612849929190918252602082015260400190565b60408051601f198184030181529082905261286391613c34565b602060405180830381855afa158015612880573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128a391906139f1565b915061293e565b6002828583815181106128bf576128bf613bee565b60200260200101516040516020016128e1929190918252602082015260400190565b60408051601f19818403018152908290526128fb91613c34565b602060405180830381855afa158015612918573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061293b91906139f1565b91505b612949600286613b6d565b94508061295581613cb5565b9150506127f8565b80516060906000816001600160401b0381111561297c5761297c613678565b6040519080825280602002602001820160405280156129c157816020015b604080518082019091526060808252602082015281526020019060019003908161299a5790505b50905060005b82811015612a435760405180604001604052808683815181106129ec576129ec613bee565b60200260200101518152602001612a1b878481518110612a0e57612a0e613bee565b6020026020010151613449565b815250828281518110612a3057612a30613bee565b60209081029190910101526001016129c7565b509392505050565b80516060906000612a5d826002613b81565b6001600160401b03811115612a7457612a74613678565b6040519080825280601f01601f191660200182016040528015612a9e576020820181803683370190505b5090506000805b83811015612b5b57858181518110612abf57612abf613bee565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612ae7836002613b81565b81518110612af757612af7613bee565b60200101906001600160f81b031916908160001a905350600f60f81b821683612b21836002613b81565b612b2c906001613ba0565b81518110612b3c57612b3c613bee565b60200101906001600160f81b031916908160001a905350600101612aa5565b5090949350505050565b60606000806000612b7585612d86565b919450925090506000816001811115612b9057612b90613843565b14612c035760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612c0d8284613ba0565b855114612c795760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b61192485602001518484613457565b60606020826000015110612ca457612c9f82612b65565b61257f565b61257f826134f7565b606061257f612ccc8360200151600081518110611d3a57611d3a613bee565b612a4b565b606082518210612cf0575060408051602081019091526000815261257f565b61188a8383848651612d029190613b44565b61350d565b60008060008351855110612d1c578351612d1f565b84515b90505b8082108015612d765750838281518110612d3e57612d3e613bee565b602001015160f81c60f81b6001600160f81b031916858381518110612d6557612d65613bee565b01602001516001600160f81b031916145b15612a4357816001019150612d22565b600080600080846000015111612dae5760405162461bcd60e51b815260040161042090613cce565b6020840151805160001a607f8111612dd3576000600160009450945094505050613442565b60b78111612f30576000612de8608083613b44565b905080876000015111612e685760405162461bcd60e51b815260206004820152604e6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612e955750600160ff1b6001600160f81b0319821610155b612f1d5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b5060019550935060009250613442915050565b60bf8111613171576000612f4560b783613b44565b905080876000015111612fc85760405162461bcd60e51b81526020600482015260516024820152600080516020613e5783398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b031916600081900361304f5760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c603781116130d25760405162461bcd60e51b81526020600482015260486024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b6130dc8184613ba0565b8951116131545760405162461bcd60e51b815260206004820152604c6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b61315f836001613ba0565b97509550600094506134429350505050565b60f7811161321357600061318660c083613b44565b9050808760000151116132025760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b600195509350849250613442915050565b600061322060f783613b44565b90508087600001511161329f5760405162461bcd60e51b815260206004820152604d6024820152600080516020613e5783398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b03191660008190036133245760405162461bcd60e51b81526020600482015260486024820152600080516020613e5783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116133a55760405162461bcd60e51b81526020600482015260466024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133af8184613ba0565b8951116134255760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613430836001613ba0565b97509550600194506134429350505050565b9193909250565b606061257f6118598361268f565b60606000826001600160401b0381111561347357613473613678565b6040519080825280601f01601f19166020018201604052801561349d576020820181803683370190505b509050826000036134af57905061188a565b60006134bb8587613ba0565b90506020820160005b858110156134dc5782810151828201526020016134c4565b858111156134eb576000868301525b50919695505050505050565b606061257f826020015160008460000151613457565b60608182601f0110156135325760405162461bcd60e51b815260040161042090613d3e565b8282840110156135545760405162461bcd60e51b815260040161042090613d3e565b8183018451101561275c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b0381168114611a2d57600080fd5b6000602082840312156135c457600080fd5b61188a8261359b565b6000602082840312156135df57600080fd5b813563ffffffff8116811461188a57600080fd5b60008083601f84011261360557600080fd5b5081356001600160401b0381111561361c57600080fd5b602083019150836020828501011115610c6357600080fd5b60008083601f84011261364657600080fd5b5081356001600160401b0381111561365d57600080fd5b6020830191508360208260051b8501011115610c6357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156136b6576136b6613678565b604052919050565b600082601f8301126136cf57600080fd5b81356001600160401b038111156136e8576136e8613678565b6136fb601f8201601f191660200161368e565b81815284602083860101111561371057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561374e57600080fd5b6001600160401b03808d35111561376457600080fd5b6137718e8e358f016135f3565b909c509a5060208d013581101561378757600080fd5b6137978e60208f01358f016135f3565b909a50985060408d01358110156137ad57600080fd5b6137bd8e60408f01358f01613634565b909850965060608d0135955060808d01358110156137da57600080fd5b6137ea8e60808f01358f01613634565b909550935060a08d013581101561380057600080fd5b506138118d60a08e01358e016136be565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561383c57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061387b57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561389c57600080fd5b6138a58861359b565b965060208801356001600160401b03808211156138c157600080fd5b6138cd8b838c016135f3565b909850965060408a01359150808211156138e657600080fd5b6138f28b838c01613634565b909650945060608a013591508082111561390b57600080fd5b506139188a828b01613634565b989b979a50959850939692959293505050565b8015158114610d9957600080fd5b600080600080600060a0868803121561395157600080fd5b853561ffff8116811461396357600080fd5b94506139716020870161359b565b93506040860135925060608601356001600160401b0381111561399357600080fd5b61399f888289016136be565b92505060808601356139b08161392b565b809150509295509295909350565b600080604083850312156139d157600080fd5b6139da8361359b565b91506139e86020840161359b565b90509250929050565b600060208284031215613a0357600080fd5b5051919050565b60006001600160401b0380841115613a2457613a24613678565b8360051b6020613a3581830161368e565b868152918501918181019036841115613a4d57600080fd5b865b84811015613a8157803586811115613a675760008081fd5b613a7336828b016136be565b845250918301918301613a4f565b50979650505050505050565b60005b83811015613aa8578181015183820152602001613a90565b50506000910152565b60008151808452613ac9816020860160208601613a8d565b601f01601f19169290920160200192915050565b604081526000613af06040830185613ab1565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613b2357600080fd5b815161188a8161392b565b634e487b7160e01b600052601160045260246000fd5b8181038181111561257f5761257f613b2e565b634e487b7160e01b600052601260045260246000fd5b600082613b7c57613b7c613b57565b500490565b6000816000190483118215151615613b9b57613b9b613b2e565b500290565b8082018082111561257f5761257f613b2e565b6001600160401b03828116828216039080821115613bd357613bd3613b2e565b5092915050565b600082613be957613be9613b57565b500690565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061192490830184613ab1565b60008251613c46818460208701613a8d565b9190910192915050565b600060208284031215613c6257600080fd5b81516001600160e01b03198116811461188a57600080fd5b600060ff831680613c8d57613c8d613b57565b8060ff84160691505092915050565b60ff828116828216039081111561257f5761257f613b2e565b600060018201613cc757613cc7613b2e565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613da1578160001904821115613d8757613d87613b2e565b80851615613d9457918102915b93841c9390800290613d6b565b509250929050565b600082613db85750600161257f565b81613dc55750600061257f565b8160018114613ddb5760028114613de557613e01565b600191505061257f565b60ff841115613df657613df6613b2e565b50506001821b61257f565b5060208310610133831016604e8410600b8410161715613e24575081810a61257f565b613e2e8383613d66565b8060001904821115613e4257613e42613b2e565b029392505050565b600061188a8383613da956fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220418e21fd21f00c03501eb83d3e8cf77d73d9b90e1d81aa2d267111b90aa70bf364736f6c63430008100033", - "sourceMap": "399:626:6:-:0;;;510:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:8;:20;;-1:-1:-1;;;;;569:20:6;;;-1:-1:-1;;;;;;569:20:6;;;;;;;599:7;:18;;;;;;;;;;;399:626;;14:177:146;93:13;;-1:-1:-1;;;;;135:31:146;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;:::-;399:626:6;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80637599735c116100975780639efeff1c116100665780639efeff1c14610289578063affed0e0146102b1578063bd6a0134146102dc578063e4407b15146102ef57600080fd5b80637599735c146102255780637acc67541461024e5780638d080d1d1461026157806399464c891461028157600080fd5b80633e99e9ce116100d35780633e99e9ce146101b05780634552f563146101bd57806354fd4d50146101c557806359f89787146101e457600080fd5b8063029d67131461010557806336ae7c181461013857806337d5af841461016b5780633c6cf47314610180575b600080fd5b6101256101133660046135b2565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61015b6101463660046135cd565b60066020526000908152604090205460ff1681565b604051901515815260200161012f565b61017e61017936600461372d565b6102f7565b005b6101a361018e36600461382a565b60076020526000908152604090205460ff1681565b60405161012f9190613859565b60005461015b9060ff1681565b600354610125565b6008546101d29060ff1681565b60405160ff909116815260200161012f565b61020d6101f23660046135cd565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61020d6102333660046135cd565b6004602052600090815260409020546001600160a01b031681565b61017e61025c366004613881565b6105ca565b61012561026f36600461382a565b60096020526000908152604090205481565b61017e6108ed565b61029c61029736600461382a565b610906565b60405163ffffffff909116815260200161012f565b6002546102c4906001600160401b031681565b6040516001600160401b03909116815260200161012f565b61017e6102ea366004613939565b610940565b610125607881565b6102ff6109a7565b60008061030c8b8b610a00565b9150915061031d8260400151610c6a565b61032a8260400151610d9c565b6000808e8e81019061033c91906139be565b9150915061034e828560400151610df8565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd91906139f1565b9050806104295760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104728b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890611031565b9050806104c15760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f6600000000006044820152606401610420565b5050505060006105268787906104d79190613a0a565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261123b565b905081811461056f5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b506105b182828d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115ee92505050565b50506105bd6001603355565b5050505050505050505050565b6105d26109a7565b6000806105df8888610a00565b915091506105f08260400151610c6a565b6105fd8260400151610d9c565b61060b898360400151610df8565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107c25760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072191906139f1565b905060008190036107745760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f7420736574006044820152606401610420565b6107a8610781898b613a0a565b60408088015163ffffffff166000908152600560205220546001600160a01b031683611795565b600083815260096020526040902081905592506107d49050565b60008181526009602052604090205491505b6000846020015160016040516020016108029291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061084a82856108458a8c613a0a565b611891565b90508481146108935760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b6044820152606401610420565b505050506108d882828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115ee92505050565b50506108e46001603355565b50505050505050565b6065546001600160a01b0316331461090457600080fd5b565b6003818154811061091657600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6066546001600160a01b0316331461095757600080fd5b82846001600160401b03168661ffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478585604051610998929190613add565b60405180910390a45050505050565b6002603354036109f95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610420565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080610a7d85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061192d92505050565b905060008585604051610a91929190613b01565b60405190819003902090506000808281526007602052604090205460ff166002811115610ac057610ac0613843565b14610b0d5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e000000000000006044820152606401610420565b46826080015163ffffffff1614610b555760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b6044820152606401610420565b600854825160ff908116911614610b9f5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b6044820152606401610420565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610bea575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610c5d5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f74207365740000000000000000006064820152608401610420565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610cd05760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190613b11565b610d995760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e0000006044820152606401610420565b50565b63ffffffff811660009081526006602052604090205460ff1615610d995760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b6044820152606401610420565b63ffffffff81166000908152600460205260409020546001600160a01b0316610e5e5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b6044820152606401610420565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb91906139f1565b600003610f3a5760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e00006044820152606401610420565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc491906139f1565b610fce9042613b44565b9050607881101561102c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b6064820152608401610420565b505050565b60008061103d836119f2565b9050600081856001600160401b03161061105857601b61105b565b60075b60ff169050600082866001600160401b03161061109757612000611088846001600160401b038916613b44565b6110929190613b6d565b6110ac565b6110ac6120006001600160401b038816613b6d565b90506000866001600160401b0316886001600160401b0316036110eb5750600b6110d881610200613b81565b6110e490610183613ba0565b9050611220565b6120006110f8888a613bb3565b6001600160401b03161161115a5750600b611114816020613b81565b61111f906006613ba0565b90506111366120006001600160401b038916613bda565b61114261200083613b81565b61114c9190613ba0565b90506110d881610200613b81565b876001600160401b0316876001600160401b031610156111d85750600b82611183826020613b81565b61118d9190613ba0565b905061119a816002613b81565b6111a5906000613ba0565b9050816111b6630100000083613b81565b6111c09190613ba0565b90506111cd816002613b81565b61111f906001613ba0565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f7400006044820152606401610420565b61122c8b828c8c611a32565b9b9a5050505050505050505050565b600080611249878a8a611a4c565b905060008160008151811061126057611260613bee565b01602001516001600160f81b03191690506000600160f81b8214806112925750600160f91b6001600160f81b03198316145b1561129f57506001611304565b600360fe1b6001600160f81b03198316106112bc57506000611304565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e2074797065000000006044820152606401610420565b6000602084019050600060405180604001604052808487516113269190613b44565b81526020016113358585613ba0565b905290506000611344826122ec565b905080516004146113905760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b6044820152606401610420565b60006113b5826003815181106113a8576113a8613bee565b60200260200101516122ec565b905080518c106114075760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610420565b600061141e828e815181106113a8576113a8613bee565b9050805160031461147c5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b6064820152608401610420565b60006114a18260008151811061149457611494613bee565b6020026020010151612511565b90508c6001600160a01b0316816001600160a01b0316146115145760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b6064820152608401610420565b600061152c836001815181106113a8576113a8613bee565b90508c6115528260008151811061154557611545613bee565b6020026020010151612585565b146115b55760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b6064820152608401610420565b6115d7818d815181106115ca576115ca613bee565b602002602001015161258c565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161161d93929190613c04565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b03168260405161166f9190613c34565b6000604051808303816000865af19150503d80600081146116ac576040519150601f19603f3d011682016040523d82523d6000602084013e6116b1565b606091505b50805191955093506000925060200390506116f3576000828060200190518101906116dc9190613c50565b6001600160e01b031916631dee306b60e11b149150505b8280156116fd5750805b15611720576000858152600760205260409020805460ff1916600217905561173a565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051611785929190613add565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060006117ff826040516020016117e991815260200190565b6040516020818303038152906040528786611a4c565b9050600081511161184b5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610420565b600061185e6118598361268f565b6122ec565b9050805160041461186e57600080fd5b6118848160028151811061154557611545613bee565b93505050505b9392505050565b6000806118c0856040516020016118aa91815260200190565b6040516020818303038152906040528486611a4c565b905060008151116119135760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610420565b61192461191f8261268f565b612585565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a08801819052885190916119e1918a91906119dc908290613b44565b6126e2565b60c088015250949695505050505050565b60008163ffffffff16600103611a0c5750625ec000919050565b8163ffffffff16600503611a245750624f4000919050565b50600019919050565b919050565b600080611a408686866127ce565b90921495945050505050565b60606000845111611a975760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610420565b6000611aa28461295d565b90506000611aaf86612a4b565b9050600084604051602001611ac691815260200190565b60405160208183030381529060405290506000805b8451811015612295576000858281518110611af857611af8613bee565b602002602001015190508451831115611b6a5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610420565b82600003611c095780518051602091820120604051611bb892611b9292910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611c045760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610420565b611cff565b805151602011611c8f5780518051602091820120604051611c3392611b9292910190815260200190565b611c045760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610420565b805184516020808701919091208251919092012014611cff5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610420565b611d0b60106001613ba0565b81602001515103611eb85784518303611e50576000611d478260200151601081518110611d3a57611d3a613bee565b6020026020010151612b65565b90506000815111611dc05760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610420565b60018751611dce9190613b44565b8314611e425760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610420565b965061188a95505050505050565b6000858481518110611e6457611e64613bee565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611e8f57611e8f613bee565b60200260200101519050611ea281612c88565b9550611eaf600186613ba0565b94505050612282565b600281602001515103612229576000611ed082612cad565b9050600081600081518110611ee757611ee7613bee565b016020015160f81c90506000611efe600283613c7a565b611f09906002613c9c565b90506000611f1a848360ff16612cd1565b90506000611f288a89612cd1565b90506000611f368383612d07565b905080835114611fae5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610420565b60ff851660021480611fc3575060ff85166003145b15612169578082511461203e5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610420565b600061205a8860200151600181518110611d3a57611d3a613bee565b905060008151116120d35760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610420565b60018d516120e19190613b44565b89146121555760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610420565b9c5061188a9b505050505050505050505050565b60ff8516158061217c575060ff85166001145b156121bb576121a8876020015160018151811061219b5761219b613bee565b6020026020010151612c88565b99506121b4818a613ba0565b985061221e565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610420565b505050505050612282565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610420565b508061228d81613cb5565b915050611adb565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610420565b606060008060006122fc85612d86565b91945092509050600181600181111561231757612317613843565b1461238a5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610420565b84516123968385613ba0565b146123fe5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b6064820152608401610420565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816124175790505090506000845b87518110156125055760008061248a6040518060400160405280858d6000015161246e9190613b44565b8152602001858d602001516124839190613ba0565b9052612d86565b5091509150604051806040016040528083836124a69190613ba0565b8152602001848c602001516124bb9190613ba0565b8152508585815181106124d0576124d0613bee565b60209081029190910101526124e6600185613ba0565b93506124f28183613ba0565b6124fc9084613ba0565b92505050612444565b50815295945050505050565b805160009060010361252557506000919050565b81516015146125765760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610420565b61257f82612585565b92915050565b600061257f825b60006021826000015111156125e35760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b60008060006125f185612d86565b91945092509050600081600181111561260c5761260c613843565b146126595760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610420565b600083866020015161266b9190613ba0565b805190915060208410156126855760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126c45760405162461bcd60e51b815260040161042090613cce565b50604080518082019091528151815260209182019181019190915290565b6060816126f081601f613ba0565b101561270e5760405162461bcd60e51b815260040161042090613d3e565b6127188284613ba0565b8451101561275c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b60608215801561277b57604051915060008252602082016040526127c5565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127b457805183526020928301920161279c565b5050858452601f01601f1916604052505b50949350505050565b600082825160016127df9190613ba0565b6127ea906002613e4a565b116127f457600080fd5b8360005b846001146127c55761280b600286613bda565b6001036128aa57600284828151811061282657612826613bee565b602002602001015183604051602001612849929190918252602082015260400190565b60408051601f198184030181529082905261286391613c34565b602060405180830381855afa158015612880573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906128a391906139f1565b915061293e565b6002828583815181106128bf576128bf613bee565b60200260200101516040516020016128e1929190918252602082015260400190565b60408051601f19818403018152908290526128fb91613c34565b602060405180830381855afa158015612918573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061293b91906139f1565b91505b612949600286613b6d565b94508061295581613cb5565b9150506127f8565b80516060906000816001600160401b0381111561297c5761297c613678565b6040519080825280602002602001820160405280156129c157816020015b604080518082019091526060808252602082015281526020019060019003908161299a5790505b50905060005b82811015612a435760405180604001604052808683815181106129ec576129ec613bee565b60200260200101518152602001612a1b878481518110612a0e57612a0e613bee565b6020026020010151613449565b815250828281518110612a3057612a30613bee565b60209081029190910101526001016129c7565b509392505050565b80516060906000612a5d826002613b81565b6001600160401b03811115612a7457612a74613678565b6040519080825280601f01601f191660200182016040528015612a9e576020820181803683370190505b5090506000805b83811015612b5b57858181518110612abf57612abf613bee565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612ae7836002613b81565b81518110612af757612af7613bee565b60200101906001600160f81b031916908160001a905350600f60f81b821683612b21836002613b81565b612b2c906001613ba0565b81518110612b3c57612b3c613bee565b60200101906001600160f81b031916908160001a905350600101612aa5565b5090949350505050565b60606000806000612b7585612d86565b919450925090506000816001811115612b9057612b90613843565b14612c035760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610420565b612c0d8284613ba0565b855114612c795760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b6064820152608401610420565b61192485602001518484613457565b60606020826000015110612ca457612c9f82612b65565b61257f565b61257f826134f7565b606061257f612ccc8360200151600081518110611d3a57611d3a613bee565b612a4b565b606082518210612cf0575060408051602081019091526000815261257f565b61188a8383848651612d029190613b44565b61350d565b60008060008351855110612d1c578351612d1f565b84515b90505b8082108015612d765750838281518110612d3e57612d3e613bee565b602001015160f81c60f81b6001600160f81b031916858381518110612d6557612d65613bee565b01602001516001600160f81b031916145b15612a4357816001019150612d22565b600080600080846000015111612dae5760405162461bcd60e51b815260040161042090613cce565b6020840151805160001a607f8111612dd3576000600160009450945094505050613442565b60b78111612f30576000612de8608083613b44565b905080876000015111612e685760405162461bcd60e51b815260206004820152604e6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a401610420565b6001838101516001600160f81b0319169082141580612e955750600160ff1b6001600160f81b0319821610155b612f1d5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a401610420565b5060019550935060009250613442915050565b60bf8111613171576000612f4560b783613b44565b905080876000015111612fc85760405162461bcd60e51b81526020600482015260516024820152600080516020613e5783398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a401610420565b60018301516001600160f81b031916600081900361304f5760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a401610420565b600184015160088302610100031c603781116130d25760405162461bcd60e51b81526020600482015260486024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a401610420565b6130dc8184613ba0565b8951116131545760405162461bcd60e51b815260206004820152604c6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a401610420565b61315f836001613ba0565b97509550600094506134429350505050565b60f7811161321357600061318660c083613b44565b9050808760000151116132025760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a401610420565b600195509350849250613442915050565b600061322060f783613b44565b90508087600001511161329f5760405162461bcd60e51b815260206004820152604d6024820152600080516020613e5783398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a401610420565b60018301516001600160f81b03191660008190036133245760405162461bcd60e51b81526020600482015260486024820152600080516020613e5783398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a401610420565b600184015160088302610100031c603781116133a55760405162461bcd60e51b81526020600482015260466024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a401610420565b6133af8184613ba0565b8951116134255760405162461bcd60e51b815260206004820152604a6024820152600080516020613e5783398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a401610420565b613430836001613ba0565b97509550600194506134429350505050565b9193909250565b606061257f6118598361268f565b60606000826001600160401b0381111561347357613473613678565b6040519080825280601f01601f19166020018201604052801561349d576020820181803683370190505b509050826000036134af57905061188a565b60006134bb8587613ba0565b90506020820160005b858110156134dc5782810151828201526020016134c4565b858111156134eb576000868301525b50919695505050505050565b606061257f826020015160008460000151613457565b60608182601f0110156135325760405162461bcd60e51b815260040161042090613d3e565b8282840110156135545760405162461bcd60e51b815260040161042090613d3e565b8183018451101561275c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610420565b80356001600160401b0381168114611a2d57600080fd5b6000602082840312156135c457600080fd5b61188a8261359b565b6000602082840312156135df57600080fd5b813563ffffffff8116811461188a57600080fd5b60008083601f84011261360557600080fd5b5081356001600160401b0381111561361c57600080fd5b602083019150836020828501011115610c6357600080fd5b60008083601f84011261364657600080fd5b5081356001600160401b0381111561365d57600080fd5b6020830191508360208260051b8501011115610c6357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156136b6576136b6613678565b604052919050565b600082601f8301126136cf57600080fd5b81356001600160401b038111156136e8576136e8613678565b6136fb601f8201601f191660200161368e565b81815284602083860101111561371057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561374e57600080fd5b6001600160401b03808d35111561376457600080fd5b6137718e8e358f016135f3565b909c509a5060208d013581101561378757600080fd5b6137978e60208f01358f016135f3565b909a50985060408d01358110156137ad57600080fd5b6137bd8e60408f01358f01613634565b909850965060608d0135955060808d01358110156137da57600080fd5b6137ea8e60808f01358f01613634565b909550935060a08d013581101561380057600080fd5b506138118d60a08e01358e016136be565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561383c57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061387b57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a03121561389c57600080fd5b6138a58861359b565b965060208801356001600160401b03808211156138c157600080fd5b6138cd8b838c016135f3565b909850965060408a01359150808211156138e657600080fd5b6138f28b838c01613634565b909650945060608a013591508082111561390b57600080fd5b506139188a828b01613634565b989b979a50959850939692959293505050565b8015158114610d9957600080fd5b600080600080600060a0868803121561395157600080fd5b853561ffff8116811461396357600080fd5b94506139716020870161359b565b93506040860135925060608601356001600160401b0381111561399357600080fd5b61399f888289016136be565b92505060808601356139b08161392b565b809150509295509295909350565b600080604083850312156139d157600080fd5b6139da8361359b565b91506139e86020840161359b565b90509250929050565b600060208284031215613a0357600080fd5b5051919050565b60006001600160401b0380841115613a2457613a24613678565b8360051b6020613a3581830161368e565b868152918501918181019036841115613a4d57600080fd5b865b84811015613a8157803586811115613a675760008081fd5b613a7336828b016136be565b845250918301918301613a4f565b50979650505050505050565b60005b83811015613aa8578181015183820152602001613a90565b50506000910152565b60008151808452613ac9816020860160208601613a8d565b601f01601f19169290920160200192915050565b604081526000613af06040830185613ab1565b905082151560208301529392505050565b8183823760009101908152919050565b600060208284031215613b2357600080fd5b815161188a8161392b565b634e487b7160e01b600052601160045260246000fd5b8181038181111561257f5761257f613b2e565b634e487b7160e01b600052601260045260246000fd5b600082613b7c57613b7c613b57565b500490565b6000816000190483118215151615613b9b57613b9b613b2e565b500290565b8082018082111561257f5761257f613b2e565b6001600160401b03828116828216039080821115613bd357613bd3613b2e565b5092915050565b600082613be957613be9613b57565b500690565b634e487b7160e01b600052603260045260246000fd5b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061192490830184613ab1565b60008251613c46818460208701613a8d565b9190910192915050565b600060208284031215613c6257600080fd5b81516001600160e01b03198116811461188a57600080fd5b600060ff831680613c8d57613c8d613b57565b8060ff84160691505092915050565b60ff828116828216039081111561257f5761257f613b2e565b600060018201613cc757613cc7613b2e565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613da1578160001904821115613d8757613d87613b2e565b80851615613d9457918102915b93841c9390800290613d6b565b509250929050565b600082613db85750600161257f565b81613dc55750600061257f565b8160018114613ddb5760028114613de557613e01565b600191505061257f565b60ff841115613df657613df6613b2e565b50506001821b61257f565b5060208310610133831016604e8410600b8410161715613e24575081810a61257f565b613e2e8383613d66565b8060001904821115613e4257613e42613b2e565b029392505050565b600061188a8383613da956fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220418e21fd21f00c03501eb83d3e8cf77d73d9b90e1d81aa2d267111b90aa70bf364736f6c63430008100033", - "sourceMap": "399:626:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:146;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:146;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:146;4866:1928:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:146;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:146;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:146;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:146;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;630:83:6;;;:::i;879:30:103:-;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:146;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:146;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:146;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:146;719:304:6;;;;;;:::i;:::-;;:::i;924:58:100:-;;973:9;924:58;;4866:1928;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:146;;5661:52:100;;::::1;7526:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;9330:2:146;5727:58:100::1;::::0;::::1;9312:21:146::0;9369:2;9349:18;;;9342:30;-1:-1:-1;;;9388:18:146;;;9381:51;9449:18;;5727:58:100::1;;;;;;;;;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;9680:2:146;5965:47:100::1;::::0;::::1;9662:21:146::0;9719:2;9699:18;;;9692:30;9758:29;9738:18;;;9731:57;9805:18;;5965:47:100::1;9478:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;10975:2:146;6648:67:100::1;::::0;::::1;10957:21:146::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:146;;;11026:51;11094:18;;6648:67:100::1;10773:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;11342:3:146;11320:16;;;;-1:-1:-1;;;;;;11316:43:146;2955:82:100;;::::1;11304:56:146::0;11415:3;11393:16;;;-1:-1:-1;;;;;;11389:51:146;11376:11;;;11369:72;11479:2;11475:15;-1:-1:-1;;11475:15:146;11457:12;;;11450:75;2955:82:100;;;;;;;;;11541:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:146;;3301:61:100;;::::1;7526:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;11766:2:146;3380:67:100::1;::::0;::::1;11748:21:146::0;11805:2;11785:18;;;11778:30;11844:33;11824:18;;;11817:61;11895:18;;3380:67:100::1;11564:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;12114:31:146;;;;12096:50;;12177:2;12162:18;;12155:34;12084:2;12069:18;;11924:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:146::0;3826:80:100;;;;;;;;;498:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10975:2:146;4090:31:100::1;::::0;::::1;10957:21:146::0;11014:2;10994:18;;;10987:30;-1:-1:-1;;;11033:18:146;;;11026:51;11094:18;;4090:31:100::1;10773:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;630:83:6:-;697:8;;-1:-1:-1;;;;;697:8:6;683:10;:22;675:31;;;;;;630:83::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;719:304:6:-;931:7;;-1:-1:-1;;;;;931:7:6;917:10;:21;909:30;;;;;;988:8;980:6;-1:-1:-1;;;;;954:62:6;970:8;954:62;;;998:8;1008:7;954:62;;;;;;;:::i;:::-;;;;;;;;719:304;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;13235:2:146;2704:63:39;;;13217:21:146;13274:2;13254:18;;;13247:30;13313:33;13293:18;;;13286:61;13364:18;;2704:63:39;13033:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;13871:2:146;8369:35:100;;;13853:21:146;13910:2;13890:18;;;13883:30;13949:27;13929:18;;;13922:55;13994:18;;8369:35:100;13669:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;14225:2:146;8484:22:100;;;14207:21:146;14264:2;14244:18;;;14237:30;-1:-1:-1;;;14283:18:146;;;14276:42;14335:18;;8484:22:100;14023:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;14566:2:146;8569:24:100;;;14548:21:146;14605:2;14585:18;;;14578:30;-1:-1:-1;;;14624:18:146;;;14617:44;14678:18;;8569:24:100;14364:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;14909:2:146;8779:65:100;;;14891:21:146;14948:2;14928:18;;;14921:30;14987:34;14967:18;;;14960:62;15058:25;15038:18;;;15031:53;15101:19;;8779:65:100;14707:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;15333:2:146;6959:81:100;;;15315:21:146;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:146;;;15384:54;15455:18;;6959:81:100;15131:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;15936:2:146;7050:76:100;;;15918:21:146;15975:2;15955:18;;;15948:30;16014:31;15994:18;;;15987:59;16063:18;;7050:76:100;15734:353:146;7050:76:100;6880:253;:::o;7194:121::-;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;16294:2:146;7260:48:100;;;16276:21:146;16333:2;16313:18;;;16306:30;-1:-1:-1;;;16352:18:146;;;16345:49;16411:18;;7260:48:100;16092:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;15333:2:146;7471:81:100;;;15315:21:146;15372:2;15352:18;;;15345:30;-1:-1:-1;;;15391:18:146;;;15384:54;15455:18;;7471:81:100;15131:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;7544:31:146;;7570:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;7499:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;16831:2:146;7562:86:100;;;16813:21:146;16870:2;16850:18;;;16843:30;16909:32;16889:18;;;16882:60;16959:18;;7562:86:100;16629:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;7544:31:146;;7698:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;7499:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;17455:2:146;7746:84:100;;;17437:21:146;17494:2;17474:18;;;17467:30;17533:34;17513:18;;;17506:62;-1:-1:-1;;;17584:18:146;;;17577:32;17626:19;;7746:84:100;17253:398:146;7746:84:100;7461:376;7385:452;;:::o;3094:1947:110:-;3330:4;3346:23;3372:46;3404:13;3372:31;:46::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;18723:2:146;4896:40:110;;;18705:21:146;18762:2;18742:18;;;18735:30;18801:32;18781:18;;;18774:60;18851:18;;4896:40:110;18521:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;19214:2:146;2652:38:111;;;19196:21:146;19253:2;19233:18;;;19226:30;19292;19272:18;;;19265:58;19340:18;;2652:38:111;19012:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;19571:2:146;3233:58:111;;;19553:21:146;19610:2;19590:18;;;19583:30;-1:-1:-1;;;19629:18:146;;;19622:52;19691:18;;3233:58:111;19369:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;19922:2:146;3450:58:111;;;19904:21:146;19961:2;19941:18;;;19934:30;20000:25;19980:18;;;19973:53;20043:18;;3450:58:111;19720:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;20274:2:146;3594:70:111;;;20256:21:146;20313:2;20293:18;;;20286:30;20352:34;20332:18;;;20325:62;-1:-1:-1;;;20403:18:146;;;20396:32;20445:19;;3594:70:111;20072:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;20677:2:146;3803:85:111;;;20659:21:146;20716:2;20696:18;;;20689:30;20755:34;20735:18;;;20728:62;-1:-1:-1;;;20806:18:146;;;20799:37;20853:19;;3803:85:111;20475:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;21085:2:146;4057:142:111;;;21067:21:146;21124:2;21104:18;;;21097:30;21163:34;21143:18;;;21136:62;-1:-1:-1;;;21214:18:146;;;21207:43;21267:19;;4057:142:111;20883:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;735:581:111:-;927:33;;-1:-1:-1;;22438:2:146;22434:15;;;22430:53;927:33:111;;;22418:66:146;872:7:111;;;;22500:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;22652:19:146;;22696:2;22687:12;;22523:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;22912:2:146;1072:58:111;;;22894:21:146;22951:2;22931:18;;;22924:30;-1:-1:-1;;;22970:18:146;;;22963:52;23032:18;;1072:58:111;22710:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;22652:19:146;;22696:2;22687:12;;22523:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;23263:2:146;601:65:111;;;23245:21:146;23302:2;23282:18;;;23275:30;23341;23321:18;;;23314:58;23389:18;;601:65:111;23061:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;56:776:107:-;125:7;240:13;:18;;257:1;240:18;236:590;;-1:-1:-1;383:7:107;;56:776;-1:-1:-1;56:776:107:o;236:590::-;411:13;:18;;428:1;411:18;407:419;;-1:-1:-1;619:7:107;;56:776;-1:-1:-1;56:776:107:o;407:419::-;-1:-1:-1;;;803:12:107;56:776;-1:-1:-1;56:776:107:o;407:419::-;56:776;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;23620:2:146;3101:49:77;;;23602:21:146;23659:2;23639:18;;;23632:30;-1:-1:-1;;;23678:18:146;;;23671:51;23739:18;;3101:49:77;23418:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;22652:19:146;;22696:2;22687:12;;22523:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;23970:2:146;3636:134:77;;;23952:21:146;24009:2;23989:18;;;23982:30;24048:34;24028:18;;;24021:62;-1:-1:-1;;;24099:18:146;;;24092:44;24153:19;;3636:134:77;23768:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;22652:19:146;;;22696:2;22687:12;;22523:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;24385:2:146;3893:176:77;;;24367:21:146;24424:2;24404:18;;;24397:30;24463:31;24443:18;;;24436:59;24512:18;;3893:176:77;24183:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;22652:19:146;;;22696:2;22687:12;;22523:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;24743:2:146;4222:186:77;;;24725:21:146;24782:2;24762:18;;;24755:30;24821:34;24801:18;;;24794:62;-1:-1:-1;;;24872:18:146;;;24865:37;24919:19;;4222:186:77;24541:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;25151:2:146;4509:156:77;;;25133:21:146;25190:2;25170:18;;;25163:30;25229:34;25209:18;;;25202:62;-1:-1:-1;;;25280:18:146;;;25273:36;25326:19;;4509:156:77;24949:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;25558:2:146;5384:158:77;;;25540:21:146;25597:2;25577:18;;;25570:30;25636:34;25616:18;;;25609:62;25707:29;25687:18;;;25680:57;25754:19;;5384:158:77;25356:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;25986:2:146;5626:162:77;;;25968:21:146;26025:2;26005:18;;;25998:30;26064:34;26044:18;;;26037:62;26135:28;26115:18;;;26108:56;26181:19;;5626:162:77;25784:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;26731:2:146;7009:171:77;;;26713:21:146;26770:2;26750:18;;;26743:30;26809:34;26789:18;;;26782:62;26880:28;26860:18;;;26853:56;26926:19;;7009:171:77;26529:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;27158:2:146;7843:185:77;;;27140:21:146;27197:2;27177:18;;;27170:30;27236:34;27216:18;;;27209:62;27307:31;27287:18;;;27280:59;27356:19;;7843:185:77;26956:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;27588:2:146;8463:156:77;;;27570:21:146;27627:2;27607:18;;;27600:30;27666:34;27646:18;;;27639:62;27737:27;27717:18;;;27710:55;27782:19;;8463:156:77;27386:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;28014:2:146;8703:160:77;;;27996:21:146;28053:2;28033:18;;;28026:30;28092:34;28072:18;;;28065:62;28163:26;28143:18;;;28136:54;28207:19;;8703:160:77;27812:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;28439:2:146;9439:60:77;;;28421:21:146;28478:2;28458:18;;;28451:30;28517:34;28497:18;;;28490:62;-1:-1:-1;;;28568:18:146;;;28561:48;28626:19;;9439:60:77;28237:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;28858:2:146;9556:50:77;;;28840:21:146;28897:2;28877:18;;;28870:30;28936:34;28916:18;;;28909:62;-1:-1:-1;;;28987:18:146;;;28980:38;29035:19;;9556:50:77;28656:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;29407:2:146;9641:47:77;;;29389:21:146;29446:2;29426:18;;;29419:30;29485:34;29465:18;;;29458:62;-1:-1:-1;;;29536:18:146;;;29529:35;29581:19;;9641:47:77;29205:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;29813:2:146;2161:136:75;;;29795:21:146;29852:2;29832:18;;;29825:30;29891:34;29871:18;;;29864:62;29962:26;29942:18;;;29935:54;30006:19;;2161:136:75;29611:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;30238:2:146;2308:134:75;;;30220:21:146;30277:2;30257:18;;;30250:30;30316:34;30296:18;;;30289:62;-1:-1:-1;;;30367:18:146;;;30360:48;30425:19;;2308:134:75;30036:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;30657:2:146;12579:55:75;;;30639:21:146;30696:2;30676:18;;;30669:30;30735:28;30715:18;;;30708:56;30781:18;;12579:55:75;30455:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;31012:2:146;11438:55:75;;;30994:21:146;31051:2;31031:18;;;31024:30;31090:28;31070:18;;;31063:56;31136:18;;11438:55:75;30810:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;31012:2:146;11598:72:75;;;30994:21:146;31051:2;31031:18;;;31024:30;31090:28;31070:18;;;31063:56;31136:18;;11598:72:75;30810:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;32193:2:146;409:63:108;;;32175:21:146;32232:2;32212:18;;;32205:30;-1:-1:-1;;;32251:18:146;;;32244:47;32308:18;;409:63:108;31991:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;33868:19:146;;;33912:2;33903:12;;33896:28;33949:2;33940:12;;33711:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;33868:19:146;;;33912:2;33903:12;;33896:28;33949:2;33940:12;;33711:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;34165:2:146;4505:137:75;;;34147:21:146;34204:2;34184:18;;;34177:30;34243:34;34223:18;;;34216:62;34314:27;34294:18;;;34287:55;34359:19;;4505:137:75;33963:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;34591:2:146;4653:136:75;;;34573:21:146;34630:2;34610:18;;;34603:30;34669:34;34649:18;;;34642:62;-1:-1:-1;;;34720:18:146;;;34713:50;34780:19;;4653:136:75;34389:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;35012:2:146;6699:156:75;;;34994:21:146;35051:2;35031:18;;;35024:30;-1:-1:-1;;;;;;;;;;;35070:18:146;;;35063:62;35161:34;35141:18;;;35134:62;-1:-1:-1;;;35212:19:146;;;35205:45;35267:19;;6699:156:75;34810:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;35499:2:146;7025:177:75;;;35481:21:146;35538:2;35518:18;;;35511:30;35577:34;35557:18;;;35550:62;35648:34;35628:18;;;35621:62;-1:-1:-1;;;35699:19:146;;;35692:44;35753:19;;7025:177:75;35297:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;35985:2:146;7387:164:75;;;35967:21:146;36024:2;36004:18;;;35997:30;-1:-1:-1;;;;;;;;;;;36043:18:146;;;36036:62;36134:34;36114:18;;;36107:62;-1:-1:-1;;;36185:19:146;;;36178:48;36243:19;;7387:164:75;35783:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;36475:2:146;7721:159:75;;;36457:21:146;36514:2;36494:18;;;36487:30;-1:-1:-1;;;;;;;;;;;36533:18:146;;;36526:62;36624:34;36604:18;;;36597:62;-1:-1:-1;;;36675:19:146;;;36668:41;36726:19;;7721:159:75;36273:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;36958:2:146;8042:142:75;;;36940:21:146;36997:2;36977:18;;;36970:30;-1:-1:-1;;;;;;;;;;;37016:18:146;;;37009:62;37107:34;37087:18;;;37080:62;-1:-1:-1;;;37158:19:146;;;37151:39;37207:19;;8042:142:75;36756:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;37439:2:146;8199:168:75;;;37421:21:146;37478:2;37458:18;;;37451:30;-1:-1:-1;;;;;;;;;;;37497:18:146;;;37490:62;37588:34;37568:18;;;37561:62;-1:-1:-1;;;37639:19:146;;;37632:43;37692:19;;8199:168:75;37237:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;37924:2:146;8617:153:75;;;37906:21:146;37963:2;37943:18;;;37936:30;-1:-1:-1;;;;;;;;;;;37982:18:146;;;37975:62;38073:34;38053:18;;;38046:62;-1:-1:-1;;;38124:19:146;;;38117:41;38175:19;;8617:153:75;37722:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;38407:2:146;8935:161:75;;;38389:21:146;38446:2;38426:18;;;38419:30;-1:-1:-1;;;;;;;;;;;38465:18:146;;;38458:62;38556:34;38536:18;;;38529:62;-1:-1:-1;;;38607:19:146;;;38600:44;38661:19;;8935:161:75;38205:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;38893:2:146;9266:157:75;;;38875:21:146;38932:2;38912:18;;;38905:30;-1:-1:-1;;;;;;;;;;;38951:18:146;;;38944:62;39042:34;39022:18;;;39015:62;-1:-1:-1;;;39093:19:146;;;39086:39;39142:19;;9266:157:75;38691:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;39374:2:146;9588:141:75;;;39356:21:146;39413:2;39393:18;;;39386:30;-1:-1:-1;;;;;;;;;;;39432:18:146;;;39425:62;39523:34;39503:18;;;39496:62;-1:-1:-1;;;39574:19:146;;;39567:37;39621:19;;9588:141:75;39172:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;39853:2:146;9744:168:75;;;39835:21:146;39892:2;39872:18;;;39865:30;-1:-1:-1;;;;;;;;;;;39911:18:146;;;39904:62;40002:34;39982:18;;;39975:62;-1:-1:-1;;;40053:19:146;;;40046:41;40104:19;;9744:168:75;39651:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;32193:2:146;989:63:74;;;32175:21:146;32232:2;32212:18;;;32205:30;-1:-1:-1;;;32251:18:146;;;32244:47;32308:18;;989:63:74;31991:341:146;14:171;81:20;;-1:-1:-1;;;;;130:30:146;;120:41;;110:69;;175:1;172;165:12;190:184;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:146;;-1:-1:-1;;;;;1222:30:146;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:146;;-1:-1:-1;;;;;1586:30:146;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:146;1991:40;;-1:-1:-1;;;;;2046:34:146;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:146:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:146;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:146;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:146:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:146;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:146;-1:-1:-1;3373:2:146;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:146;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:146;-1:-1:-1;3615:2:146;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:146;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:146;-1:-1:-1;3873:2:146;3858:18;;3845:32;;-1:-1:-1;3920:3:146;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:146;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:146;-1:-1:-1;4176:3:146;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:146;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:146;;4362:180;-1:-1:-1;4362:180:146:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:146;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:146;-1:-1:-1;6516:2:146;6501:18;;6488:32;;-1:-1:-1;6532:16:146;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:146;-1:-1:-1;6779:2:146;6764:18;;6751:32;;-1:-1:-1;6795:16:146;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:146;;-1:-1:-1;5840:1155:146;;;;6837:98;;-1:-1:-1;;;5840:1155:146:o;7587:118::-;7673:5;7666:13;7659:21;7652:5;7649:32;7639:60;;7695:1;7692;7685:12;7710:757;7809:6;7817;7825;7833;7841;7894:3;7882:9;7873:7;7869:23;7865:33;7862:53;;;7911:1;7908;7901:12;7862:53;7950:9;7937:23;8000:6;7993:5;7989:18;7982:5;7979:29;7969:57;;8022:1;8019;8012:12;7969:57;8045:5;-1:-1:-1;8069:37:146;8102:2;8087:18;;8069:37;:::i;:::-;8059:47;;8153:2;8142:9;8138:18;8125:32;8115:42;;8208:2;8197:9;8193:18;8180:32;-1:-1:-1;;;;;8227:6:146;8224:30;8221:50;;;8267:1;8264;8257:12;8221:50;8290:49;8331:7;8322:6;8311:9;8307:22;8290:49;:::i;:::-;8280:59;;;8391:3;8380:9;8376:19;8363:33;8405:30;8427:7;8405:30;:::i;:::-;8454:7;8444:17;;;7710:757;;;;;;;;:::o;8472:256::-;8538:6;8546;8599:2;8587:9;8578:7;8574:23;8570:32;8567:52;;;8615:1;8612;8605:12;8567:52;8638:28;8656:9;8638:28;:::i;:::-;8628:38;;8685:37;8718:2;8707:9;8703:18;8685:37;:::i;:::-;8675:47;;8472:256;;;;;:::o;8939:184::-;9009:6;9062:2;9050:9;9041:7;9037:23;9033:32;9030:52;;;9078:1;9075;9068:12;9030:52;-1:-1:-1;9101:16:146;;8939:184;-1:-1:-1;8939:184:146:o;9834:934::-;9970:9;-1:-1:-1;;;;;10045:2:146;10037:6;10034:14;10031:40;;;10051:18;;:::i;:::-;10097:6;10094:1;10090:14;10123:4;10147:28;10171:2;10167;10163:11;10147:28;:::i;:::-;10209:19;;;10279:14;;;;10244:12;;;;10316:14;10305:26;;10302:46;;;10344:1;10341;10334:12;10302:46;10368:5;10382:353;10398:6;10393:3;10390:15;10382:353;;;10484:3;10471:17;10520:2;10507:11;10504:19;10501:109;;;10564:1;10593:2;10589;10582:14;10501:109;10635:57;10677:14;10663:11;10656:5;10652:23;10635:57;:::i;:::-;10623:70;;-1:-1:-1;10713:12:146;;;;10415;;10382:353;;;-1:-1:-1;10757:5:146;9834:934;-1:-1:-1;;;;;;;9834:934:146:o;12200:250::-;12285:1;12295:113;12309:6;12306:1;12303:13;12295:113;;;12385:11;;;12379:18;12366:11;;;12359:39;12331:2;12324:10;12295:113;;;-1:-1:-1;;12442:1:146;12424:16;;12417:27;12200:250::o;12455:270::-;12496:3;12534:5;12528:12;12561:6;12556:3;12549:19;12577:76;12646:6;12639:4;12634:3;12630:14;12623:4;12616:5;12612:16;12577:76;:::i;:::-;12707:2;12686:15;-1:-1:-1;;12682:29:146;12673:39;;;;12714:4;12669:50;;12455:270;-1:-1:-1;;12455:270:146:o;12730:298::-;12899:2;12888:9;12881:21;12862:4;12919:44;12959:2;12948:9;12944:18;12936:6;12919:44;:::i;:::-;12911:52;;13013:6;13006:14;12999:22;12994:2;12983:9;12979:18;12972:50;12730:298;;;;;:::o;13393:271::-;13576:6;13568;13563:3;13550:33;13532:3;13602:16;;13627:13;;;13602:16;13393:271;-1:-1:-1;13393:271:146:o;15484:245::-;15551:6;15604:2;15592:9;15583:7;15579:23;15575:32;15572:52;;;15620:1;15617;15610:12;15572:52;15652:9;15646:16;15671:28;15693:5;15671:28;:::i;16988:127::-;17049:10;17044:3;17040:20;17037:1;17030:31;17080:4;17077:1;17070:15;17104:4;17101:1;17094:15;17120:128;17187:9;;;17208:11;;;17205:37;;;17222:18;;:::i;17656:127::-;17717:10;17712:3;17708:20;17705:1;17698:31;17748:4;17745:1;17738:15;17772:4;17769:1;17762:15;17788:120;17828:1;17854;17844:35;;17859:18;;:::i;:::-;-1:-1:-1;17893:9:146;;17788:120::o;17913:168::-;17953:7;18019:1;18015;18011:6;18007:14;18004:1;18001:21;17996:1;17989:9;17982:17;17978:45;17975:71;;;18026:18;;:::i;:::-;-1:-1:-1;18066:9:146;;17913:168::o;18086:125::-;18151:9;;;18172:10;;;18169:36;;;18185:18;;:::i;18216:183::-;-1:-1:-1;;;;;18335:10:146;;;18323;;;18319:27;;18358:12;;;18355:38;;;18373:18;;:::i;:::-;18355:38;18216:183;;;;:::o;18404:112::-;18436:1;18462;18452:35;;18467:18;;:::i;:::-;-1:-1:-1;18501:9:146;;18404:112::o;18880:127::-;18941:10;18936:3;18932:20;18929:1;18922:31;18972:4;18969:1;18962:15;18996:4;18993:1;18986:15;21297:400;21510:10;21498:23;;21480:42;;-1:-1:-1;;;;;21558:32:146;;21553:2;21538:18;;21531:60;21627:2;21622;21607:18;;21600:30;;;-1:-1:-1;;21647:44:146;;21672:18;;21664:6;21647:44;:::i;21702:287::-;21831:3;21869:6;21863:13;21885:66;21944:6;21939:3;21932:4;21924:6;21920:17;21885:66;:::i;:::-;21967:16;;;;;21702:287;-1:-1:-1;;21702:287:146:o;21994:290::-;22063:6;22116:2;22104:9;22095:7;22091:23;22087:32;22084:52;;;22132:1;22129;22122:12;22084:52;22158:16;;-1:-1:-1;;;;;;22203:32:146;;22193:43;;22183:71;;22250:1;22247;22240:12;26211:157;26241:1;26275:4;26272:1;26268:12;26299:3;26289:37;;26306:18;;:::i;:::-;26358:3;26351:4;26348:1;26344:12;26340:22;26335:27;;;26211:157;;;;:::o;26373:151::-;26463:4;26456:12;;;26442;;;26438:31;;26481:14;;26478:40;;;26498:18;;:::i;29065:135::-;29104:3;29125:17;;;29122:43;;29145:18;;:::i;:::-;-1:-1:-1;29192:1:146;29181:13;;29065:135::o;31165:478::-;31367:2;31349:21;;;31406:2;31386:18;;;31379:30;31445:34;31440:2;31425:18;;31418:62;31516:34;31511:2;31496:18;;31489:62;-1:-1:-1;;;31582:3:146;31567:19;;31560:41;31633:3;31618:19;;31165:478::o;31648:338::-;31850:2;31832:21;;;31889:2;31869:18;;;31862:30;-1:-1:-1;;;31923:2:146;31908:18;;31901:44;31977:2;31962:18;;31648:338::o;32337:422::-;32426:1;32469:5;32426:1;32483:270;32504:7;32494:8;32491:21;32483:270;;;32563:4;32559:1;32555:6;32551:17;32545:4;32542:27;32539:53;;;32572:18;;:::i;:::-;32622:7;32612:8;32608:22;32605:55;;;32642:16;;;;32605:55;32721:22;;;;32681:15;;;;32483:270;;;32487:3;32337:422;;;;;:::o;32764:806::-;32813:5;32843:8;32833:80;;-1:-1:-1;32884:1:146;32898:5;;32833:80;32932:4;32922:76;;-1:-1:-1;32969:1:146;32983:5;;32922:76;33014:4;33032:1;33027:59;;;;33100:1;33095:130;;;;33007:218;;33027:59;33057:1;33048:10;;33071:5;;;33095:130;33132:3;33122:8;33119:17;33116:43;;;33139:18;;:::i;:::-;-1:-1:-1;;33195:1:146;33181:16;;33210:5;;33007:218;;33309:2;33299:8;33296:16;33290:3;33284:4;33281:13;33277:36;33271:2;33261:8;33258:16;33253:2;33247:4;33244:12;33240:35;33237:77;33234:159;;;-1:-1:-1;33346:19:146;;;33378:5;;33234:159;33425:34;33450:8;33444:4;33425:34;:::i;:::-;33495:6;33491:1;33487:6;33483:19;33474:7;33471:32;33468:58;;;33506:18;;:::i;:::-;33544:20;;32764:806;-1:-1:-1;;;32764:806:146:o;33575:131::-;33635:5;33664:36;33691:8;33685:4;33664:36;:::i", - "linkReferences": {} - }, - "methodIdentifiers": { - "MIN_LIGHT_CLIENT_DELAY()": "e4407b15", - "broadcasters(uint32)": "59f89787", - "emitFakeExecutedMessageEvent(uint16,uint64,bytes32,bytes,bool)": "bd6a0134", - "executeMessage(uint64,bytes,bytes[],bytes[])": "7acc6754", - "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": "37d5af84", - "freezeAll()": "99464c89", - "frozen(uint32)": "36ae7c18", - "lightClients(uint32)": "7599735c", - "messageStatus(bytes32)": "3c6cf473", - "messages(uint64)": "029d6713", - "nonce()": "affed0e0", - "sendingEnabled()": "3e99e9ce", - "sourceChainIds(uint256)": "9efeff1c", - "sourceChainIdsLength()": "4552f563", - "storageRootCache(bytes32)": "8d080d1d", - "version()": "54fd4d50" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_emitter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_chainId\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"emitFakeExecutedMessageEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used solely for testing purposes and should not be used by production contracts.\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"title\":\"DrillTelepathy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/drills/DrillTelepathyRouter.sol\":\"DrillTelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/drills/DrillTelepathyRouter.sol\":{\"keccak256\":\"0x8fd77f1ceb7b9b93a7ab6cdd7968dcec008dbe3e4c95a16beda0229dfcd877b1\",\"urls\":[\"bzz-raw://037194f122d0feb30b2b15795d6f15fd44fbff86a063784c2b6eb974f2055a66\",\"dweb:/ipfs/QmfDEUKppow33XTcGSyHGxj62yE31HCSwQJYky5RdCnWWp\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_guardian", - "type": "address" - }, - { - "internalType": "address", - "name": "_emitter", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32", - "indexed": true - }, - { - "internalType": "uint64", - "name": "nonce", - "type": "uint64", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes", - "name": "message", - "type": "bytes", - "indexed": false - }, - { - "internalType": "bool", - "name": "status", - "type": "bool", - "indexed": false - } - ], - "type": "event", - "name": "ExecutedMessage", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "version", - "type": "uint8", - "indexed": false - } - ], - "type": "event", - "name": "Initialized", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "MIN_LIGHT_CLIENT_DELAY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "broadcasters", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_chainId", - "type": "uint16" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "_msgHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_message", - "type": "bytes" - }, - { - "internalType": "bool", - "name": "_status", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "emitFakeExecutedMessageEvent" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "slot", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes[]", - "name": "accountProof", - "type": "bytes[]" - }, - { - "internalType": "bytes[]", - "name": "storageProof", - "type": "bytes[]" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "executeMessage" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "srcSlotTxSlotPack", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes32[]", - "name": "receiptsRootProof", - "type": "bytes32[]" - }, - { - "internalType": "bytes32", - "name": "receiptsRoot", - "type": "bytes32" - }, - { - "internalType": "bytes[]", - "name": "receiptProof", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "txIndexRLPEncoded", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "logIndex", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "executeMessageFromLog" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "freezeAll" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "frozen", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "lightClients", - "outputs": [ - { - "internalType": "contract ILightClient", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "messageStatus", - "outputs": [ - { - "internalType": "enum MessageStatus", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function", - "name": "messages", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "nonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "sendingEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "sourceChainIds", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "sourceChainIdsLength", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "storageRootCache", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "version", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "executeMessage(uint64,bytes,bytes[],bytes[])": { - "params": { - "accountProof": "Used to prove the broadcaster's state root.", - "messageBytes": "The message we want to execute provided as bytes.", - "slot": "Specifies which execution state root should be read from the light client.", - "storageProof": "Used to prove the existence of the message root inside the broadcaster." - } - }, - "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { - "params": { - "logIndex": "The index of the event in our transaction.", - "messageBytes": "The message we want to execute provided as bytes.", - "receiptsRoot": "The receipts root which contains our \"SentMessage\" event.", - "receiptsRootProof": "A merkle proof proving the receiptsRoot in the block header.", - "srcSlotTxSlotPack": "The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.", - "txIndexRLPEncoded": "The index of our transaction inside the block RLP encoded." - } - }, - "sourceChainIdsLength()": { - "returns": { - "_0": "The length of the sourceChainIds array." - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "MIN_LIGHT_CLIENT_DELAY()": { - "notice": "The minimum delay for using any information from the light client." - }, - "broadcasters(uint32)": { - "notice": "Mapping between source chainId and the address of the Telepathy broadcaster on that chain." - }, - "executeMessage(uint64,bytes,bytes[],bytes[])": { - "notice": "Executes a message given a storage proof." - }, - "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { - "notice": "Executes a message given an event proof." - }, - "frozen(uint32)": { - "notice": "Mapping between a source chainId and whether it's frozen." - }, - "lightClients(uint32)": { - "notice": "Mapping between source chainId and the corresponding light client." - }, - "messageStatus(bytes32)": { - "notice": "Mapping between a message root and its status." - }, - "messages(uint64)": { - "notice": "Mapping between a nonce and a message root." - }, - "nonce()": { - "notice": "Keeps track of the next nonce to be used." - }, - "sendingEnabled()": { - "notice": "Whether sending is enabled or not." - }, - "sourceChainIds(uint256)": { - "notice": "All sourceChainIds." - }, - "sourceChainIdsLength()": { - "notice": "Gets the length of the sourceChainIds array." - }, - "storageRootCache(bytes32)": { - "notice": "Storage root cache." - }, - "version()": { - "notice": "Returns current contract version." - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "examples/drills/DrillTelepathyRouter.sol": "DrillTelepathyRouter" - }, - "libraries": {} - }, - "sources": { - "examples/drills/DrillTelepathyRouter.sol": { - "keccak256": "0x8fd77f1ceb7b9b93a7ab6cdd7968dcec008dbe3e4c95a16beda0229dfcd877b1", - "urls": [ - "bzz-raw://037194f122d0feb30b2b15795d6f15fd44fbff86a063784c2b6eb974f2055a66", - "dweb:/ipfs/QmfDEUKppow33XTcGSyHGxj62yE31HCSwQJYky5RdCnWWp" - ], - "license": null - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { - "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", - "urls": [ - "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", - "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { - "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", - "urls": [ - "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", - "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", - "urls": [ - "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", - "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { - "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", - "urls": [ - "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", - "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { - "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", - "urls": [ - "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", - "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { - "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", - "urls": [ - "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", - "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { - "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", - "urls": [ - "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", - "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { - "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", - "urls": [ - "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", - "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { - "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", - "urls": [ - "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", - "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { - "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", - "urls": [ - "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", - "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { - "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", - "urls": [ - "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", - "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Context.sol": { - "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", - "urls": [ - "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", - "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/Bytes.sol": { - "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", - "urls": [ - "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", - "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { - "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", - "urls": [ - "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", - "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { - "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", - "urls": [ - "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", - "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { - "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", - "urls": [ - "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", - "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" - ], - "license": "MIT" - }, - "src/amb/TargetAMB.sol": { - "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", - "urls": [ - "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", - "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" - ], - "license": null - }, - "src/amb/TelepathyAccess.sol": { - "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", - "urls": [ - "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", - "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" - ], - "license": null - }, - "src/amb/TelepathyStorage.sol": { - "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", - "urls": [ - "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", - "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" - ], - "license": null - }, - "src/amb/interfaces/ITelepathy.sol": { - "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", - "urls": [ - "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", - "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" - ], - "license": null - }, - "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", - "urls": [ - "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", - "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" - ], - "license": null - }, - "src/libraries/MessageEncoding.sol": { - "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", - "urls": [ - "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", - "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" - ], - "license": null - }, - "src/libraries/SimpleSerialize.sol": { - "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", - "urls": [ - "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", - "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" - ], - "license": null - }, - "src/libraries/StateProofHelper.sol": { - "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", - "urls": [ - "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", - "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" - ], - "license": null - }, - "src/libraries/Typecast.sol": { - "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", - "urls": [ - "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", - "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" - ], - "license": "MIT OR Apache-2.0" - }, - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "examples/drills/DrillTelepathyRouter.sol", - "id": 1086, - "exportedSymbols": { - "DrillTelepathyRouter": [ - 1085 - ], - "Ownable": [ - 31597 - ], - "TargetAMB": [ - 42123 - ], - "TelepathyAccess": [ - 42415 - ], - "TelepathyStorage": [ - 42633 - ] - }, - "nodeType": "SourceUnit", - "src": "0:1026:6", - "nodes": [ - { - "id": 1011, - "nodeType": "PragmaDirective", - "src": "0:23:6", - "nodes": [], - "literals": [ - "solidity", - "0.8", - ".16" - ] - }, - { - "id": 1013, - "nodeType": "ImportDirective", - "src": "25:48:6", - "nodes": [], - "absolutePath": "src/amb/TargetAMB.sol", - "file": "src/amb/TargetAMB.sol", - "nameLocation": "-1:-1:-1", - "scope": 1086, - "sourceUnit": 42124, - "symbolAliases": [ - { - "foreign": { - "id": 1012, - "name": "TargetAMB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42123, - "src": "33:9:6", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 1015, - "nodeType": "ImportDirective", - "src": "74:62:6", - "nodes": [], - "absolutePath": "src/amb/TelepathyStorage.sol", - "file": "src/amb/TelepathyStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 1086, - "sourceUnit": 42634, - "symbolAliases": [ - { - "foreign": { - "id": 1014, - "name": "TelepathyStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42633, - "src": "82:16:6", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 1017, - "nodeType": "ImportDirective", - "src": "137:60:6", - "nodes": [], - "absolutePath": "src/amb/TelepathyAccess.sol", - "file": "src/amb/TelepathyAccess.sol", - "nameLocation": "-1:-1:-1", - "scope": 1086, - "sourceUnit": 42416, - "symbolAliases": [ - { - "foreign": { - "id": 1016, - "name": "TelepathyAccess", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42415, - "src": "145:15:6", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 1019, - "nodeType": "ImportDirective", - "src": "198:66:6", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", - "file": "openzeppelin-contracts/access/Ownable.sol", - "nameLocation": "-1:-1:-1", - "scope": 1086, - "sourceUnit": 31598, - "symbolAliases": [ - { - "foreign": { - "id": 1018, - "name": "Ownable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31597, - "src": "206:7:6", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 1085, - "nodeType": "ContractDefinition", - "src": "399:626:6", - "nodes": [ - { - "id": 1026, - "nodeType": "VariableDeclaration", - "src": "466:16:6", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "guardian", - "nameLocation": "474:8:6", - "scope": 1085, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1025, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "466:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "id": 1028, - "nodeType": "VariableDeclaration", - "src": "488:15:6", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "emitter", - "nameLocation": "496:7:6", - "scope": 1085, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1027, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "488:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "id": 1044, - "nodeType": "FunctionDefinition", - "src": "510:114:6", - "nodes": [], - "body": { - "id": 1043, - "nodeType": "Block", - "src": "559:65:6", - "nodes": [], - "statements": [ - { - "expression": { - "id": 1037, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1035, - "name": "guardian", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "569:8:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1036, - "name": "_guardian", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1030, - "src": "580:9:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "569:20:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1038, - "nodeType": "ExpressionStatement", - "src": "569:20:6" - }, - { - "expression": { - "id": 1041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1039, - "name": "emitter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1028, - "src": "599:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1040, - "name": "_emitter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "609:8:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "599:18:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1042, - "nodeType": "ExpressionStatement", - "src": "599:18:6" - } - ] - }, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 1033, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1030, - "mutability": "mutable", - "name": "_guardian", - "nameLocation": "530:9:6", - "nodeType": "VariableDeclaration", - "scope": 1044, - "src": "522:17:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1029, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "522:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1032, - "mutability": "mutable", - "name": "_emitter", - "nameLocation": "549:8:6", - "nodeType": "VariableDeclaration", - "scope": 1044, - "src": "541:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1031, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "541:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "521:37:6" - }, - "returnParameters": { - "id": 1034, - "nodeType": "ParameterList", - "parameters": [], - "src": "559:0:6" - }, - "scope": 1085, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 1055, - "nodeType": "FunctionDefinition", - "src": "630:83:6", - "nodes": [], - "body": { - "id": 1054, - "nodeType": "Block", - "src": "665:48:6", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1051, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1048, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "683:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1049, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "687:6:6", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "683:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1050, - "name": "guardian", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "697:8:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "683:22:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1047, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "675:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1052, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "675:31:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1053, - "nodeType": "ExpressionStatement", - "src": "675:31:6" - } - ] - }, - "functionSelector": "99464c89", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "freezeAll", - "nameLocation": "639:9:6", - "parameters": { - "id": 1045, - "nodeType": "ParameterList", - "parameters": [], - "src": "648:2:6" - }, - "returnParameters": { - "id": 1046, - "nodeType": "ParameterList", - "parameters": [], - "src": "665:0:6" - }, - "scope": 1085, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 1084, - "nodeType": "FunctionDefinition", - "src": "719:304:6", - "nodes": [], - "body": { - "id": 1083, - "nodeType": "Block", - "src": "899:124:6", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1069, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "917:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1070, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "921:6:6", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "917:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1071, - "name": "emitter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1028, - "src": "931:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "917:21:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1068, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "909:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1073, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "909:30:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1074, - "nodeType": "ExpressionStatement", - "src": "909:30:6" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1076, - "name": "_chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1057, - "src": "970:8:6", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 1077, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "980:6:6", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 1078, - "name": "_msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1061, - "src": "988:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1079, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1063, - "src": "998:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "id": 1080, - "name": "_status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1065, - "src": "1008:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1075, - "name": "ExecutedMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42719, - "src": "954:15:6", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", - "typeString": "function (uint32,uint64,bytes32,bytes memory,bool)" - } - }, - "id": 1081, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "954:62:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1082, - "nodeType": "EmitStatement", - "src": "949:67:6" - } - ] - }, - "functionSelector": "bd6a0134", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "emitFakeExecutedMessageEvent", - "nameLocation": "728:28:6", - "parameters": { - "id": 1066, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1057, - "mutability": "mutable", - "name": "_chainId", - "nameLocation": "773:8:6", - "nodeType": "VariableDeclaration", - "scope": 1084, - "src": "766:15:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 1056, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "766:6:6", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1059, - "mutability": "mutable", - "name": "_nonce", - "nameLocation": "798:6:6", - "nodeType": "VariableDeclaration", - "scope": 1084, - "src": "791:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 1058, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "791:6:6", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1061, - "mutability": "mutable", - "name": "_msgHash", - "nameLocation": "822:8:6", - "nodeType": "VariableDeclaration", - "scope": 1084, - "src": "814:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1060, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "814:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1063, - "mutability": "mutable", - "name": "_message", - "nameLocation": "853:8:6", - "nodeType": "VariableDeclaration", - "scope": 1084, - "src": "840:21:6", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1062, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "840:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1065, - "mutability": "mutable", - "name": "_status", - "nameLocation": "876:7:6", - "nodeType": "VariableDeclaration", - "scope": 1084, - "src": "871:12:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1064, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "871:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "756:133:6" - }, - "returnParameters": { - "id": 1067, - "nodeType": "ParameterList", - "parameters": [], - "src": "899:0:6" - }, - "scope": 1085, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 1021, - "name": "TelepathyStorage", - "nameLocations": [ - "432:16:6" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42633, - "src": "432:16:6" - }, - "id": 1022, - "nodeType": "InheritanceSpecifier", - "src": "432:16:6" - }, - { - "baseName": { - "id": 1023, - "name": "TargetAMB", - "nameLocations": [ - "450:9:6" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42123, - "src": "450:9:6" - }, - "id": 1024, - "nodeType": "InheritanceSpecifier", - "src": "450:9:6" - } - ], - "canonicalName": "DrillTelepathyRouter", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 1020, - "nodeType": "StructuredDocumentation", - "src": "266:133:6", - "text": "@title DrillTelepathy\n @dev This contract is used solely for testing purposes and should not be used by production contracts." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 1085, - 42123, - 42752, - 29613, - 29404, - 42633 - ], - "name": "DrillTelepathyRouter", - "nameLocation": "408:20:6", - "scope": 1086, - "usedErrors": [] - } - ] - }, - "id": 6 -} \ No newline at end of file diff --git a/out/LightClient.sol/LightClient.json b/out/LightClient.sol/LightClient.json deleted file mode 100644 index fa79605..0000000 --- a/out/LightClient.sol/LightClient.json +++ /dev/null @@ -1,11118 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "genesisValidatorsRoot", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "genesisTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "secondsPerSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "slotsPerPeriod", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "syncCommitteePeriod", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "syncCommitteePoseidon", - "type": "bytes32" - }, - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "uint16", - "name": "finalityThreshold", - "type": "uint16" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "slot", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - } - ], - "name": "HeadUpdate", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "period", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - } - ], - "name": "SyncCommitteeUpdate", - "type": "event" - }, - { - "inputs": [], - "name": "FINALITY_THRESHOLD", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "GENESIS_TIME", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "GENESIS_VALIDATORS_ROOT", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SECONDS_PER_SLOT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SLOTS_PER_PERIOD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SOURCE_CHAIN_ID", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "consistent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "executionStateRoots", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "head", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "headers", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "components": [ - { - "internalType": "uint256", - "name": "attestedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "finalizedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "participation", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "finalizedHeaderRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "executionStateRoot", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ], - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple" - } - ], - "internalType": "struct LightClientStep", - "name": "step", - "type": "tuple" - }, - { - "internalType": "bytes32", - "name": "syncCommitteeSSZ", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "syncCommitteePoseidon", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ], - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple" - } - ], - "internalType": "struct LightClientRotate", - "name": "update", - "type": "tuple" - } - ], - "name": "rotate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "attestedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "finalizedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "participation", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "finalizedHeaderRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "executionStateRoot", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ], - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple" - } - ], - "internalType": "struct LightClientStep", - "name": "update", - "type": "tuple" - } - ], - "name": "step", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "syncCommitteePoseidons", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "timestamps", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - }, - { - "internalType": "uint256[65]", - "name": "input", - "type": "uint256[65]" - } - ], - "name": "verifyProofRotate", - "outputs": [ - { - "internalType": "bool", - "name": "r", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - }, - { - "internalType": "uint256[1]", - "name": "input", - "type": "uint256[1]" - } - ], - "name": "verifyProofStep", - "outputs": [ - { - "internalType": "bool", - "name": "r", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": { - "object": "0x6101406040526000805460ff191660019081178255553480156200002257600080fd5b5060405162004b2338038062004b23833981016040819052620000459162000106565b608088905260a087905260c086905260e085905263ffffffff82166101005261ffff81166101205262000079848462000087565b50505050505050506200018d565b60008281526005602052604090205415801590620000b357506000828152600560205260409020548114155b15620000c75750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b600080600080600080600080610100898b0312156200012457600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015163ffffffff811681146200016357600080fd5b60e08a015190925061ffff811681146200017c57600080fd5b809150509295985092959890939650565b60805160a05160c05160e051610100516101205161492a620001f9600039600081816102af01526107ce015260006101d001526000818161010a01526107f90152600081816101610152610b960152600081816102fc0152610bba01526000610255015261492a6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea26469706673582212209f84a49f056fdb36cb945939f807bac03eb8ff718511bf0c393d9a79efa23c4e64736f6c63430008100033", - "sourceMap": "953:8548:114:-:0;;;1711:29;;;-1:-1:-1;;1711:29:114;1736:4;1711:29;;;;;1824:23;2573:643;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2873:47;;;;2930:26;;;;2966:33;;;;3009;;;;3052:31;;;;;3093:38;;;;;3141:68;3166:19;3187:21;3141:24;:68::i;:::-;2573:643;;;;;;;;953:8548;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;14:812:146:-;145:6;153;161;169;177;185;193;201;254:3;242:9;233:7;229:23;225:33;222:53;;;271:1;268;261:12;222:53;300:9;294:16;284:26;;350:2;339:9;335:18;329:25;319:35;;394:2;383:9;379:18;373:25;363:35;;438:2;427:9;423:18;417:25;407:35;;482:3;471:9;467:19;461:26;451:36;;527:3;516:9;512:19;506:26;496:36;;575:3;564:9;560:19;554:26;620:10;613:5;609:22;602:5;599:33;589:61;;646:1;643;636:12;589:61;719:3;704:19;;698:26;669:5;;-1:-1:-1;768:6:146;755:20;;743:33;;733:61;;790:1;787;780:12;733:61;813:7;803:17;;;14:812;;;;;;;;;;;:::o;:::-;953:8548:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638bc33af311610097578063cb97095211610066578063cb97095214610297578063da4b05e7146102aa578063e5b708fe146102e4578063f2882461146102f757600080fd5b80638bc33af3146102275780638f7dcfa314610247578063a8769acb14610250578063b34711ab1461027757600080fd5b806356f90d79116100d357806356f90d79146101985780637227d785146101b857806374be2150146101cb5780637623ee291461020757600080fd5b80632073ee70146101055780632bcccca51461013f578063304b90711461015c5780634b4e4dff14610183575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60005461014c9060ff1681565b6040519015158152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101913660046145c1565b61031e565b005b61012c6101a6366004614636565b60026020526000908152604090205481565b61014c6101c636600461464f565b610371565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610136565b61012c610215366004614636565b60046020526000908152604090205481565b61012c610235366004614636565b60036020526000908152604090205481565b61012c60015481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610285366004614636565b60056020526000908152604090205481565b6101966102a5366004614708565b610489565b6102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610136565b61014c6102f236600461472c565b6105ca565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b8051600061032b826106be565b9050600061033c83602001516107f2565b9050600061034b8260016147fa565b905061035685610824565b821561036a5761036a818660400151610925565b5050505050565b600061037b614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160418082526108408201909352600092909182016108208036833701905050905060005b604181101561045d578481604181106104295761042961480d565b60200201518282815181106104405761044061480d565b60209081029190910101528061045581614823565b91505061040e565b5061046881836109a2565b60000361047a57600192505050610481565b6000925050505b949350505050565b6000610494826106be565b82519091506104a1610b92565b10156105005760405162461bcd60e51b8152602060048201526024808201527f55706461746520736c6f7420697320746f6f2066617220696e207468652066756044820152637475726560e01b60648201526084015b60405180910390fd5b600154826020015110156105615760405162461bcd60e51b815260206004820152602260248201527f55706461746520736c6f74206c657373207468616e2063757272656e74206865604482015261185960f21b60648201526084016104f7565b80156105825761057e826020015183606001518460800151610bee565b5050565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f756768207061727469636970616e747300000000000000000060448201526064016104f7565b60006105d4614294565b60408051808201825287518152602080890151818301529083528151608081018352875151818401908152885183015160608301528152825180840184528883018051518252518301518184015281830152838201528151808301835286518152868201518183015283830152815160018082528184019093526000929091828101908036833701905050905060005b60018110156106b35784816001811061067f5761067f61480d565b60200201518282815181106106965761069661480d565b6020908102919091010152806106ab81614823565b915050610664565b506104688183610cbb565b6000806106ce83600001516107f2565b6000818152600560205260408120549192500361074b5760405162461bcd60e51b815260206004820152603560248201527f53796e6320636f6d6d697474656520666f722063757272656e7420706572696f604482015274321034b9903737ba1034b734ba34b0b634bd32b21760591b60648201526084016104f7565b600a836040015110156107ba5760405162461bcd60e51b815260206004820152603160248201527f4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041526044820152702a24a1a4a820a72a299039b4b3b732b21760791b60648201526084016104f7565b6107c383610e46565b50506040015161ffff7f0000000000000000000000000000000000000000000000000000000000000000161090565b600061081e7f000000000000000000000000000000000000000000000000000000000000000083614852565b92915050565b60608101516108316142e5565b602083015160005b602081101561088f5761084e61010083614866565b8361085a83601f61487a565b6041811061086a5761086a61480d565b602002015261087b61010083614852565b91508061088781614823565b915050610839565b5083516060015160005b60208110156108ef576108ae61010083614866565b846108ba83604061487a565b604181106108ca576108ca61480d565b60200201526108db61010083614852565b9150806108e781614823565b915050610899565b5060408501516108fe9061115f565b61040084015283516020850151604086015161091c92919086610371565b61036a57600080fd5b6000828152600560205260409020541580159061095057506000828152600560205260409020548114155b156109635750506000805460ff19169055565b60008281526005602052604080822083905551829184917f783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f9190a35050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816109ce6112a7565b9050806080015151855160016109e491906147fa565b14610a265760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610b175783878281518110610a5957610a5961480d565b602002602001015110610aae5760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610b0382610afe8560800151846001610ac791906147fa565b81518110610ad757610ad761480d565b60200260200101518a8581518110610af157610af161480d565b6020026020010151613400565b613496565b915080610b0f81614823565b915050610a3d565b50610b40818360800151600081518110610b3357610b3361480d565b6020026020010151613496565b9050610b76610b52866000015161352f565b8660200151846000015185602001518587604001518b6040015189606001516135ce565b610b86576001935050505061081e565b50600095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610bdf7f00000000000000000000000000000000000000000000000000000000000000004261487a565b610be99190614852565b905090565b60008381526002602052604090205415610c27576000838152600260205260409020548214610c22576000805460ff191690555b505050565b60008381526004602052604090205415610c5f576000838152600460205260409020548114610c22576000805460ff19169055505050565b6001839055600083815260026020908152604080832085905560048252808320849055600390915280822042905551839185917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a3505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610ce7613759565b905080608001515185516001610cfd91906147fa565b14610d3f5760405162461bcd60e51b81526020600482015260126024820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b60448201526064016104f7565b604080518082019091526000808252602082018190525b8651811015610df45783878281518110610d7257610d7261480d565b602002602001015110610dc75760405162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c640060448201526064016104f7565b610de082610afe8560800151846001610ac791906147fa565b915080610dec81614823565b915050610d56565b50610e10818360800151600081518110610b3357610b3361480d565b9050610b76610e22866000015161352f565b8660200151846000015185602001518587604001518b604001518960600151613ae4565b6000610e55826000015161115f565b90506000610e66836020015161115f565b90506000610e77846040015161115f565b90506000610e8885600001516107f2565b600081815260056020908152604080832054815192830189905290820187905292935060029060600160408051601f1981840301815290829052610ecb9161488d565b602060405180830381855afa158015610ee8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f0b91906148bc565b90506002818860600151604051602001610f2f929190918252602082015260400190565b60408051601f1981840301815290829052610f499161488d565b602060405180830381855afa158015610f66573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f8991906148bc565b905060028185604051602001610fa9929190918252602082015260400190565b60408051601f1981840301815290829052610fc39161488d565b602060405180830381855afa158015610fe0573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061100391906148bc565b90506002818860800151604051602001611027929190918252602082015260400190565b60408051601f19818403018152908290526110419161488d565b602060405180830381855afa15801561105e573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061108191906148bc565b9050600281836040516020016110a1929190918252602082015260400190565b60408051601f19818403018152908290526110bb9161488d565b602060405180830381855afa1580156110d8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110fb91906148bc565b905060006111088261115f565b90506111196001600160fd1b61487a565b60a0890151604080516020808201835293909416808552825193830151918301519094929361114a929091846105ca565b61115357600080fd5b50505050505050505050565b60006008827eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008837fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1791506010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010837fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1791506020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020837fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17915060408277ffffffffffffffff0000000000000000ffffffffffffffff16901b60408377ffffffffffffffff0000000000000000ffffffffffffffff1916901c179150608082901b608083901c1791508160001b9050919050565b6112af614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f081ffbaf63754bc1a145b484f7a27c6e799a84f3a3966c7e85f9328d57a432e78185019081527f1823f1b56c4523a2f3d587eae4c49d16ba84fd47e2cc15d28869daee75c0ad63828401528152835180850185527e39d60aef946b208811537ce2e0a395e756e68509683904e8581dadd08d6b6c81527f0bde183126dc8a61e2affdcc5a5d41b99ea3662cb8e4ae7692f84aba6a61b9e4818501528184015290840152815160428082526108608201909352919082015b604080518082019091526000808252602082015281526020019060019003908161152a57505060808201908152604080518082019091527f0c185f1ea7418bbc8948b534a1b2bb4b3c1e2392a66c321688abf6f237ad25bd81527f08e198c15d499483567f326e3b5734e00ac38359392f50b54830705de945cfa06020820152905180516000906115bd576115bd61480d565b602002602001018190525060405180604001604052807f1f90ac19aca208ad92bfb4bc6c69460b7711654d0b511fb531329443fde844fd81526020017f1f7b3fe00ce573d0a53bd980d7ecebc00f18260f242b76ed9c04a23cc0b6848881525081608001516001815181106116345761163461480d565b602002602001018190525060405180604001604052807f16ad1d36dcd31e0b6b872d6b76edf1243af076fa1a7985d18ad460820bba1c4381526020017f2d187e157d473ebafbbde67c7c648c6823dcf69281be41d826f43a61098d1b3a81525081608001516002815181106116ab576116ab61480d565b602002602001018190525060405180604001604052807f013754db9fc1af20cc4d28a2f570eb2ae2ecea653d44562f298c041a1e30483c81526020017f13f80b71299846ab483c0ec012e7b588006a2798ec9487b4069a5b89466e515d81525081608001516003815181106117225761172261480d565b602002602001018190525060405180604001604052807f30012147362dfe30f9d738a7bdb4779e739a20e4bbdf9d08185ceac30427471d81526020017f05e2702344dd9f21d642423976ec90d1a1cc6b2dbb002fd670e223e0333a323b81525081608001516004815181106117995761179961480d565b602002602001018190525060405180604001604052807f1e4544057e1fa2c3d9a7b98a35cd7e488170cc8d1dd7f358f9fc1f151f194d1e81526020017f01abeb06148772ba12b7910297b9f42b26a6d70742168b1bf17cb71e3852c86f81525081608001516005815181106118105761181061480d565b602002602001018190525060405180604001604052807f260d127a7e240607e6545c9b0ded8137ff05d56a7adbc39791d42b6605a09c6781526020017f249e598e9183e2a2946615bd00f95d5aa55844d27fc82e597e902cfd3b5b4fc881525081608001516006815181106118875761188761480d565b602002602001018190525060405180604001604052807f2fdece479eae335f3ed26fac523621e593143ed86f83f4b6e2b61bf11418b9aa81526020017f14e84ff1ed1947180cab465e94d036258f8f093f52671fbcb3a03cfd28cc39c581525081608001516007815181106118fe576118fe61480d565b602002602001018190525060405180604001604052807f1b7a08a6f0eda5d4d6c820b37a685ecb436d3801892512d23aa92569489836db81526020017f1549a1b15962b4b4f8fca7df25eb44db26ebc2304025d61e0007dbf913a00c8f81525081608001516008815181106119755761197561480d565b602002602001018190525060405180604001604052807f10c8b2788f9f5acb12814b6e9bfb5089283830b99af8b61597ee26e2b2b4e54181526020017f0b33ac288c666fff95c8e52e13b8435d6b2c3b19715aee6676259f484387b61481525081608001516009815181106119ec576119ec61480d565b602002602001018190525060405180604001604052807f20086fd677f58ec067de827ae677e976ddeb8188b50ed87dab74f7d5a046fb8d81526020017f0895fb19b25da8bf8f348ff6d170f6e9c55ef6cd883f492ec50b74655b8aabe48152508160800151600a81518110611a6357611a6361480d565b602002602001018190525060405180604001604052807f1bf5431b670d0e6a87965eb5032ccfc7499df7d5644f55a0fb009b58abe1512f81526020017f251307c8769dc821db058112627207b7a1d76c4add8fa375d51db5517b7261dc8152508160800151600b81518110611ada57611ada61480d565b602002602001018190525060405180604001604052807f1229c91e36dee04e6fadd8d0142a20cabc1bb5129f32b3811cc3c05c4d014a7c81526020017f0ebee4cacdb93de594742b856ae152aee821654e2fb0a820fa385e33c9f3930f8152508160800151600c81518110611b5157611b5161480d565b602002602001018190525060405180604001604052807f064a3632895685cac8bd44a85b851c3ef0f6236b0414f0ae47eebd9aa905b4ec81526020017f2b5afabb351106c7b3aa6012858fb3c6006b7057eb4abebb63f640ff39d5d7cc8152508160800151600d81518110611bc857611bc861480d565b602002602001018190525060405180604001604052807f0f908fc07f599881da8a14cdad7730eaa5c8c000427c8cd0529bccbf1216661981526020017f0349b42333ed910b2255a991b948d14a7622dc993ab641d5ab309a14a909dbd28152508160800151600e81518110611c3f57611c3f61480d565b602002602001018190525060405180604001604052807f1b6d6fef86c857cee40fd60d8c8694645e19cc1997856e741f1c0e0afe91731081526020017f22404e5e1d1ed9755cfb646ebb21d2684dc9cf0de6f6f4ee14b81df0170772c78152508160800151600f81518110611cb657611cb661480d565b602002602001018190525060405180604001604052807f1d5f14362e065e9967264221c54c1fe00484fb5ba4204771e246e9d8e2ae97e681526020017f26aa5b46e6fd4442a7a8a4aa32bc89c7df945ca81b9c5fafd9cc665c59ee3a5f8152508160800151601081518110611d2d57611d2d61480d565b602002602001018190525060405180604001604052807f1305723a5d8f2c2d7c068e782987afd7bd884559776e936de6bbac61770989c181526020017f14cd0e752bb435a203433c40301ed26ac1c596670d3b393f95dc1da7f1a704058152508160800151601181518110611da457611da461480d565b602002602001018190525060405180604001604052807f029cbabd9a0e36f737c34cc61d4f3f5fd00e0176cde2d6a8d02a33520725930a81526020017f24b1e5eac57c4895ab1831e13e125e2d530759e0554c94c47cdd060c0d24ad9d8152508160800151601281518110611e1b57611e1b61480d565b602002602001018190525060405180604001604052807f1fdaf56fc3f15e84e669028ab720f17c8a1a43131c93ac66ad2785855f0636a781526020017f101367ee8537bb6e40f68da7ecd22cc27bf3b039e273bfa4e0889a77644c4fa58152508160800151601381518110611e9257611e9261480d565b602002602001018190525060405180604001604052807f26e7b761f9c9349a820b6f265d207595a4c46eae94e381e0d34295adce56d9d681526020017e89346cb404d99fab5a38c0a1ffca937270d8cedffe7790e43f3b4f0cbe5bf18152508160800151601481518110611f0857611f0861480d565b602002602001018190525060405180604001604052807f2c7dceafcd7c3c8af9f845956614809595c756f7a229dbd97c93dbecda9928ff81526020017f1ef86d199ba7aa1e34b3a63c7ebe9d6321936824e0d3c5c063fd532353f5bed38152508160800151601581518110611f7f57611f7f61480d565b602002602001018190525060405180604001604052807f1db08ce94a36fa802f539a60ae73857b7c56da4c9fe59ee1db07886843a1e13e81526020017f26ed3913b246e4d62758e160a0b7025832e026a10ea8ebaed0e2246fb73993d78152508160800151601681518110611ff657611ff661480d565b602002602001018190525060405180604001604052807f01636a5481ebe538ee1c398f559a5a3ca25ca5374bc08b6361f5d510936e748c81526020017f104d50194944aac2f36c50d53c62bace5f55b55708ee996cf5307305197cddb4815250816080015160178151811061206d5761206d61480d565b602002602001018190525060405180604001604052807f1ae314f9ecf9cfe277f346e4ab84cad818e09692a41ab4e12077326abb4b65a481526020017f0e7e319197d06b350b8e891b46bd367b87a3fa3646473f4ba0b13f110263ab8481525081608001516018815181106120e4576120e461480d565b602002602001018190525060405180604001604052807f15fb4c1f6cfafff21dadf5ad7ee8ce1c4f4ca8f3510bc4ccdb072ede9610718781526020017f2c43cef065002f9e3e1bd5008ccc154abb61aa9a8998bc1c2037c240647a05cb815250816080015160198151811061215b5761215b61480d565b602002602001018190525060405180604001604052807f2799023c82b0c8ea13964f101c80d0bff8355eae4ace890bd80343993e0ae1c481526020017f10ba509ab3f8c5ceafd6a94f040eeb44838fc3bb09467dc5047fbf28d5209ce58152508160800151601a815181106121d2576121d261480d565b602002602001018190525060405180604001604052807f16c23384e2441341a98531c9363033ea2f397734b03ab157e2d3350a800383bc81526020017f186ee2652fcfeafd32fc1fc498a3a557b88ca9a8f7a079daad66901ac81bd6578152508160800151601b815181106122495761224961480d565b602002602001018190525060405180604001604052807f26332965976c772ec9519a330c8925c1ea579a7afaf34e0853b229307957d06681526020017f1bec8b8225e04ddbf4d81cd2292fb8869e1670189adba5183c373aa4a2e88b038152508160800151601c815181106122c0576122c061480d565b602002602001018190525060405180604001604052807f2dcef9e4232462945edfcf282c6d46622549c490699a09ea75e878c17f39997981526020017f1b10aaae3115dfb31e317e8742366bfc10e3545a6c58d8d29510b81183eeef628152508160800151601d815181106123375761233761480d565b602002602001018190525060405180604001604052807f114d1d8f62a23df07b405646e4bc22b1dbcb5c30a3d14fc6d1f0bfc56e946d6481526020017f1a105012b99a1ef69addd9a37ebd168f5e926f59652200dfd81bbb6df90059518152508160800151601e815181106123ae576123ae61480d565b602002602001018190525060405180604001604052807f16ad365555143dbbc6edd78746b22d1a8c36d570cf2c8dcec78ec3b7b92006a681526020017f2dc9ece757eeb3a9a5c73b0fa93bd6912f62d373190876973ce77a3d769015628152508160800151601f815181106124255761242561480d565b602002602001018190525060405180604001604052807f10bdb935e0a83f3288b74aec36586157d96c14be6fd7d892d88bac500ae2ddad81526020017f0db0fb2317f7040c086613e348884377e241a6fc1ff06950088892f29eb1c2b7815250816080015160208151811061249c5761249c61480d565b602002602001018190525060405180604001604052807f22075082f5a9939cde5fdbc5cc9d1b24c8a76919259413c4603c2c9ae3dd053481526020017f1083d28dc9a805506ee600a41ce7ab90245753a0850cfe5fbfba845f8855d39b81525081608001516021815181106125135761251361480d565b602002602001018190525060405180604001604052807f04fb45f8e3393f3f2bec33f016e066a8d9a4db0312338730e04feb84de409bab81526020017f076fb28590fbd6736d9e7a3c8bee92f8840335ca1933ea8b138e1a5e88ccbd6f815250816080015160228151811061258a5761258a61480d565b602002602001018190525060405180604001604052807f27c476204812bc91df24cc551597d8961d0554b9394db61bc2fc11e574ec165681526020017f0242ef58b307be956117d23453ef691016c3c24d5f82772360c8bf3a0623d41881525081608001516023815181106126015761260161480d565b602002602001018190525060405180604001604052807f05bcd391353777652504c324832c34fb149b5f47732b72266e4786d87b894d9f81526020017f235f9b6bc8590d671533b15e9e4d3f24cb913fd9b12ee93d7f9d85f26e88d79481525081608001516024815181106126785761267861480d565b602002602001018190525060405180604001604052807f2645912441857c00f18d20417b85f75262dfbeadf84f9de9f73c48a101f38b3181526020017f26ac45b6b26ec2e6d1ad7e5a2e4349f3bdb6da67b151881f7a0408090096906f81525081608001516025815181106126ef576126ef61480d565b602002602001018190525060405180604001604052807f2b897340451fa6942e1ccfb552aaeba95e3212272d2d352d2a73a6d543a74cdc81526020017f1da4217277fddccdb106aee8e1a879df237c0842817b9e38b9a889454d7363d281525081608001516026815181106127665761276661480d565b602002602001018190525060405180604001604052807f16ba6ec88cfd8fb3b567950de8cac6327f8303108524d5ff56bfc40aadf1298181526020017f1c763c69d689b8306bccc3670727c97caec78cb6e500f6ffca61b27f96f1ad7281525081608001516027815181106127dd576127dd61480d565b602002602001018190525060405180604001604052807f21c27b1fb03651bf3cb6f14a56c968b70c3ca2d59ead05e387556805a175f9c181526020017eb2d10f7b548000104bbdfebcc3818da8f268d2e6518179c80196c6f8ab2f0481525081608001516028815181106128535761285361480d565b602002602001018190525060405180604001604052807f2963360d6b274ee4009993e71e464d9b67d60bd5ebc8b77f93b002e6e1a74f4b81526020017f26eef1be0306ae60879a4bed63269d742086e7590047c9d294a666d450665ba981525081608001516029815181106128ca576128ca61480d565b602002602001018190525060405180604001604052807f26a1963eb0febfe0e9147228011c5f23d5228f98f7bd7b48abab636a7b43282581526020017f186c2cf96c5efba832d86919538cffad728b690a999ad7865b23630b139bc2418152508160800151602a815181106129415761294161480d565b602002602001018190525060405180604001604052807f02805fe8c4f74c7bd1af67fc004bdc572b0476ec747bd206a69f1315ce170cb981526020017f20bc65b8df5cd49f6198f46db813ecaed841980f0e87baa1200b8f01975c6de78152508160800151602b815181106129b8576129b861480d565b602002602001018190525060405180604001604052807f075ebb277ded6bebfb100ddc5e20f66094142e02c06c16897872e5440d39128281526020017f02fbab6a92406edb96006f595a537eea2ffb04dacfac469c2bc3217b390fab978152508160800151602c81518110612a2f57612a2f61480d565b602002602001018190525060405180604001604052807f1ed1c6c90367329960a42d1e58f4af970b2cf3321beb52e250c5eba0d7a063d581526020017f072187e6da92135040017d380376ca89ffd689f146134093d97212e6a5e9ecf68152508160800151602d81518110612aa657612aa661480d565b602002602001018190525060405180604001604052807f2b976dd40cd66beb72ac6345676ebeaec22aa170742a389eec790093bd69cdbf81526020017f070b65eb513c318176fa538eefe77c88f02b188695aeee638214db6f53b70afb8152508160800151602e81518110612b1d57612b1d61480d565b602002602001018190525060405180604001604052807f24cb1f2432bed8cb514e9f4438b61e767e49565737438b45b0e0a66050088dc581526020017f27918ec01627729289304c6d79c8fd9eb06aeb58f5c47f3b923094a618441ccd8152508160800151602f81518110612b9457612b9461480d565b602002602001018190525060405180604001604052807f1f51c44f34d12849869a0e2cf525f7410e78fe05be1a605dd6b03d98c330b67d81526020017f033df715599f32cbc5f2d6f558a425bd913b89129bf05a7f44eba925d4dadc6f8152508160800151603081518110612c0b57612c0b61480d565b602002602001018190525060405180604001604052807f142a7c772647727c2560066d774128c5988fa1c7b1188a88cd53b58f5ca687a681526020017f2e1258339657e9c87bb109506f8a4a72533f307b4c1381b34a1b8bd0770ee27d8152508160800151603181518110612c8257612c8261480d565b602002602001018190525060405180604001604052807f248a3ca935380fb7705a9231bf4e96d9bd56abb4f033aea4bdc201427d47cd6381526020017f2df363c1782f03bfc9c202b2cb1eb63a8b3df7f749847f48899615312d246a7d8152508160800151603281518110612cf957612cf961480d565b602002602001018190525060405180604001604052807f2ef54017ac766421771a10a316067e3f72dbb08f7a704d0a3cb18a0da5ef05b681526020017f2fea998cb0147927da4515b37a8ebde387e6adfd195188ad6774459ac0b30adf8152508160800151603381518110612d7057612d7061480d565b602002602001018190525060405180604001604052807f11db735a04e3b4c9d7ba8d6a37efdaa23994e4cf0327cc792daa8c5211014f9181526020017f11535163983fb260c197f52ac9aa89aaf355efb9dad3aad42d17f89adcaed8638152508160800151603481518110612de757612de761480d565b602002602001018190525060405180604001604052807f2017f387b59c5c6e47c9193c085f2b358e640b43c0efd014987cee2cd2cebce181526020017f2dd0b8904079adb505d93cce9300d000fccd80089133d03265d496df36aef4088152508160800151603581518110612e5e57612e5e61480d565b602002602001018190525060405180604001604052807f05e6d6654ac843c8e1169fe55b0b2037c8ed1fb82704e9b25dd028189f0f382b81526020017f305e51977fb583c5ace4f7ae07bdb49d253fdc762816ddc3d127d8127f50223b8152508160800151603681518110612ed557612ed561480d565b602002602001018190525060405180604001604052807f0cb1da2395c5d94afc442c5558674e100983462af3a9661123233e94cc85864d81526020017f28a081b7cfb6f1b3861c98c6493903a23a6b8e72c8a69ec1a9e0a1ad178ad7598152508160800151603781518110612f4c57612f4c61480d565b602002602001018190525060405180604001604052807f11c0034b576435411e464624c7e922b7557631f3c49c986faac124f90b5c1d8081526020017f29bfd443533c8556f867dfe367a9a779031aa1901adcc6382bdb5ddd204351b08152508160800151603881518110612fc357612fc361480d565b602002602001018190525060405180604001604052807f254402d45d6ef32c13748d57197cbbd5dea85e58f0b742d4b07974bce73c12bf81526020017f01752980cc8b6a27b8805b6b3f08e6ba24c55d7be7f4d04b1fad91e6013b1ac7815250816080015160398151811061303a5761303a61480d565b602002602001018190525060405180604001604052807f2c30ef5598bce54d4a2f92a7c667f5fbc280e3c3615474a24e4210e109085dc081526020017f1eda46b5f7010302261dadf6588c5b84db5a78cba5a6a786c7956b4b7273253d8152508160800151603a815181106130b1576130b161480d565b602002602001018190525060405180604001604052807f22120e152738deac0c9376a3369764bd6a078e207489515a5b75681752c8c74081526020017f1ae7e0719d5052e16e1c119efaed27ccf9503d8a9807df78e5e227a60dab226a8152508160800151603b815181106131285761312861480d565b602002602001018190525060405180604001604052807f04c5fc76fbb4f3e2155c61ba703f08b42f7514f251f2cdb48bd007406d1a79de81526020017f0cff7fe0459d763301c08ace9c2954c2475983538e56a9500f1434b5a9716c908152508160800151603c8151811061319f5761319f61480d565b602002602001018190525060405180604001604052807f093ae82aa71c2cc010adb2c5986a5e6b04154ad75415152163a74529c879507a81526020017f161cfcb21613f247fb648baad9c7c20215fb34517b8aeee327f756548a825f528152508160800151603d815181106132165761321661480d565b602002602001018190525060405180604001604052807f21e776b3bb5b389f63d39ecd8e20d4f15f0a9c75795d62963d24eda268a42b9a81526020017f23031be05095731766a38484e85bdb577f999841368d8ea5812ff1ada765d46d8152508160800151603e8151811061328d5761328d61480d565b602002602001018190525060405180604001604052807f2185e37cebc843c0449335273043e2920e141d0cf48f367fd8e857f5d64fa2b681526020017f2f5b704b445b34caf65e5fc214112d01e617a7fd40070c7673bf28091dfc278c8152508160800151603f815181106133045761330461480d565b602002602001018190525060405180604001604052807f1a4dc8daf63f9748338fac8123ca5b346ec8f2760bc5809eda591f760d6464bb81526020017f1d963dc2cde9d4bc001c4fa140fce8386e9fa42666aade490931ce469fe5bb70815250816080015160408151811061337b5761337b61480d565b602002602001018190525060405180604001604052807f03ea2ef922aea40b927e35e5f3f03e441cdefaeb5e2cc43467d016c6a40886fb81526020017f027096550d04b560e795485d370b6b415c872aab042cf487e04ca0113198f86281525081608001516041815181106133f2576133f261480d565b602002602001018190525090565b604080518082019091526000808252602082015261341c614355565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061344b57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b60448201526064016104f7565b505092915050565b60408051808201909152600080825260208201526134b2614373565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806134ec57fe5b508061348e5760405162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b60448201526064016104f7565b604080518082019091526000808252602082015281517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561357657506020830151155b156135965750506040805180820190915260008082526020820152919050565b6040518060400160405280846000015181526020018285602001516135bb9190614866565b6135c5908461487a565b90529392505050565b60408051600480825260a08201909252600091829190816020015b60408051808201909152600080825260208201528152602001906001900390816135e957505060408051600480825260a0820190925291925060009190602082015b613633614391565b81526020019060019003908161362b5790505090508a8260008151811061365c5761365c61480d565b6020026020010181905250888260018151811061367b5761367b61480d565b6020026020010181905250868260028151811061369a5761369a61480d565b602002602001018190525084826003815181106136b9576136b961480d565b602002602001018190525089816000815181106136d8576136d861480d565b602002602001018190525087816001815181106136f7576136f761480d565b602002602001018190525085816002815181106137165761371661480d565b602002602001018190525083816003815181106137355761373561480d565b602002602001018190525061374a8282613c60565b9b9a5050505050505050505050565b613761614304565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f14399a918550d748b6fd3ed36d60643cd690b024759f9f38bd5b3e04e07c833a8185019081527f170e53f30bbc1d546e7d4f6eddc734c9d2a51d6b697cc2ca69398b455e8124fc828401528152835180850185527f048d5b27add7de76d699d515632043c93fa82f3d37b7f22f052412906a479ffc81527f1308539799f7f1f53e9190d1fdafb18dc0f9269ac783b67c83244ca2f610c60a818501528184015281850152825160028082529181019093529082015b60408051808201909152600080825260208201528152602001906001900390816139da57505060808201908152604080518082019091527f2ea4aba81d2ca82fdbb6b7a71047b58a997df0d0b7e9c92cdb3ab6be7b2aea5281527f0783b4f84ad8390440cbf1f175ccb50fbc7aa73de097eed53dffd8d4545fad91602082015290518051600090613a6d57613a6d61480d565b602002602001018190525060405180604001604052807f269664be903c2510bbebdd1a0e8a27378f9a61012bad3624d3833412894d3dcd81526020017f267587b5874ab4dd5eeace61bd60bbdbe528206aa801b7e2207b9c6bdeb1515681525081608001516001815181106133f2576133f261480d565b60408051600480825260a08201909252600091829190816020015b6040805180820190915260008082526020820152815260200190600190039081613aff57505060408051600480825260a0820190925291925060009190602082015b613b49614391565b815260200190600190039081613b415790505090508a82600081518110613b7257613b7261480d565b60200260200101819052508882600181518110613b9157613b9161480d565b60200260200101819052508682600281518110613bb057613bb061480d565b60200260200101819052508482600381518110613bcf57613bcf61480d565b60200260200101819052508981600081518110613bee57613bee61480d565b60200260200101819052508781600181518110613c0d57613c0d61480d565b60200260200101819052508581600281518110613c2c57613c2c61480d565b60200260200101819052508381600381518110613c4b57613c4b61480d565b602002602001018190525061374a8282613fb8565b60008151835114613cac5760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b82516000613cbb8260066148d5565b905060008167ffffffffffffffff811115613cd857613cd86143ed565b604051908082528060200260200182016040528015613d01578160200160208202803683370190505b50905060005b83811015613f3c57868181518110613d2157613d2161480d565b60200260200101516000015182826006613d3b91906148d5565b613d469060006147fa565b81518110613d5657613d5661480d565b602002602001018181525050868181518110613d7457613d7461480d565b60200260200101516020015182826006613d8e91906148d5565b613d999060016147fa565b81518110613da957613da961480d565b602002602001018181525050858181518110613dc757613dc761480d565b6020908102919091010151515182613de08360066148d5565b613deb9060026147fa565b81518110613dfb57613dfb61480d565b602002602001018181525050858181518110613e1957613e1961480d565b60209081029190910181015151015182613e348360066148d5565b613e3f9060036147fa565b81518110613e4f57613e4f61480d565b602002602001018181525050858181518110613e6d57613e6d61480d565b602002602001015160200151600060028110613e8b57613e8b61480d565b602002015182613e9c8360066148d5565b613ea79060046147fa565b81518110613eb757613eb761480d565b602002602001018181525050858181518110613ed557613ed561480d565b602002602001015160200151600160028110613ef357613ef361480d565b602002015182613f048360066148d5565b613f0f9060056147fa565b81518110613f1f57613f1f61480d565b602090810291909101015280613f3481614823565b915050613d07565b50613f456143b1565b6000602082602086026020860160086107d05a03fa90508080613f6457fe5b5080613faa5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104f7565b505115159695505050505050565b600081518351146140045760405162461bcd60e51b81526020600482015260166024820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b60448201526064016104f7565b825160006140138260066148d5565b905060008167ffffffffffffffff811115614030576140306143ed565b604051908082528060200260200182016040528015614059578160200160208202803683370190505b50905060005b83811015613f3c578681815181106140795761407961480d565b6020026020010151600001518282600661409391906148d5565b61409e9060006147fa565b815181106140ae576140ae61480d565b6020026020010181815250508681815181106140cc576140cc61480d565b602002602001015160200151828260066140e691906148d5565b6140f19060016147fa565b815181106141015761410161480d565b60200260200101818152505085818151811061411f5761411f61480d565b60209081029190910101515151826141388360066148d5565b6141439060026147fa565b815181106141535761415361480d565b6020026020010181815250508581815181106141715761417161480d565b6020908102919091018101515101518261418c8360066148d5565b6141979060036147fa565b815181106141a7576141a761480d565b6020026020010181815250508581815181106141c5576141c561480d565b6020026020010151602001516000600281106141e3576141e361480d565b6020020151826141f48360066148d5565b6141ff9060046147fa565b8151811061420f5761420f61480d565b60200260200101818152505085818151811061422d5761422d61480d565b60200260200101516020015160016002811061424b5761424b61480d565b60200201518261425c8360066148d5565b6142679060056147fa565b815181106142775761427761480d565b60209081029190910101528061428c81614823565b91505061405f565b6040805160a0810190915260006060820181815260808301919091528152602081016142be614391565b81526020016142e0604051806040016040528060008152602001600081525090565b905290565b6040518061082001604052806041906020820280368337509192915050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161432e614391565b815260200161433b614391565b8152602001614348614391565b8152602001606081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806143a46143cf565b81526020016142e06143cf565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614426576144266143ed565b60405290565b600082601f83011261443d57600080fd5b614445614403565b80604084018581111561445757600080fd5b845b81811015614471578035845260209384019301614459565b509095945050505050565b600082601f83011261448d57600080fd5b614495614403565b8060808401858111156144a757600080fd5b845b81811015614471576144bb878261442c565b84526020909301926040016144a9565b600061010082840312156144de57600080fd5b6040516060810181811067ffffffffffffffff82111715614501576145016143ed565b604052905080614511848461442c565b8152614520846040850161447c565b60208201526145328460c0850161442c565b60408201525092915050565b60006101a0828403121561455157600080fd5b60405160c0810181811067ffffffffffffffff82111715614574576145746143ed565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201526145b58460a085016144cb565b60a08201525092915050565b60006102e082840312156145d457600080fd5b6040516080810181811067ffffffffffffffff821117156145f7576145f76143ed565b604052614604848461453e565b81526101a083013560208201526101c0830135604082015261462a846101e085016144cb565b60608201529392505050565b60006020828403121561464857600080fd5b5035919050565b60008060008061092080868803121561466757600080fd5b614671878761442c565b9450614680876040880161447c565b935061468f8760c0880161442c565b92508661011f8701126146a157600080fd5b604051610820810181811067ffffffffffffffff821117156146c5576146c56143ed565b6040529086019080888311156146da57600080fd5b61010088015b838110156146f85780358252602091820191016146e0565b5050809250505092959194509250565b60006101a0828403121561471b57600080fd5b614725838361453e565b9392505050565b60008060008061012080868803121561474457600080fd5b61474e878761442c565b945061475d876040880161447c565b935061476c8760c0880161442c565b92508661011f87011261477e57600080fd5b604051602080820182811067ffffffffffffffff821117156147a2576147a26143ed565b6040529187019181898411156147b757600080fd5b61010089015b848110156147d457803582529082019082016147bd565b5096999598509396509450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561081e5761081e6147e4565b634e487b7160e01b600052603260045260246000fd5b600060018201614835576148356147e4565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148615761486161483c565b500490565b6000826148755761487561483c565b500690565b8181038181111561081e5761081e6147e4565b6000825160005b818110156148ae5760208186018101518583015201614894565b506000920191825250919050565b6000602082840312156148ce57600080fd5b5051919050565b60008160001904831182151516156148ef576148ef6147e4565b50029056fea26469706673582212209f84a49f056fdb36cb945939f807bac03eb8ff718511bf0c393d9a79efa23c4e64736f6c63430008100033", - "sourceMap": "953:8548:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:41;;;;;;;;160:25:146;;;148:2;133:18;1170:41:114;;;;;;;;1711:29;;;;;;;;;;;;361:14:146;;354:22;336:41;;324:2;309:18;1711:29:114;196:187:146;1123:41:114;;;;;4310:457;;;;;;:::i;:::-;;:::i;:::-;;1918:42;;;;;;:::i;:::-;;;;;;;;;;;;;;26374:712:115;;;;;;:::i;:::-;;:::i;1217:39:114:-;;;;;;;;5564:10:146;5552:23;;;5534:42;;5522:2;5507:18;1217:39:114;5390:192:146;2218:54:114;;;;;;:::i;:::-;;;;;;;;;;;;;;2076:45;;;;;;:::i;:::-;;;;;;;;;;;;;;1824:23;;;;;;1026:48;;;;;2365:57;;;;;;:::i;:::-;;;;;;;;;;;;;;3551:577;;;;;;:::i;:::-;;:::i;1262:42::-;;;;;;;;6011:6:146;5999:19;;;5981:38;;5969:2;5954:18;1262:42:114;5837:188:146;11270:699:116;;;;;;:::i;:::-;;:::i;1080:37:114:-;;;;;4310:457;4414:11;;4378:33;4452:24;4414:11;4452;:24::i;:::-;4435:41;;4486:21;4510:48;4533:10;:24;;;4510:22;:48::i;:::-;4486:72;-1:-1:-1;4568:18:114;4589:17;4486:72;4605:1;4589:17;:::i;:::-;4568:38;;4617:27;4637:6;4617:19;:27::i;:::-;4659:9;4655:106;;;4684:66;4709:10;4721:6;:28;;;4684:24;:66::i;:::-;4368:399;;;;4310:457;:::o;26374:712:115:-;26552:6;26570:24;;:::i;:::-;26614:33;;;;;;;;26636:4;;26614:33;;26636:4;26642;;;;26614:33;;;;26604:43;;;26667:61;;;;;;;26690:4;;:7;26667:61;;;;;;26699:4;;:7;;;26667:61;;;;;;;;;;;;;26710:4;;;;;:7;26667:61;;26719:4;:7;;;26667:61;;;;-1:-1:-1;;;26667:61:115;26657:7;;;:71;26748:33;;;;;;;26770:4;;26748:33;;26776:4;;;;26748:33;;;;26738:7;;;:43;26822:24;;26833:12;26822:24;;;;;;;;;-1:-1:-1;;26822:24:115;;;;;;;;;;;-1:-1:-1;26822:24:115;26791:55;;26861:9;26856:93;26880:12;26876:1;:16;26856:93;;;26930:5;26936:1;26930:8;;;;;;;:::i;:::-;;;;;26913:11;26925:1;26913:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;26894:3;;;;:::i;:::-;;;;26856:93;;;;26962:32;26975:11;26988:5;26962:12;:32::i;:::-;26998:1;26962:37;26958:122;;27022:4;27015:11;;;;;;26958:122;27064:5;27057:12;;;;26374:712;;;;;;;:::o;3551:577:114:-;3615:14;3632:19;3644:6;3632:11;:19::i;:::-;3685;;3615:36;;-1:-1:-1;3666:16:114;:14;:16::i;:::-;:38;3662:115;;;3720:46;;-1:-1:-1;;;3720:46:114;;7934:2:146;3720:46:114;;;7916:21:146;7973:2;7953:18;;;7946:30;8012:34;7992:18;;;7985:62;-1:-1:-1;;;8063:18:146;;;8056:34;8107:19;;3720:46:114;;;;;;;;3662:115;3814:4;;3791:6;:20;;;:27;3787:102;;;3834:44;;-1:-1:-1;;;3834:44:114;;8339:2:146;3834:44:114;;;8321:21:146;8378:2;8358:18;;;8351:30;8417:34;8397:18;;;8390:62;-1:-1:-1;;;8468:18:146;;;8461:32;8510:19;;3834:44:114;8137:398:146;3787:102:114;3903:9;3899:223;;;3928:119;3958:6;:20;;;3980:6;:26;;;4008:6;:25;;;3928:12;:119::i;:::-;3605:523;3551:577;:::o;3899:223::-;4078:33;;-1:-1:-1;;;4078:33:114;;8742:2:146;4078:33:114;;;8724:21:146;8781:2;8761:18;;;8754:30;8820:25;8800:18;;;8793:53;8863:18;;4078:33:114;8540:347:146;11270:699:116;11445:6;11463:22;;:::i;:::-;11505:31;;;;;;;;11525:4;;11505:31;;11525:4;11531;;;;11505:31;;;;11495:41;;;11556:59;;;;;;;11577:4;;:7;11556:59;;;;;;11586:4;;:7;;;11556:59;;;;;;;;;;;;;11597:4;;;;;:7;11556:59;;11606:4;:7;;;11556:59;;;;-1:-1:-1;;;11556:59:116;11546:7;;;:69;11635:31;;;;;;;11655:4;;11635:31;;11661:4;;;;11635:31;;;;11625:7;;;:41;11707:24;;11533:1;11707:24;;;;;;;;;-1:-1:-1;;11707:24:116;;;;;;11525:4;11707:24;;;;;-1:-1:-1;11707:24:116;11676:55;;11746:9;11741:93;11765:12;11761:1;:16;11741:93;;;11815:5;11821:1;11815:8;;;;;;;:::i;:::-;;;;;11798:11;11810:1;11798:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;11779:3;;;;:::i;:::-;;;;11741:93;;;;11847:30;11858:11;11871:5;11847:10;:30::i;4850:556:114:-;4925:4;4941:21;4965:43;4988:6;:19;;;4965:22;:43::i;:::-;5023:37;;;;:22;:37;;;;;;4941:67;;-1:-1:-1;5023:42:114;5019:286;;5081:63;;-1:-1:-1;;;5081:63:114;;9094:2:146;5081:63:114;;;9076:21:146;9133:2;9113:18;;;9106:30;9172:34;9152:18;;;9145:62;-1:-1:-1;;;9223:18:146;;;9216:51;9284:19;;5081:63:114;8892:417:146;5019:286:114;1371:2;5165:6;:20;;;:54;5161:144;;;5235:59;;-1:-1:-1;;;5235:59:114;;9516:2:146;5235:59:114;;;9498:21:146;9555:2;9535:18;;;9528:30;9594:34;9574:18;;;9567:62;-1:-1:-1;;;9645:18:146;;;9638:47;9702:19;;5235:59:114;9314:413:146;5161:144:114;5315:25;5333:6;5315:17;:25::i;:::-;-1:-1:-1;;5358:20:114;;;:41;5381:18;5358:41;-1:-1:-1;5358:41:114;4850:556::o;7603:125::-;7672:7;7698:23;7705:16;7698:4;:23;:::i;:::-;7691:30;7603:125;-1:-1:-1;;7603:125:114:o;6655:882::-;6769:12;;;;6791:25;;:::i;:::-;6869:23;;;;6827:31;6903:183;6927:2;6923:1;:6;6903:183;;;6971:32;6997:6;6971:23;:32;:::i;:::-;6950:6;6957:10;6966:1;6957:6;:10;:::i;:::-;6950:18;;;;;;;:::i;:::-;;;;:53;7043:32;7069:6;7043:23;:32;:::i;:::-;7017:58;-1:-1:-1;6931:3:114;;;;:::i;:::-;;;;6903:183;;;-1:-1:-1;7140:11:114;;:31;;;7095:34;7182:188;7206:2;7202:1;:6;7182:188;;;7246:35;7275:6;7246:26;:35;:::i;:::-;7229:6;7236;7241:1;7236:2;:6;:::i;:::-;7229:14;;;;;;;:::i;:::-;;;;:52;7324:35;7353:6;7324:26;:35;:::i;:::-;7295:64;-1:-1:-1;7210:3:114;;;;:::i;:::-;;;;7182:188;;;-1:-1:-1;7427:28:114;;;;7400:57;;:18;:57::i;:::-;7379:10;;;:79;7495:7;;7386:2;7504:7;;;7513;;;;7477:52;;7495:7;7504;7379:6;7477:17;:52::i;:::-;7469:61;;;;;9106:393;9252:1;9210:30;;;:22;:30;;;;;;:44;;;;:106;;-1:-1:-1;9274:30:114;;;;:22;:30;;;;;;:42;;;9210:106;9193:197;;;-1:-1:-1;;9354:5:114;9341:18;;-1:-1:-1;;9341:18:114;;;9106:393::o;9193:197::-;9399:30;;;;:22;:30;;;;;;:41;;;9455:37;9432:8;;9422:6;;9455:37;;9399:30;9455:37;9106:393;;:::o;25166:1155:115:-;25285:7;25349:77;25285:7;25467:20;:18;:20::i;:::-;25436:51;;25525:2;:5;;;:12;25505:5;:12;25520:1;25505:16;;;;:::i;:::-;:32;25497:63;;;;-1:-1:-1;;;25497:63:115;;10441:2:146;25497:63:115;;;10423:21:146;10480:2;10460:18;;;10453:30;-1:-1:-1;;;10499:18:146;;;10492:48;10557:18;;25497:63:115;10239:342:146;25497:63:115;25653:27;;;;;;;;;25617:33;25653:27;;;;;;;;;25690:240;25714:5;:12;25710:1;:16;25690:240;;;25766:18;25755:5;25761:1;25755:8;;;;;;;;:::i;:::-;;;;;;;:29;25747:73;;;;-1:-1:-1;;;25747:73:115;;10788:2:146;25747:73:115;;;10770:21:146;10827:2;10807:18;;;10800:30;10866:33;10846:18;;;10839:61;10917:18;;25747:73:115;10586:355:146;25747:73:115;25841:78;25864:4;25870:48;25895:2;:5;;;25901:1;25905;25901:5;;;;:::i;:::-;25895:12;;;;;;;;:::i;:::-;;;;;;;25909:5;25915:1;25909:8;;;;;;;;:::i;:::-;;;;;;;25870:24;:48::i;:::-;25841:22;:78::i;:::-;25834:85;-1:-1:-1;25728:3:115;;;;:::i;:::-;;;;25690:240;;;;25946:38;25969:4;25975:2;:5;;;25981:1;25975:8;;;;;;;;:::i;:::-;;;;;;;25946:22;:38::i;:::-;25939:45;;26012:265;26056:29;26077:5;:7;;;26056:20;:29::i;:::-;26103:5;:7;;;26128:2;:8;;;26154:2;:8;;;26180:4;26202:2;:9;;;26229:5;:7;;;26254:2;:9;;;26012:26;:265::i;:::-;25994:302;;26295:1;26288:8;;;;;;;25994:302;-1:-1:-1;26313:1:115;;25166:1155;-1:-1:-1;;;;;25166:1155:115:o;7818:133:114:-;7867:7;7928:16;7894:30;7912:12;7894:15;:30;:::i;:::-;7893:51;;;;:::i;:::-;7886:58;;7818:133;:::o;8310:721::-;8463:1;8438:13;;;:7;:13;;;;;;:27;8434:170;;8485:13;;;;:7;:13;;;;;;:36;;8481:93;;8554:5;8541:18;;-1:-1:-1;;8541:18:114;;;8481:93;8310:721;;;:::o;8434:170::-;8654:1;8617:25;;;:19;:25;;;;;;:39;8613:193;;8676:25;;;;:19;:25;;;;;;:47;;8672:104;;8756:5;8743:18;;-1:-1:-1;;8743:18:114;;;8310:721;;;:::o;8613:193::-;8816:4;:11;;;8837:13;;;;:7;:13;;;;;;;;:35;;;8882:19;:25;;;;;:46;;;8938:10;:16;;;;;;8957:15;8938:34;;8987:37;8853:19;;8823:4;;8987:37;;8837:13;8987:37;8310:721;;;:::o;10084:1133:116:-;10199:7;10263:77;10199:7;10379:18;:16;:18::i;:::-;10350:47;;10435:2;:5;;;:12;10415:5;:12;10430:1;10415:16;;;;:::i;:::-;:32;10407:63;;;;-1:-1:-1;;;10407:63:116;;10441:2:146;10407:63:116;;;10423:21:146;10480:2;10460:18;;;10453:30;-1:-1:-1;;;10499:18:146;;;10492:48;10557:18;;10407:63:116;10239:342:146;10407:63:116;10561:25;;;;;;;;;10527:31;10561:25;;;;;;;;;10596:236;10620:5;:12;10616:1;:16;10596:236;;;10672:18;10661:5;10667:1;10661:8;;;;;;;;:::i;:::-;;;;;;;:29;10653:73;;;;-1:-1:-1;;;10653:73:116;;10788:2:146;10653:73:116;;;10770:21:146;10827:2;10807:18;;;10800:30;10866:33;10846:18;;;10839:61;10917:18;;10653:73:116;10586:355:146;10653:73:116;10747:74;10768:4;10774:46;10797:2;:5;;;10803:1;10807;10803:5;;;;:::i;10747:74::-;10740:81;-1:-1:-1;10634:3:116;;;;:::i;:::-;;;;10596:236;;;;10848:36;10869:4;10875:2;:5;;;10881:1;10875:8;;;;;;;;:::i;10848:36::-;10841:43;;10912:261;10954:27;10973:5;:7;;;10954:18;:27::i;:::-;10999:5;:7;;;11024:2;:8;;;11050:2;:8;;;11076:4;11098:2;:9;;;11125:5;:7;;;11150:2;:9;;;10912:24;:261::i;5509:1064:114:-;5591:22;5616:39;5635:6;:19;;;5616:18;:39::i;:::-;5591:64;;5665:23;5691:40;5710:6;:20;;;5691:18;:40::i;:::-;5665:66;;5741:23;5767:40;5786:6;:20;;;5767:18;:40::i;:::-;5741:66;;5817:21;5841:43;5864:6;:19;;;5841:22;:43::i;:::-;5894:29;5926:37;;;:22;:37;;;;;;;;;6004:45;;;;;11103:19:146;;;11138:12;;;11131:28;;;5926:37:114;;-1:-1:-1;5997:53:114;;11175:12:146;;6004:45:114;;;-1:-1:-1;;6004:45:114;;;;;;;;;;5997:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5993:57;;6064:51;6084:1;6087:6;:26;;;6071:43;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6071:43:114;;;;-1:-1:-1;;6071:43:114;;;;;;;;;;6064:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6060:55;;6129:40;6149:1;6152:15;6136:32;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6136:32:114;;;;-1:-1:-1;;6136:32:114;;;;;;;;;;6129:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6125:44;;6183:50;6203:1;6206:6;:25;;;6190:42;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6190:42:114;;;;-1:-1:-1;;6190:42:114;;;;;;;;;;6183:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:54;;6247:46;6267:1;6270:21;6254:38;;;;;;;;11103:19:146;;;11147:2;11138:12;;11131:28;11184:2;11175:12;;10946:247;6254:38:114;;;;-1:-1:-1;;6254:38:114;;;;;;;;;;6247:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6243:50;-1:-1:-1;6303:9:114;6323:30;6243:50;6323:18;:30::i;:::-;6315:39;-1:-1:-1;6373:23:114;6395:1;-1:-1:-1;;;6373:23:114;:::i;:::-;6436:12;;;;6458:39;;;;;;;;;6368:29;;;;6458:39;;;6531:7;;6540;;;;6549;;;;6368:29;;6436:12;;6515:50;;6531:7;;6458:39;6515:15;:50::i;:::-;6507:59;;;;;;5581:992;;;;;;;;;5509:1064;:::o;385:892:110:-;443:7;637:1;562;566:66;562:70;561:77;;543:1;468;472:66;468:70;467:77;;466:173;462:177;;825:2;750:1;754:66;750:70;749:78;;730:2;655:1;659:66;655:70;654:78;;653:175;649:179;;1014:2;939:1;943:66;939:70;938:78;;919:2;844:1;848:66;844:70;843:78;;842:175;838:179;;1203:2;1128:1;1132:66;1128:70;1127:78;;1108:2;1033:1;-1:-1:-1;;1033:70:110;1032:78;;1031:175;1027:179;;1239:3;1234:1;:8;;1226:3;1221:1;:8;;1220:23;1216:27;;1268:1;1260:10;;1253:17;;385:892;;;:::o;7822:17338:115:-;7875:28;;:::i;:::-;7926:212;;;;;;;;7961:77;7926:212;;8052:76;7926:212;;;;;;;;7915:223;;;8160:465;;;;;;;;8213:76;8160:465;;;;;;8307:76;8160:465;;;;;;;;;;;;;;;;;;8429:77;8160:465;;8524:77;8160:465;;;;-1:-1:-1;;;8160:465:115;8149:8;;;:476;;;;8647:465;;;;;;;8700:77;8647:465;;;;;;8795:77;8647:465;;;;;;;;;;;;;8918:76;8647:465;;9012:76;8647:465;;;;-1:-1:-1;;;8647:465:115;8635:9;;;:477;9134:463;;;;;;;9187:76;9134:463;;;;;;9281:77;9134:463;;;;;;;;;;;;;9404:75;9134:463;;9497:76;9134:463;;;;-1:-1:-1;;;9134:463:115;9122:9;;;:475;9615:31;;9643:2;9615:31;;;;;;;;;;9643:2;9615:31;;;-1:-1:-1;;;;;;;;;;;;;;;;;9615:31:115;;;;;;;;;;;;-1:-1:-1;;9607:5:115;;;:39;;;9668:211;;;;;;;;;9703:76;9668:211;;9793:76;9668:211;;;;9657:5;;:8;;-1:-1:-1;;9657:8:115;;;;:::i;:::-;;;;;;:222;;;;9901:213;;;;;;;;9936:77;9901:213;;;;10027:77;9901:213;;;9890:2;:5;;;9896:1;9890:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10136:213;;;;;;;;10171:77;10136:213;;;;10262:77;10136:213;;;10125:2;:5;;;10131:1;10125:8;;;;;;;;:::i;:::-;;;;;;:224;;;;10371:210;;;;;;;;10406:75;10371:210;;;;10495:76;10371:210;;;10360:2;:5;;;10366:1;10360:8;;;;;;;;:::i;:::-;;;;;;:221;;;;10603:212;;;;;;;;10638:77;10603:212;;;;10729:76;10603:212;;;10592:2;:5;;;10598:1;10592:8;;;;;;;;:::i;:::-;;;;;;:223;;;;10837:211;;;;;;;;10872:77;10837:211;;;;10963:75;10837:211;;;10826:2;:5;;;10832:1;10826:8;;;;;;;;:::i;:::-;;;;;;:222;;;;11070:213;;;;;;;;11105:77;11070:213;;;;11196:77;11070:213;;;11059:2;:5;;;11065:1;11059:8;;;;;;;;:::i;:::-;;;;;;:224;;;;11305:212;;;;;;;;11340:77;11305:212;;;;11431:76;11305:212;;;11294:2;:5;;;11300:1;11294:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11539:212;;;;;;;;11574:77;11539:212;;;;11665:76;11539:212;;;11528:2;:5;;;11534:1;11528:8;;;;;;;;:::i;:::-;;;;;;:223;;;;11773:211;;;;;;;;11808:76;11773:211;;;;11898:76;11773:211;;;11762:2;:5;;;11768:1;11762:8;;;;;;;;:::i;:::-;;;;;;:222;;;;12007:212;;;;;;;;12042:77;12007:212;;;;12133:76;12007:212;;;11995:2;:5;;;12001:2;11995:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12242:213;;;;;;;;12277:77;12242:213;;;;12368:77;12242:213;;;12230:2;:5;;;12236:2;12230:9;;;;;;;;:::i;:::-;;;;;;:225;;;;12478:211;;;;;;;;12513:76;12478:211;;;;12603:76;12478:211;;;12466:2;:5;;;12472:2;12466:9;;;;;;;;:::i;:::-;;;;;;:223;;;;12712:212;;;;;;;;12747:76;12712:212;;;;12837:77;12712:212;;;12700:2;:5;;;12706:2;12700:9;;;;;;;;:::i;:::-;;;;;;:224;;;;12947:211;;;;;;;;12982:76;12947:211;;;;13072:76;12947:211;;;12935:2;:5;;;12941:2;12935:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13181:213;;;;;;;;13216:77;13181:213;;;;13307:77;13181:213;;;13169:2;:5;;;13175:2;13169:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13417:213;;;;;;;;13452:77;13417:213;;;;13543:77;13417:213;;;13405:2;:5;;;13411:2;13405:9;;;;;;;;:::i;:::-;;;;;;:225;;;;13653:211;;;;;;;;13688:76;13653:211;;;;13778:76;13653:211;;;13641:2;:5;;;13647:2;13641:9;;;;;;;;:::i;:::-;;;;;;:223;;;;13887:212;;;;;;;;13922:76;13887:212;;;;14012:77;13887:212;;;13875:2;:5;;;13881:2;13875:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14122:212;;;;;;;;14157:77;14122:212;;;;14248:76;14122:212;;;14110:2;:5;;;14116:2;14110:9;;;;;;;;:::i;:::-;;;;;;:224;;;;14357:211;;;;;;;;14392:77;14357:211;;;;14483:75;14357:211;;;14345:2;:5;;;14351:2;14345:9;;;;;;;;:::i;:::-;;;;;;:223;;;;14591:213;;;;;;;;14626:77;14591:213;;;;14717:77;14591:213;;;14579:2;:5;;;14585:2;14579:9;;;;;;;;:::i;:::-;;;;;;:225;;;;14827:213;;;;;;;;14862:77;14827:213;;;;14953:77;14827:213;;;14815:2;:5;;;14821:2;14815:9;;;;;;;;:::i;:::-;;;;;;:225;;;;15063:210;;;;;;;;15098:75;15063:210;;;;15187:76;15063:210;;;15051:2;:5;;;15057:2;15051:9;;;;;;;;:::i;:::-;;;;;;:222;;;;15296:212;;;;;;;;15331:77;15296:212;;;;15422:76;15296:212;;;15284:2;:5;;;15290:2;15284:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15531:212;;;;;;;;15566:76;15531:212;;;;15656:77;15531:212;;;15519:2;:5;;;15525:2;15519:9;;;;;;;;:::i;:::-;;;;;;:224;;;;15766:212;;;;;;;;15801:77;15766:212;;;;15892:76;15766:212;;;15754:2;:5;;;15760:2;15754:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16001:213;;;;;;;;16036:77;16001:213;;;;16127:77;16001:213;;;15989:2;:5;;;15995:2;15989:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16237:213;;;;;;;;16272:77;16237:213;;;;16363:77;16237:213;;;16225:2;:5;;;16231:2;16225:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16473:213;;;;;;;;16508:77;16473:213;;;;16599:77;16473:213;;;16461:2;:5;;;16467:2;16461:9;;;;;;;;:::i;:::-;;;;;;:225;;;;16709:212;;;;;;;;16744:76;16709:212;;;;16834:77;16709:212;;;16697:2;:5;;;16703:2;16697:9;;;;;;;;:::i;:::-;;;;;;:224;;;;16944:213;;;;;;;;16979:77;16944:213;;;;17070:77;16944:213;;;16932:2;:5;;;16938:2;16932:9;;;;;;;;:::i;:::-;;;;;;:225;;;;17180:211;;;;;;;;17215:76;17180:211;;;;17305:76;17180:211;;;17168:2;:5;;;17174:2;17168:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17414:212;;;;;;;;17449:77;17414:212;;;;17540:76;17414:212;;;17402:2;:5;;;17408:2;17402:9;;;;;;;;:::i;:::-;;;;;;:224;;;;17649:211;;;;;;;;17684:76;17649:211;;;;17774:76;17649:211;;;17637:2;:5;;;17643:2;17637:9;;;;;;;;:::i;:::-;;;;;;:223;;;;17883:212;;;;;;;;17918:77;17883:212;;;;18009:76;17883:212;;;17871:2;:5;;;17877:2;17871:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18118:212;;;;;;;;18153:76;18118:212;;;;18243:77;18118:212;;;18106:2;:5;;;18112:2;18106:9;;;;;;;;:::i;:::-;;;;;;:224;;;;18353:213;;;;;;;;18388:77;18353:213;;;;18479:77;18353:213;;;18341:2;:5;;;18347:2;18341:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18589:213;;;;;;;;18624:77;18589:213;;;;18715:77;18589:213;;;18577:2;:5;;;18583:2;18577:9;;;;;;;;:::i;:::-;;;;;;:225;;;;18825:213;;;;;;;;18860:77;18825:213;;;;18951:77;18825:213;;;18813:2;:5;;;18819:2;18813:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19061:211;;;;;;;;19096:77;19061:211;;;;19187:75;19061:211;;;19049:2;:5;;;19055:2;19049:9;;;;;;;;:::i;:::-;;;;;;:223;;;;19295:213;;;;;;;;19330:77;19295:213;;;;19421:77;19295:213;;;19283:2;:5;;;19289:2;19283:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19531:213;;;;;;;;19566:77;19531:213;;;;19657:77;19531:213;;;19519:2;:5;;;19525:2;19519:9;;;;;;;;:::i;:::-;;;;;;:225;;;;19767:212;;;;;;;;19802:76;19767:212;;;;19892:77;19767:212;;;19755:2;:5;;;19761:2;19755:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20002:211;;;;;;;;20037:76;20002:211;;;;20127:76;20002:211;;;19990:2;:5;;;19996:2;19990:9;;;;;;;;:::i;:::-;;;;;;:223;;;;20236:212;;;;;;;;20271:77;20236:212;;;;20362:76;20236:212;;;20224:2;:5;;;20230:2;20224:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20471:212;;;;;;;;20506:77;20471:212;;;;20597:76;20471:212;;;20459:2;:5;;;20465:2;20459:9;;;;;;;;:::i;:::-;;;;;;:224;;;;20706:213;;;;;;;;20741:77;20706:213;;;;20832:77;20706:213;;;20694:2;:5;;;20700:2;20694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;20942:212;;;;;;;;20977:77;20942:212;;;;21068:76;20942:212;;;20930:2;:5;;;20936:2;20930:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21177:212;;;;;;;;21212:76;21177:212;;;;21302:77;21177:212;;;21165:2;:5;;;21171:2;21165:9;;;;;;;;:::i;:::-;;;;;;:224;;;;21412:213;;;;;;;;21447:77;21412:213;;;;21538:77;21412:213;;;21400:2;:5;;;21406:2;21400:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21648:213;;;;;;;;21683:77;21648:213;;;;21774:77;21648:213;;;21636:2;:5;;;21642:2;21636:9;;;;;;;;:::i;:::-;;;;;;:225;;;;21884:211;;;;;;;;21919:76;21884:211;;;;22009:76;21884:211;;;21872:2;:5;;;21878:2;21872:9;;;;;;;;:::i;:::-;;;;;;:223;;;;22118:213;;;;;;;;22153:77;22118:213;;;;22244:77;22118:213;;;22106:2;:5;;;22112:2;22106:9;;;;;;;;:::i;:::-;;;;;;:225;;;;22354:212;;;;;;;;22389:76;22354:212;;;;22479:77;22354:212;;;22342:2;:5;;;22348:2;22342:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22589:212;;;;;;;;22624:76;22589:212;;;;22714:77;22589:212;;;22577:2;:5;;;22583:2;22577:9;;;;;;;;:::i;:::-;;;;;;:224;;;;22824:212;;;;;;;;22859:76;22824:212;;;;22949:77;22824:212;;;22812:2;:5;;;22818:2;22812:9;;;;;;;;:::i;:::-;;;;;;:224;;;;23059:211;;;;;;;;23094:77;23059:211;;;;23185:75;23059:211;;;23047:2;:5;;;23053:2;23047:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23293:213;;;;;;;;23328:77;23293:213;;;;23419:77;23293:213;;;23281:2;:5;;;23287:2;23281:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23529:213;;;;;;;;23564:77;23529:213;;;;23655:77;23529:213;;;23517:2;:5;;;23523:2;23517:9;;;;;;;;:::i;:::-;;;;;;:225;;;;23765:211;;;;;;;;23800:76;23765:211;;;;23890:76;23765:211;;;23753:2;:5;;;23759:2;23753:9;;;;;;;;:::i;:::-;;;;;;:223;;;;23999:212;;;;;;;;24034:76;23999:212;;;;24124:77;23999:212;;;23987:2;:5;;;23993:2;23987:9;;;;;;;;:::i;:::-;;;;;;:224;;;;24234:213;;;;;;;;24269:77;24234:213;;;;24360:77;24234:213;;;24222:2;:5;;;24228:2;24222:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24470:213;;;;;;;;24505:77;24470:213;;;;24596:77;24470:213;;;24458:2;:5;;;24464:2;24458:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24706:213;;;;;;;;24741:77;24706:213;;;;24832:77;24706:213;;;24694:2;:5;;;24700:2;24694:9;;;;;;;;:::i;:::-;;;;;;:225;;;;24942:211;;;;;;;;24977:76;24942:211;;;;25067:76;24942:211;;;24930:2;:5;;;24936:2;24930:9;;;;;;;;:::i;:::-;;;;;;:223;;;;7822:17338;:::o;3929:557::-;-1:-1:-1;;;;;;;;;;;;;;;;;4029:23:115;;:::i;:::-;4073:3;;4062:14;;:8;4097:3;;;;4086:8;;;:14;4110:8;;;:12;;;-1:-1:-1;4300:4:115;4297:1;4291:4;4062:14;4281:1;4274:4;4267:5;4263:16;4252:53;4241:64;-1:-1:-1;4241:64:115;;4375:47;4402:20;4411:9;4375:47;;4449:7;4441:38;;;;-1:-1:-1;;;4441:38:115;;12006:2:146;4441:38:115;;;11988:21:146;12045:2;12025:18;;;12018:30;-1:-1:-1;;;12064:18:146;;;12057:48;12122:18;;4441:38:115;11804:342:146;4441:38:115;4019:467;;3929:557;;;;:::o;3151:622::-;-1:-1:-1;;;;;;;;;;;;;;;;;3286:23:115;;:::i;:::-;3330:4;;3319:15;;:8;3355:4;;;;3344:8;;;:15;3380:4;;3369:8;;;:15;3405:4;;;3394:8;;;;:15;;;;-1:-1:-1;;3584:1:115;3578:4;3319:15;3568:1;3561:4;3554:5;3550:16;3539:53;3528:64;-1:-1:-1;3528:64:115;;3662:47;3689:20;3698:9;3662:47;;3736:7;3728:38;;;;-1:-1:-1;;;3728:38:115;;12353:2:146;3728:38:115;;;12335:21:146;12392:2;12372:18;;;12365:30;-1:-1:-1;;;12411:18:146;;;12404:48;12469:18;;3728:38:115;12151:342:146;2742:357:115;-1:-1:-1;;;;;;;;;;;;;;;;;2982:3:115;;2891:77;;2982:8;:20;;;;-1:-1:-1;2994:3:115;;;;:8;2982:20;2978:71;;;-1:-1:-1;;3025:13:115;;;;;;;;;-1:-1:-1;3025:13:115;;;;;;;;2742:357;-1:-1:-1;2742:357:115:o;2978:71::-;3065:27;;;;;;;;3073:1;:3;;;3065:27;;;;3089:1;3083;:3;;;:7;;;;:::i;:::-;3078:13;;:1;:13;:::i;:::-;3065:27;;3058:34;2742:357;-1:-1:-1;;;2742:357:115:o;6832:568::-;7137:16;;;7151:1;7137:16;;;;;;;;;7099:4;;;;7137:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7137:16:115;;;;;;;;;;;;-1:-1:-1;;7185:16:115;;;7199:1;7185:16;;;;;;;;;7115:38;;-1:-1:-1;7163:19:115;;7185:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7163:38;;7219:2;7211;7214:1;7211:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7239:2;7231;7234:1;7231:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7259:2;7251;7254:1;7251:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7279:2;7271;7274:1;7271:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7299:2;7291;7294:1;7291:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7319:2;7311;7314:1;7311:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7339:2;7331;7334:1;7331:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7359:2;7351;7354:1;7351:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7378:15;7386:2;7390;7378:7;:15::i;:::-;7371:22;6832:568;-1:-1:-1;;;;;;;;;;;6832:568:115:o;7796:2282:116:-;7847:26;;:::i;:::-;7896:210;;;;;;;;7929:77;7896:210;;8020:76;7896:210;;;;;;;;7885:221;;;8128:463;;;;;;;;8179:76;8128:463;;;;;;8273:76;8128:463;;;;;;;;;;;;;;;;;;8395:77;8128:463;;8490:77;8128:463;;;;-1:-1:-1;;;8128:463:116;8117:8;;;:474;;;;8613:463;;;;;;;8664:77;8613:463;;;;;;8759:77;8613:463;;;;;;;;;;;;;8882:76;8613:463;;8976:76;8613:463;;;;-1:-1:-1;;;8613:463:116;8601:9;;;:475;9098:462;;;;;;;9149:76;9098:462;;;;;;9243:77;9098:462;;;;;;;;;;;;;9366:76;9098:462;;9460:76;9098:462;;;;-1:-1:-1;;;9098:462:116;9086:9;;;:474;9578:28;;9604:1;9578:28;;;;;;;;;9604:1;9578:28;;;-1:-1:-1;;;;;;;;;;;;;;;;;9578:28:116;;;;;;;;;;;;-1:-1:-1;;9570:5:116;;;:36;;;9628:210;;;;;;;;;9661:77;9628:210;;9752:76;9628:210;;;;9617:5;;:8;;-1:-1:-1;;9617:8:116;;;;:::i;:::-;;;;;;:221;;;;9860:211;;;;;;;;9893:77;9860:211;;;;9984:77;9860:211;;;9849:2;:5;;;9855:1;9849:8;;;;;;;;:::i;6830:568::-;7135:16;;;7149:1;7135:16;;;;;;;;;7097:4;;;;7135:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7135:16:116;;;;;;;;;;;;-1:-1:-1;;7183:16:116;;;7197:1;7183:16;;;;;;;;;7113:38;;-1:-1:-1;7161:19:116;;7183:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7161:38;;7217:2;7209;7212:1;7209:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7237:2;7229;7232:1;7229:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7257:2;7249;7252:1;7249:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7277:2;7269;7272:1;7269:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7297:2;7289;7292:1;7289:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7317:2;7309;7312:1;7309:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7337:2;7329;7332:1;7329:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7357:2;7349;7352:1;7349:5;;;;;;;;:::i;:::-;;;;;;:10;;;;7376:15;7384:2;7388;7376:7;:15::i;4698:1073:115:-;4780:4;4817:2;:9;4804:2;:9;:22;4796:57;;;;-1:-1:-1;;;4796:57:115;;12700:2:146;4796:57:115;;;12682:21:146;12739:2;12719:18;;;12712:30;-1:-1:-1;;;12758:18:146;;;12751:52;12820:18;;4796:57:115;12498:346:146;4796:57:115;4882:9;;4863:16;4921:12;4882:9;4932:1;4921:12;:::i;:::-;4901:32;;4943:22;4979:9;4968:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4968:21:115;;4943:46;;5004:9;4999:302;5023:8;5019:1;:12;4999:302;;;5071:2;5074:1;5071:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5052:5;5058:1;5062;5058:5;;;;:::i;:::-;:9;;5066:1;5058:9;:::i;:::-;5052:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5111:2;5114:1;5111:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5092:5;5098:1;5102;5098:5;;;;:::i;:::-;:9;;5106:1;5098:9;:::i;:::-;5092:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5151:2;5154:1;5151:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5132:5;5138;:1;5142;5138:5;:::i;:::-;:9;;5146:1;5138:9;:::i;:::-;5132:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5194:2;5197:1;5194:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5175:5;5181;:1;5185;5181:5;:::i;:::-;:9;;5189:1;5181:9;:::i;:::-;5175:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5237:2;5240:1;5237:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5245:1;5237:10;;;;;;;:::i;:::-;;;;;5218:5;5224;:1;5228;5224:5;:::i;:::-;:9;;5232:1;5224:9;:::i;:::-;5218:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5280:2;5283:1;5280:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5288:1;5280:10;;;;;;;:::i;:::-;;;;;5261:5;5267;:1;5271;5267:5;:::i;:::-;:9;;5275:1;5267:9;:::i;:::-;5261:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5033:3;;;;:::i;:::-;;;;4999:302;;;;5310:21;;:::i;:::-;5341:12;5554:4;5549:3;5542:4;5531:9;5527:20;5520:4;5513:5;5509:16;5506:1;5499:4;5492:5;5488:16;5477:82;5450:109;-1:-1:-1;5450:109:115;;5629:47;5656:20;5665:9;5629:47;;5703:7;5695:41;;;;-1:-1:-1;;;5695:41:115;;13224:2:146;5695:41:115;;;13206:21:146;13263:2;13243:18;;;13236:30;-1:-1:-1;;;13282:18:146;;;13275:51;13343:18;;5695:41:115;13022:345:146;5695:41:115;-1:-1:-1;5753:6:115;:11;;;;-1:-1:-1;;;;;;4698:1073:115:o;4696::116:-;4778:4;4815:2;:9;4802:2;:9;:22;4794:57;;;;-1:-1:-1;;;4794:57:116;;12700:2:146;4794:57:116;;;12682:21:146;12739:2;12719:18;;;12712:30;-1:-1:-1;;;12758:18:146;;;12751:52;12820:18;;4794:57:116;12498:346:146;4794:57:116;4880:9;;4861:16;4919:12;4880:9;4930:1;4919:12;:::i;:::-;4899:32;;4941:22;4977:9;4966:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4966:21:116;;4941:46;;5002:9;4997:302;5021:8;5017:1;:12;4997:302;;;5069:2;5072:1;5069:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5050:5;5056:1;5060;5056:5;;;;:::i;:::-;:9;;5064:1;5056:9;:::i;:::-;5050:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5109:2;5112:1;5109:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5090:5;5096:1;5100;5096:5;;;;:::i;:::-;:9;;5104:1;5096:9;:::i;:::-;5090:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;5149:2;5152:1;5149:5;;;;;;;;:::i;:::-;;;;;;;;;;;:7;:10;5130:5;5136;:1;5140;5136:5;:::i;:::-;:9;;5144:1;5136:9;:::i;:::-;5130:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5192:2;5195:1;5192:5;;;;;;;;:::i;:::-;;;;;;;;;;;;:7;:10;;5173:5;5179;:1;5183;5179:5;:::i;:::-;:9;;5187:1;5179:9;:::i;:::-;5173:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5235:2;5238:1;5235:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5243:1;5235:10;;;;;;;:::i;:::-;;;;;5216:5;5222;:1;5226;5222:5;:::i;:::-;:9;;5230:1;5222:9;:::i;:::-;5216:16;;;;;;;;:::i;:::-;;;;;;:29;;;;;5278:2;5281:1;5278:5;;;;;;;;:::i;:::-;;;;;;;:7;;;5286:1;5278:10;;;;;;;:::i;:::-;;;;;5259:5;5265;:1;5269;5265:5;:::i;:::-;:9;;5273:1;5265:9;:::i;:::-;5259:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;5031:3;;;;:::i;:::-;;;;4997:302;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;388:127:146:-;449:10;444:3;440:20;437:1;430:31;480:4;477:1;470:15;504:4;501:1;494:15;520:246;587:2;581:9;;;617:15;;662:18;647:34;;683:22;;;644:62;641:88;;;709:18;;:::i;:::-;745:2;738:22;520:246;:::o;771:479::-;821:5;874:3;867:4;859:6;855:17;851:27;841:55;;892:1;889;882:12;841:55;916:17;;:::i;:::-;955:3;993:2;985:6;981:15;1019:3;1011:6;1008:15;1005:35;;;1036:1;1033;1026:12;1005:35;1060:6;1075:146;1091:6;1086:3;1083:15;1075:146;;;1159:17;;1147:30;;1206:4;1197:14;;;;1108;1075:146;;;-1:-1:-1;1239:5:146;;771:479;-1:-1:-1;;;;;771:479:146:o;1255:501::-;1311:5;1364:3;1357:4;1349:6;1345:17;1341:27;1331:55;;1382:1;1379;1372:12;1331:55;1406:17;;:::i;:::-;1445:3;1483;1475:6;1471:16;1510:3;1502:6;1499:15;1496:35;;;1527:1;1524;1517:12;1496:35;1551:6;1566:161;1582:6;1577:3;1574:15;1566:161;;;1648:34;1678:3;1673;1648:34;:::i;:::-;1636:47;;1712:4;1703:14;;;;1608:2;1599:12;1566:161;;1761:605;1820:5;1868:6;1856:9;1851:3;1847:19;1843:32;1840:52;;;1888:1;1885;1878:12;1840:52;1921:2;1915:9;1963:4;1955:6;1951:17;2034:6;2022:10;2019:22;1998:18;1986:10;1983:34;1980:62;1977:88;;;2045:18;;:::i;:::-;2081:2;2074:22;2114:6;-1:-1:-1;2114:6:146;2144:40;2180:3;2169:9;2144:40;:::i;:::-;2136:6;2129:56;2220:55;2271:3;2266:2;2255:9;2251:18;2220:55;:::i;:::-;2213:4;2205:6;2201:17;2194:82;2309:50;2355:3;2349;2338:9;2334:19;2309:50;:::i;:::-;2304:2;2296:6;2292:15;2285:75;;1761:605;;;;:::o;2371:773::-;2433:5;2481:6;2469:9;2464:3;2460:19;2456:32;2453:52;;;2501:1;2498;2491:12;2453:52;2534:2;2528:9;2576:4;2568:6;2564:17;2647:6;2635:10;2632:22;2611:18;2599:10;2596:34;2593:62;2590:88;;;2658:18;;:::i;:::-;2698:10;2694:2;2687:22;;2727:6;2718:15;;2770:9;2757:23;2749:6;2742:39;2842:2;2831:9;2827:18;2814:32;2809:2;2801:6;2797:15;2790:57;2908:2;2897:9;2893:18;2880:32;2875:2;2867:6;2863:15;2856:57;2974:2;2963:9;2959:18;2946:32;2941:2;2933:6;2929:15;2922:57;3041:3;3030:9;3026:19;3013:33;3007:3;2999:6;2995:16;2988:59;3081:56;3133:3;3127;3116:9;3112:19;3081:56;:::i;:::-;3075:3;3067:6;3063:16;3056:82;;2371:773;;;;:::o;3149:714::-;3244:6;3297:3;3285:9;3276:7;3272:23;3268:33;3265:53;;;3314:1;3311;3304:12;3265:53;3347:2;3341:9;3389:4;3381:6;3377:17;3460:6;3448:10;3445:22;3424:18;3412:10;3409:34;3406:62;3403:88;;;3471:18;;:::i;:::-;3507:2;3500:22;3546:53;3591:7;3580:9;3546:53;:::i;:::-;3538:6;3531:69;3663:3;3652:9;3648:19;3635:33;3628:4;3620:6;3616:17;3609:60;3730:3;3719:9;3715:19;3702:33;3697:2;3689:6;3685:15;3678:58;3771:60;3823:7;3817:3;3806:9;3802:19;3771:60;:::i;:::-;3764:4;3752:17;;3745:87;3756:6;3149:714;-1:-1:-1;;;3149:714:146:o;3868:180::-;3927:6;3980:2;3968:9;3959:7;3955:23;3951:32;3948:52;;;3996:1;3993;3986:12;3948:52;-1:-1:-1;4019:23:146;;3868:180;-1:-1:-1;3868:180:146:o;4235:1150::-;4437:6;4445;4453;4461;4492:4;4537:2;4525:9;4516:7;4512:23;4508:32;4505:52;;;4553:1;4550;4543:12;4505:52;4576:44;4612:7;4601:9;4576:44;:::i;:::-;4566:54;;4639:59;4690:7;4685:2;4674:9;4670:18;4639:59;:::i;:::-;4629:69;;4717:54;4763:7;4757:3;4746:9;4742:19;4717:54;:::i;:::-;4707:64;;4815:7;4809:3;4798:9;4794:19;4790:33;4780:61;;4837:1;4834;4827:12;4780:61;4870:2;4864:9;4912:4;4904:6;4900:17;4983:6;4971:10;4968:22;4947:18;4935:10;4932:34;4929:62;4926:88;;;4994:18;;:::i;:::-;5030:2;5023:22;5094:18;;;;5065:6;5124:19;;;5121:39;;;5156:1;5153;5146:12;5121:39;5195:3;5184:9;5180:19;5208:146;5224:6;5219:3;5216:15;5208:146;;;5292:17;;5280:30;;5339:4;5330:14;;;;5241;5208:146;;;5212:3;;5373:6;5363:16;;;;4235:1150;;;;;;;:::o;5587:245::-;5680:6;5733:3;5721:9;5712:7;5708:23;5704:33;5701:53;;;5750:1;5747;5740:12;5701:53;5773;5818:7;5807:9;5773:53;:::i;:::-;5763:63;5587:245;-1:-1:-1;;;5587:245:146:o;6030:1163::-;6231:6;6239;6247;6255;6286:3;6330:2;6318:9;6309:7;6305:23;6301:32;6298:52;;;6346:1;6343;6336:12;6298:52;6369:44;6405:7;6394:9;6369:44;:::i;:::-;6359:54;;6432:59;6483:7;6478:2;6467:9;6463:18;6432:59;:::i;:::-;6422:69;;6510:54;6556:7;6550:3;6539:9;6535:19;6510:54;:::i;:::-;6500:64;;6608:7;6602:3;6591:9;6587:19;6583:33;6573:61;;6630:1;6627;6620:12;6573:61;6663:2;6657:9;6685:2;6726;6718:6;6714:15;6795:6;6783:10;6780:22;6759:18;6747:10;6744:34;6741:62;6738:88;;;6806:18;;:::i;:::-;6842:2;6835:22;6906:18;;;;6877:6;6936:19;;;6933:39;;;6968:1;6965;6958:12;6933:39;7007:3;6996:9;6992:19;7020:142;7036:6;7031:3;7028:15;7020:142;;;7102:17;;7090:30;;7140:12;;;;7053;;7020:142;;;-1:-1:-1;6030:1163:146;;;;-1:-1:-1;6030:1163:146;;-1:-1:-1;7181:6:146;-1:-1:-1;;;;6030:1163:146:o;7198:127::-;7259:10;7254:3;7250:20;7247:1;7240:31;7290:4;7287:1;7280:15;7314:4;7311:1;7304:15;7330:125;7395:9;;;7416:10;;;7413:36;;;7429:18;;:::i;7460:127::-;7521:10;7516:3;7512:20;7509:1;7502:31;7552:4;7549:1;7542:15;7576:4;7573:1;7566:15;7592:135;7631:3;7652:17;;;7649:43;;7672:18;;:::i;:::-;-1:-1:-1;7719:1:146;7708:13;;7592:135::o;9732:127::-;9793:10;9788:3;9784:20;9781:1;9774:31;9824:4;9821:1;9814:15;9848:4;9845:1;9838:15;9864:120;9904:1;9930;9920:35;;9935:18;;:::i;:::-;-1:-1:-1;9969:9:146;;9864:120::o;9989:112::-;10021:1;10047;10037:35;;10052:18;;:::i;:::-;-1:-1:-1;10086:9:146;;9989:112::o;10106:128::-;10173:9;;;10194:11;;;10191:37;;;10208:18;;:::i;11198:412::-;11327:3;11365:6;11359:13;11390:1;11400:129;11414:6;11411:1;11408:13;11400:129;;;11512:4;11496:14;;;11492:25;;11486:32;11473:11;;;11466:53;11429:12;11400:129;;;-1:-1:-1;11584:1:146;11548:16;;11573:13;;;-1:-1:-1;11548:16:146;11198:412;-1:-1:-1;11198:412:146:o;11615:184::-;11685:6;11738:2;11726:9;11717:7;11713:23;11709:32;11706:52;;;11754:1;11751;11744:12;11706:52;-1:-1:-1;11777:16:146;;11615:184;-1:-1:-1;11615:184:146:o;12849:168::-;12889:7;12955:1;12951;12947:6;12943:14;12940:1;12937:21;12932:1;12925:9;12918:17;12914:45;12911:71;;;12962:18;;:::i;:::-;-1:-1:-1;13002:9:146;;12849:168::o", - "linkReferences": {}, - "immutableReferences": { - "44398": [ - { - "start": 597, - "length": 32 - } - ], - "44400": [ - { - "start": 764, - "length": 32 - }, - { - "start": 3002, - "length": 32 - } - ], - "44402": [ - { - "start": 353, - "length": 32 - }, - { - "start": 2966, - "length": 32 - } - ], - "44404": [ - { - "start": 266, - "length": 32 - }, - { - "start": 2041, - "length": 32 - } - ], - "44406": [ - { - "start": 464, - "length": 32 - } - ], - "44408": [ - { - "start": 687, - "length": 32 - }, - { - "start": 1998, - "length": 32 - } - ] - } - }, - "methodIdentifiers": { - "FINALITY_THRESHOLD()": "da4b05e7", - "GENESIS_TIME()": "f2882461", - "GENESIS_VALIDATORS_ROOT()": "a8769acb", - "SECONDS_PER_SLOT()": "304b9071", - "SLOTS_PER_PERIOD()": "2073ee70", - "SOURCE_CHAIN_ID()": "74be2150", - "consistent()": "2bcccca5", - "executionStateRoots(uint256)": "7623ee29", - "head()": "8f7dcfa3", - "headers(uint256)": "56f90d79", - "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": "4b4e4dff", - "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": "cb970952", - "syncCommitteePoseidons(uint256)": "b34711ab", - "timestamps(uint256)": "8bc33af3", - "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": "7227d785", - "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": "e5b708fe" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"genesisValidatorsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"genesisTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondsPerSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slotsPerPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"syncCommitteePeriod\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"finalityThreshold\",\"type\":\"uint16\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"SyncCommitteeUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINALITY_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENESIS_VALIDATORS_ROOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOTS_PER_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"step\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteeSSZ\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"syncCommitteePoseidon\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientRotate\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"rotate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"attestedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizedSlot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participation\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"finalizedHeaderRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionStateRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct Groth16Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct LightClientStep\",\"name\":\"update\",\"type\":\"tuple\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"syncCommitteePoseidons\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[65]\",\"name\":\"input\",\"type\":\"uint256[65]\"}],\"name\":\"verifyProofRotate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[1]\",\"name\":\"input\",\"type\":\"uint256[1]\"}],\"name\":\"verifyProofStep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"r\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"A commitment to the the next sync committeee is signed by the current sync committee.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"details\":\"The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof\"},\"verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}},\"verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])\":{\"returns\":{\"r\":\" bool true if proof is valid\"}}},\"title\":\"Light Client\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consistent()\":{\"notice\":\"Whether the light client has had conflicting variables for the same slot.\"},\"executionStateRoots(uint256)\":{\"notice\":\"Maps from a slot to the current finalized ethereum1 execution state root.\"},\"head()\":{\"notice\":\"The latest slot the light client has a finalized header for.\"},\"headers(uint256)\":{\"notice\":\"Maps from a slot to a beacon block header root.\"},\"rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Sets the sync committee for the next sync committeee period.\"},\"step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))\":{\"notice\":\"Updates the head of the light client to the provided slot.\"},\"syncCommitteePoseidons(uint256)\":{\"notice\":\"Maps from a period to the poseidon commitment for the sync committee.\"},\"timestamps(uint256)\":{\"notice\":\"Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key\"}},\"notice\":\"Uses Ethereum 2's Sync Committee Protocol to keep up-to-date with block headers from a Beacon Chain. This is done in a gas-efficient manner using zero-knowledge proofs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/lightclient/LightClient.sol\":\"LightClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/lightclient/LightClient.sol\":{\"keccak256\":\"0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71\",\"urls\":[\"bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806\",\"dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa\"]},\"src/lightclient/RotateVerifier.sol\":{\"keccak256\":\"0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0\",\"dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8\"]},\"src/lightclient/StepVerifier.sol\":{\"keccak256\":\"0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2\",\"dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "genesisValidatorsRoot", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "genesisTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "secondsPerSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "slotsPerPeriod", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "syncCommitteePeriod", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "syncCommitteePoseidon", - "type": "bytes32" - }, - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "uint16", - "name": "finalityThreshold", - "type": "uint16" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "slot", - "type": "uint256", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "root", - "type": "bytes32", - "indexed": true - } - ], - "type": "event", - "name": "HeadUpdate", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "period", - "type": "uint256", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "root", - "type": "bytes32", - "indexed": true - } - ], - "type": "event", - "name": "SyncCommitteeUpdate", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "FINALITY_THRESHOLD", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "GENESIS_TIME", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "GENESIS_VALIDATORS_ROOT", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "SECONDS_PER_SLOT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "SLOTS_PER_PERIOD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "SOURCE_CHAIN_ID", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "consistent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "executionStateRoots", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "head", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "headers", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "struct LightClientRotate", - "name": "update", - "type": "tuple", - "components": [ - { - "internalType": "struct LightClientStep", - "name": "step", - "type": "tuple", - "components": [ - { - "internalType": "uint256", - "name": "attestedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "finalizedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "participation", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "finalizedHeaderRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "executionStateRoot", - "type": "bytes32" - }, - { - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple", - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ] - } - ] - }, - { - "internalType": "bytes32", - "name": "syncCommitteeSSZ", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "syncCommitteePoseidon", - "type": "bytes32" - }, - { - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple", - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ] - } - ] - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "rotate" - }, - { - "inputs": [ - { - "internalType": "struct LightClientStep", - "name": "update", - "type": "tuple", - "components": [ - { - "internalType": "uint256", - "name": "attestedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "finalizedSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "participation", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "finalizedHeaderRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "executionStateRoot", - "type": "bytes32" - }, - { - "internalType": "struct Groth16Proof", - "name": "proof", - "type": "tuple", - "components": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - } - ] - } - ] - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "step" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "syncCommitteePoseidons", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "timestamps", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - }, - { - "internalType": "uint256[65]", - "name": "input", - "type": "uint256[65]" - } - ], - "stateMutability": "view", - "type": "function", - "name": "verifyProofRotate", - "outputs": [ - { - "internalType": "bool", - "name": "r", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - }, - { - "internalType": "uint256[2][2]", - "name": "b", - "type": "uint256[2][2]" - }, - { - "internalType": "uint256[2]", - "name": "c", - "type": "uint256[2]" - }, - { - "internalType": "uint256[1]", - "name": "input", - "type": "uint256[1]" - } - ], - "stateMutability": "view", - "type": "function", - "name": "verifyProofStep", - "outputs": [ - { - "internalType": "bool", - "name": "r", - "type": "bool" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { - "details": "A commitment to the the next sync committeee is signed by the current sync committee." - }, - "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { - "details": "The conditions for updating the head of the light client involve checking: 1) Enough signatures from the current sync committee for n=512 2) A valid finality proof 3) A valid execution state root proof" - }, - "verifyProofRotate(uint256[2],uint256[2][2],uint256[2],uint256[65])": { - "returns": { - "r": " bool true if proof is valid" - } - }, - "verifyProofStep(uint256[2],uint256[2][2],uint256[2],uint256[1])": { - "returns": { - "r": " bool true if proof is valid" - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "consistent()": { - "notice": "Whether the light client has had conflicting variables for the same slot." - }, - "executionStateRoots(uint256)": { - "notice": "Maps from a slot to the current finalized ethereum1 execution state root." - }, - "head()": { - "notice": "The latest slot the light client has a finalized header for." - }, - "headers(uint256)": { - "notice": "Maps from a slot to a beacon block header root." - }, - "rotate(((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])),bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { - "notice": "Sets the sync committee for the next sync committeee period." - }, - "step((uint256,uint256,uint256,bytes32,bytes32,(uint256[2],uint256[2][2],uint256[2])))": { - "notice": "Updates the head of the light client to the provided slot." - }, - "syncCommitteePoseidons(uint256)": { - "notice": "Maps from a period to the poseidon commitment for the sync committee." - }, - "timestamps(uint256)": { - "notice": "Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key" - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/lightclient/LightClient.sol": "LightClient" - }, - "libraries": {} - }, - "sources": { - "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", - "urls": [ - "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", - "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" - ], - "license": null - }, - "src/libraries/SimpleSerialize.sol": { - "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", - "urls": [ - "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", - "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" - ], - "license": null - }, - "src/lightclient/LightClient.sol": { - "keccak256": "0x6e0b39c4741796d52ae5515dd08f3081795936882e8eb9b0738af0a3afa8cf71", - "urls": [ - "bzz-raw://e1ea291fb90b3bcf373d8e8135af5a4d2029b696f66588743cdb5f20534c0806", - "dweb:/ipfs/Qmd9bYNKXKfnc8JV6WMDPG7c2AQcRY9zqcNY4fiVtvk6Wa" - ], - "license": null - }, - "src/lightclient/RotateVerifier.sol": { - "keccak256": "0x41a710036513216d18cef79eb41e58c7cf64e8c326be9aa4347923741cd1e4bf", - "urls": [ - "bzz-raw://0245ac0690dc19e2e4065f1bac40be08162b8da05593d62f8e1fdab29031a8e0", - "dweb:/ipfs/QmU6Le8FAi8hhnc6RJ8Q3Q3MBs2GMAMSEP2zbk8DQdm5b8" - ], - "license": "GPL-3.0" - }, - "src/lightclient/StepVerifier.sol": { - "keccak256": "0x671a5cd073322f03a01e5d5af85082719a120f8fc6f5538dfee51b38fbae0418", - "urls": [ - "bzz-raw://8f354fa25ad7906b9b58c37c5b3107d7aab97c1d342fef387bd35a693879eee2", - "dweb:/ipfs/QmeuMczYqzTLfxbKZuRHioo8J4UBwpjHp2SEYDpkonrwET" - ], - "license": "GPL-3.0" - }, - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/lightclient/LightClient.sol", - "id": 45107, - "exportedSymbols": { - "Groth16Proof": [ - 44364 - ], - "ILightClient": [ - 47936 - ], - "LightClient": [ - 45106 - ], - "LightClientRotate": [ - 44389 - ], - "LightClientStep": [ - 44378 - ], - "RotateVerifier": [ - 46888 - ], - "SSZ": [ - 43941 - ], - "StepVerifier": [ - 47902 - ] - }, - "nodeType": "SourceUnit", - "src": "0:9502:114", - "nodes": [ - { - "id": 44341, - "nodeType": "PragmaDirective", - "src": "0:23:114", - "nodes": [], - "literals": [ - "solidity", - "0.8", - ".16" - ] - }, - { - "id": 44343, - "nodeType": "ImportDirective", - "src": "25:54:114", - "nodes": [], - "absolutePath": "src/libraries/SimpleSerialize.sol", - "file": "src/libraries/SimpleSerialize.sol", - "nameLocation": "-1:-1:-1", - "scope": 45107, - "sourceUnit": 43942, - "symbolAliases": [ - { - "foreign": { - "id": 44342, - "name": "SSZ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43941, - "src": "33:3:114", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 44345, - "nodeType": "ImportDirective", - "src": "81:73:114", - "nodes": [], - "absolutePath": "src/lightclient/interfaces/ILightClient.sol", - "file": "src/lightclient/interfaces/ILightClient.sol", - "nameLocation": "-1:-1:-1", - "scope": 45107, - "sourceUnit": 47937, - "symbolAliases": [ - { - "foreign": { - "id": 44344, - "name": "ILightClient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47936, - "src": "89:12:114", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 44347, - "nodeType": "ImportDirective", - "src": "155:62:114", - "nodes": [], - "absolutePath": "src/lightclient/StepVerifier.sol", - "file": "src/lightclient/StepVerifier.sol", - "nameLocation": "-1:-1:-1", - "scope": 45107, - "sourceUnit": 47903, - "symbolAliases": [ - { - "foreign": { - "id": 44346, - "name": "StepVerifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47902, - "src": "163:12:114", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 44349, - "nodeType": "ImportDirective", - "src": "218:66:114", - "nodes": [], - "absolutePath": "src/lightclient/RotateVerifier.sol", - "file": "src/lightclient/RotateVerifier.sol", - "nameLocation": "-1:-1:-1", - "scope": 45107, - "sourceUnit": 46889, - "symbolAliases": [ - { - "foreign": { - "id": 44348, - "name": "RotateVerifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46888, - "src": "226:14:114", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 44364, - "nodeType": "StructDefinition", - "src": "286:80:114", - "nodes": [], - "canonicalName": "Groth16Proof", - "members": [ - { - "constant": false, - "id": 44353, - "mutability": "mutable", - "name": "a", - "nameLocation": "323:1:114", - "nodeType": "VariableDeclaration", - "scope": 44364, - "src": "312:12:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", - "typeString": "uint256[2]" - }, - "typeName": { - "baseType": { - "id": 44350, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "312:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44352, - "length": { - "hexValue": "32", - "id": 44351, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "320:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "ArrayTypeName", - "src": "312:10:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", - "typeString": "uint256[2]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44359, - "mutability": "mutable", - "name": "b", - "nameLocation": "344:1:114", - "nodeType": "VariableDeclaration", - "scope": 44364, - "src": "330:15:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$2_storage_$2_storage_ptr", - "typeString": "uint256[2][2]" - }, - "typeName": { - "baseType": { - "baseType": { - "id": 44354, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "330:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44356, - "length": { - "hexValue": "32", - "id": 44355, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "338:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "ArrayTypeName", - "src": "330:10:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", - "typeString": "uint256[2]" - } - }, - "id": 44358, - "length": { - "hexValue": "32", - "id": 44357, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "341:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "ArrayTypeName", - "src": "330:13:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$2_storage_$2_storage_ptr", - "typeString": "uint256[2][2]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44363, - "mutability": "mutable", - "name": "c", - "nameLocation": "362:1:114", - "nodeType": "VariableDeclaration", - "scope": 44364, - "src": "351:12:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", - "typeString": "uint256[2]" - }, - "typeName": { - "baseType": { - "id": 44360, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "351:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44362, - "length": { - "hexValue": "32", - "id": 44361, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "359:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "ArrayTypeName", - "src": "351:10:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", - "typeString": "uint256[2]" - } - }, - "visibility": "internal" - } - ], - "name": "Groth16Proof", - "nameLocation": "293:12:114", - "scope": 45107, - "visibility": "public" - }, - { - "id": 44378, - "nodeType": "StructDefinition", - "src": "368:195:114", - "nodes": [], - "canonicalName": "LightClientStep", - "members": [ - { - "constant": false, - "id": 44366, - "mutability": "mutable", - "name": "attestedSlot", - "nameLocation": "405:12:114", - "nodeType": "VariableDeclaration", - "scope": 44378, - "src": "397:20:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44365, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "397:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44368, - "mutability": "mutable", - "name": "finalizedSlot", - "nameLocation": "431:13:114", - "nodeType": "VariableDeclaration", - "scope": 44378, - "src": "423:21:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44367, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "423:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44370, - "mutability": "mutable", - "name": "participation", - "nameLocation": "458:13:114", - "nodeType": "VariableDeclaration", - "scope": 44378, - "src": "450:21:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44369, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "450:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44372, - "mutability": "mutable", - "name": "finalizedHeaderRoot", - "nameLocation": "485:19:114", - "nodeType": "VariableDeclaration", - "scope": 44378, - "src": "477:27:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44371, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "477:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44374, - "mutability": "mutable", - "name": "executionStateRoot", - "nameLocation": "518:18:114", - "nodeType": "VariableDeclaration", - "scope": 44378, - "src": "510:26:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44373, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "510:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44377, - "mutability": "mutable", - "name": "proof", - "nameLocation": "555:5:114", - "nodeType": "VariableDeclaration", - "scope": 44378, - "src": "542:18:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", - "typeString": "struct Groth16Proof" - }, - "typeName": { - "id": 44376, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44375, - "name": "Groth16Proof", - "nameLocations": [ - "542:12:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 44364, - "src": "542:12:114" - }, - "referencedDeclaration": 44364, - "src": "542:12:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", - "typeString": "struct Groth16Proof" - } - }, - "visibility": "internal" - } - ], - "name": "LightClientStep", - "nameLocation": "375:15:114", - "scope": 45107, - "visibility": "public" - }, - { - "id": 44389, - "nodeType": "StructDefinition", - "src": "565:143:114", - "nodes": [], - "canonicalName": "LightClientRotate", - "members": [ - { - "constant": false, - "id": 44381, - "mutability": "mutable", - "name": "step", - "nameLocation": "612:4:114", - "nodeType": "VariableDeclaration", - "scope": 44389, - "src": "596:20:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", - "typeString": "struct LightClientStep" - }, - "typeName": { - "id": 44380, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44379, - "name": "LightClientStep", - "nameLocations": [ - "596:15:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 44378, - "src": "596:15:114" - }, - "referencedDeclaration": 44378, - "src": "596:15:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", - "typeString": "struct LightClientStep" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44383, - "mutability": "mutable", - "name": "syncCommitteeSSZ", - "nameLocation": "630:16:114", - "nodeType": "VariableDeclaration", - "scope": 44389, - "src": "622:24:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44382, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "622:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44385, - "mutability": "mutable", - "name": "syncCommitteePoseidon", - "nameLocation": "660:21:114", - "nodeType": "VariableDeclaration", - "scope": 44389, - "src": "652:29:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44384, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "652:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44388, - "mutability": "mutable", - "name": "proof", - "nameLocation": "700:5:114", - "nodeType": "VariableDeclaration", - "scope": 44389, - "src": "687:18:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", - "typeString": "struct Groth16Proof" - }, - "typeName": { - "id": 44387, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44386, - "name": "Groth16Proof", - "nameLocations": [ - "687:12:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 44364, - "src": "687:12:114" - }, - "referencedDeclaration": 44364, - "src": "687:12:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", - "typeString": "struct Groth16Proof" - } - }, - "visibility": "internal" - } - ], - "name": "LightClientRotate", - "nameLocation": "572:17:114", - "scope": 45107, - "visibility": "public" - }, - { - "id": 45106, - "nodeType": "ContractDefinition", - "src": "953:8548:114", - "nodes": [ - { - "id": 44398, - "nodeType": "VariableDeclaration", - "src": "1026:48:114", - "nodes": [], - "constant": false, - "functionSelector": "a8769acb", - "mutability": "immutable", - "name": "GENESIS_VALIDATORS_ROOT", - "nameLocation": "1051:23:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44397, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1026:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "public" - }, - { - "id": 44400, - "nodeType": "VariableDeclaration", - "src": "1080:37:114", - "nodes": [], - "constant": false, - "functionSelector": "f2882461", - "mutability": "immutable", - "name": "GENESIS_TIME", - "nameLocation": "1105:12:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44399, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1080:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "public" - }, - { - "id": 44402, - "nodeType": "VariableDeclaration", - "src": "1123:41:114", - "nodes": [], - "constant": false, - "functionSelector": "304b9071", - "mutability": "immutable", - "name": "SECONDS_PER_SLOT", - "nameLocation": "1148:16:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44401, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1123:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "public" - }, - { - "id": 44404, - "nodeType": "VariableDeclaration", - "src": "1170:41:114", - "nodes": [], - "constant": false, - "functionSelector": "2073ee70", - "mutability": "immutable", - "name": "SLOTS_PER_PERIOD", - "nameLocation": "1195:16:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44403, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1170:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "public" - }, - { - "id": 44406, - "nodeType": "VariableDeclaration", - "src": "1217:39:114", - "nodes": [], - "constant": false, - "functionSelector": "74be2150", - "mutability": "immutable", - "name": "SOURCE_CHAIN_ID", - "nameLocation": "1241:15:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 44405, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1217:6:114", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "public" - }, - { - "id": 44408, - "nodeType": "VariableDeclaration", - "src": "1262:42:114", - "nodes": [], - "constant": false, - "functionSelector": "da4b05e7", - "mutability": "immutable", - "name": "FINALITY_THRESHOLD", - "nameLocation": "1286:18:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 44407, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "1262:6:114", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "public" - }, - { - "id": 44411, - "nodeType": "VariableDeclaration", - "src": "1311:62:114", - "nodes": [], - "constant": true, - "mutability": "constant", - "name": "MIN_SYNC_COMMITTEE_PARTICIPANTS", - "nameLocation": "1337:31:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44409, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1311:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "3130", - "id": 44410, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1371:2:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "visibility": "internal" - }, - { - "id": 44414, - "nodeType": "VariableDeclaration", - "src": "1379:51:114", - "nodes": [], - "constant": true, - "mutability": "constant", - "name": "SYNC_COMMITTEE_SIZE", - "nameLocation": "1405:19:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44412, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1379:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "353132", - "id": 44413, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1427:3:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_512_by_1", - "typeString": "int_const 512" - }, - "value": "512" - }, - "visibility": "internal" - }, - { - "id": 44417, - "nodeType": "VariableDeclaration", - "src": "1436:52:114", - "nodes": [], - "constant": true, - "mutability": "constant", - "name": "FINALIZED_ROOT_INDEX", - "nameLocation": "1462:20:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44415, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1436:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "313035", - "id": 44416, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1485:3:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_105_by_1", - "typeString": "int_const 105" - }, - "value": "105" - }, - "visibility": "internal" - }, - { - "id": 44420, - "nodeType": "VariableDeclaration", - "src": "1494:56:114", - "nodes": [], - "constant": true, - "mutability": "constant", - "name": "NEXT_SYNC_COMMITTEE_INDEX", - "nameLocation": "1520:25:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44418, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1494:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "3535", - "id": 44419, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1548:2:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_55_by_1", - "typeString": "int_const 55" - }, - "value": "55" - }, - "visibility": "internal" - }, - { - "id": 44423, - "nodeType": "VariableDeclaration", - "src": "1556:58:114", - "nodes": [], - "constant": true, - "mutability": "constant", - "name": "EXECUTION_STATE_ROOT_INDEX", - "nameLocation": "1582:26:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44421, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1556:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "343032", - "id": 44422, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1611:3:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_402_by_1", - "typeString": "int_const 402" - }, - "value": "402" - }, - "visibility": "internal" - }, - { - "id": 44427, - "nodeType": "VariableDeclaration", - "src": "1711:29:114", - "nodes": [], - "baseFunctions": [ - 47909 - ], - "constant": false, - "documentation": { - "id": 44424, - "nodeType": "StructuredDocumentation", - "src": "1621:85:114", - "text": "@notice Whether the light client has had conflicting variables for the same slot." - }, - "functionSelector": "2bcccca5", - "mutability": "mutable", - "name": "consistent", - "nameLocation": "1723:10:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 44425, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1711:4:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": { - "hexValue": "74727565", - "id": 44426, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1736:4:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "visibility": "public" - }, - { - "id": 44431, - "nodeType": "VariableDeclaration", - "src": "1824:23:114", - "nodes": [], - "baseFunctions": [ - 47914 - ], - "constant": false, - "documentation": { - "id": 44428, - "nodeType": "StructuredDocumentation", - "src": "1747:72:114", - "text": "@notice The latest slot the light client has a finalized header for." - }, - "functionSelector": "8f7dcfa3", - "mutability": "mutable", - "name": "head", - "nameLocation": "1839:4:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44429, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1824:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "30", - "id": 44430, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1846:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "visibility": "public" - }, - { - "id": 44436, - "nodeType": "VariableDeclaration", - "src": "1918:42:114", - "nodes": [], - "baseFunctions": [ - 47921 - ], - "constant": false, - "documentation": { - "id": 44432, - "nodeType": "StructuredDocumentation", - "src": "1854:59:114", - "text": "@notice Maps from a slot to a beacon block header root." - }, - "functionSelector": "56f90d79", - "mutability": "mutable", - "name": "headers", - "nameLocation": "1953:7:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - }, - "typeName": { - "id": 44435, - "keyType": { - "id": 44433, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1926:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Mapping", - "src": "1918:27:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - }, - "valueType": { - "id": 44434, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1937:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - }, - "visibility": "public" - }, - { - "id": 44441, - "nodeType": "VariableDeclaration", - "src": "2076:45:114", - "nodes": [], - "baseFunctions": [ - 47935 - ], - "constant": false, - "documentation": { - "id": 44437, - "nodeType": "StructuredDocumentation", - "src": "1967:104:114", - "text": "@notice Maps from a slot to the timestamp of when the headers mapping was updated with slot as a key" - }, - "functionSelector": "8bc33af3", - "mutability": "mutable", - "name": "timestamps", - "nameLocation": "2111:10:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - }, - "typeName": { - "id": 44440, - "keyType": { - "id": 44438, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2084:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Mapping", - "src": "2076:27:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - }, - "valueType": { - "id": 44439, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2095:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "public" - }, - { - "id": 44446, - "nodeType": "VariableDeclaration", - "src": "2218:54:114", - "nodes": [], - "baseFunctions": [ - 47928 - ], - "constant": false, - "documentation": { - "id": 44442, - "nodeType": "StructuredDocumentation", - "src": "2128:85:114", - "text": "@notice Maps from a slot to the current finalized ethereum1 execution state root." - }, - "functionSelector": "7623ee29", - "mutability": "mutable", - "name": "executionStateRoots", - "nameLocation": "2253:19:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - }, - "typeName": { - "id": 44445, - "keyType": { - "id": 44443, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2226:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Mapping", - "src": "2218:27:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - }, - "valueType": { - "id": 44444, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2237:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - }, - "visibility": "public" - }, - { - "id": 44451, - "nodeType": "VariableDeclaration", - "src": "2365:57:114", - "nodes": [], - "constant": false, - "documentation": { - "id": 44447, - "nodeType": "StructuredDocumentation", - "src": "2279:81:114", - "text": "@notice Maps from a period to the poseidon commitment for the sync committee." - }, - "functionSelector": "b34711ab", - "mutability": "mutable", - "name": "syncCommitteePoseidons", - "nameLocation": "2400:22:114", - "scope": 45106, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - }, - "typeName": { - "id": 44450, - "keyType": { - "id": 44448, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2373:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Mapping", - "src": "2365:27:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - }, - "valueType": { - "id": 44449, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2384:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - }, - "visibility": "public" - }, - { - "id": 44457, - "nodeType": "EventDefinition", - "src": "2429:61:114", - "nodes": [], - "anonymous": false, - "eventSelector": "fefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a02", - "name": "HeadUpdate", - "nameLocation": "2435:10:114", - "parameters": { - "id": 44456, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44453, - "indexed": true, - "mutability": "mutable", - "name": "slot", - "nameLocation": "2462:4:114", - "nodeType": "VariableDeclaration", - "scope": 44457, - "src": "2446:20:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44452, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2446:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44455, - "indexed": true, - "mutability": "mutable", - "name": "root", - "nameLocation": "2484:4:114", - "nodeType": "VariableDeclaration", - "scope": 44457, - "src": "2468:20:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44454, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2468:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2445:44:114" - } - }, - { - "id": 44463, - "nodeType": "EventDefinition", - "src": "2495:72:114", - "nodes": [], - "anonymous": false, - "eventSelector": "783ee45e8820a8249b1456ff4a715f3bd483b1a59bdc7a49bbc316bbd67a4e2f", - "name": "SyncCommitteeUpdate", - "nameLocation": "2501:19:114", - "parameters": { - "id": 44462, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44459, - "indexed": true, - "mutability": "mutable", - "name": "period", - "nameLocation": "2537:6:114", - "nodeType": "VariableDeclaration", - "scope": 44463, - "src": "2521:22:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44458, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2521:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44461, - "indexed": true, - "mutability": "mutable", - "name": "root", - "nameLocation": "2561:4:114", - "nodeType": "VariableDeclaration", - "scope": 44463, - "src": "2545:20:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44460, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2545:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2520:46:114" - } - }, - { - "id": 44512, - "nodeType": "FunctionDefinition", - "src": "2573:643:114", - "nodes": [], - "body": { - "id": 44511, - "nodeType": "Block", - "src": "2863:353:114", - "nodes": [], - "statements": [ - { - "expression": { - "id": 44484, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44482, - "name": "GENESIS_VALIDATORS_ROOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44398, - "src": "2873:23:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 44483, - "name": "genesisValidatorsRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44465, - "src": "2899:21:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "2873:47:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 44485, - "nodeType": "ExpressionStatement", - "src": "2873:47:114" - }, - { - "expression": { - "id": 44488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44486, - "name": "GENESIS_TIME", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44400, - "src": "2930:12:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 44487, - "name": "genesisTime", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44467, - "src": "2945:11:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2930:26:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44489, - "nodeType": "ExpressionStatement", - "src": "2930:26:114" - }, - { - "expression": { - "id": 44492, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44490, - "name": "SECONDS_PER_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44402, - "src": "2966:16:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 44491, - "name": "secondsPerSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44469, - "src": "2985:14:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2966:33:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44493, - "nodeType": "ExpressionStatement", - "src": "2966:33:114" - }, - { - "expression": { - "id": 44496, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44494, - "name": "SLOTS_PER_PERIOD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44404, - "src": "3009:16:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 44495, - "name": "slotsPerPeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44471, - "src": "3028:14:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3009:33:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44497, - "nodeType": "ExpressionStatement", - "src": "3009:33:114" - }, - { - "expression": { - "id": 44500, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44498, - "name": "SOURCE_CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44406, - "src": "3052:15:114", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 44499, - "name": "sourceChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44477, - "src": "3070:13:114", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "3052:31:114", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 44501, - "nodeType": "ExpressionStatement", - "src": "3052:31:114" - }, - { - "expression": { - "id": 44504, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44502, - "name": "FINALITY_THRESHOLD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44408, - "src": "3093:18:114", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 44503, - "name": "finalityThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44479, - "src": "3114:17:114", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "3093:38:114", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 44505, - "nodeType": "ExpressionStatement", - "src": "3093:38:114" - }, - { - "expression": { - "arguments": [ - { - "id": 44507, - "name": "syncCommitteePeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44473, - "src": "3166:19:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 44508, - "name": "syncCommitteePoseidon", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44475, - "src": "3187:21:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 44506, - "name": "setSyncCommitteePoseidon", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45105, - "src": "3141:24:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (uint256,bytes32)" - } - }, - "id": 44509, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3141:68:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44510, - "nodeType": "ExpressionStatement", - "src": "3141:68:114" - } - ] - }, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 44480, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44465, - "mutability": "mutable", - "name": "genesisValidatorsRoot", - "nameLocation": "2602:21:114", - "nodeType": "VariableDeclaration", - "scope": 44512, - "src": "2594:29:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44464, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2594:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44467, - "mutability": "mutable", - "name": "genesisTime", - "nameLocation": "2641:11:114", - "nodeType": "VariableDeclaration", - "scope": 44512, - "src": "2633:19:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44466, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2633:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44469, - "mutability": "mutable", - "name": "secondsPerSlot", - "nameLocation": "2670:14:114", - "nodeType": "VariableDeclaration", - "scope": 44512, - "src": "2662:22:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44468, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2662:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44471, - "mutability": "mutable", - "name": "slotsPerPeriod", - "nameLocation": "2702:14:114", - "nodeType": "VariableDeclaration", - "scope": 44512, - "src": "2694:22:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44470, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2694:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44473, - "mutability": "mutable", - "name": "syncCommitteePeriod", - "nameLocation": "2734:19:114", - "nodeType": "VariableDeclaration", - "scope": 44512, - "src": "2726:27:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44472, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2726:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44475, - "mutability": "mutable", - "name": "syncCommitteePoseidon", - "nameLocation": "2771:21:114", - "nodeType": "VariableDeclaration", - "scope": 44512, - "src": "2763:29:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44474, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2763:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44477, - "mutability": "mutable", - "name": "sourceChainId", - "nameLocation": "2809:13:114", - "nodeType": "VariableDeclaration", - "scope": 44512, - "src": "2802:20:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 44476, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2802:6:114", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44479, - "mutability": "mutable", - "name": "finalityThreshold", - "nameLocation": "2839:17:114", - "nodeType": "VariableDeclaration", - "scope": 44512, - "src": "2832:24:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 44478, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "2832:6:114", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "2584:278:114" - }, - "returnParameters": { - "id": 44481, - "nodeType": "ParameterList", - "parameters": [], - "src": "2863:0:114" - }, - "scope": 45106, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 44564, - "nodeType": "FunctionDefinition", - "src": "3551:577:114", - "nodes": [], - "body": { - "id": 44563, - "nodeType": "Block", - "src": "3605:523:114", - "nodes": [], - "statements": [ - { - "assignments": [ - 44520 - ], - "declarations": [ - { - "constant": false, - "id": 44520, - "mutability": "mutable", - "name": "finalized", - "nameLocation": "3620:9:114", - "nodeType": "VariableDeclaration", - "scope": 44563, - "src": "3615:14:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 44519, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3615:4:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 44524, - "initialValue": { - "arguments": [ - { - "id": 44522, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44516, - "src": "3644:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - ], - "id": 44521, - "name": "processStep", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44658, - "src": "3632:11:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44378_memory_ptr_$returns$_t_bool_$", - "typeString": "function (struct LightClientStep memory) view returns (bool)" - } - }, - "id": 44523, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3632:19:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3615:36:114" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44529, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 44525, - "name": "getCurrentSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44981, - "src": "3666:14:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 44526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3666:16:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 44527, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44516, - "src": "3685:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44528, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3692:12:114", - "memberName": "attestedSlot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44366, - "src": "3685:19:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3666:38:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 44535, - "nodeType": "IfStatement", - "src": "3662:115:114", - "trueBody": { - "id": 44534, - "nodeType": "Block", - "src": "3706:71:114", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "55706461746520736c6f7420697320746f6f2066617220696e2074686520667574757265", - "id": 44531, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3727:38:114", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9d5b6907988bae42b7e613bf07235f2e4f54b11455dcdb40bb4ef279eae7a76f", - "typeString": "literal_string \"Update slot is too far in the future\"" - }, - "value": "Update slot is too far in the future" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_9d5b6907988bae42b7e613bf07235f2e4f54b11455dcdb40bb4ef279eae7a76f", - "typeString": "literal_string \"Update slot is too far in the future\"" - } - ], - "id": 44530, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "3720:6:114", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 44532, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3720:46:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44533, - "nodeType": "ExpressionStatement", - "src": "3720:46:114" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 44536, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44516, - "src": "3791:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44537, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3798:13:114", - "memberName": "finalizedSlot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44368, - "src": "3791:20:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 44538, - "name": "head", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44431, - "src": "3814:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3791:27:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 44545, - "nodeType": "IfStatement", - "src": "3787:102:114", - "trueBody": { - "id": 44544, - "nodeType": "Block", - "src": "3820:69:114", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "55706461746520736c6f74206c657373207468616e2063757272656e742068656164", - "id": 44541, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3841:36:114", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6c291bcab9e481c31fc21f7d3aa8b374c3aabd0b9471c965073c10d2045016c4", - "typeString": "literal_string \"Update slot less than current head\"" - }, - "value": "Update slot less than current head" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_6c291bcab9e481c31fc21f7d3aa8b374c3aabd0b9471c965073c10d2045016c4", - "typeString": "literal_string \"Update slot less than current head\"" - } - ], - "id": 44540, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "3834:6:114", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 44542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3834:44:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44543, - "nodeType": "ExpressionStatement", - "src": "3834:44:114" - } - ] - } - }, - { - "condition": { - "id": 44546, - "name": "finalized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44520, - "src": "3903:9:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 44561, - "nodeType": "Block", - "src": "4064:58:114", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "4e6f7420656e6f756768207061727469636970616e7473", - "id": 44558, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4085:25:114", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8979aa78e11231d286d47a92f052b8a41cf7d9d818a58b8b574dd67335800648", - "typeString": "literal_string \"Not enough participants\"" - }, - "value": "Not enough participants" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_8979aa78e11231d286d47a92f052b8a41cf7d9d818a58b8b574dd67335800648", - "typeString": "literal_string \"Not enough participants\"" - } - ], - "id": 44557, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "4078:6:114", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 44559, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4078:33:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44560, - "nodeType": "ExpressionStatement", - "src": "4078:33:114" - } - ] - }, - "id": 44562, - "nodeType": "IfStatement", - "src": "3899:223:114", - "trueBody": { - "id": 44556, - "nodeType": "Block", - "src": "3914:144:114", - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 44548, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44516, - "src": "3958:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44549, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3965:13:114", - "memberName": "finalizedSlot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44368, - "src": "3958:20:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 44550, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44516, - "src": "3980:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44551, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3987:19:114", - "memberName": "finalizedHeaderRoot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44372, - "src": "3980:26:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 44552, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44516, - "src": "4008:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44553, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4015:18:114", - "memberName": "executionStateRoot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44374, - "src": "4008:25:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 44547, - "name": "setSlotRoots", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45064, - "src": "3928:12:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (uint256,bytes32,bytes32)" - } - }, - "id": 44554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3928:119:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44555, - "nodeType": "ExpressionStatement", - "src": "3928:119:114" - } - ] - } - } - ] - }, - "documentation": { - "id": 44513, - "nodeType": "StructuredDocumentation", - "src": "3222:324:114", - "text": "@notice Updates the head of the light client to the provided slot.\n @dev The conditions for updating the head of the light client involve checking:\n 1) Enough signatures from the current sync committee for n=512\n 2) A valid finality proof\n 3) A valid execution state root proof" - }, - "functionSelector": "cb970952", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "step", - "nameLocation": "3560:4:114", - "parameters": { - "id": 44517, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44516, - "mutability": "mutable", - "name": "update", - "nameLocation": "3588:6:114", - "nodeType": "VariableDeclaration", - "scope": 44564, - "src": "3565:29:114", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep" - }, - "typeName": { - "id": 44515, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44514, - "name": "LightClientStep", - "nameLocations": [ - "3565:15:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 44378, - "src": "3565:15:114" - }, - "referencedDeclaration": 44378, - "src": "3565:15:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", - "typeString": "struct LightClientStep" - } - }, - "visibility": "internal" - } - ], - "src": "3564:31:114" - }, - "returnParameters": { - "id": 44518, - "nodeType": "ParameterList", - "parameters": [], - "src": "3605:0:114" - }, - "scope": 45106, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 44611, - "nodeType": "FunctionDefinition", - "src": "4310:457:114", - "nodes": [], - "body": { - "id": 44610, - "nodeType": "Block", - "src": "4368:399:114", - "nodes": [], - "statements": [ - { - "assignments": [ - 44573 - ], - "declarations": [ - { - "constant": false, - "id": 44573, - "mutability": "mutable", - "name": "stepUpdate", - "nameLocation": "4401:10:114", - "nodeType": "VariableDeclaration", - "scope": 44610, - "src": "4378:33:114", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep" - }, - "typeName": { - "id": 44572, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44571, - "name": "LightClientStep", - "nameLocations": [ - "4378:15:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 44378, - "src": "4378:15:114" - }, - "referencedDeclaration": 44378, - "src": "4378:15:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", - "typeString": "struct LightClientStep" - } - }, - "visibility": "internal" - } - ], - "id": 44576, - "initialValue": { - "expression": { - "id": 44574, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44568, - "src": "4414:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", - "typeString": "struct LightClientRotate memory" - } - }, - "id": 44575, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4421:4:114", - "memberName": "step", - "nodeType": "MemberAccess", - "referencedDeclaration": 44381, - "src": "4414:11:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4378:47:114" - }, - { - "assignments": [ - 44578 - ], - "declarations": [ - { - "constant": false, - "id": 44578, - "mutability": "mutable", - "name": "finalized", - "nameLocation": "4440:9:114", - "nodeType": "VariableDeclaration", - "scope": 44610, - "src": "4435:14:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 44577, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4435:4:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 44583, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 44580, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44568, - "src": "4464:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", - "typeString": "struct LightClientRotate memory" - } - }, - "id": 44581, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4471:4:114", - "memberName": "step", - "nodeType": "MemberAccess", - "referencedDeclaration": 44381, - "src": "4464:11:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - ], - "id": 44579, - "name": "processStep", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44658, - "src": "4452:11:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44378_memory_ptr_$returns$_t_bool_$", - "typeString": "function (struct LightClientStep memory) view returns (bool)" - } - }, - "id": 44582, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4452:24:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4435:41:114" - }, - { - "assignments": [ - 44585 - ], - "declarations": [ - { - "constant": false, - "id": 44585, - "mutability": "mutable", - "name": "currentPeriod", - "nameLocation": "4494:13:114", - "nodeType": "VariableDeclaration", - "scope": 44610, - "src": "4486:21:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44584, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4486:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 44590, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 44587, - "name": "stepUpdate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44573, - "src": "4533:10:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44588, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4544:13:114", - "memberName": "finalizedSlot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44368, - "src": "4533:24:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 44586, - "name": "getSyncCommitteePeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44966, - "src": "4510:22:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" - } - }, - "id": 44589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4510:48:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4486:72:114" - }, - { - "assignments": [ - 44592 - ], - "declarations": [ - { - "constant": false, - "id": 44592, - "mutability": "mutable", - "name": "nextPeriod", - "nameLocation": "4576:10:114", - "nodeType": "VariableDeclaration", - "scope": 44610, - "src": "4568:18:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44591, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4568:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 44596, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44595, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 44593, - "name": "currentPeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44585, - "src": "4589:13:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 44594, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4605:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4589:17:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4568:38:114" - }, - { - "expression": { - "arguments": [ - { - "id": 44598, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44568, - "src": "4637:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", - "typeString": "struct LightClientRotate memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", - "typeString": "struct LightClientRotate memory" - } - ], - "id": 44597, - "name": "zkLightClientRotate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44953, - "src": "4617:19:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientRotate_$44389_memory_ptr_$returns$__$", - "typeString": "function (struct LightClientRotate memory) view" - } - }, - "id": 44599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4617:27:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44600, - "nodeType": "ExpressionStatement", - "src": "4617:27:114" - }, - { - "condition": { - "id": 44601, - "name": "finalized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44578, - "src": "4659:9:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 44609, - "nodeType": "IfStatement", - "src": "4655:106:114", - "trueBody": { - "id": 44608, - "nodeType": "Block", - "src": "4670:91:114", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 44603, - "name": "nextPeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44592, - "src": "4709:10:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 44604, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44568, - "src": "4721:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", - "typeString": "struct LightClientRotate memory" - } - }, - "id": 44605, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4728:21:114", - "memberName": "syncCommitteePoseidon", - "nodeType": "MemberAccess", - "referencedDeclaration": 44385, - "src": "4721:28:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 44602, - "name": "setSyncCommitteePoseidon", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45105, - "src": "4684:24:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (uint256,bytes32)" - } - }, - "id": 44606, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4684:66:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44607, - "nodeType": "ExpressionStatement", - "src": "4684:66:114" - } - ] - } - } - ] - }, - "documentation": { - "id": 44565, - "nodeType": "StructuredDocumentation", - "src": "4134:171:114", - "text": "@notice Sets the sync committee for the next sync committeee period.\n @dev A commitment to the the next sync committeee is signed by the current sync committee." - }, - "functionSelector": "4b4e4dff", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "rotate", - "nameLocation": "4319:6:114", - "parameters": { - "id": 44569, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44568, - "mutability": "mutable", - "name": "update", - "nameLocation": "4351:6:114", - "nodeType": "VariableDeclaration", - "scope": 44611, - "src": "4326:31:114", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", - "typeString": "struct LightClientRotate" - }, - "typeName": { - "id": 44567, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44566, - "name": "LightClientRotate", - "nameLocations": [ - "4326:17:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 44389, - "src": "4326:17:114" - }, - "referencedDeclaration": 44389, - "src": "4326:17:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_storage_ptr", - "typeString": "struct LightClientRotate" - } - }, - "visibility": "internal" - } - ], - "src": "4325:33:114" - }, - "returnParameters": { - "id": 44570, - "nodeType": "ParameterList", - "parameters": [], - "src": "4368:0:114" - }, - "scope": 45106, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 44658, - "nodeType": "FunctionDefinition", - "src": "4850:556:114", - "nodes": [], - "body": { - "id": 44657, - "nodeType": "Block", - "src": "4931:475:114", - "nodes": [], - "statements": [ - { - "assignments": [ - 44621 - ], - "declarations": [ - { - "constant": false, - "id": 44621, - "mutability": "mutable", - "name": "currentPeriod", - "nameLocation": "4949:13:114", - "nodeType": "VariableDeclaration", - "scope": 44657, - "src": "4941:21:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44620, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4941:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 44626, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 44623, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44615, - "src": "4988:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44624, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4995:12:114", - "memberName": "attestedSlot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44366, - "src": "4988:19:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 44622, - "name": "getSyncCommitteePeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44966, - "src": "4965:22:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" - } - }, - "id": 44625, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4965:43:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4941:67:114" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 44631, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 44627, - "name": "syncCommitteePoseidons", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44451, - "src": "5023:22:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 44629, - "indexExpression": { - "id": 44628, - "name": "currentPeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44621, - "src": "5046:13:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5023:37:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 44630, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5064:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5023:42:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44640, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 44637, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44615, - "src": "5165:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44638, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5172:13:114", - "memberName": "participation", - "nodeType": "MemberAccess", - "referencedDeclaration": 44370, - "src": "5165:20:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 44639, - "name": "MIN_SYNC_COMMITTEE_PARTICIPANTS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44411, - "src": "5188:31:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5165:54:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 44646, - "nodeType": "IfStatement", - "src": "5161:144:114", - "trueBody": { - "id": 44645, - "nodeType": "Block", - "src": "5221:84:114", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "4c657373207468616e204d494e5f53594e435f434f4d4d49545445455f5041525449434950414e5453207369676e65642e", - "id": 44642, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5242:51:114", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_cae0be8985b78a6c0f9dfa91efa4accdc18ad2daf0009e8f2dec9f1b45d87605", - "typeString": "literal_string \"Less than MIN_SYNC_COMMITTEE_PARTICIPANTS signed.\"" - }, - "value": "Less than MIN_SYNC_COMMITTEE_PARTICIPANTS signed." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_cae0be8985b78a6c0f9dfa91efa4accdc18ad2daf0009e8f2dec9f1b45d87605", - "typeString": "literal_string \"Less than MIN_SYNC_COMMITTEE_PARTICIPANTS signed.\"" - } - ], - "id": 44641, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "5235:6:114", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 44643, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5235:59:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44644, - "nodeType": "ExpressionStatement", - "src": "5235:59:114" - } - ] - } - }, - "id": 44647, - "nodeType": "IfStatement", - "src": "5019:286:114", - "trueBody": { - "id": 44636, - "nodeType": "Block", - "src": "5067:88:114", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "53796e6320636f6d6d697474656520666f722063757272656e7420706572696f64206973206e6f7420696e697469616c697a65642e", - "id": 44633, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5088:55:114", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e8780d403efa266a60b69589365396827d2cfe370ce2d6818315948fc218b935", - "typeString": "literal_string \"Sync committee for current period is not initialized.\"" - }, - "value": "Sync committee for current period is not initialized." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_e8780d403efa266a60b69589365396827d2cfe370ce2d6818315948fc218b935", - "typeString": "literal_string \"Sync committee for current period is not initialized.\"" - } - ], - "id": 44632, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "5081:6:114", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 44634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5081:63:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44635, - "nodeType": "ExpressionStatement", - "src": "5081:63:114" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 44649, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44615, - "src": "5333:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - ], - "id": 44648, - "name": "zkLightClientStep", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44821, - "src": "5315:17:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_LightClientStep_$44378_memory_ptr_$returns$__$", - "typeString": "function (struct LightClientStep memory) view" - } - }, - "id": 44650, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5315:25:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44651, - "nodeType": "ExpressionStatement", - "src": "5315:25:114" - }, - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 44652, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44615, - "src": "5358:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44653, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5365:13:114", - "memberName": "participation", - "nodeType": "MemberAccess", - "referencedDeclaration": 44370, - "src": "5358:20:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 44654, - "name": "FINALITY_THRESHOLD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44408, - "src": "5381:18:114", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "5358:41:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 44619, - "id": 44656, - "nodeType": "Return", - "src": "5351:48:114" - } - ] - }, - "documentation": { - "id": 44612, - "nodeType": "StructuredDocumentation", - "src": "4773:72:114", - "text": "@notice Verifies that the header has enough signatures for finality." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "processStep", - "nameLocation": "4859:11:114", - "parameters": { - "id": 44616, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44615, - "mutability": "mutable", - "name": "update", - "nameLocation": "4894:6:114", - "nodeType": "VariableDeclaration", - "scope": 44658, - "src": "4871:29:114", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep" - }, - "typeName": { - "id": 44614, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44613, - "name": "LightClientStep", - "nameLocations": [ - "4871:15:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 44378, - "src": "4871:15:114" - }, - "referencedDeclaration": 44378, - "src": "4871:15:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", - "typeString": "struct LightClientStep" - } - }, - "visibility": "internal" - } - ], - "src": "4870:31:114" - }, - "returnParameters": { - "id": 44619, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44618, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 44658, - "src": "4925:4:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 44617, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4925:4:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "4924:6:114" - }, - "scope": 45106, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 44821, - "nodeType": "FunctionDefinition", - "src": "5509:1064:114", - "nodes": [], - "body": { - "id": 44820, - "nodeType": "Block", - "src": "5581:992:114", - "nodes": [], - "statements": [ - { - "assignments": [ - 44666 - ], - "declarations": [ - { - "constant": false, - "id": 44666, - "mutability": "mutable", - "name": "attestedSlotLE", - "nameLocation": "5599:14:114", - "nodeType": "VariableDeclaration", - "scope": 44820, - "src": "5591:22:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44665, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5591:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 44672, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 44669, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44662, - "src": "5635:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44670, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5642:12:114", - "memberName": "attestedSlot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44366, - "src": "5635:19:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 44667, - "name": "SSZ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43941, - "src": "5616:3:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", - "typeString": "type(library SSZ)" - } - }, - "id": 44668, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5620:14:114", - "memberName": "toLittleEndian", - "nodeType": "MemberAccess", - "referencedDeclaration": 43520, - "src": "5616:18:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (uint256) pure returns (bytes32)" - } - }, - "id": 44671, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5616:39:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5591:64:114" - }, - { - "assignments": [ - 44674 - ], - "declarations": [ - { - "constant": false, - "id": 44674, - "mutability": "mutable", - "name": "finalizedSlotLE", - "nameLocation": "5673:15:114", - "nodeType": "VariableDeclaration", - "scope": 44820, - "src": "5665:23:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44673, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5665:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 44680, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 44677, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44662, - "src": "5710:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44678, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5717:13:114", - "memberName": "finalizedSlot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44368, - "src": "5710:20:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 44675, - "name": "SSZ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43941, - "src": "5691:3:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", - "typeString": "type(library SSZ)" - } - }, - "id": 44676, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5695:14:114", - "memberName": "toLittleEndian", - "nodeType": "MemberAccess", - "referencedDeclaration": 43520, - "src": "5691:18:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (uint256) pure returns (bytes32)" - } - }, - "id": 44679, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5691:40:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5665:66:114" - }, - { - "assignments": [ - 44682 - ], - "declarations": [ - { - "constant": false, - "id": 44682, - "mutability": "mutable", - "name": "participationLE", - "nameLocation": "5749:15:114", - "nodeType": "VariableDeclaration", - "scope": 44820, - "src": "5741:23:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44681, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5741:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 44688, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 44685, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44662, - "src": "5786:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44686, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5793:13:114", - "memberName": "participation", - "nodeType": "MemberAccess", - "referencedDeclaration": 44370, - "src": "5786:20:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 44683, - "name": "SSZ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43941, - "src": "5767:3:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", - "typeString": "type(library SSZ)" - } - }, - "id": 44684, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5771:14:114", - "memberName": "toLittleEndian", - "nodeType": "MemberAccess", - "referencedDeclaration": 43520, - "src": "5767:18:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (uint256) pure returns (bytes32)" - } - }, - "id": 44687, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5767:40:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5741:66:114" - }, - { - "assignments": [ - 44690 - ], - "declarations": [ - { - "constant": false, - "id": 44690, - "mutability": "mutable", - "name": "currentPeriod", - "nameLocation": "5825:13:114", - "nodeType": "VariableDeclaration", - "scope": 44820, - "src": "5817:21:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44689, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5817:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 44695, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 44692, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44662, - "src": "5864:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44693, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5871:12:114", - "memberName": "attestedSlot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44366, - "src": "5864:19:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 44691, - "name": "getSyncCommitteePeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44966, - "src": "5841:22:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" - } - }, - "id": 44694, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5841:43:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5817:67:114" - }, - { - "assignments": [ - 44697 - ], - "declarations": [ - { - "constant": false, - "id": 44697, - "mutability": "mutable", - "name": "syncCommitteePoseidon", - "nameLocation": "5902:21:114", - "nodeType": "VariableDeclaration", - "scope": 44820, - "src": "5894:29:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44696, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5894:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 44701, - "initialValue": { - "baseExpression": { - "id": 44698, - "name": "syncCommitteePoseidons", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44451, - "src": "5926:22:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 44700, - "indexExpression": { - "id": 44699, - "name": "currentPeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44690, - "src": "5949:13:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5926:37:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5894:69:114" - }, - { - "assignments": [ - 44703 - ], - "declarations": [ - { - "constant": false, - "id": 44703, - "mutability": "mutable", - "name": "h", - "nameLocation": "5982:1:114", - "nodeType": "VariableDeclaration", - "scope": 44820, - "src": "5974:9:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44702, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5974:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 44704, - "nodeType": "VariableDeclarationStatement", - "src": "5974:9:114" - }, - { - "expression": { - "id": 44714, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44705, - "name": "h", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44703, - "src": "5993:1:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "id": 44710, - "name": "attestedSlotLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44666, - "src": "6017:14:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 44711, - "name": "finalizedSlotLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44674, - "src": "6033:15:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 44708, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6004:5:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 44707, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6004:5:114", - "typeDescriptions": {} - } - }, - "id": 44709, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6010:6:114", - "memberName": "concat", - "nodeType": "MemberAccess", - "src": "6004:12:114", - "typeDescriptions": { - "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 44712, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6004:45:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 44706, - "name": "sha256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -22, - "src": "5997:6:114", - "typeDescriptions": { - "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 44713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5997:53:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "5993:57:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 44715, - "nodeType": "ExpressionStatement", - "src": "5993:57:114" - }, - { - "expression": { - "id": 44726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44716, - "name": "h", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44703, - "src": "6060:1:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "id": 44721, - "name": "h", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44703, - "src": "6084:1:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 44722, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44662, - "src": "6087:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44723, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6094:19:114", - "memberName": "finalizedHeaderRoot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44372, - "src": "6087:26:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 44719, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6071:5:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 44718, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6071:5:114", - "typeDescriptions": {} - } - }, - "id": 44720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6077:6:114", - "memberName": "concat", - "nodeType": "MemberAccess", - "src": "6071:12:114", - "typeDescriptions": { - "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 44724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6071:43:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 44717, - "name": "sha256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -22, - "src": "6064:6:114", - "typeDescriptions": { - "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 44725, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6064:51:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "6060:55:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 44727, - "nodeType": "ExpressionStatement", - "src": "6060:55:114" - }, - { - "expression": { - "id": 44737, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44728, - "name": "h", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44703, - "src": "6125:1:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "id": 44733, - "name": "h", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44703, - "src": "6149:1:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 44734, - "name": "participationLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44682, - "src": "6152:15:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 44731, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6136:5:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 44730, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6136:5:114", - "typeDescriptions": {} - } - }, - "id": 44732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6142:6:114", - "memberName": "concat", - "nodeType": "MemberAccess", - "src": "6136:12:114", - "typeDescriptions": { - "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 44735, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6136:32:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 44729, - "name": "sha256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -22, - "src": "6129:6:114", - "typeDescriptions": { - "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 44736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6129:40:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "6125:44:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 44738, - "nodeType": "ExpressionStatement", - "src": "6125:44:114" - }, - { - "expression": { - "id": 44749, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44739, - "name": "h", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44703, - "src": "6179:1:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "id": 44744, - "name": "h", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44703, - "src": "6203:1:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 44745, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44662, - "src": "6206:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44746, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6213:18:114", - "memberName": "executionStateRoot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44374, - "src": "6206:25:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 44742, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6190:5:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 44741, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6190:5:114", - "typeDescriptions": {} - } - }, - "id": 44743, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6196:6:114", - "memberName": "concat", - "nodeType": "MemberAccess", - "src": "6190:12:114", - "typeDescriptions": { - "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 44747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6190:42:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 44740, - "name": "sha256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -22, - "src": "6183:6:114", - "typeDescriptions": { - "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 44748, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6183:50:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "6179:54:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 44750, - "nodeType": "ExpressionStatement", - "src": "6179:54:114" - }, - { - "expression": { - "id": 44760, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44751, - "name": "h", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44703, - "src": "6243:1:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "id": 44756, - "name": "h", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44703, - "src": "6267:1:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 44757, - "name": "syncCommitteePoseidon", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44697, - "src": "6270:21:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 44754, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6254:5:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 44753, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6254:5:114", - "typeDescriptions": {} - } - }, - "id": 44755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6260:6:114", - "memberName": "concat", - "nodeType": "MemberAccess", - "src": "6254:12:114", - "typeDescriptions": { - "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 44758, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6254:38:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 44752, - "name": "sha256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -22, - "src": "6247:6:114", - "typeDescriptions": { - "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 44759, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6247:46:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "6243:50:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 44761, - "nodeType": "ExpressionStatement", - "src": "6243:50:114" - }, - { - "assignments": [ - 44763 - ], - "declarations": [ - { - "constant": false, - "id": 44763, - "mutability": "mutable", - "name": "t", - "nameLocation": "6311:1:114", - "nodeType": "VariableDeclaration", - "scope": 44820, - "src": "6303:9:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44762, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6303:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 44774, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "id": 44770, - "name": "h", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44703, - "src": "6350:1:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 44769, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6342:7:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 44768, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6342:7:114", - "typeDescriptions": {} - } - }, - "id": 44771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6342:10:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 44766, - "name": "SSZ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43941, - "src": "6323:3:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", - "typeString": "type(library SSZ)" - } - }, - "id": 44767, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6327:14:114", - "memberName": "toLittleEndian", - "nodeType": "MemberAccess", - "referencedDeclaration": 43520, - "src": "6323:18:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (uint256) pure returns (bytes32)" - } - }, - "id": 44772, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6323:30:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 44765, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6315:7:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 44764, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6315:7:114", - "typeDescriptions": {} - } - }, - "id": 44773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6315:39:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6303:51:114" - }, - { - "expression": { - "id": 44788, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44775, - "name": "t", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44763, - "src": "6364:1:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 44776, - "name": "t", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44763, - "src": "6368:1:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44785, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44782, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "hexValue": "31", - "id": 44779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6382:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "id": 44778, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6374:7:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 44777, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6374:7:114", - "typeDescriptions": {} - } - }, - "id": 44780, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6374:10:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "hexValue": "323533", - "id": 44781, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6388:3:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_253_by_1", - "typeString": "int_const 253" - }, - "value": "253" - }, - "src": "6374:17:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 44783, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "6373:19:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 44784, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6395:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "6373:23:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 44786, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "6372:25:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6368:29:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6364:33:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44789, - "nodeType": "ExpressionStatement", - "src": "6364:33:114" - }, - { - "assignments": [ - 44792 - ], - "declarations": [ - { - "constant": false, - "id": 44792, - "mutability": "mutable", - "name": "proof", - "nameLocation": "6428:5:114", - "nodeType": "VariableDeclaration", - "scope": 44820, - "src": "6408:25:114", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", - "typeString": "struct Groth16Proof" - }, - "typeName": { - "id": 44791, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44790, - "name": "Groth16Proof", - "nameLocations": [ - "6408:12:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 44364, - "src": "6408:12:114" - }, - "referencedDeclaration": 44364, - "src": "6408:12:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", - "typeString": "struct Groth16Proof" - } - }, - "visibility": "internal" - } - ], - "id": 44795, - "initialValue": { - "expression": { - "id": 44793, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44662, - "src": "6436:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44794, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6443:5:114", - "memberName": "proof", - "nodeType": "MemberAccess", - "referencedDeclaration": 44377, - "src": "6436:12:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", - "typeString": "struct Groth16Proof memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6408:40:114" - }, - { - "assignments": [ - 44801 - ], - "declarations": [ - { - "constant": false, - "id": 44801, - "mutability": "mutable", - "name": "inputs", - "nameLocation": "6476:6:114", - "nodeType": "VariableDeclaration", - "scope": 44820, - "src": "6458:24:114", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr", - "typeString": "uint256[1]" - }, - "typeName": { - "baseType": { - "id": 44799, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6458:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44800, - "length": { - "hexValue": "31", - "id": 44798, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6466:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "nodeType": "ArrayTypeName", - "src": "6458:10:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$1_storage_ptr", - "typeString": "uint256[1]" - } - }, - "visibility": "internal" - } - ], - "id": 44807, - "initialValue": { - "components": [ - { - "arguments": [ - { - "id": 44804, - "name": "t", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44763, - "src": "6494:1:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 44803, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6486:7:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 44802, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6486:7:114", - "typeDescriptions": {} - } - }, - "id": 44805, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6486:10:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 44806, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "6485:12:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr", - "typeString": "uint256[1] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6458:39:114" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 44810, - "name": "proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44792, - "src": "6531:5:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", - "typeString": "struct Groth16Proof memory" - } - }, - "id": 44811, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6537:1:114", - "memberName": "a", - "nodeType": "MemberAccess", - "referencedDeclaration": 44353, - "src": "6531:7:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", - "typeString": "uint256[2] memory" - } - }, - { - "expression": { - "id": 44812, - "name": "proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44792, - "src": "6540:5:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", - "typeString": "struct Groth16Proof memory" - } - }, - "id": 44813, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6546:1:114", - "memberName": "b", - "nodeType": "MemberAccess", - "referencedDeclaration": 44359, - "src": "6540:7:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr", - "typeString": "uint256[2] memory[2] memory" - } - }, - { - "expression": { - "id": 44814, - "name": "proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44792, - "src": "6549:5:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", - "typeString": "struct Groth16Proof memory" - } - }, - "id": 44815, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6555:1:114", - "memberName": "c", - "nodeType": "MemberAccess", - "referencedDeclaration": 44363, - "src": "6549:7:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", - "typeString": "uint256[2] memory" - } - }, - { - "id": 44816, - "name": "inputs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44801, - "src": "6558:6:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr", - "typeString": "uint256[1] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", - "typeString": "uint256[2] memory" - }, - { - "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr", - "typeString": "uint256[2] memory[2] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", - "typeString": "uint256[2] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr", - "typeString": "uint256[1] memory" - } - ], - "id": 44809, - "name": "verifyProofStep", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47901, - "src": "6515:15:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr_$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_uint256_$1_memory_ptr_$returns$_t_bool_$", - "typeString": "function (uint256[2] memory,uint256[2] memory[2] memory,uint256[2] memory,uint256[1] memory) view returns (bool)" - } - }, - "id": 44817, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6515:50:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 44808, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6507:7:114", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 44818, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6507:59:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44819, - "nodeType": "ExpressionStatement", - "src": "6507:59:114" - } - ] - }, - "documentation": { - "id": 44659, - "nodeType": "StructuredDocumentation", - "src": "5412:92:114", - "text": "@notice Serializes the public inputs into a compressed form and verifies the step proof." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "zkLightClientStep", - "nameLocation": "5518:17:114", - "parameters": { - "id": 44663, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44662, - "mutability": "mutable", - "name": "update", - "nameLocation": "5559:6:114", - "nodeType": "VariableDeclaration", - "scope": 44821, - "src": "5536:29:114", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep" - }, - "typeName": { - "id": 44661, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44660, - "name": "LightClientStep", - "nameLocations": [ - "5536:15:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 44378, - "src": "5536:15:114" - }, - "referencedDeclaration": 44378, - "src": "5536:15:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_storage_ptr", - "typeString": "struct LightClientStep" - } - }, - "visibility": "internal" - } - ], - "src": "5535:31:114" - }, - "returnParameters": { - "id": 44664, - "nodeType": "ParameterList", - "parameters": [], - "src": "5581:0:114" - }, - "scope": 45106, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 44953, - "nodeType": "FunctionDefinition", - "src": "6655:882:114", - "nodes": [], - "body": { - "id": 44952, - "nodeType": "Block", - "src": "6731:806:114", - "nodes": [], - "statements": [ - { - "assignments": [ - 44830 - ], - "declarations": [ - { - "constant": false, - "id": 44830, - "mutability": "mutable", - "name": "proof", - "nameLocation": "6761:5:114", - "nodeType": "VariableDeclaration", - "scope": 44952, - "src": "6741:25:114", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", - "typeString": "struct Groth16Proof" - }, - "typeName": { - "id": 44829, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44828, - "name": "Groth16Proof", - "nameLocations": [ - "6741:12:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 44364, - "src": "6741:12:114" - }, - "referencedDeclaration": 44364, - "src": "6741:12:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_storage_ptr", - "typeString": "struct Groth16Proof" - } - }, - "visibility": "internal" - } - ], - "id": 44833, - "initialValue": { - "expression": { - "id": 44831, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44825, - "src": "6769:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", - "typeString": "struct LightClientRotate memory" - } - }, - "id": 44832, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6776:5:114", - "memberName": "proof", - "nodeType": "MemberAccess", - "referencedDeclaration": 44388, - "src": "6769:12:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", - "typeString": "struct Groth16Proof memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6741:40:114" - }, - { - "assignments": [ - 44839 - ], - "declarations": [ - { - "constant": false, - "id": 44839, - "mutability": "mutable", - "name": "inputs", - "nameLocation": "6810:6:114", - "nodeType": "VariableDeclaration", - "scope": 44952, - "src": "6791:25:114", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", - "typeString": "uint256[65]" - }, - "typeName": { - "baseType": { - "id": 44837, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6791:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44838, - "length": { - "hexValue": "3635", - "id": 44836, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6799:2:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_65_by_1", - "typeString": "int_const 65" - }, - "value": "65" - }, - "nodeType": "ArrayTypeName", - "src": "6791:11:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$65_storage_ptr", - "typeString": "uint256[65]" - } - }, - "visibility": "internal" - } - ], - "id": 44840, - "nodeType": "VariableDeclarationStatement", - "src": "6791:25:114" - }, - { - "assignments": [ - 44842 - ], - "declarations": [ - { - "constant": false, - "id": 44842, - "mutability": "mutable", - "name": "syncCommitteeSSZNumeric", - "nameLocation": "6835:23:114", - "nodeType": "VariableDeclaration", - "scope": 44952, - "src": "6827:31:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44841, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6827:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 44848, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 44845, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44825, - "src": "6869:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", - "typeString": "struct LightClientRotate memory" - } - }, - "id": 44846, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6876:16:114", - "memberName": "syncCommitteeSSZ", - "nodeType": "MemberAccess", - "referencedDeclaration": 44383, - "src": "6869:23:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 44844, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6861:7:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 44843, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6861:7:114", - "typeDescriptions": {} - } - }, - "id": 44847, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6861:32:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6827:66:114" - }, - { - "body": { - "id": 44881, - "nodeType": "Block", - "src": "6936:150:114", - "statements": [ - { - "expression": { - "id": 44871, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 44859, - "name": "inputs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44839, - "src": "6950:6:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", - "typeString": "uint256[65] memory" - } - }, - "id": 44865, - "indexExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44864, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_rational_31_by_1", - "typeString": "int_const 31" - }, - "id": 44862, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "3332", - "id": 44860, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6957:2:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 44861, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6962:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "6957:6:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_31_by_1", - "typeString": "int_const 31" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 44863, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44850, - "src": "6966:1:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6957:10:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6950:18:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44870, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 44866, - "name": "syncCommitteeSSZNumeric", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44842, - "src": "6971:23:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - }, - "id": 44869, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 44867, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6997:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "hexValue": "38", - "id": 44868, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7002:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "6997:6:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - } - }, - "src": "6971:32:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6950:53:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44872, - "nodeType": "ExpressionStatement", - "src": "6950:53:114" - }, - { - "expression": { - "id": 44879, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44873, - "name": "syncCommitteeSSZNumeric", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44842, - "src": "7017:23:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44878, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 44874, - "name": "syncCommitteeSSZNumeric", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44842, - "src": "7043:23:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - }, - "id": 44877, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 44875, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7069:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "hexValue": "38", - "id": 44876, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7074:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "7069:6:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - } - }, - "src": "7043:32:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7017:58:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44880, - "nodeType": "ExpressionStatement", - "src": "7017:58:114" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44855, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 44853, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44850, - "src": "6923:1:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "3332", - "id": 44854, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6927:2:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "6923:6:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 44882, - "initializationExpression": { - "assignments": [ - 44850 - ], - "declarations": [ - { - "constant": false, - "id": 44850, - "mutability": "mutable", - "name": "i", - "nameLocation": "6916:1:114", - "nodeType": "VariableDeclaration", - "scope": 44882, - "src": "6908:9:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44849, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6908:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 44852, - "initialValue": { - "hexValue": "30", - "id": 44851, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6920:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "6908:13:114" - }, - "loopExpression": { - "expression": { - "id": 44857, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "6931:3:114", - "subExpression": { - "id": 44856, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44850, - "src": "6931:1:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44858, - "nodeType": "ExpressionStatement", - "src": "6931:3:114" - }, - "nodeType": "ForStatement", - "src": "6903:183:114" - }, - { - "assignments": [ - 44884 - ], - "declarations": [ - { - "constant": false, - "id": 44884, - "mutability": "mutable", - "name": "finalizedHeaderRootNumeric", - "nameLocation": "7103:26:114", - "nodeType": "VariableDeclaration", - "scope": 44952, - "src": "7095:34:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44883, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7095:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 44891, - "initialValue": { - "arguments": [ - { - "expression": { - "expression": { - "id": 44887, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44825, - "src": "7140:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", - "typeString": "struct LightClientRotate memory" - } - }, - "id": 44888, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7147:4:114", - "memberName": "step", - "nodeType": "MemberAccess", - "referencedDeclaration": 44381, - "src": "7140:11:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientStep_$44378_memory_ptr", - "typeString": "struct LightClientStep memory" - } - }, - "id": 44889, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7152:19:114", - "memberName": "finalizedHeaderRoot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44372, - "src": "7140:31:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 44886, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7132:7:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 44885, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7132:7:114", - "typeDescriptions": {} - } - }, - "id": 44890, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7132:40:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7095:77:114" - }, - { - "body": { - "id": 44922, - "nodeType": "Block", - "src": "7215:155:114", - "statements": [ - { - "expression": { - "id": 44912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 44902, - "name": "inputs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44839, - "src": "7229:6:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", - "typeString": "uint256[65] memory" - } - }, - "id": 44906, - "indexExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44905, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "3634", - "id": 44903, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7236:2:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_64_by_1", - "typeString": "int_const 64" - }, - "value": "64" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 44904, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44893, - "src": "7241:1:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7236:6:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7229:14:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44911, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 44907, - "name": "finalizedHeaderRootNumeric", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44884, - "src": "7246:26:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - }, - "id": 44910, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 44908, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7275:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "hexValue": "38", - "id": 44909, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7280:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "7275:6:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - } - }, - "src": "7246:35:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7229:52:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44913, - "nodeType": "ExpressionStatement", - "src": "7229:52:114" - }, - { - "expression": { - "id": 44920, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 44914, - "name": "finalizedHeaderRootNumeric", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44884, - "src": "7295:26:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44919, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 44915, - "name": "finalizedHeaderRootNumeric", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44884, - "src": "7324:26:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - }, - "id": 44918, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 44916, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7353:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "hexValue": "38", - "id": 44917, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7358:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "7353:6:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - } - }, - "src": "7324:35:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7295:64:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44921, - "nodeType": "ExpressionStatement", - "src": "7295:64:114" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 44896, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44893, - "src": "7202:1:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "3332", - "id": 44897, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7206:2:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "7202:6:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 44923, - "initializationExpression": { - "assignments": [ - 44893 - ], - "declarations": [ - { - "constant": false, - "id": 44893, - "mutability": "mutable", - "name": "i", - "nameLocation": "7195:1:114", - "nodeType": "VariableDeclaration", - "scope": 44923, - "src": "7187:9:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44892, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7187:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 44895, - "initialValue": { - "hexValue": "30", - "id": 44894, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7199:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "7187:13:114" - }, - "loopExpression": { - "expression": { - "id": 44900, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "7210:3:114", - "subExpression": { - "id": 44899, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44893, - "src": "7210:1:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44901, - "nodeType": "ExpressionStatement", - "src": "7210:3:114" - }, - "nodeType": "ForStatement", - "src": "7182:188:114" - }, - { - "expression": { - "id": 44938, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 44924, - "name": "inputs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44839, - "src": "7379:6:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", - "typeString": "uint256[65] memory" - } - }, - "id": 44926, - "indexExpression": { - "hexValue": "3332", - "id": 44925, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7386:2:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7379:10:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 44933, - "name": "update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44825, - "src": "7427:6:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", - "typeString": "struct LightClientRotate memory" - } - }, - "id": 44934, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7434:21:114", - "memberName": "syncCommitteePoseidon", - "nodeType": "MemberAccess", - "referencedDeclaration": 44385, - "src": "7427:28:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 44932, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7419:7:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 44931, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7419:7:114", - "typeDescriptions": {} - } - }, - "id": 44935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7419:37:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 44929, - "name": "SSZ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43941, - "src": "7400:3:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", - "typeString": "type(library SSZ)" - } - }, - "id": 44930, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7404:14:114", - "memberName": "toLittleEndian", - "nodeType": "MemberAccess", - "referencedDeclaration": 43520, - "src": "7400:18:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (uint256) pure returns (bytes32)" - } - }, - "id": 44936, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7400:57:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 44928, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7392:7:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 44927, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7392:7:114", - "typeDescriptions": {} - } - }, - "id": 44937, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7392:66:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7379:79:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 44939, - "nodeType": "ExpressionStatement", - "src": "7379:79:114" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 44942, - "name": "proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44830, - "src": "7495:5:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", - "typeString": "struct Groth16Proof memory" - } - }, - "id": 44943, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7501:1:114", - "memberName": "a", - "nodeType": "MemberAccess", - "referencedDeclaration": 44353, - "src": "7495:7:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", - "typeString": "uint256[2] memory" - } - }, - { - "expression": { - "id": 44944, - "name": "proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44830, - "src": "7504:5:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", - "typeString": "struct Groth16Proof memory" - } - }, - "id": 44945, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7510:1:114", - "memberName": "b", - "nodeType": "MemberAccess", - "referencedDeclaration": 44359, - "src": "7504:7:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr", - "typeString": "uint256[2] memory[2] memory" - } - }, - { - "expression": { - "id": 44946, - "name": "proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44830, - "src": "7513:5:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Groth16Proof_$44364_memory_ptr", - "typeString": "struct Groth16Proof memory" - } - }, - "id": 44947, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7519:1:114", - "memberName": "c", - "nodeType": "MemberAccess", - "referencedDeclaration": 44363, - "src": "7513:7:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", - "typeString": "uint256[2] memory" - } - }, - { - "id": 44948, - "name": "inputs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44839, - "src": "7522:6:114", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", - "typeString": "uint256[65] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", - "typeString": "uint256[2] memory" - }, - { - "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr", - "typeString": "uint256[2] memory[2] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", - "typeString": "uint256[2] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$65_memory_ptr", - "typeString": "uint256[65] memory" - } - ], - "id": 44941, - "name": "verifyProofRotate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46887, - "src": "7477:17:114", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr_$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_uint256_$65_memory_ptr_$returns$_t_bool_$", - "typeString": "function (uint256[2] memory,uint256[2] memory[2] memory,uint256[2] memory,uint256[65] memory) view returns (bool)" - } - }, - "id": 44949, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7477:52:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 44940, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7469:7:114", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 44950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7469:61:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 44951, - "nodeType": "ExpressionStatement", - "src": "7469:61:114" - } - ] - }, - "documentation": { - "id": 44822, - "nodeType": "StructuredDocumentation", - "src": "6579:71:114", - "text": "@notice Serializes the public inputs and verifies the rotate proof." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "zkLightClientRotate", - "nameLocation": "6664:19:114", - "parameters": { - "id": 44826, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44825, - "mutability": "mutable", - "name": "update", - "nameLocation": "6709:6:114", - "nodeType": "VariableDeclaration", - "scope": 44953, - "src": "6684:31:114", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_memory_ptr", - "typeString": "struct LightClientRotate" - }, - "typeName": { - "id": 44824, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44823, - "name": "LightClientRotate", - "nameLocations": [ - "6684:17:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 44389, - "src": "6684:17:114" - }, - "referencedDeclaration": 44389, - "src": "6684:17:114", - "typeDescriptions": { - "typeIdentifier": "t_struct$_LightClientRotate_$44389_storage_ptr", - "typeString": "struct LightClientRotate" - } - }, - "visibility": "internal" - } - ], - "src": "6683:33:114" - }, - "returnParameters": { - "id": 44827, - "nodeType": "ParameterList", - "parameters": [], - "src": "6731:0:114" - }, - "scope": 45106, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 44966, - "nodeType": "FunctionDefinition", - "src": "7603:125:114", - "nodes": [], - "body": { - "id": 44965, - "nodeType": "Block", - "src": "7681:47:114", - "nodes": [], - "statements": [ - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44963, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 44961, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44956, - "src": "7698:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 44962, - "name": "SLOTS_PER_PERIOD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44404, - "src": "7705:16:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7698:23:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 44960, - "id": 44964, - "nodeType": "Return", - "src": "7691:30:114" - } - ] - }, - "documentation": { - "id": 44954, - "nodeType": "StructuredDocumentation", - "src": "7543:55:114", - "text": "@notice Gets the sync committee period from a slot." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getSyncCommitteePeriod", - "nameLocation": "7612:22:114", - "parameters": { - "id": 44957, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44956, - "mutability": "mutable", - "name": "slot", - "nameLocation": "7643:4:114", - "nodeType": "VariableDeclaration", - "scope": 44966, - "src": "7635:12:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44955, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7635:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "7634:14:114" - }, - "returnParameters": { - "id": 44960, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44959, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 44966, - "src": "7672:7:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44958, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7672:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "7671:9:114" - }, - "scope": 45106, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 44981, - "nodeType": "FunctionDefinition", - "src": "7818:133:114", - "nodes": [], - "body": { - "id": 44980, - "nodeType": "Block", - "src": "7876:75:114", - "nodes": [], - "statements": [ - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44978, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 44975, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 44972, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "7894:5:114", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 44973, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7900:9:114", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "7894:15:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 44974, - "name": "GENESIS_TIME", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44400, - "src": "7912:12:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7894:30:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 44976, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "7893:32:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 44977, - "name": "SECONDS_PER_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44402, - "src": "7928:16:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7893:51:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 44971, - "id": 44979, - "nodeType": "Return", - "src": "7886:58:114" - } - ] - }, - "documentation": { - "id": 44967, - "nodeType": "StructuredDocumentation", - "src": "7734:79:114", - "text": "@notice Gets the current slot for the chain the light client is reflecting." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getCurrentSlot", - "nameLocation": "7827:14:114", - "parameters": { - "id": 44968, - "nodeType": "ParameterList", - "parameters": [], - "src": "7841:2:114" - }, - "returnParameters": { - "id": 44971, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44970, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 44981, - "src": "7867:7:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44969, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7867:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "7866:9:114" - }, - "scope": 45106, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 45064, - "nodeType": "FunctionDefinition", - "src": "8310:721:114", - "nodes": [], - "body": { - "id": 45063, - "nodeType": "Block", - "src": "8424:607:114", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 44998, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 44991, - "name": "headers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44436, - "src": "8438:7:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 44993, - "indexExpression": { - "id": 44992, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44984, - "src": "8446:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8438:13:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 44996, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8463:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 44995, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8455:7:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 44994, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8455:7:114", - "typeDescriptions": {} - } - }, - "id": 44997, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8455:10:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "8438:27:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 45012, - "nodeType": "IfStatement", - "src": "8434:170:114", - "trueBody": { - "id": 45011, - "nodeType": "Block", - "src": "8467:137:114", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 45003, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 44999, - "name": "headers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44436, - "src": "8485:7:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 45001, - "indexExpression": { - "id": 45000, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44984, - "src": "8493:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8485:13:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 45002, - "name": "finalizedHeaderRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44986, - "src": "8502:19:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "8485:36:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 45009, - "nodeType": "IfStatement", - "src": "8481:93:114", - "trueBody": { - "id": 45008, - "nodeType": "Block", - "src": "8523:51:114", - "statements": [ - { - "expression": { - "id": 45006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 45004, - "name": "consistent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44427, - "src": "8541:10:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 45005, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8554:5:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "8541:18:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 45007, - "nodeType": "ExpressionStatement", - "src": "8541:18:114" - } - ] - } - }, - { - "functionReturnParameters": 44990, - "id": 45010, - "nodeType": "Return", - "src": "8587:7:114" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 45020, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 45013, - "name": "executionStateRoots", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44446, - "src": "8617:19:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 45015, - "indexExpression": { - "id": 45014, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44984, - "src": "8637:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8617:25:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 45018, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8654:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 45017, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8646:7:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 45016, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8646:7:114", - "typeDescriptions": {} - } - }, - "id": 45019, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8646:10:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "8617:39:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 45034, - "nodeType": "IfStatement", - "src": "8613:193:114", - "trueBody": { - "id": 45033, - "nodeType": "Block", - "src": "8658:148:114", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 45025, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 45021, - "name": "executionStateRoots", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44446, - "src": "8676:19:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 45023, - "indexExpression": { - "id": 45022, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44984, - "src": "8696:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8676:25:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 45024, - "name": "executionStateRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44988, - "src": "8705:18:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "8676:47:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 45031, - "nodeType": "IfStatement", - "src": "8672:104:114", - "trueBody": { - "id": 45030, - "nodeType": "Block", - "src": "8725:51:114", - "statements": [ - { - "expression": { - "id": 45028, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 45026, - "name": "consistent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44427, - "src": "8743:10:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 45027, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8756:5:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "8743:18:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 45029, - "nodeType": "ExpressionStatement", - "src": "8743:18:114" - } - ] - } - }, - { - "functionReturnParameters": 44990, - "id": 45032, - "nodeType": "Return", - "src": "8789:7:114" - } - ] - } - }, - { - "expression": { - "id": 45037, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 45035, - "name": "head", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44431, - "src": "8816:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 45036, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44984, - "src": "8823:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8816:11:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 45038, - "nodeType": "ExpressionStatement", - "src": "8816:11:114" - }, - { - "expression": { - "id": 45043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 45039, - "name": "headers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44436, - "src": "8837:7:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 45041, - "indexExpression": { - "id": 45040, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44984, - "src": "8845:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8837:13:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 45042, - "name": "finalizedHeaderRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44986, - "src": "8853:19:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "8837:35:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 45044, - "nodeType": "ExpressionStatement", - "src": "8837:35:114" - }, - { - "expression": { - "id": 45049, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 45045, - "name": "executionStateRoots", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44446, - "src": "8882:19:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 45047, - "indexExpression": { - "id": 45046, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44984, - "src": "8902:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8882:25:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 45048, - "name": "executionStateRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44988, - "src": "8910:18:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "8882:46:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 45050, - "nodeType": "ExpressionStatement", - "src": "8882:46:114" - }, - { - "expression": { - "id": 45056, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 45051, - "name": "timestamps", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44441, - "src": "8938:10:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 45053, - "indexExpression": { - "id": 45052, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44984, - "src": "8949:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8938:16:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 45054, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "8957:5:114", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 45055, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8963:9:114", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "8957:15:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8938:34:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 45057, - "nodeType": "ExpressionStatement", - "src": "8938:34:114" - }, - { - "eventCall": { - "arguments": [ - { - "id": 45059, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44984, - "src": "8998:4:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 45060, - "name": "finalizedHeaderRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44986, - "src": "9004:19:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 45058, - "name": "HeadUpdate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44457, - "src": "8987:10:114", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (uint256,bytes32)" - } - }, - "id": 45061, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8987:37:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 45062, - "nodeType": "EmitStatement", - "src": "8982:42:114" - } - ] - }, - "documentation": { - "id": 44982, - "nodeType": "StructuredDocumentation", - "src": "7957:348:114", - "text": "@notice Sets the current slot for the chain the light client is reflecting.\n @dev Checks if roots exists for the slot already. If there is, check for a conflict between\n the given roots and the existing roots. If there is an existing header but no\n conflict, do nothing. This avoids timestamp renewal DoS attacks." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "setSlotRoots", - "nameLocation": "8319:12:114", - "parameters": { - "id": 44989, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44984, - "mutability": "mutable", - "name": "slot", - "nameLocation": "8340:4:114", - "nodeType": "VariableDeclaration", - "scope": 45064, - "src": "8332:12:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44983, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8332:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44986, - "mutability": "mutable", - "name": "finalizedHeaderRoot", - "nameLocation": "8354:19:114", - "nodeType": "VariableDeclaration", - "scope": 45064, - "src": "8346:27:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44985, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8346:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44988, - "mutability": "mutable", - "name": "executionStateRoot", - "nameLocation": "8383:18:114", - "nodeType": "VariableDeclaration", - "scope": 45064, - "src": "8375:26:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 44987, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8375:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "8331:71:114" - }, - "returnParameters": { - "id": 44990, - "nodeType": "ParameterList", - "parameters": [], - "src": "8424:0:114" - }, - "scope": 45106, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 45105, - "nodeType": "FunctionDefinition", - "src": "9106:393:114", - "nodes": [], - "body": { - "id": 45104, - "nodeType": "Block", - "src": "9183:316:114", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 45085, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 45079, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 45072, - "name": "syncCommitteePoseidons", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44451, - "src": "9210:22:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 45074, - "indexExpression": { - "id": 45073, - "name": "period", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45067, - "src": "9233:6:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9210:30:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 45077, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9252:1:114", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 45076, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9244:7:114", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 45075, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9244:7:114", - "typeDescriptions": {} - } - }, - "id": 45078, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9244:10:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "9210:44:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 45084, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 45080, - "name": "syncCommitteePoseidons", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44451, - "src": "9274:22:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 45082, - "indexExpression": { - "id": 45081, - "name": "period", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45067, - "src": "9297:6:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9274:30:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 45083, - "name": "poseidon", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45069, - "src": "9308:8:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "9274:42:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9210:106:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 45092, - "nodeType": "IfStatement", - "src": "9193:197:114", - "trueBody": { - "id": 45091, - "nodeType": "Block", - "src": "9327:63:114", - "statements": [ - { - "expression": { - "id": 45088, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 45086, - "name": "consistent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44427, - "src": "9341:10:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 45087, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9354:5:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "9341:18:114", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 45089, - "nodeType": "ExpressionStatement", - "src": "9341:18:114" - }, - { - "functionReturnParameters": 45071, - "id": 45090, - "nodeType": "Return", - "src": "9373:7:114" - } - ] - } - }, - { - "expression": { - "id": 45097, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 45093, - "name": "syncCommitteePoseidons", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44451, - "src": "9399:22:114", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 45095, - "indexExpression": { - "id": 45094, - "name": "period", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45067, - "src": "9422:6:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9399:30:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 45096, - "name": "poseidon", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45069, - "src": "9432:8:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "9399:41:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 45098, - "nodeType": "ExpressionStatement", - "src": "9399:41:114" - }, - { - "eventCall": { - "arguments": [ - { - "id": 45100, - "name": "period", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45067, - "src": "9475:6:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 45101, - "name": "poseidon", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45069, - "src": "9483:8:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 45099, - "name": "SyncCommitteeUpdate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44463, - "src": "9455:19:114", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (uint256,bytes32)" - } - }, - "id": 45102, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9455:37:114", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 45103, - "nodeType": "EmitStatement", - "src": "9450:42:114" - } - ] - }, - "documentation": { - "id": 45065, - "nodeType": "StructuredDocumentation", - "src": "9037:64:114", - "text": "@notice Sets the sync committee poseidon for a given period." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "setSyncCommitteePoseidon", - "nameLocation": "9115:24:114", - "parameters": { - "id": 45070, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 45067, - "mutability": "mutable", - "name": "period", - "nameLocation": "9148:6:114", - "nodeType": "VariableDeclaration", - "scope": 45105, - "src": "9140:14:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 45066, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9140:7:114", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 45069, - "mutability": "mutable", - "name": "poseidon", - "nameLocation": "9164:8:114", - "nodeType": "VariableDeclaration", - "scope": 45105, - "src": "9156:16:114", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 45068, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9156:7:114", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "9139:34:114" - }, - "returnParameters": { - "id": 45071, - "nodeType": "ParameterList", - "parameters": [], - "src": "9183:0:114" - }, - "scope": 45106, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 44391, - "name": "ILightClient", - "nameLocations": [ - "977:12:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 47936, - "src": "977:12:114" - }, - "id": 44392, - "nodeType": "InheritanceSpecifier", - "src": "977:12:114" - }, - { - "baseName": { - "id": 44393, - "name": "StepVerifier", - "nameLocations": [ - "991:12:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 47902, - "src": "991:12:114" - }, - "id": 44394, - "nodeType": "InheritanceSpecifier", - "src": "991:12:114" - }, - { - "baseName": { - "id": 44395, - "name": "RotateVerifier", - "nameLocations": [ - "1005:14:114" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 46888, - "src": "1005:14:114" - }, - "id": 44396, - "nodeType": "InheritanceSpecifier", - "src": "1005:14:114" - } - ], - "canonicalName": "LightClient", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 44390, - "nodeType": "StructuredDocumentation", - "src": "710:243:114", - "text": "@title Light Client\n @author Succinct Labs\n @notice Uses Ethereum 2's Sync Committee Protocol to keep up-to-date with block headers from a\n Beacon Chain. This is done in a gas-efficient manner using zero-knowledge proofs." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 45106, - 46888, - 47902, - 47936 - ], - "name": "LightClient", - "nameLocation": "962:11:114", - "scope": 45107, - "usedErrors": [] - } - ] - }, - "id": 114 -} \ No newline at end of file diff --git a/out/LightClientMock.sol/LightClientMock.json b/out/LightClientMock.sol/LightClientMock.json deleted file mode 100644 index 689ac66..0000000 --- a/out/LightClientMock.sol/LightClientMock.json +++ /dev/null @@ -1,1471 +0,0 @@ -{ - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "slot", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - } - ], - "name": "HeadUpdate", - "type": "event" - }, - { - "inputs": [], - "name": "consistent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "executionStateRoots", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "head", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "headers", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "slot", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "executionRoot", - "type": "bytes32" - } - ], - "name": "setExecutionRoot", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "slot", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "headerRoot", - "type": "bytes32" - } - ], - "name": "setHeader", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "timestamps", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": { - "object": "0x60806040526000805460ff1916600117905534801561001d57600080fd5b506102568061002d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637623ee291161005b5780637623ee29146100e75780638bc33af3146101075780638f7dcfa314610127578063955cbb2b1461013057600080fd5b806303247e7c146100825780632bcccca51461009757806356f90d79146100b9575b600080fd5b6100956100903660046101e5565b610143565b005b6000546100a49060ff1681565b60405190151581526020015b60405180910390f35b6100d96100c7366004610207565b60026020526000908152604090205481565b6040519081526020016100b0565b6100d96100f5366004610207565b60036020526000908152604090205481565b6100d9610115366004610207565b60046020526000908152604090205481565b6100d960015481565b61009561013e3660046101e5565b610194565b60008281526003602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b60008281526002602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b600080604083850312156101f857600080fd5b50508035926020909101359150565b60006020828403121561021957600080fd5b503591905056fea264697066735822122046799f8b4de9028af946ca44115f076d489391e741964eb3a3706d9bf6b39f0064736f6c63430008100033", - "sourceMap": "266:800:129:-:0;;;317:29;;;-1:-1:-1;;317:29:129;342:4;317:29;;;266:800;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80637623ee291161005b5780637623ee29146100e75780638bc33af3146101075780638f7dcfa314610127578063955cbb2b1461013057600080fd5b806303247e7c146100825780632bcccca51461009757806356f90d79146100b9575b600080fd5b6100956100903660046101e5565b610143565b005b6000546100a49060ff1681565b60405190151581526020015b60405180910390f35b6100d96100c7366004610207565b60026020526000908152604090205481565b6040519081526020016100b0565b6100d96100f5366004610207565b60036020526000908152604090205481565b6100d9610115366004610207565b60046020526000908152604090205481565b6100d960015481565b61009561013e3660046101e5565b610194565b60008281526003602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b60008281526002602090815260408083208490556004909152808220429055600184905551829184917ffefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a029190a35050565b600080604083850312156101f857600080fd5b50508035926020909101359150565b60006020828403121561021957600080fd5b503591905056fea264697066735822122046799f8b4de9028af946ca44115f076d489391e741964eb3a3706d9bf6b39f0064736f6c63430008100033", - "sourceMap": "266:800:129:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:241;;;;;;:::i;:::-;;:::i;:::-;;317:29;;;;;;;;;;;;432:14:146;;425:22;407:41;;395:2;380:18;317:29:129;;;;;;;;377:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;790:25:146;;;778:2;763:18;377:42:129;644:177:146;425:54:129;;;;;;:::i;:::-;;;;;;;;;;;;;;485:45;;;;;;:::i;:::-;;;;;;;;;;;;;;352:19;;;;;;604:213;;;;;;:::i;:::-;;:::i;823:241::-;905:25;;;;:19;:25;;;;;;;;:41;;;956:10;:16;;;;;;975:15;956:34;;1000:4;:11;;;1026:31;933:13;;925:4;;1026:31;;905:25;1026:31;823:241;;:::o;604:213::-;676:13;;;;:7;:13;;;;;;;;:26;;;712:10;:16;;;;;;731:15;712:34;;756:4;:11;;;782:28;692:10;;684:4;;782:28;;676:13;782:28;604:213;;:::o;14:248:146:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:146;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:146:o;459:180::-;518:6;571:2;559:9;550:7;546:23;542:32;539:52;;;587:1;584;577:12;539:52;-1:-1:-1;610:23:146;;459:180;-1:-1:-1;459:180:146:o", - "linkReferences": {} - }, - "methodIdentifiers": { - "consistent()": "2bcccca5", - "executionStateRoots(uint256)": "7623ee29", - "head()": "8f7dcfa3", - "headers(uint256)": "56f90d79", - "setExecutionRoot(uint256,bytes32)": "03247e7c", - "setHeader(uint256,bytes32)": "955cbb2b", - "timestamps(uint256)": "8bc33af3" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"consistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executionStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"head\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"executionRoot\",\"type\":\"bytes32\"}],\"name\":\"setExecutionRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"headerRoot\",\"type\":\"bytes32\"}],\"name\":\"setHeader\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/amb/LightClientMock.sol\":\"LightClientMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"test/amb/LightClientMock.sol\":{\"keccak256\":\"0x4f15939ebfad6faf5fdf615bdc1e57889c4b41114aac8d797a25fb09799ed81d\",\"urls\":[\"bzz-raw://a96f5645c5582f4bc53c75af076892df6dd9df3afb89cf0484f521809097fb70\",\"dweb:/ipfs/QmdLpHYxipfEgJyTC7zioRHkjUgUrDAMH1MwUwCANXuKHA\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "slot", - "type": "uint256", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "root", - "type": "bytes32", - "indexed": true - } - ], - "type": "event", - "name": "HeadUpdate", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "consistent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "executionStateRoots", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "head", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "headers", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "slot", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "executionRoot", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setExecutionRoot" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "slot", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "headerRoot", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setHeader" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "timestamps", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "test/amb/LightClientMock.sol": "LightClientMock" - }, - "libraries": {} - }, - "sources": { - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - }, - "test/amb/LightClientMock.sol": { - "keccak256": "0x4f15939ebfad6faf5fdf615bdc1e57889c4b41114aac8d797a25fb09799ed81d", - "urls": [ - "bzz-raw://a96f5645c5582f4bc53c75af076892df6dd9df3afb89cf0484f521809097fb70", - "dweb:/ipfs/QmdLpHYxipfEgJyTC7zioRHkjUgUrDAMH1MwUwCANXuKHA" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "test/amb/LightClientMock.sol", - "id": 49446, - "exportedSymbols": { - "ILightClientMock": [ - 47936 - ], - "LightClientMock": [ - 49445 - ] - }, - "nodeType": "SourceUnit", - "src": "0:1067:129", - "nodes": [ - { - "id": 49357, - "nodeType": "PragmaDirective", - "src": "0:23:129", - "nodes": [], - "literals": [ - "solidity", - "0.8", - ".16" - ] - }, - { - "id": 49359, - "nodeType": "ImportDirective", - "src": "171:93:129", - "nodes": [], - "absolutePath": "src/lightclient/interfaces/ILightClient.sol", - "file": "src/lightclient/interfaces/ILightClient.sol", - "nameLocation": "-1:-1:-1", - "scope": 49446, - "sourceUnit": 47937, - "symbolAliases": [ - { - "foreign": { - "id": 49358, - "name": "ILightClient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47936, - "src": "179:12:129", - "typeDescriptions": {} - }, - "local": "ILightClientMock", - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 49445, - "nodeType": "ContractDefinition", - "src": "266:800:129", - "nodes": [ - { - "id": 49364, - "nodeType": "VariableDeclaration", - "src": "317:29:129", - "nodes": [], - "baseFunctions": [ - 47909 - ], - "constant": false, - "functionSelector": "2bcccca5", - "mutability": "mutable", - "name": "consistent", - "nameLocation": "329:10:129", - "scope": 49445, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 49362, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "317:4:129", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": { - "hexValue": "74727565", - "id": 49363, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "342:4:129", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "visibility": "public" - }, - { - "id": 49366, - "nodeType": "VariableDeclaration", - "src": "352:19:129", - "nodes": [], - "baseFunctions": [ - 47914 - ], - "constant": false, - "functionSelector": "8f7dcfa3", - "mutability": "mutable", - "name": "head", - "nameLocation": "367:4:129", - "scope": 49445, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 49365, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "352:7:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "public" - }, - { - "id": 49370, - "nodeType": "VariableDeclaration", - "src": "377:42:129", - "nodes": [], - "baseFunctions": [ - 47921 - ], - "constant": false, - "functionSelector": "56f90d79", - "mutability": "mutable", - "name": "headers", - "nameLocation": "412:7:129", - "scope": 49445, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - }, - "typeName": { - "id": 49369, - "keyType": { - "id": 49367, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "385:7:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Mapping", - "src": "377:27:129", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - }, - "valueType": { - "id": 49368, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "396:7:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - }, - "visibility": "public" - }, - { - "id": 49374, - "nodeType": "VariableDeclaration", - "src": "425:54:129", - "nodes": [], - "baseFunctions": [ - 47928 - ], - "constant": false, - "functionSelector": "7623ee29", - "mutability": "mutable", - "name": "executionStateRoots", - "nameLocation": "460:19:129", - "scope": 49445, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - }, - "typeName": { - "id": 49373, - "keyType": { - "id": 49371, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "433:7:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Mapping", - "src": "425:27:129", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - }, - "valueType": { - "id": 49372, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "444:7:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - }, - "visibility": "public" - }, - { - "id": 49378, - "nodeType": "VariableDeclaration", - "src": "485:45:129", - "nodes": [], - "baseFunctions": [ - 47935 - ], - "constant": false, - "functionSelector": "8bc33af3", - "mutability": "mutable", - "name": "timestamps", - "nameLocation": "520:10:129", - "scope": 49445, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - }, - "typeName": { - "id": 49377, - "keyType": { - "id": 49375, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "493:7:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Mapping", - "src": "485:27:129", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - }, - "valueType": { - "id": 49376, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "504:7:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "public" - }, - { - "id": 49384, - "nodeType": "EventDefinition", - "src": "537:61:129", - "nodes": [], - "anonymous": false, - "eventSelector": "fefccbcf6acd2cac524c1cb2d70450cabbec5bc95873e927c121d2d9b7924a02", - "name": "HeadUpdate", - "nameLocation": "543:10:129", - "parameters": { - "id": 49383, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 49380, - "indexed": true, - "mutability": "mutable", - "name": "slot", - "nameLocation": "570:4:129", - "nodeType": "VariableDeclaration", - "scope": 49384, - "src": "554:20:129", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 49379, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "554:7:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49382, - "indexed": true, - "mutability": "mutable", - "name": "root", - "nameLocation": "592:4:129", - "nodeType": "VariableDeclaration", - "scope": 49384, - "src": "576:20:129", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 49381, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "576:7:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "553:44:129" - } - }, - { - "id": 49414, - "nodeType": "FunctionDefinition", - "src": "604:213:129", - "nodes": [], - "body": { - "id": 49413, - "nodeType": "Block", - "src": "666:151:129", - "nodes": [], - "statements": [ - { - "expression": { - "id": 49395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 49391, - "name": "headers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49370, - "src": "676:7:129", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 49393, - "indexExpression": { - "id": 49392, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49386, - "src": "684:4:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "676:13:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 49394, - "name": "headerRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49388, - "src": "692:10:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "676:26:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 49396, - "nodeType": "ExpressionStatement", - "src": "676:26:129" - }, - { - "expression": { - "id": 49402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 49397, - "name": "timestamps", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49378, - "src": "712:10:129", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 49399, - "indexExpression": { - "id": 49398, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49386, - "src": "723:4:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "712:16:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 49400, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "731:5:129", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 49401, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "737:9:129", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "731:15:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "712:34:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 49403, - "nodeType": "ExpressionStatement", - "src": "712:34:129" - }, - { - "expression": { - "id": 49406, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 49404, - "name": "head", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49366, - "src": "756:4:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 49405, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49386, - "src": "763:4:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "756:11:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 49407, - "nodeType": "ExpressionStatement", - "src": "756:11:129" - }, - { - "eventCall": { - "arguments": [ - { - "id": 49409, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49386, - "src": "793:4:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 49410, - "name": "headerRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49388, - "src": "799:10:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 49408, - "name": "HeadUpdate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49384, - "src": "782:10:129", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (uint256,bytes32)" - } - }, - "id": 49411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "782:28:129", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 49412, - "nodeType": "EmitStatement", - "src": "777:33:129" - } - ] - }, - "functionSelector": "955cbb2b", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "setHeader", - "nameLocation": "613:9:129", - "parameters": { - "id": 49389, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 49386, - "mutability": "mutable", - "name": "slot", - "nameLocation": "631:4:129", - "nodeType": "VariableDeclaration", - "scope": 49414, - "src": "623:12:129", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 49385, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "623:7:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49388, - "mutability": "mutable", - "name": "headerRoot", - "nameLocation": "645:10:129", - "nodeType": "VariableDeclaration", - "scope": 49414, - "src": "637:18:129", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 49387, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "637:7:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "622:34:129" - }, - "returnParameters": { - "id": 49390, - "nodeType": "ParameterList", - "parameters": [], - "src": "666:0:129" - }, - "scope": 49445, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 49444, - "nodeType": "FunctionDefinition", - "src": "823:241:129", - "nodes": [], - "body": { - "id": 49443, - "nodeType": "Block", - "src": "895:169:129", - "nodes": [], - "statements": [ - { - "expression": { - "id": 49425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 49421, - "name": "executionStateRoots", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49374, - "src": "905:19:129", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$", - "typeString": "mapping(uint256 => bytes32)" - } - }, - "id": 49423, - "indexExpression": { - "id": 49422, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49416, - "src": "925:4:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "905:25:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 49424, - "name": "executionRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49418, - "src": "933:13:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "905:41:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 49426, - "nodeType": "ExpressionStatement", - "src": "905:41:129" - }, - { - "expression": { - "id": 49432, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 49427, - "name": "timestamps", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49378, - "src": "956:10:129", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 49429, - "indexExpression": { - "id": 49428, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49416, - "src": "967:4:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "956:16:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 49430, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "975:5:129", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 49431, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "981:9:129", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "975:15:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "956:34:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 49433, - "nodeType": "ExpressionStatement", - "src": "956:34:129" - }, - { - "expression": { - "id": 49436, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 49434, - "name": "head", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49366, - "src": "1000:4:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 49435, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49416, - "src": "1007:4:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1000:11:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 49437, - "nodeType": "ExpressionStatement", - "src": "1000:11:129" - }, - { - "eventCall": { - "arguments": [ - { - "id": 49439, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49416, - "src": "1037:4:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 49440, - "name": "executionRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49418, - "src": "1043:13:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 49438, - "name": "HeadUpdate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49384, - "src": "1026:10:129", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (uint256,bytes32)" - } - }, - "id": 49441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1026:31:129", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 49442, - "nodeType": "EmitStatement", - "src": "1021:36:129" - } - ] - }, - "functionSelector": "03247e7c", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "setExecutionRoot", - "nameLocation": "832:16:129", - "parameters": { - "id": 49419, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 49416, - "mutability": "mutable", - "name": "slot", - "nameLocation": "857:4:129", - "nodeType": "VariableDeclaration", - "scope": 49444, - "src": "849:12:129", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 49415, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "849:7:129", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49418, - "mutability": "mutable", - "name": "executionRoot", - "nameLocation": "871:13:129", - "nodeType": "VariableDeclaration", - "scope": 49444, - "src": "863:21:129", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 49417, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "863:7:129", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "848:37:129" - }, - "returnParameters": { - "id": 49420, - "nodeType": "ParameterList", - "parameters": [], - "src": "895:0:129" - }, - "scope": 49445, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 49360, - "name": "ILightClientMock", - "nameLocations": [ - "294:16:129" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 47936, - "src": "294:16:129" - }, - "id": 49361, - "nodeType": "InheritanceSpecifier", - "src": "294:16:129" - } - ], - "canonicalName": "LightClientMock", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 49445, - 47936 - ], - "name": "LightClientMock", - "nameLocation": "275:15:129", - "scope": 49446, - "usedErrors": [] - } - ] - }, - "id": 129 -} \ No newline at end of file diff --git a/out/SourceAMB.sol/SourceAMB.json b/out/SourceAMB.sol/SourceAMB.json deleted file mode 100644 index ef7b48d..0000000 --- a/out/SourceAMB.sol/SourceAMB.json +++ /dev/null @@ -1,4302 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "CannotSendToSameChain", - "type": "error" - }, - { - "inputs": [], - "name": "SendingDisabled", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "nonce", - "type": "uint64" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "message", - "type": "bytes" - } - ], - "name": "SentMessage", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "broadcasters", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "frozen", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "lightClients", - "outputs": [ - { - "internalType": "contract ILightClient", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "messageStatus", - "outputs": [ - { - "internalType": "enum MessageStatus", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "name": "messages", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "destinationAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "send", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "destinationAddress", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "send", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "destinationAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "sendViaStorage", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "destinationAddress", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "sendViaStorage", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "sendingEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "sourceChainIds", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "storageRootCache", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b506108e4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806368346a921161008c5780638d080d1d116100665780638d080d1d146102545780639efeff1c14610274578063a96a2e921461029c578063affed0e0146102af57600080fd5b806368346a92146102055780636fdbccbf146102185780637599735c1461022b57600080fd5b80633c6cf473116100c85780633c6cf473146101685780633e99e9ce1461019857806354fd4d50146101a557806359f89787146101c457600080fd5b8063029d6713146100ef578063147bce491461012257806336ae7c1814610135575b600080fd5b61010f6100fd3660046105fb565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61010f61013036600461068c565b6102da565b6101586101433660046106fa565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61018b610176366004610715565b60076020526000908152604090205460ff1681565b604051610119919061072e565b6000546101589060ff1681565b6008546101b29060ff1681565b60405160ff9091168152602001610119565b6101ed6101d23660046106fa565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61010f61021336600461068c565b6103e0565b61010f610226366004610756565b610461565b6101ed6102393660046106fa565b6004602052600090815260409020546001600160a01b031681565b61010f610262366004610715565b60096020526000908152604090205481565b610287610282366004610715565b6104ba565b60405163ffffffff9091168152602001610119565b61010f6102aa366004610756565b6104f4565b6002546102c2906001600160401b031681565b6040516001600160401b039091168152602001610119565b6000805460ff166102fe57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036103245760405163b0747d8160e01b815260040160405180910390fd5b60008061033d876001600160a01b0388165b8787610549565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161037283610797565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516103ce91906107ef565b60405180910390a39695505050505050565b6000805460ff1661040457604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361042a5760405163b0747d8160e01b815260040160405180910390fd5b600080610440876001600160a01b038816610336565b6002805492945090925082916001600160401b031690600061037283610797565b6000805460ff1661048557604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036104ab5760405163b0747d8160e01b815260040160405180910390fd5b60008061033d87878787610549565b600381815481106104ca57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff1661051857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361053e5760405163b0747d8160e01b815260040160405180910390fd5b600080610440878787875b600854600254604080516020601f86018190048102820181019092528481526060936000936105ac9360ff909216926001600160401b0390911691469133918c918c918c908c90819084018382808284376000920191909152506105c092505050565b805160208201209097909650945050505050565b6060878787878787876040516020016105df9796959493929190610822565b6040516020818303038152906040529050979650505050505050565b60006020828403121561060d57600080fd5b81356001600160401b038116811461062457600080fd5b9392505050565b803563ffffffff8116811461063f57600080fd5b919050565b60008083601f84011261065657600080fd5b5081356001600160401b0381111561066d57600080fd5b60208301915083602082850101111561068557600080fd5b9250929050565b600080600080606085870312156106a257600080fd5b6106ab8561062b565b935060208501356001600160a01b03811681146106c757600080fd5b925060408501356001600160401b038111156106e257600080fd5b6106ee87828801610644565b95989497509550505050565b60006020828403121561070c57600080fd5b6106248261062b565b60006020828403121561072757600080fd5b5035919050565b602081016003831061075057634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806060858703121561076c57600080fd5b6107758561062b565b93506020850135925060408501356001600160401b038111156106e257600080fd5b60006001600160401b038083168181036107c157634e487b7160e01b600052601160045260246000fd5b6001019392505050565b60005b838110156107e65781810151838201526020016107ce565b50506000910152565b602081526000825180602084015261080e8160408501602087016107cb565b601f01601f19169190910160400192915050565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526bffffffffffffffffffffffff19606088901b16600d84015285901b16602182015260258101839052815160009061089b8160458501602087016107cb565b919091016045019897505050505050505056fea2646970667358221220c55d27a2f7fa1e8ee8ea50b7be07b69395959c5dcf71ee86a979b17ae375333064736f6c63430008100033", - "sourceMap": "699:4335:99:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806368346a921161008c5780638d080d1d116100665780638d080d1d146102545780639efeff1c14610274578063a96a2e921461029c578063affed0e0146102af57600080fd5b806368346a92146102055780636fdbccbf146102185780637599735c1461022b57600080fd5b80633c6cf473116100c85780633c6cf473146101685780633e99e9ce1461019857806354fd4d50146101a557806359f89787146101c457600080fd5b8063029d6713146100ef578063147bce491461012257806336ae7c1814610135575b600080fd5b61010f6100fd3660046105fb565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61010f61013036600461068c565b6102da565b6101586101433660046106fa565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61018b610176366004610715565b60076020526000908152604090205460ff1681565b604051610119919061072e565b6000546101589060ff1681565b6008546101b29060ff1681565b60405160ff9091168152602001610119565b6101ed6101d23660046106fa565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61010f61021336600461068c565b6103e0565b61010f610226366004610756565b610461565b6101ed6102393660046106fa565b6004602052600090815260409020546001600160a01b031681565b61010f610262366004610715565b60096020526000908152604090205481565b610287610282366004610715565b6104ba565b60405163ffffffff9091168152602001610119565b61010f6102aa366004610756565b6104f4565b6002546102c2906001600160401b031681565b6040516001600160401b039091168152602001610119565b6000805460ff166102fe57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036103245760405163b0747d8160e01b815260040160405180910390fd5b60008061033d876001600160a01b0388165b8787610549565b600280546001600160401b03908116600090815260016020526040812084905582549496509294508493169161037283610797565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516103ce91906107ef565b60405180910390a39695505050505050565b6000805460ff1661040457604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361042a5760405163b0747d8160e01b815260040160405180910390fd5b600080610440876001600160a01b038816610336565b6002805492945090925082916001600160401b031690600061037283610797565b6000805460ff1661048557604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036104ab5760405163b0747d8160e01b815260040160405180910390fd5b60008061033d87878787610549565b600381815481106104ca57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff1661051857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361053e5760405163b0747d8160e01b815260040160405180910390fd5b600080610440878787875b600854600254604080516020601f86018190048102820181019092528481526060936000936105ac9360ff909216926001600160401b0390911691469133918c918c918c908c90819084018382808284376000920191909152506105c092505050565b805160208201209097909650945050505050565b6060878787878787876040516020016105df9796959493929190610822565b6040516020818303038152906040529050979650505050505050565b60006020828403121561060d57600080fd5b81356001600160401b038116811461062457600080fd5b9392505050565b803563ffffffff8116811461063f57600080fd5b919050565b60008083601f84011261065657600080fd5b5081356001600160401b0381111561066d57600080fd5b60208301915083602082850101111561068557600080fd5b9250929050565b600080600080606085870312156106a257600080fd5b6106ab8561062b565b935060208501356001600160a01b03811681146106c757600080fd5b925060408501356001600160401b038111156106e257600080fd5b6106ee87828801610644565b95989497509550505050565b60006020828403121561070c57600080fd5b6106248261062b565b60006020828403121561072757600080fd5b5035919050565b602081016003831061075057634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806060858703121561076c57600080fd5b6107758561062b565b93506020850135925060408501356001600160401b038111156106e257600080fd5b60006001600160401b038083168181036107c157634e487b7160e01b600052601160045260246000fd5b6001019392505050565b60005b838110156107e65781810151838201526020016107ce565b50506000910152565b602081526000825180602084015261080e8160408501602087016107cb565b601f01601f19169190910160400192915050565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526bffffffffffffffffffffffff19606088901b16600d84015285901b16602182015260258101839052815160009061089b8160458501602087016107cb565b919091016045019897505050505050505056fea2646970667358221220c55d27a2f7fa1e8ee8ea50b7be07b69395959c5dcf71ee86a979b17ae375333064736f6c63430008100033", - "sourceMap": "699:4335:99:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;449:25:146;;;437:2;422:18;527:42:103;;;;;;;;3438:539:99;;;;;;:::i;:::-;;:::i;1291:37:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2019:14:146;;2012:22;1994:41;;1982:2;1967:18;1291:37:103;1854:187:146;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1690:20;;;;;;;;;;;;2755:4:146;2743:17;;;2725:36;;2713:2;2698:18;1690:20:103;2583:184:146;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;2936:32:146;;;2918:51;;2906:2;2891:18;1164:46:103;2772:203:146;1864:488:99;;;;;;:::i;:::-;;:::i;2914:518::-;;;;;;:::i;:::-;;:::i;999:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;1936;;;;;;:::i;:::-;;;;;;;;;;;;;;879:30;;;;;;:::i;:::-;;:::i;:::-;;;4123:10:146;4111:23;;;4093:42;;4081:2;4066:18;879:30:103;3949:192:146;1391:467:99;;;;;;:::i;:::-;;:::i;634:19:103:-;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;4308:31:146;;;4290:50;;4278:2;4263:18;634:19:103;4146:200:146;3438:539:99;3603:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3648:13:::1;3626:18;:35;;::::0;3622:71:::1;;3670:23;;-1:-1:-1::0;;;3670:23:99::1;;;;;;;;;;;3622:71;3704:20;::::0;3761:85:::1;3780:18:::0;-1:-1:-1;;;;;337:22:113;;3800:39:99::1;3841:4;;3761:18;:85::i;:::-;3865:5;::::0;;-1:-1:-1;;;;;3865:5:99;;::::1;3856:15;::::0;;;:8:::1;:15;::::0;;;;:29;;;3912:7;;3703:143;;-1:-1:-1;3703:143:99;;-1:-1:-1;3703:143:99;;3912:7:::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;;-1:-1:-1::0;;;;;3900:42:99::1;;3934:7;3900:42;;;;;;:::i;:::-;;;;;;;;3959:11:::0;3438:539;-1:-1:-1;;;;;;3438:539:99:o;1864:488::-;2013:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;2062:13:::1;2040:18;:35;;::::0;2036:71:::1;;2084:23;;-1:-1:-1::0;;;2084:23:99::1;;;;;;;;;;;2036:71;2118:20;::::0;2175:85:::1;2194:18:::0;-1:-1:-1;;;;;337:22:113;;2214:39:99::1;245:122:113::0;2175:85:99::1;2287:5;:7:::0;;2117:143;;-1:-1:-1;2117:143:99;;-1:-1:-1;2117:143:99;;-1:-1:-1;;;;;2287:7:99::1;::::0;:5:::1;:7;::::0;::::1;:::i;2914:518::-:0;3079:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3124:13:::1;3102:18;:35;;::::0;3098:71:::1;;3146:23;;-1:-1:-1::0;;;3146:23:99::1;;;;;;;;;;;3098:71;3180:20;3202:19:::0;3237:64:::1;3256:18;3276;3296:4;;3237:18;:64::i;879:30:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1391:467:99:-;1540:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;1589:13:::1;1567:18;:35;;::::0;1563:71:::1;;1611:23;;-1:-1:-1::0;;;1611:23:99::1;;;;;;;;;;;1563:71;1645:20;1667:19:::0;1702:64:::1;1721:18;1741;1761:4;;4535:497:::0;4801:7;;4822:5;;4765:213;;;;;;;;;;;;;;;;;;;;;;4692:25;;4719:19;;4765:213;;4801:7;;;;;-1:-1:-1;;;;;4822:5:99;;;;4848:13;;4876:10;;4900:18;;4932;;4964:4;;;;;;4765:213;;4964:4;;;;4765:213;;;;;;;;;-1:-1:-1;4765:22:99;;-1:-1:-1;;;4765:213:99:i;:::-;5002:23;;;;;;4750:228;;5002:23;;-1:-1:-1;4535:497:99;-1:-1:-1;;;;;4535:497:99:o;3800:489:108:-;4049:12;4110:7;4131:5;4150:13;4177;4204:18;4236;4268:4;4080:202;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4073:209;;3800:489;;;;;;;;;:::o;14:284:146:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;-1:-1:-1;;;;;223:5:146;219:30;212:5;209:41;199:69;;264:1;261;254:12;199:69;287:5;14:284;-1:-1:-1;;;14:284:146:o;485:163::-;552:20;;612:10;601:22;;591:33;;581:61;;638:1;635;628:12;581:61;485:163;;;:::o;653:347::-;704:8;714:6;768:3;761:4;753:6;749:17;745:27;735:55;;786:1;783;776:12;735:55;-1:-1:-1;809:20:146;;-1:-1:-1;;;;;841:30:146;;838:50;;;884:1;881;874:12;838:50;921:4;913:6;909:17;897:29;;973:3;966:4;957:6;949;945:19;941:30;938:39;935:59;;;990:1;987;980:12;935:59;653:347;;;;;:::o;1005:655::-;1092:6;1100;1108;1116;1169:2;1157:9;1148:7;1144:23;1140:32;1137:52;;;1185:1;1182;1175:12;1137:52;1208:28;1226:9;1208:28;:::i;:::-;1198:38;-1:-1:-1;1286:2:146;1271:18;;1258:32;-1:-1:-1;;;;;1319:31:146;;1309:42;;1299:70;;1365:1;1362;1355:12;1299:70;1388:5;-1:-1:-1;1444:2:146;1429:18;;1416:32;-1:-1:-1;;;;;1460:30:146;;1457:50;;;1503:1;1500;1493:12;1457:50;1542:58;1592:7;1583:6;1572:9;1568:22;1542:58;:::i;:::-;1005:655;;;;-1:-1:-1;1619:8:146;-1:-1:-1;;;;1005:655:146:o;1665:184::-;1723:6;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1815:28;1833:9;1815:28;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:146;;2046:180;-1:-1:-1;2046:180:146:o;2231:347::-;2382:2;2367:18;;2415:1;2404:13;;2394:144;;2460:10;2455:3;2451:20;2448:1;2441:31;2495:4;2492:1;2485:15;2523:4;2520:1;2513:15;2394:144;2547:25;;;2231:347;:::o;2980:549::-;3067:6;3075;3083;3091;3144:2;3132:9;3123:7;3119:23;3115:32;3112:52;;;3160:1;3157;3150:12;3112:52;3183:28;3201:9;3183:28;:::i;:::-;3173:38;;3258:2;3247:9;3243:18;3230:32;3220:42;;3313:2;3302:9;3298:18;3285:32;-1:-1:-1;;;;;3332:6:146;3329:30;3326:50;;;3372:1;3369;3362:12;4351:306;4389:3;-1:-1:-1;;;;;4470:2:146;4463:5;4459:14;4497:2;4488:7;4485:15;4482:138;;4542:10;4537:3;4533:20;4530:1;4523:31;4577:4;4574:1;4567:15;4605:4;4602:1;4595:15;4482:138;4649:1;4636:15;;4351:306;-1:-1:-1;;;4351:306:146:o;4662:250::-;4747:1;4757:113;4771:6;4768:1;4765:13;4757:113;;;4847:11;;;4841:18;4828:11;;;4821:39;4793:2;4786:10;4757:113;;;-1:-1:-1;;4904:1:146;4886:16;;4879:27;4662:250::o;4917:394::-;5064:2;5053:9;5046:21;5027:4;5096:6;5090:13;5139:6;5134:2;5123:9;5119:18;5112:34;5155:79;5227:6;5222:2;5211:9;5207:18;5202:2;5194:6;5190:15;5155:79;:::i;:::-;5295:2;5274:15;-1:-1:-1;;5270:29:146;5255:45;;;;5302:2;5251:54;;4917:394;-1:-1:-1;;4917:394:146:o;5316:873::-;-1:-1:-1;;;;;;5659:3:146;5637:16;;;5633:36;5621:49;;-1:-1:-1;;;;;;5725:3:146;5703:16;;;5699:51;5695:1;5686:11;;5679:72;-1:-1:-1;;;;;;5774:3:146;5823:16;;;5819:25;;5815:1;5806:11;;5799:46;-1:-1:-1;;5883:2:146;5879:15;;;5875:53;5870:2;5861:12;;5854:75;5963:16;;;5959:25;5954:2;5945:12;;5938:47;6010:2;6001:12;;5994:28;;;6045:13;;-1:-1:-1;;6067:75:146;6045:13;6130:2;6121:12;;6114:4;6102:17;;6067:75;:::i;:::-;6162:16;;;;6180:2;6158:25;;5316:873;-1:-1:-1;;;;;;;;5316:873:146:o", - "linkReferences": {} - }, - "methodIdentifiers": { - "broadcasters(uint32)": "59f89787", - "frozen(uint32)": "36ae7c18", - "lightClients(uint32)": "7599735c", - "messageStatus(bytes32)": "3c6cf473", - "messages(uint64)": "029d6713", - "nonce()": "affed0e0", - "send(uint32,address,bytes)": "68346a92", - "send(uint32,bytes32,bytes)": "a96a2e92", - "sendViaStorage(uint32,address,bytes)": "147bce49", - "sendViaStorage(uint32,bytes32,bytes)": "6fdbccbf", - "sendingEnabled()": "3e99e9ce", - "sourceChainIds(uint256)": "9efeff1c", - "storageRootCache(bytes32)": "8d080d1d", - "version()": "54fd4d50" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CannotSendToSameChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SendingDisabled\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"send(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"sendViaStorage(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}}},\"title\":\"Source Arbitrary Message Bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"send(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.\"},\"sendViaStorage(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"This contract is the entrypoint for sending messages to other chains.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/SourceAMB.sol\":\"SourceAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "type": "error", - "name": "CannotSendToSameChain" - }, - { - "inputs": [], - "type": "error", - "name": "SendingDisabled" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "nonce", - "type": "uint64", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes", - "name": "message", - "type": "bytes", - "indexed": false - } - ], - "type": "event", - "name": "SentMessage", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "broadcasters", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "frozen", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "lightClients", - "outputs": [ - { - "internalType": "contract ILightClient", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "messageStatus", - "outputs": [ - { - "internalType": "enum MessageStatus", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function", - "name": "messages", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "nonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "destinationAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "send", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "destinationAddress", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "send", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "destinationAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "sendViaStorage", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "destinationAddress", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "sendViaStorage", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "sendingEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "sourceChainIds", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "storageRootCache", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "version", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "send(uint32,bytes32,bytes)": { - "params": { - "data": "The data passed to the contract on the other chain", - "destinationAddress": "The contract address that will be called on the destination chain.", - "destinationChainId": "The chain id that specifies the destination chain." - }, - "returns": { - "_0": "bytes32 A unique identifier for a message." - } - }, - "sendViaStorage(uint32,bytes32,bytes)": { - "params": { - "data": "The data passed to the contract on the other chain", - "destinationAddress": "The contract address that will be called on the destination chain.", - "destinationChainId": "The chain id that specifies the destination chain." - }, - "returns": { - "_0": "bytes32 A unique identifier for a message." - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "broadcasters(uint32)": { - "notice": "Mapping between source chainId and the address of the Telepathy broadcaster on that chain." - }, - "frozen(uint32)": { - "notice": "Mapping between a source chainId and whether it's frozen." - }, - "lightClients(uint32)": { - "notice": "Mapping between source chainId and the corresponding light client." - }, - "messageStatus(bytes32)": { - "notice": "Mapping between a message root and its status." - }, - "messages(uint64)": { - "notice": "Mapping between a nonce and a message root." - }, - "nonce()": { - "notice": "Keeps track of the next nonce to be used." - }, - "send(uint32,bytes32,bytes)": { - "notice": "Sends a message to a destination chain." - }, - "sendViaStorage(uint32,bytes32,bytes)": { - "notice": "Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas." - }, - "sendingEnabled()": { - "notice": "Whether sending is enabled or not." - }, - "sourceChainIds(uint256)": { - "notice": "All sourceChainIds." - }, - "storageRootCache(bytes32)": { - "notice": "Storage root cache." - }, - "version()": { - "notice": "Returns current contract version." - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/amb/SourceAMB.sol": "SourceAMB" - }, - "libraries": {} - }, - "sources": { - "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { - "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", - "urls": [ - "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", - "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { - "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", - "urls": [ - "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", - "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { - "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", - "urls": [ - "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", - "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { - "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", - "urls": [ - "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", - "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { - "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", - "urls": [ - "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", - "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { - "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", - "urls": [ - "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", - "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", - "urls": [ - "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", - "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { - "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", - "urls": [ - "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", - "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { - "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", - "urls": [ - "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", - "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { - "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", - "urls": [ - "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", - "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { - "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", - "urls": [ - "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", - "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { - "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", - "urls": [ - "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", - "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { - "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", - "urls": [ - "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", - "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { - "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", - "urls": [ - "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", - "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { - "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", - "urls": [ - "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", - "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" - ], - "license": "MIT" - }, - "src/amb/SourceAMB.sol": { - "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", - "urls": [ - "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", - "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" - ], - "license": null - }, - "src/amb/TelepathyAccess.sol": { - "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", - "urls": [ - "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", - "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" - ], - "license": null - }, - "src/amb/TelepathyStorage.sol": { - "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", - "urls": [ - "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", - "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" - ], - "license": null - }, - "src/amb/interfaces/ITelepathy.sol": { - "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", - "urls": [ - "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", - "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" - ], - "license": null - }, - "src/libraries/MessageEncoding.sol": { - "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", - "urls": [ - "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", - "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" - ], - "license": null - }, - "src/libraries/Typecast.sol": { - "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", - "urls": [ - "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", - "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" - ], - "license": "MIT OR Apache-2.0" - }, - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/amb/SourceAMB.sol", - "id": 41480, - "exportedSymbols": { - "Bytes32": [ - 44339 - ], - "ITelepathyRouter": [ - 42707 - ], - "Message": [ - 42654 - ], - "MessageEncoding": [ - 43383 - ], - "OwnableUpgradeable": [ - 28846 - ], - "SourceAMB": [ - 41479 - ], - "TelepathyAccess": [ - 42415 - ], - "TelepathyStorage": [ - 42633 - ], - "UUPSUpgradeable": [ - 29540 - ] - }, - "nodeType": "SourceUnit", - "src": "0:5035:99", - "nodes": [ - { - "id": 41219, - "nodeType": "PragmaDirective", - "src": "0:23:99", - "nodes": [], - "literals": [ - "solidity", - "0.8", - ".16" - ] - }, - { - "id": 41221, - "nodeType": "ImportDirective", - "src": "25:99:99", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "file": "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", - "nameLocation": "-1:-1:-1", - "scope": 41480, - "sourceUnit": 29541, - "symbolAliases": [ - { - "foreign": { - "id": 41220, - "name": "UUPSUpgradeable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 29540, - "src": "33:15:99", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41223, - "nodeType": "ImportDirective", - "src": "125:100:99", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "file": "openzeppelin-contracts-upgradeable/access/OwnableUpgradeable.sol", - "nameLocation": "-1:-1:-1", - "scope": 41480, - "sourceUnit": 28847, - "symbolAliases": [ - { - "foreign": { - "id": 41222, - "name": "OwnableUpgradeable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28846, - "src": "133:18:99", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41225, - "nodeType": "ImportDirective", - "src": "227:51:99", - "nodes": [], - "absolutePath": "src/libraries/Typecast.sol", - "file": "src/libraries/Typecast.sol", - "nameLocation": "-1:-1:-1", - "scope": 41480, - "sourceUnit": 44340, - "symbolAliases": [ - { - "foreign": { - "id": 41224, - "name": "Bytes32", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44339, - "src": "235:7:99", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41227, - "nodeType": "ImportDirective", - "src": "279:66:99", - "nodes": [], - "absolutePath": "src/libraries/MessageEncoding.sol", - "file": "src/libraries/MessageEncoding.sol", - "nameLocation": "-1:-1:-1", - "scope": 41480, - "sourceUnit": 43384, - "symbolAliases": [ - { - "foreign": { - "id": 41226, - "name": "MessageEncoding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43383, - "src": "287:15:99", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41230, - "nodeType": "ImportDirective", - "src": "346:76:99", - "nodes": [], - "absolutePath": "src/amb/interfaces/ITelepathy.sol", - "file": "src/amb/interfaces/ITelepathy.sol", - "nameLocation": "-1:-1:-1", - "scope": 41480, - "sourceUnit": 42765, - "symbolAliases": [ - { - "foreign": { - "id": 41228, - "name": "ITelepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42707, - "src": "354:16:99", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 41229, - "name": "Message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42654, - "src": "372:7:99", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41232, - "nodeType": "ImportDirective", - "src": "423:60:99", - "nodes": [], - "absolutePath": "src/amb/TelepathyAccess.sol", - "file": "src/amb/TelepathyAccess.sol", - "nameLocation": "-1:-1:-1", - "scope": 41480, - "sourceUnit": 42416, - "symbolAliases": [ - { - "foreign": { - "id": 41231, - "name": "TelepathyAccess", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42415, - "src": "431:15:99", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41234, - "nodeType": "ImportDirective", - "src": "484:62:99", - "nodes": [], - "absolutePath": "src/amb/TelepathyStorage.sol", - "file": "src/amb/TelepathyStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 41480, - "sourceUnit": 42634, - "symbolAliases": [ - { - "foreign": { - "id": 41233, - "name": "TelepathyStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42633, - "src": "492:16:99", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41479, - "nodeType": "ContractDefinition", - "src": "699:4335:99", - "nodes": [ - { - "id": 41241, - "nodeType": "ErrorDefinition", - "src": "762:24:99", - "nodes": [], - "errorSelector": "29256c5e", - "name": "SendingDisabled", - "nameLocation": "768:15:99", - "parameters": { - "id": 41240, - "nodeType": "ParameterList", - "parameters": [], - "src": "783:2:99" - } - }, - { - "id": 41243, - "nodeType": "ErrorDefinition", - "src": "791:30:99", - "nodes": [], - "errorSelector": "b0747d81", - "name": "CannotSendToSameChain", - "nameLocation": "797:21:99", - "parameters": { - "id": 41242, - "nodeType": "ParameterList", - "parameters": [], - "src": "818:2:99" - } - }, - { - "id": 41255, - "nodeType": "ModifierDefinition", - "src": "888:125:99", - "nodes": [], - "body": { - "id": 41254, - "nodeType": "Block", - "src": "916:97:99", - "nodes": [], - "statements": [ - { - "condition": { - "id": 41247, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "930:15:99", - "subExpression": { - "id": 41246, - "name": "sendingEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42585, - "src": "931:14:99", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 41252, - "nodeType": "IfStatement", - "src": "926:70:99", - "trueBody": { - "id": 41251, - "nodeType": "Block", - "src": "947:49:99", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 41248, - "name": "SendingDisabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41241, - "src": "968:15:99", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 41249, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "968:17:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41250, - "nodeType": "RevertStatement", - "src": "961:24:99" - } - ] - } - }, - { - "id": 41253, - "nodeType": "PlaceholderStatement", - "src": "1005:1:99" - } - ] - }, - "documentation": { - "id": 41244, - "nodeType": "StructuredDocumentation", - "src": "827:56:99", - "text": "@notice Modifier to require that sending is enabled." - }, - "name": "isSendingEnabled", - "nameLocation": "897:16:99", - "parameters": { - "id": 41245, - "nodeType": "ParameterList", - "parameters": [], - "src": "913:2:99" - }, - "virtual": false, - "visibility": "internal" - }, - { - "id": 41297, - "nodeType": "FunctionDefinition", - "src": "1391:467:99", - "nodes": [], - "body": { - "id": 41296, - "nodeType": "Block", - "src": "1553:305:99", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41269, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41258, - "src": "1567:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 41270, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "1589:5:99", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 41271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1595:7:99", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "1589:13:99", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1567:35:99", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 41276, - "nodeType": "IfStatement", - "src": "1563:71:99", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 41273, - "name": "CannotSendToSameChain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41243, - "src": "1611:21:99", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 41274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1611:23:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41275, - "nodeType": "RevertStatement", - "src": "1604:30:99" - } - }, - { - "assignments": [ - 41278, - 41280 - ], - "declarations": [ - { - "constant": false, - "id": 41278, - "mutability": "mutable", - "name": "message", - "nameLocation": "1658:7:99", - "nodeType": "VariableDeclaration", - "scope": 41296, - "src": "1645:20:99", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41277, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1645:5:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41280, - "mutability": "mutable", - "name": "messageRoot", - "nameLocation": "1675:11:99", - "nodeType": "VariableDeclaration", - "scope": 41296, - "src": "1667:19:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41279, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1667:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41286, - "initialValue": { - "arguments": [ - { - "id": 41282, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41258, - "src": "1721:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 41283, - "name": "destinationAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41260, - "src": "1741:18:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41284, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41262, - "src": "1761:4:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 41281, - "name": "_getMessageAndRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41478, - "src": "1702:18:99", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", - "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" - } - }, - "id": 41285, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1702:64:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", - "typeString": "tuple(bytes memory,bytes32)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1644:122:99" - }, - { - "eventCall": { - "arguments": [ - { - "id": 41289, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1793:7:99", - "subExpression": { - "id": 41288, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42593, - "src": "1793:5:99", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 41290, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41280, - "src": "1802:11:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41291, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41278, - "src": "1815:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 41287, - "name": "SentMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42662, - "src": "1781:11:99", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (uint64,bytes32,bytes memory)" - } - }, - "id": 41292, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1781:42:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41293, - "nodeType": "EmitStatement", - "src": "1776:47:99" - }, - { - "expression": { - "id": 41294, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41280, - "src": "1840:11:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 41268, - "id": 41295, - "nodeType": "Return", - "src": "1833:18:99" - } - ] - }, - "baseFunctions": [ - 42673 - ], - "documentation": { - "id": 41256, - "nodeType": "StructuredDocumentation", - "src": "1019:367:99", - "text": "@notice Sends a message to a destination chain.\n @param destinationChainId The chain id that specifies the destination chain.\n @param destinationAddress The contract address that will be called on the destination chain.\n @param data The data passed to the contract on the other chain\n @return bytes32 A unique identifier for a message." - }, - "functionSelector": "a96a2e92", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 41265, - "kind": "modifierInvocation", - "modifierName": { - "id": 41264, - "name": "isSendingEnabled", - "nameLocations": [ - "1506:16:99" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 41255, - "src": "1506:16:99" - }, - "nodeType": "ModifierInvocation", - "src": "1506:16:99" - } - ], - "name": "send", - "nameLocation": "1400:4:99", - "parameters": { - "id": 41263, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41258, - "mutability": "mutable", - "name": "destinationChainId", - "nameLocation": "1412:18:99", - "nodeType": "VariableDeclaration", - "scope": 41297, - "src": "1405:25:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 41257, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1405:6:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41260, - "mutability": "mutable", - "name": "destinationAddress", - "nameLocation": "1440:18:99", - "nodeType": "VariableDeclaration", - "scope": 41297, - "src": "1432:26:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41259, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1432:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41262, - "mutability": "mutable", - "name": "data", - "nameLocation": "1475:4:99", - "nodeType": "VariableDeclaration", - "scope": 41297, - "src": "1460:19:99", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41261, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1460:5:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "1404:76:99" - }, - "returnParameters": { - "id": 41268, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41267, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 41297, - "src": "1540:7:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41266, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1540:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1539:9:99" - }, - "scope": 41479, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 41341, - "nodeType": "FunctionDefinition", - "src": "1864:488:99", - "nodes": [], - "body": { - "id": 41340, - "nodeType": "Block", - "src": "2026:326:99", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41313, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41310, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41299, - "src": "2040:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 41311, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "2062:5:99", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 41312, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2068:7:99", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "2062:13:99", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2040:35:99", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 41317, - "nodeType": "IfStatement", - "src": "2036:71:99", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 41314, - "name": "CannotSendToSameChain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41243, - "src": "2084:21:99", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 41315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2084:23:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41316, - "nodeType": "RevertStatement", - "src": "2077:30:99" - } - }, - { - "assignments": [ - 41319, - 41321 - ], - "declarations": [ - { - "constant": false, - "id": 41319, - "mutability": "mutable", - "name": "message", - "nameLocation": "2131:7:99", - "nodeType": "VariableDeclaration", - "scope": 41340, - "src": "2118:20:99", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41318, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2118:5:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41321, - "mutability": "mutable", - "name": "messageRoot", - "nameLocation": "2148:11:99", - "nodeType": "VariableDeclaration", - "scope": 41340, - "src": "2140:19:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41320, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2140:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41330, - "initialValue": { - "arguments": [ - { - "id": 41323, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41299, - "src": "2194:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "arguments": [ - { - "id": 41326, - "name": "destinationAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41301, - "src": "2234:18:99", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 41324, - "name": "Bytes32", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44339, - "src": "2214:7:99", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Bytes32_$44339_$", - "typeString": "type(library Bytes32)" - } - }, - "id": 41325, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2222:11:99", - "memberName": "fromAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 44338, - "src": "2214:19:99", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", - "typeString": "function (address) pure returns (bytes32)" - } - }, - "id": 41327, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2214:39:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41328, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41303, - "src": "2255:4:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 41322, - "name": "_getMessageAndRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41478, - "src": "2175:18:99", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", - "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" - } - }, - "id": 41329, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2175:85:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", - "typeString": "tuple(bytes memory,bytes32)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2117:143:99" - }, - { - "eventCall": { - "arguments": [ - { - "id": 41333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2287:7:99", - "subExpression": { - "id": 41332, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42593, - "src": "2287:5:99", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 41334, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41321, - "src": "2296:11:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41335, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41319, - "src": "2309:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 41331, - "name": "SentMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42662, - "src": "2275:11:99", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (uint64,bytes32,bytes memory)" - } - }, - "id": 41336, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2275:42:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41337, - "nodeType": "EmitStatement", - "src": "2270:47:99" - }, - { - "expression": { - "id": 41338, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41321, - "src": "2334:11:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 41309, - "id": 41339, - "nodeType": "Return", - "src": "2327:18:99" - } - ] - }, - "baseFunctions": [ - 42684 - ], - "functionSelector": "68346a92", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 41306, - "kind": "modifierInvocation", - "modifierName": { - "id": 41305, - "name": "isSendingEnabled", - "nameLocations": [ - "1979:16:99" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 41255, - "src": "1979:16:99" - }, - "nodeType": "ModifierInvocation", - "src": "1979:16:99" - } - ], - "name": "send", - "nameLocation": "1873:4:99", - "parameters": { - "id": 41304, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41299, - "mutability": "mutable", - "name": "destinationChainId", - "nameLocation": "1885:18:99", - "nodeType": "VariableDeclaration", - "scope": 41341, - "src": "1878:25:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 41298, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1878:6:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41301, - "mutability": "mutable", - "name": "destinationAddress", - "nameLocation": "1913:18:99", - "nodeType": "VariableDeclaration", - "scope": 41341, - "src": "1905:26:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 41300, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1905:7:99", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41303, - "mutability": "mutable", - "name": "data", - "nameLocation": "1948:4:99", - "nodeType": "VariableDeclaration", - "scope": 41341, - "src": "1933:19:99", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41302, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1933:5:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "1877:76:99" - }, - "returnParameters": { - "id": 41309, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41308, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 41341, - "src": "2013:7:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41307, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2013:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2012:9:99" - }, - "scope": 41479, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 41389, - "nodeType": "FunctionDefinition", - "src": "2914:518:99", - "nodes": [], - "body": { - "id": 41388, - "nodeType": "Block", - "src": "3088:344:99", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41358, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41355, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41344, - "src": "3102:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 41356, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3124:5:99", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 41357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3130:7:99", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "3124:13:99", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3102:35:99", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 41362, - "nodeType": "IfStatement", - "src": "3098:71:99", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 41359, - "name": "CannotSendToSameChain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41243, - "src": "3146:21:99", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 41360, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3146:23:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41361, - "nodeType": "RevertStatement", - "src": "3139:30:99" - } - }, - { - "assignments": [ - 41364, - 41366 - ], - "declarations": [ - { - "constant": false, - "id": 41364, - "mutability": "mutable", - "name": "message", - "nameLocation": "3193:7:99", - "nodeType": "VariableDeclaration", - "scope": 41388, - "src": "3180:20:99", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41363, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3180:5:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41366, - "mutability": "mutable", - "name": "messageRoot", - "nameLocation": "3210:11:99", - "nodeType": "VariableDeclaration", - "scope": 41388, - "src": "3202:19:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41365, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3202:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41372, - "initialValue": { - "arguments": [ - { - "id": 41368, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41344, - "src": "3256:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 41369, - "name": "destinationAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41346, - "src": "3276:18:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41370, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41348, - "src": "3296:4:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 41367, - "name": "_getMessageAndRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41478, - "src": "3237:18:99", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", - "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" - } - }, - "id": 41371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3237:64:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", - "typeString": "tuple(bytes memory,bytes32)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3179:122:99" - }, - { - "expression": { - "id": 41377, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 41373, - "name": "messages", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42590, - "src": "3311:8:99", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_bytes32_$", - "typeString": "mapping(uint64 => bytes32)" - } - }, - "id": 41375, - "indexExpression": { - "id": 41374, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42593, - "src": "3320:5:99", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3311:15:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 41376, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41366, - "src": "3329:11:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3311:29:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 41378, - "nodeType": "ExpressionStatement", - "src": "3311:29:99" - }, - { - "eventCall": { - "arguments": [ - { - "id": 41381, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "3367:7:99", - "subExpression": { - "id": 41380, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42593, - "src": "3367:5:99", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 41382, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41366, - "src": "3376:11:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41383, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41364, - "src": "3389:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 41379, - "name": "SentMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42662, - "src": "3355:11:99", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (uint64,bytes32,bytes memory)" - } - }, - "id": 41384, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3355:42:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41385, - "nodeType": "EmitStatement", - "src": "3350:47:99" - }, - { - "expression": { - "id": 41386, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41366, - "src": "3414:11:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 41354, - "id": 41387, - "nodeType": "Return", - "src": "3407:18:99" - } - ] - }, - "baseFunctions": [ - 42695 - ], - "documentation": { - "id": 41342, - "nodeType": "StructuredDocumentation", - "src": "2358:551:99", - "text": "@notice Sends a message to a destination chain.\n @notice This method is more expensive than the `send` method as it requires adding to\n contract storage. Use `send` when interacting with Telepathy to save gas.\n @param destinationChainId The chain id that specifies the destination chain.\n @param destinationAddress The contract address that will be called on the destination chain.\n @param data The data passed to the contract on the other chain\n @return bytes32 A unique identifier for a message." - }, - "functionSelector": "6fdbccbf", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 41351, - "kind": "modifierInvocation", - "modifierName": { - "id": 41350, - "name": "isSendingEnabled", - "nameLocations": [ - "3053:16:99" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 41255, - "src": "3053:16:99" - }, - "nodeType": "ModifierInvocation", - "src": "3053:16:99" - } - ], - "name": "sendViaStorage", - "nameLocation": "2923:14:99", - "parameters": { - "id": 41349, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41344, - "mutability": "mutable", - "name": "destinationChainId", - "nameLocation": "2954:18:99", - "nodeType": "VariableDeclaration", - "scope": 41389, - "src": "2947:25:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 41343, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2947:6:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41346, - "mutability": "mutable", - "name": "destinationAddress", - "nameLocation": "2990:18:99", - "nodeType": "VariableDeclaration", - "scope": 41389, - "src": "2982:26:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41345, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2982:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41348, - "mutability": "mutable", - "name": "data", - "nameLocation": "3033:4:99", - "nodeType": "VariableDeclaration", - "scope": 41389, - "src": "3018:19:99", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41347, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3018:5:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "2937:106:99" - }, - "returnParameters": { - "id": 41354, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41353, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 41389, - "src": "3079:7:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41352, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3079:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3078:9:99" - }, - "scope": 41479, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 41439, - "nodeType": "FunctionDefinition", - "src": "3438:539:99", - "nodes": [], - "body": { - "id": 41438, - "nodeType": "Block", - "src": "3612:365:99", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41402, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41391, - "src": "3626:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 41403, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3648:5:99", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 41404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3654:7:99", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "3648:13:99", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3626:35:99", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 41409, - "nodeType": "IfStatement", - "src": "3622:71:99", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 41406, - "name": "CannotSendToSameChain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41243, - "src": "3670:21:99", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 41407, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3670:23:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41408, - "nodeType": "RevertStatement", - "src": "3663:30:99" - } - }, - { - "assignments": [ - 41411, - 41413 - ], - "declarations": [ - { - "constant": false, - "id": 41411, - "mutability": "mutable", - "name": "message", - "nameLocation": "3717:7:99", - "nodeType": "VariableDeclaration", - "scope": 41438, - "src": "3704:20:99", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41410, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3704:5:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41413, - "mutability": "mutable", - "name": "messageRoot", - "nameLocation": "3734:11:99", - "nodeType": "VariableDeclaration", - "scope": 41438, - "src": "3726:19:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41412, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3726:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41422, - "initialValue": { - "arguments": [ - { - "id": 41415, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41391, - "src": "3780:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "arguments": [ - { - "id": 41418, - "name": "destinationAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41393, - "src": "3820:18:99", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 41416, - "name": "Bytes32", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44339, - "src": "3800:7:99", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Bytes32_$44339_$", - "typeString": "type(library Bytes32)" - } - }, - "id": 41417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3808:11:99", - "memberName": "fromAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 44338, - "src": "3800:19:99", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", - "typeString": "function (address) pure returns (bytes32)" - } - }, - "id": 41419, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3800:39:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41420, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41395, - "src": "3841:4:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 41414, - "name": "_getMessageAndRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41478, - "src": "3761:18:99", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$", - "typeString": "function (uint32,bytes32,bytes calldata) view returns (bytes memory,bytes32)" - } - }, - "id": 41421, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3761:85:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$", - "typeString": "tuple(bytes memory,bytes32)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3703:143:99" - }, - { - "expression": { - "id": 41427, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 41423, - "name": "messages", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42590, - "src": "3856:8:99", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_bytes32_$", - "typeString": "mapping(uint64 => bytes32)" - } - }, - "id": 41425, - "indexExpression": { - "id": 41424, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42593, - "src": "3865:5:99", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3856:15:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 41426, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41413, - "src": "3874:11:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3856:29:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 41428, - "nodeType": "ExpressionStatement", - "src": "3856:29:99" - }, - { - "eventCall": { - "arguments": [ - { - "id": 41431, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "3912:7:99", - "subExpression": { - "id": 41430, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42593, - "src": "3912:5:99", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 41432, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41413, - "src": "3921:11:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41433, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41411, - "src": "3934:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 41429, - "name": "SentMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42662, - "src": "3900:11:99", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (uint64,bytes32,bytes memory)" - } - }, - "id": 41434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3900:42:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41435, - "nodeType": "EmitStatement", - "src": "3895:47:99" - }, - { - "expression": { - "id": 41436, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41413, - "src": "3959:11:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 41401, - "id": 41437, - "nodeType": "Return", - "src": "3952:18:99" - } - ] - }, - "baseFunctions": [ - 42706 - ], - "functionSelector": "147bce49", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 41398, - "kind": "modifierInvocation", - "modifierName": { - "id": 41397, - "name": "isSendingEnabled", - "nameLocations": [ - "3577:16:99" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 41255, - "src": "3577:16:99" - }, - "nodeType": "ModifierInvocation", - "src": "3577:16:99" - } - ], - "name": "sendViaStorage", - "nameLocation": "3447:14:99", - "parameters": { - "id": 41396, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41391, - "mutability": "mutable", - "name": "destinationChainId", - "nameLocation": "3478:18:99", - "nodeType": "VariableDeclaration", - "scope": 41439, - "src": "3471:25:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 41390, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "3471:6:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41393, - "mutability": "mutable", - "name": "destinationAddress", - "nameLocation": "3514:18:99", - "nodeType": "VariableDeclaration", - "scope": 41439, - "src": "3506:26:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 41392, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3506:7:99", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41395, - "mutability": "mutable", - "name": "data", - "nameLocation": "3557:4:99", - "nodeType": "VariableDeclaration", - "scope": 41439, - "src": "3542:19:99", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41394, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3542:5:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "3461:106:99" - }, - "returnParameters": { - "id": 41401, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41400, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 41439, - "src": "3603:7:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41399, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3603:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3602:9:99" - }, - "scope": 41479, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 41478, - "nodeType": "FunctionDefinition", - "src": "4535:497:99", - "nodes": [], - "body": { - "id": 41477, - "nodeType": "Block", - "src": "4740:292:99", - "nodes": [], - "statements": [ - { - "expression": { - "id": 41469, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 41453, - "name": "messageBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41449, - "src": "4750:12:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 41456, - "name": "version", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42622, - "src": "4801:7:99", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "id": 41457, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42593, - "src": "4822:5:99", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "arguments": [ - { - "expression": { - "id": 41460, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "4848:5:99", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 41461, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4854:7:99", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "4848:13:99", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 41459, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4841:6:99", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { - "id": 41458, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "4841:6:99", - "typeDescriptions": {} - } - }, - "id": 41462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4841:21:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 41463, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4876:3:99", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 41464, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4880:6:99", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4876:10:99", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 41465, - "name": "destinationChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41442, - "src": "4900:18:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 41466, - "name": "destinationAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41444, - "src": "4932:18:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41467, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41446, - "src": "4964:4:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "id": 41454, - "name": "MessageEncoding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43383, - "src": "4765:15:99", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MessageEncoding_$43383_$", - "typeString": "type(library MessageEncoding)" - } - }, - "id": 41455, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4781:6:99", - "memberName": "encode", - "nodeType": "MemberAccess", - "referencedDeclaration": 43304, - "src": "4765:22:99", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint8_$_t_uint64_$_t_uint32_$_t_address_$_t_uint32_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (uint8,uint64,uint32,address,uint32,bytes32,bytes memory) pure returns (bytes memory)" - } - }, - "id": 41468, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4765:213:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "src": "4750:228:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 41470, - "nodeType": "ExpressionStatement", - "src": "4750:228:99" - }, - { - "expression": { - "id": 41475, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 41471, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41451, - "src": "4988:11:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 41473, - "name": "messageBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41449, - "src": "5012:12:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 41472, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "5002:9:99", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 41474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5002:23:99", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "4988:37:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 41476, - "nodeType": "ExpressionStatement", - "src": "4988:37:99" - } - ] - }, - "documentation": { - "id": 41440, - "nodeType": "StructuredDocumentation", - "src": "3983:547:99", - "text": "@notice Gets the message and message root from the user-provided arguments to `send`\n @param destinationChainId The chain id that specifies the destination chain.\n @param destinationAddress The contract address that will be called on the destination chain.\n @param data The calldata used when calling the contract on the destination chain.\n @return messageBytes The message encoded as bytes, used in SentMessage event.\n @return messageRoot The hash of messageBytes, used as a unique identifier for a message." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getMessageAndRoot", - "nameLocation": "4544:18:99", - "parameters": { - "id": 41447, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41442, - "mutability": "mutable", - "name": "destinationChainId", - "nameLocation": "4579:18:99", - "nodeType": "VariableDeclaration", - "scope": 41478, - "src": "4572:25:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 41441, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "4572:6:99", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41444, - "mutability": "mutable", - "name": "destinationAddress", - "nameLocation": "4615:18:99", - "nodeType": "VariableDeclaration", - "scope": 41478, - "src": "4607:26:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41443, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4607:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41446, - "mutability": "mutable", - "name": "data", - "nameLocation": "4658:4:99", - "nodeType": "VariableDeclaration", - "scope": 41478, - "src": "4643:19:99", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41445, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4643:5:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "4562:106:99" - }, - "returnParameters": { - "id": 41452, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41449, - "mutability": "mutable", - "name": "messageBytes", - "nameLocation": "4705:12:99", - "nodeType": "VariableDeclaration", - "scope": 41478, - "src": "4692:25:99", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41448, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4692:5:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41451, - "mutability": "mutable", - "name": "messageRoot", - "nameLocation": "4727:11:99", - "nodeType": "VariableDeclaration", - "scope": 41478, - "src": "4719:19:99", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41450, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4719:7:99", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "4691:48:99" - }, - "scope": 41479, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 41236, - "name": "TelepathyStorage", - "nameLocations": [ - "721:16:99" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42633, - "src": "721:16:99" - }, - "id": 41237, - "nodeType": "InheritanceSpecifier", - "src": "721:16:99" - }, - { - "baseName": { - "id": 41238, - "name": "ITelepathyRouter", - "nameLocations": [ - "739:16:99" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42707, - "src": "739:16:99" - }, - "id": 41239, - "nodeType": "InheritanceSpecifier", - "src": "739:16:99" - } - ], - "canonicalName": "SourceAMB", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 41235, - "nodeType": "StructuredDocumentation", - "src": "548:151:99", - "text": "@title Source Arbitrary Message Bridge\n @author Succinct Labs\n @notice This contract is the entrypoint for sending messages to other chains." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 41479, - 42707, - 42633 - ], - "name": "SourceAMB", - "nameLocation": "708:9:99", - "scope": 41480, - "usedErrors": [ - 41241, - 41243 - ] - } - ] - }, - "id": 99 -} \ No newline at end of file diff --git a/out/TargetAMB.sol/TargetAMB.json b/out/TargetAMB.sol/TargetAMB.json deleted file mode 100644 index 4b8b2d4..0000000 --- a/out/TargetAMB.sol/TargetAMB.json +++ /dev/null @@ -1,9642 +0,0 @@ -{ - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "nonce", - "type": "uint64" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "message", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "bool", - "name": "status", - "type": "bool" - } - ], - "name": "ExecutedMessage", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "inputs": [], - "name": "MIN_LIGHT_CLIENT_DELAY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "broadcasters", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "slot", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes[]", - "name": "accountProof", - "type": "bytes[]" - }, - { - "internalType": "bytes[]", - "name": "storageProof", - "type": "bytes[]" - } - ], - "name": "executeMessage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "srcSlotTxSlotPack", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes32[]", - "name": "receiptsRootProof", - "type": "bytes32[]" - }, - { - "internalType": "bytes32", - "name": "receiptsRoot", - "type": "bytes32" - }, - { - "internalType": "bytes[]", - "name": "receiptProof", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "txIndexRLPEncoded", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "logIndex", - "type": "uint256" - } - ], - "name": "executeMessageFromLog", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "frozen", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "lightClients", - "outputs": [ - { - "internalType": "contract ILightClient", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "messageStatus", - "outputs": [ - { - "internalType": "enum MessageStatus", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "name": "messages", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "sendingEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "sourceChainIds", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "sourceChainIdsLength", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "storageRootCache", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b50613d6d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd366004613501565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61014561013036600461351c565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61016861016336600461367c565b6102c6565b005b61018d610178366004613779565b60076020526000908152604090205460ff1681565b60405161011991906137a8565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc36600461351c565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d36600461351c565b6004602052600090815260409020546001600160a01b031681565b6101686102463660046137d0565b610599565b61010f610259366004613779565b60096020526000908152604090205481565b61027e610279366004613779565b6108bc565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f6565b6000806102db8b8b61094f565b915091506102ec8260400151610bb9565b6102f98260400151610ceb565b6000808e8e81019061030b919061387a565b9150915061031d828560400151610d47565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac91906138ad565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104418b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890610f80565b9050806104905760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f58787906104a691906138c6565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261118a565b905081811461053e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061058082828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153d92505050565b505061058c6001603355565b5050505050505050505050565b6105a16108f6565b6000806105ae888861094f565b915091506105bf8260400151610bb9565b6105cc8260400151610ceb565b6105da898360400151610d47565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107915760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f091906138ad565b905060008190036107435760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b610777610750898b6138c6565b60408088015163ffffffff166000908152600560205220546001600160a01b0316836116e4565b600083815260096020526040902081905592506107a39050565b60008181526009602052604090205491505b6000846020015160016040516020016107d19291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061081982856108148a8c6138c6565b6117e0565b90508481146108625760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a782828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153d92505050565b50506108b36001603355565b50505050505050565b600381815481106108cc57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109cc85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061187c92505050565b9050600085856040516109e0929190613949565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0f57610a0f613792565b14610a5c5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610aa45760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610aee5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b39575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610bac5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1f5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190613959565b610ce85760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce85760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610dad5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906138ad565b600003610e895760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1391906138ad565b610f1d9042613991565b90506078811015610f7b5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b600080610f8c83611941565b9050600081856001600160401b031610610fa757601b610faa565b60075b60ff169050600082866001600160401b031610610fe657612000610fd7846001600160401b038916613991565b610fe191906139ba565b610ffb565b610ffb6120006001600160401b0388166139ba565b90506000866001600160401b0316886001600160401b03160361103a5750600b611027816102006139ce565b611033906101836139ed565b905061116f565b612000611047888a613a00565b6001600160401b0316116110a95750600b6110638160206139ce565b61106e9060066139ed565b90506110856120006001600160401b038916613a27565b611091612000836139ce565b61109b91906139ed565b9050611027816102006139ce565b876001600160401b0316876001600160401b031610156111275750600b826110d28260206139ce565b6110dc91906139ed565b90506110e98160026139ce565b6110f49060006139ed565b9050816111056301000000836139ce565b61110f91906139ed565b905061111c8160026139ce565b61106e9060016139ed565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016103ef565b61117b8b828c8c611981565b9b9a5050505050505050505050565b600080611198878a8a61199b565b90506000816000815181106111af576111af613a3b565b01602001516001600160f81b03191690506000600160f81b8214806111e15750600160f91b6001600160f81b03198316145b156111ee57506001611253565b600360fe1b6001600160f81b031983161061120b57506000611253565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b6000602084019050600060405180604001604052808487516112759190613991565b815260200161128485856139ed565b9052905060006112938261223b565b905080516004146112df5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b6000611304826003815181106112f7576112f7613a3b565b602002602001015161223b565b905080518c106113565760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b600061136d828e815181106112f7576112f7613a3b565b905080516003146113cb5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006113f0826000815181106113e3576113e3613a3b565b6020026020010151612460565b90508c6001600160a01b0316816001600160a01b0316146114635760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b600061147b836001815181106112f7576112f7613a3b565b90508c6114a18260008151811061149457611494613a3b565b60200260200101516124d4565b146115045760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b611526818d8151811061151957611519613a3b565b60200260200101516124db565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161156c93929190613aa1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516115be9190613ad1565b6000604051808303816000865af19150503d80600081146115fb576040519150601f19603f3d011682016040523d82523d6000602084013e611600565b606091505b50805191955093506000925060200390506116425760008280602001905181019061162b9190613aed565b6001600160e01b031916631dee306b60e11b149150505b82801561164c5750805b1561166f576000858152600760205260409020805460ff19166002179055611689565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe894787876040516116d4929190613b17565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b1660208201526000908190603401604051602081830303815290604052805190602001209050600061174e8260405160200161173891815260200190565b604051602081830303815290604052878661199b565b9050600081511161179a5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b60006117ad6117a8836125de565b61223b565b905080516004146117bd57600080fd5b6117d38160028151811061149457611494613a3b565b93505050505b9392505050565b60008061180f856040516020016117f991815260200190565b604051602081830303815290604052848661199b565b905060008151116118625760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b61187361186e826125de565b6124d4565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091611930918a919061192b908290613991565b612631565b60c088015250949695505050505050565b60008163ffffffff1660010361195b5750625ec000919050565b8163ffffffff166005036119735750624f4000919050565b50600019919050565b919050565b60008061198f86868661271d565b90921495945050505050565b606060008451116119e65760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b60006119f1846128ac565b905060006119fe8661299a565b9050600084604051602001611a1591815260200190565b60405160208183030381529060405290506000805b84518110156121e4576000858281518110611a4757611a47613a3b565b602002602001015190508451831115611ab95760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611b585780518051602091820120604051611b0792611ae192910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b535760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611c4e565b805151602011611bde5780518051602091820120604051611b8292611ae192910190815260200190565b611b535760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611c4e5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611c5a601060016139ed565b81602001515103611e075784518303611d9f576000611c968260200151601081518110611c8957611c89613a3b565b6020026020010151612ab4565b90506000815111611d0f5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611d1d9190613991565b8314611d915760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b96506117d995505050505050565b6000858481518110611db357611db3613a3b565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611dde57611dde613a3b565b60200260200101519050611df181612bd7565b9550611dfe6001866139ed565b945050506121d1565b600281602001515103612178576000611e1f82612bfc565b9050600081600081518110611e3657611e36613a3b565b016020015160f81c90506000611e4d600283613b3b565b611e58906002613b5d565b90506000611e69848360ff16612c20565b90506000611e778a89612c20565b90506000611e858383612c56565b905080835114611efd5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611f12575060ff85166003145b156120b85780825114611f8d5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611fa98860200151600181518110611c8957611c89613a3b565b905060008151116120225760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d516120309190613991565b89146120a45760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c506117d99b505050505050505050505050565b60ff851615806120cb575060ff85166001145b1561210a576120f787602001516001815181106120ea576120ea613a3b565b6020026020010151612bd7565b9950612103818a6139ed565b985061216d565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b5050505050506121d1565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b50806121dc81613b76565b915050611a2a565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b6060600080600061224b85612cd5565b91945092509050600181600181111561226657612266613792565b146122d95760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b84516122e583856139ed565b1461234d5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123665790505090506000845b8751811015612454576000806123d96040518060400160405280858d600001516123bd9190613991565b8152602001858d602001516123d291906139ed565b9052612cd5565b5091509150604051806040016040528083836123f591906139ed565b8152602001848c6020015161240a91906139ed565b81525085858151811061241f5761241f613a3b565b60209081029190910101526124356001856139ed565b935061244181836139ed565b61244b90846139ed565b92505050612393565b50815295945050505050565b805160009060010361247457506000919050565b81516015146124c55760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b6124ce826124d4565b92915050565b60006124ce825b60006021826000015111156125325760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061254085612cd5565b91945092509050600081600181111561255b5761255b613792565b146125a85760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125ba91906139ed565b805190915060208410156125d45760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126135760405162461bcd60e51b81526004016103ef90613b8f565b50604080518082019091528151815260209182019181019190915290565b60608161263f81601f6139ed565b101561265d5760405162461bcd60e51b81526004016103ef90613bff565b61266782846139ed565b845110156126ab5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b6060821580156126ca5760405191506000825260208201604052612714565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127035780518352602092830192016126eb565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161272e91906139ed565b612739906002613d0b565b1161274357600080fd5b8360005b846001146127145761275a600286613a27565b6001036127f957600284828151811061277557612775613a3b565b602002602001015183604051602001612798929190918252602082015260400190565b60408051601f19818403018152908290526127b291613ad1565b602060405180830381855afa1580156127cf573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127f291906138ad565b915061288d565b60028285838151811061280e5761280e613a3b565b6020026020010151604051602001612830929190918252602082015260400190565b60408051601f198184030181529082905261284a91613ad1565b602060405180830381855afa158015612867573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061288a91906138ad565b91505b6128986002866139ba565b9450806128a481613b76565b915050612747565b80516060906000816001600160401b038111156128cb576128cb6135c7565b60405190808252806020026020018201604052801561291057816020015b60408051808201909152606080825260208201528152602001906001900390816128e95790505b50905060005b8281101561299257604051806040016040528086838151811061293b5761293b613a3b565b6020026020010151815260200161296a87848151811061295d5761295d613a3b565b6020026020010151613398565b81525082828151811061297f5761297f613a3b565b6020908102919091010152600101612916565b509392505050565b805160609060006129ac8260026139ce565b6001600160401b038111156129c3576129c36135c7565b6040519080825280601f01601f1916602001820160405280156129ed576020820181803683370190505b5090506000805b83811015612aaa57858181518110612a0e57612a0e613a3b565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a368360026139ce565b81518110612a4657612a46613a3b565b60200101906001600160f81b031916908160001a905350600f60f81b821683612a708360026139ce565b612a7b9060016139ed565b81518110612a8b57612a8b613a3b565b60200101906001600160f81b031916908160001a9053506001016129f4565b5090949350505050565b60606000806000612ac485612cd5565b919450925090506000816001811115612adf57612adf613792565b14612b525760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612b5c82846139ed565b855114612bc85760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b611873856020015184846133a6565b60606020826000015110612bf357612bee82612ab4565b6124ce565b6124ce82613446565b60606124ce612c1b8360200151600081518110611c8957611c89613a3b565b61299a565b606082518210612c3f57506040805160208101909152600081526124ce565b6117d98383848651612c519190613991565b61345c565b60008060008351855110612c6b578351612c6e565b84515b90505b8082108015612cc55750838281518110612c8d57612c8d613a3b565b602001015160f81c60f81b6001600160f81b031916858381518110612cb457612cb4613a3b565b01602001516001600160f81b031916145b1561299257816001019150612c71565b600080600080846000015111612cfd5760405162461bcd60e51b81526004016103ef90613b8f565b6020840151805160001a607f8111612d22576000600160009450945094505050613391565b60b78111612e7f576000612d37608083613991565b905080876000015111612db75760405162461bcd60e51b815260206004820152604e6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612de45750600160ff1b6001600160f81b0319821610155b612e6c5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b5060019550935060009250613391915050565b60bf81116130c0576000612e9460b783613991565b905080876000015111612f175760405162461bcd60e51b81526020600482015260516024820152600080516020613d1883398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612f9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c603781116130215760405162461bcd60e51b81526020600482015260486024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b61302b81846139ed565b8951116130a35760405162461bcd60e51b815260206004820152604c6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b6130ae8360016139ed565b97509550600094506133919350505050565b60f781116131625760006130d560c083613991565b9050808760000151116131515760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b600195509350849250613391915050565b600061316f60f783613991565b9050808760000151116131ee5760405162461bcd60e51b815260206004820152604d6024820152600080516020613d1883398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036132735760405162461bcd60e51b81526020600482015260486024820152600080516020613d1883398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c603781116132f45760405162461bcd60e51b81526020600482015260466024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6132fe81846139ed565b8951116133745760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b61337f8360016139ed565b97509550600194506133919350505050565b9193909250565b60606124ce6117a8836125de565b60606000826001600160401b038111156133c2576133c26135c7565b6040519080825280601f01601f1916602001820160405280156133ec576020820181803683370190505b509050826000036133fe5790506117d9565b600061340a85876139ed565b90506020820160005b8581101561342b578281015182820152602001613413565b8581111561343a576000868301525b50919695505050505050565b60606124ce8260200151600084600001516133a6565b60608182601f0110156134815760405162461bcd60e51b81526004016103ef90613bff565b8282840110156134a35760405162461bcd60e51b81526004016103ef90613bff565b818301845110156126ab5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461197c57600080fd5b60006020828403121561351357600080fd5b6117d9826134ea565b60006020828403121561352e57600080fd5b813563ffffffff811681146117d957600080fd5b60008083601f84011261355457600080fd5b5081356001600160401b0381111561356b57600080fd5b602083019150836020828501011115610bb257600080fd5b60008083601f84011261359557600080fd5b5081356001600160401b038111156135ac57600080fd5b6020830191508360208260051b8501011115610bb257600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613605576136056135c7565b604052919050565b600082601f83011261361e57600080fd5b81356001600160401b03811115613637576136376135c7565b61364a601f8201601f19166020016135dd565b81815284602083860101111561365f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561369d57600080fd5b6001600160401b03808d3511156136b357600080fd5b6136c08e8e358f01613542565b909c509a5060208d01358110156136d657600080fd5b6136e68e60208f01358f01613542565b909a50985060408d01358110156136fc57600080fd5b61370c8e60408f01358f01613583565b909850965060608d0135955060808d013581101561372957600080fd5b6137398e60808f01358f01613583565b909550935060a08d013581101561374f57600080fd5b506137608d60a08e01358e0161360d565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561378b57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106137ca57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156137eb57600080fd5b6137f4886134ea565b965060208801356001600160401b038082111561381057600080fd5b61381c8b838c01613542565b909850965060408a013591508082111561383557600080fd5b6138418b838c01613583565b909650945060608a013591508082111561385a57600080fd5b506138678a828b01613583565b989b979a50959850939692959293505050565b6000806040838503121561388d57600080fd5b613896836134ea565b91506138a4602084016134ea565b90509250929050565b6000602082840312156138bf57600080fd5b5051919050565b60006001600160401b03808411156138e0576138e06135c7565b8360051b60206138f18183016135dd565b86815291850191818101903684111561390957600080fd5b865b8481101561393d578035868111156139235760008081fd5b61392f36828b0161360d565b84525091830191830161390b565b50979650505050505050565b8183823760009101908152919050565b60006020828403121561396b57600080fd5b815180151581146117d957600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156124ce576124ce61397b565b634e487b7160e01b600052601260045260246000fd5b6000826139c9576139c96139a4565b500490565b60008160001904831182151516156139e8576139e861397b565b500290565b808201808211156124ce576124ce61397b565b6001600160401b03828116828216039080821115613a2057613a2061397b565b5092915050565b600082613a3657613a366139a4565b500690565b634e487b7160e01b600052603260045260246000fd5b60005b83811015613a6c578181015183820152602001613a54565b50506000910152565b60008151808452613a8d816020860160208601613a51565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061187390830184613a75565b60008251613ae3818460208701613a51565b9190910192915050565b600060208284031215613aff57600080fd5b81516001600160e01b0319811681146117d957600080fd5b604081526000613b2a6040830185613a75565b905082151560208301529392505050565b600060ff831680613b4e57613b4e6139a4565b8060ff84160691505092915050565b60ff82811682821603908111156124ce576124ce61397b565b600060018201613b8857613b8861397b565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613c62578160001904821115613c4857613c4861397b565b80851615613c5557918102915b93841c9390800290613c2c565b509250929050565b600082613c79575060016124ce565b81613c86575060006124ce565b8160018114613c9c5760028114613ca657613cc2565b60019150506124ce565b60ff841115613cb757613cb761397b565b50506001821b6124ce565b5060208310610133831016604e8410600b8410161715613ce5575081810a6124ce565b613cef8383613c27565b8060001904821115613d0357613d0361397b565b029392505050565b60006117d98383613c6a56fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212205d4d18cda1d7715dd0a0831f230e2f2c2b99ab23f72ebb0504c905bd4898097c64736f6c63430008100033", - "sourceMap": "748:10165:100:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806359f897871161008c5780638d080d1d116100665780638d080d1d1461024b5780639efeff1c1461026b578063affed0e014610293578063e4407b15146102be57600080fd5b806359f89787146101ce5780637599735c1461020f5780637acc67541461023857600080fd5b80633c6cf473116100c85780633c6cf4731461016a5780633e99e9ce1461019a5780634552f563146101a757806354fd4d50146101af57600080fd5b8063029d6713146100ef57806336ae7c181461012257806337d5af8414610155575b600080fd5b61010f6100fd366004613501565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61014561013036600461351c565b60066020526000908152604090205460ff1681565b6040519015158152602001610119565b61016861016336600461367c565b6102c6565b005b61018d610178366004613779565b60076020526000908152604090205460ff1681565b60405161011991906137a8565b6000546101459060ff1681565b60035461010f565b6008546101bc9060ff1681565b60405160ff9091168152602001610119565b6101f76101dc36600461351c565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610119565b6101f761021d36600461351c565b6004602052600090815260409020546001600160a01b031681565b6101686102463660046137d0565b610599565b61010f610259366004613779565b60096020526000908152604090205481565b61027e610279366004613779565b6108bc565b60405163ffffffff9091168152602001610119565b6002546102a6906001600160401b031681565b6040516001600160401b039091168152602001610119565b61010f607881565b6102ce6108f6565b6000806102db8b8b61094f565b915091506102ec8260400151610bb9565b6102f98260400151610ceb565b6000808e8e81019061030b919061387a565b9150915061031d828560400151610d47565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac91906138ad565b9050806103f85760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064015b60405180910390fd5b60006104418b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a015186915088908890610f80565b9050806104905760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016103ef565b5050505060006104f58787906104a691906138c6565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac600261118a565b905081811461053e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b5061058082828d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153d92505050565b505061058c6001603355565b5050505050505050505050565b6105a16108f6565b6000806105ae888861094f565b915091506105bf8260400151610bb9565b6105cc8260400151610ceb565b6105da898360400151610d47565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6bffffffffffffffffffffffff1916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036107915760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f091906138ad565b905060008190036107435760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016103ef565b610777610750898b6138c6565b60408088015163ffffffff166000908152600560205220546001600160a01b0316836116e4565b600083815260096020526040902081905592506107a39050565b60008181526009602052604090205491505b6000846020015160016040516020016107d19291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061081982856108148a8c6138c6565b6117e0565b90508481146108625760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016103ef565b505050506108a782828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153d92505050565b50506108b36001603355565b50505050505050565b600381815481106108cc57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6002603354036109485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ef565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526000806109cc85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061187c92505050565b9050600085856040516109e0929190613949565b60405190819003902090506000808281526007602052604090205460ff166002811115610a0f57610a0f613792565b14610a5c5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016103ef565b46826080015163ffffffff1614610aa45760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016103ef565b600854825160ff908116911614610aee5760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016103ef565b60408083015163ffffffff166000908152600460205220546001600160a01b03161580610b39575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b15610bac5760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016103ef565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b0316610c1f5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190613959565b610ce85760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016103ef565b50565b63ffffffff811660009081526006602052604090205460ff1615610ce85760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016103ef565b63ffffffff81166000908152600460205260409020546001600160a01b0316610dad5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016103ef565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906138ad565b600003610e895760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016103ef565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015610eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1391906138ad565b610f1d9042613991565b90506078811015610f7b5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016103ef565b505050565b600080610f8c83611941565b9050600081856001600160401b031610610fa757601b610faa565b60075b60ff169050600082866001600160401b031610610fe657612000610fd7846001600160401b038916613991565b610fe191906139ba565b610ffb565b610ffb6120006001600160401b0388166139ba565b90506000866001600160401b0316886001600160401b03160361103a5750600b611027816102006139ce565b611033906101836139ed565b905061116f565b612000611047888a613a00565b6001600160401b0316116110a95750600b6110638160206139ce565b61106e9060066139ed565b90506110856120006001600160401b038916613a27565b611091612000836139ce565b61109b91906139ed565b9050611027816102006139ce565b876001600160401b0316876001600160401b031610156111275750600b826110d28260206139ce565b6110dc91906139ed565b90506110e98160026139ce565b6110f49060006139ed565b9050816111056301000000836139ce565b61110f91906139ed565b905061111c8160026139ce565b61106e9060016139ed565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016103ef565b61117b8b828c8c611981565b9b9a5050505050505050505050565b600080611198878a8a61199b565b90506000816000815181106111af576111af613a3b565b01602001516001600160f81b03191690506000600160f81b8214806111e15750600160f91b6001600160f81b03198316145b156111ee57506001611253565b600360fe1b6001600160f81b031983161061120b57506000611253565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016103ef565b6000602084019050600060405180604001604052808487516112759190613991565b815260200161128485856139ed565b9052905060006112938261223b565b905080516004146112df5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016103ef565b6000611304826003815181106112f7576112f7613a3b565b602002602001015161223b565b905080518c106113565760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016103ef565b600061136d828e815181106112f7576112f7613a3b565b905080516003146113cb5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016103ef565b60006113f0826000815181106113e3576113e3613a3b565b6020026020010151612460565b90508c6001600160a01b0316816001600160a01b0316146114635760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016103ef565b600061147b836001815181106112f7576112f7613a3b565b90508c6114a18260008151811061149457611494613a3b565b60200260200101516124d4565b146115045760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016103ef565b611526818d8151811061151957611519613a3b565b60200260200101516124db565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c0015160405160240161156c93929190613aa1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b0316826040516115be9190613ad1565b6000604051808303816000865af19150503d80600081146115fb576040519150601f19603f3d011682016040523d82523d6000602084013e611600565b606091505b50805191955093506000925060200390506116425760008280602001905181019061162b9190613aed565b6001600160e01b031916631dee306b60e11b149150505b82801561164c5750805b1561166f576000858152600760205260409020805460ff19166002179055611689565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe894787876040516116d4929190613b17565b60405180910390a4505050505050565b6040516bffffffffffffffffffffffff19606084901b1660208201526000908190603401604051602081830303815290604052805190602001209050600061174e8260405160200161173891815260200190565b604051602081830303815290604052878661199b565b9050600081511161179a5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103ef565b60006117ad6117a8836125de565b61223b565b905080516004146117bd57600080fd5b6117d38160028151811061149457611494613a3b565b93505050505b9392505050565b60008061180f856040516020016117f991815260200190565b604051602081830303815290604052848661199b565b905060008151116118625760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103ef565b61187361186e826125de565b6124d4565b95945050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091611930918a919061192b908290613991565b612631565b60c088015250949695505050505050565b60008163ffffffff1660010361195b5750625ec000919050565b8163ffffffff166005036119735750624f4000919050565b50600019919050565b919050565b60008061198f86868661271d565b90921495945050505050565b606060008451116119e65760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016103ef565b60006119f1846128ac565b905060006119fe8661299a565b9050600084604051602001611a1591815260200190565b60405160208183030381529060405290506000805b84518110156121e4576000858281518110611a4757611a47613a3b565b602002602001015190508451831115611ab95760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016103ef565b82600003611b585780518051602091820120604051611b0792611ae192910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b611b535760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016103ef565b611c4e565b805151602011611bde5780518051602091820120604051611b8292611ae192910190815260200190565b611b535760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016103ef565b805184516020808701919091208251919092012014611c4e5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016103ef565b611c5a601060016139ed565b81602001515103611e075784518303611d9f576000611c968260200151601081518110611c8957611c89613a3b565b6020026020010151612ab4565b90506000815111611d0f5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016103ef565b60018751611d1d9190613991565b8314611d915760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016103ef565b96506117d995505050505050565b6000858481518110611db357611db3613a3b565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611dde57611dde613a3b565b60200260200101519050611df181612bd7565b9550611dfe6001866139ed565b945050506121d1565b600281602001515103612178576000611e1f82612bfc565b9050600081600081518110611e3657611e36613a3b565b016020015160f81c90506000611e4d600283613b3b565b611e58906002613b5d565b90506000611e69848360ff16612c20565b90506000611e778a89612c20565b90506000611e858383612c56565b905080835114611efd5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016103ef565b60ff851660021480611f12575060ff85166003145b156120b85780825114611f8d5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016103ef565b6000611fa98860200151600181518110611c8957611c89613a3b565b905060008151116120225760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016103ef565b60018d516120309190613991565b89146120a45760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016103ef565b9c506117d99b505050505050505050505050565b60ff851615806120cb575060ff85166001145b1561210a576120f787602001516001815181106120ea576120ea613a3b565b6020026020010151612bd7565b9950612103818a6139ed565b985061216d565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016103ef565b5050505050506121d1565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016103ef565b50806121dc81613b76565b915050611a2a565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016103ef565b6060600080600061224b85612cd5565b91945092509050600181600181111561226657612266613792565b146122d95760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016103ef565b84516122e583856139ed565b1461234d5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016103ef565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816123665790505090506000845b8751811015612454576000806123d96040518060400160405280858d600001516123bd9190613991565b8152602001858d602001516123d291906139ed565b9052612cd5565b5091509150604051806040016040528083836123f591906139ed565b8152602001848c6020015161240a91906139ed565b81525085858151811061241f5761241f613a3b565b60209081029190910101526124356001856139ed565b935061244181836139ed565b61244b90846139ed565b92505050612393565b50815295945050505050565b805160009060010361247457506000919050565b81516015146124c55760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016103ef565b6124ce826124d4565b92915050565b60006124ce825b60006021826000015111156125325760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b600080600061254085612cd5565b91945092509050600081600181111561255b5761255b613792565b146125a85760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103ef565b60008386602001516125ba91906139ed565b805190915060208410156125d45760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116126135760405162461bcd60e51b81526004016103ef90613b8f565b50604080518082019091528151815260209182019181019190915290565b60608161263f81601f6139ed565b101561265d5760405162461bcd60e51b81526004016103ef90613bff565b61266782846139ed565b845110156126ab5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b6060821580156126ca5760405191506000825260208201604052612714565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127035780518352602092830192016126eb565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161272e91906139ed565b612739906002613d0b565b1161274357600080fd5b8360005b846001146127145761275a600286613a27565b6001036127f957600284828151811061277557612775613a3b565b602002602001015183604051602001612798929190918252602082015260400190565b60408051601f19818403018152908290526127b291613ad1565b602060405180830381855afa1580156127cf573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127f291906138ad565b915061288d565b60028285838151811061280e5761280e613a3b565b6020026020010151604051602001612830929190918252602082015260400190565b60408051601f198184030181529082905261284a91613ad1565b602060405180830381855afa158015612867573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061288a91906138ad565b91505b6128986002866139ba565b9450806128a481613b76565b915050612747565b80516060906000816001600160401b038111156128cb576128cb6135c7565b60405190808252806020026020018201604052801561291057816020015b60408051808201909152606080825260208201528152602001906001900390816128e95790505b50905060005b8281101561299257604051806040016040528086838151811061293b5761293b613a3b565b6020026020010151815260200161296a87848151811061295d5761295d613a3b565b6020026020010151613398565b81525082828151811061297f5761297f613a3b565b6020908102919091010152600101612916565b509392505050565b805160609060006129ac8260026139ce565b6001600160401b038111156129c3576129c36135c7565b6040519080825280601f01601f1916602001820160405280156129ed576020820181803683370190505b5090506000805b83811015612aaa57858181518110612a0e57612a0e613a3b565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612a368360026139ce565b81518110612a4657612a46613a3b565b60200101906001600160f81b031916908160001a905350600f60f81b821683612a708360026139ce565b612a7b9060016139ed565b81518110612a8b57612a8b613a3b565b60200101906001600160f81b031916908160001a9053506001016129f4565b5090949350505050565b60606000806000612ac485612cd5565b919450925090506000816001811115612adf57612adf613792565b14612b525760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016103ef565b612b5c82846139ed565b855114612bc85760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016103ef565b611873856020015184846133a6565b60606020826000015110612bf357612bee82612ab4565b6124ce565b6124ce82613446565b60606124ce612c1b8360200151600081518110611c8957611c89613a3b565b61299a565b606082518210612c3f57506040805160208101909152600081526124ce565b6117d98383848651612c519190613991565b61345c565b60008060008351855110612c6b578351612c6e565b84515b90505b8082108015612cc55750838281518110612c8d57612c8d613a3b565b602001015160f81c60f81b6001600160f81b031916858381518110612cb457612cb4613a3b565b01602001516001600160f81b031916145b1561299257816001019150612c71565b600080600080846000015111612cfd5760405162461bcd60e51b81526004016103ef90613b8f565b6020840151805160001a607f8111612d22576000600160009450945094505050613391565b60b78111612e7f576000612d37608083613991565b905080876000015111612db75760405162461bcd60e51b815260206004820152604e6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016103ef565b6001838101516001600160f81b0319169082141580612de45750600160ff1b6001600160f81b0319821610155b612e6c5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016103ef565b5060019550935060009250613391915050565b60bf81116130c0576000612e9460b783613991565b905080876000015111612f175760405162461bcd60e51b81526020600482015260516024820152600080516020613d1883398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016103ef565b60018301516001600160f81b0319166000819003612f9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016103ef565b600184015160088302610100031c603781116130215760405162461bcd60e51b81526020600482015260486024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016103ef565b61302b81846139ed565b8951116130a35760405162461bcd60e51b815260206004820152604c6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016103ef565b6130ae8360016139ed565b97509550600094506133919350505050565b60f781116131625760006130d560c083613991565b9050808760000151116131515760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016103ef565b600195509350849250613391915050565b600061316f60f783613991565b9050808760000151116131ee5760405162461bcd60e51b815260206004820152604d6024820152600080516020613d1883398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016103ef565b60018301516001600160f81b03191660008190036132735760405162461bcd60e51b81526020600482015260486024820152600080516020613d1883398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016103ef565b600184015160088302610100031c603781116132f45760405162461bcd60e51b81526020600482015260466024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016103ef565b6132fe81846139ed565b8951116133745760405162461bcd60e51b815260206004820152604a6024820152600080516020613d1883398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016103ef565b61337f8360016139ed565b97509550600194506133919350505050565b9193909250565b60606124ce6117a8836125de565b60606000826001600160401b038111156133c2576133c26135c7565b6040519080825280601f01601f1916602001820160405280156133ec576020820181803683370190505b509050826000036133fe5790506117d9565b600061340a85876139ed565b90506020820160005b8581101561342b578281015182820152602001613413565b8581111561343a576000868301525b50919695505050505050565b60606124ce8260200151600084600001516133a6565b60608182601f0110156134815760405162461bcd60e51b81526004016103ef90613bff565b8282840110156134a35760405162461bcd60e51b81526004016103ef90613bff565b818301845110156126ab5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103ef565b80356001600160401b038116811461197c57600080fd5b60006020828403121561351357600080fd5b6117d9826134ea565b60006020828403121561352e57600080fd5b813563ffffffff811681146117d957600080fd5b60008083601f84011261355457600080fd5b5081356001600160401b0381111561356b57600080fd5b602083019150836020828501011115610bb257600080fd5b60008083601f84011261359557600080fd5b5081356001600160401b038111156135ac57600080fd5b6020830191508360208260051b8501011115610bb257600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613605576136056135c7565b604052919050565b600082601f83011261361e57600080fd5b81356001600160401b03811115613637576136376135c7565b61364a601f8201601f19166020016135dd565b81815284602083860101111561365f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e03121561369d57600080fd5b6001600160401b03808d3511156136b357600080fd5b6136c08e8e358f01613542565b909c509a5060208d01358110156136d657600080fd5b6136e68e60208f01358f01613542565b909a50985060408d01358110156136fc57600080fd5b61370c8e60408f01358f01613583565b909850965060608d0135955060808d013581101561372957600080fd5b6137398e60808f01358f01613583565b909550935060a08d013581101561374f57600080fd5b506137608d60a08e01358e0161360d565b915060c08c013590509295989b509295989b9093969950565b60006020828403121561378b57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106137ca57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060006080888a0312156137eb57600080fd5b6137f4886134ea565b965060208801356001600160401b038082111561381057600080fd5b61381c8b838c01613542565b909850965060408a013591508082111561383557600080fd5b6138418b838c01613583565b909650945060608a013591508082111561385a57600080fd5b506138678a828b01613583565b989b979a50959850939692959293505050565b6000806040838503121561388d57600080fd5b613896836134ea565b91506138a4602084016134ea565b90509250929050565b6000602082840312156138bf57600080fd5b5051919050565b60006001600160401b03808411156138e0576138e06135c7565b8360051b60206138f18183016135dd565b86815291850191818101903684111561390957600080fd5b865b8481101561393d578035868111156139235760008081fd5b61392f36828b0161360d565b84525091830191830161390b565b50979650505050505050565b8183823760009101908152919050565b60006020828403121561396b57600080fd5b815180151581146117d957600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156124ce576124ce61397b565b634e487b7160e01b600052601260045260246000fd5b6000826139c9576139c96139a4565b500490565b60008160001904831182151516156139e8576139e861397b565b500290565b808201808211156124ce576124ce61397b565b6001600160401b03828116828216039080821115613a2057613a2061397b565b5092915050565b600082613a3657613a366139a4565b500690565b634e487b7160e01b600052603260045260246000fd5b60005b83811015613a6c578181015183820152602001613a54565b50506000910152565b60008151808452613a8d816020860160208601613a51565b601f01601f19169290920160200192915050565b63ffffffff841681526001600160a01b038316602082015260606040820181905260009061187390830184613a75565b60008251613ae3818460208701613a51565b9190910192915050565b600060208284031215613aff57600080fd5b81516001600160e01b0319811681146117d957600080fd5b604081526000613b2a6040830185613a75565b905082151560208301529392505050565b600060ff831680613b4e57613b4e6139a4565b8060ff84160691505092915050565b60ff82811682821603908111156124ce576124ce61397b565b600060018201613b8857613b8861397b565b5060010190565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115613c62578160001904821115613c4857613c4861397b565b80851615613c5557918102915b93841c9390800290613c2c565b509250929050565b600082613c79575060016124ce565b81613c86575060006124ce565b8160018114613c9c5760028114613ca657613cc2565b60019150506124ce565b60ff841115613cb757613cb761397b565b50506001821b6124ce565b5060208310610133831016604e8410600b8410161715613ce5575081810a6124ce565b613cef8383613c27565b8060001904821115613d0357613d0361397b565b029392505050565b60006117d98383613c6a56fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212205d4d18cda1d7715dd0a0831f230e2f2c2b99ab23f72ebb0504c905bd4898097c64736f6c63430008100033", - "sourceMap": "748:10165:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;527:42:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;525:25:146;;;513:2;498:18;527:42:103;;;;;;;;1291:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1007:14:146;;1000:22;982:41;;970:2;955:18;1291:37:103;842:187:146;4866:1928:100;;;;;;:::i;:::-;;:::i;:::-;;1398:54:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;1876:109:100;1957:14;:21;1876:109;;1690:20:103;;;;;;;;;;;;5385:4:146;5373:17;;;5355:36;;5343:2;5328:18;1690:20:103;5213:184:146;1164:46:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;5566:32:146;;;5548:51;;5536:2;5521:18;1164:46:103;5402:203:146;999:51:103;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;:::i;:::-;;;;;;;;;;;;;;879:30;;;;;;:::i;:::-;;:::i;:::-;;;7359:10:146;7347:23;;;7329:42;;7317:2;7302:18;879:30:103;7185:192:146;634:19:103;;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;7544:31:146;;;7526:50;;7514:2;7499:18;634:19:103;7382:200:146;924:58:100;;973:9;924:58;;4866:1928;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;7544:31:146;;5661:52:100;;::::1;7526:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;7499:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;8445:2:146;5727:58:100::1;::::0;::::1;8427:21:146::0;8484:2;8464:18;;;8457:30;-1:-1:-1;;;8503:18:146;;;8496:51;8564:18;;5727:58:100::1;;;;;;;;;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;8795:2:146;5965:47:100::1;::::0;::::1;8777:21:146::0;8834:2;8814:18;;;8807:30;8873:29;8853:18;;;8846:57;8920:18;;5965:47:100::1;8593:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;10090:2:146;6648:67:100::1;::::0;::::1;10072:21:146::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:146;;;10141:51;10209:18;;6648:67:100::1;9888:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;2394:1820::-;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;10457:3:146;10435:16;;;;-1:-1:-1;;;;;;10431:43:146;2955:82:100;;::::1;10419:56:146::0;10530:3;10508:16;;;-1:-1:-1;;;;;;10504:51:146;10491:11;;;10484:72;10594:2;10590:15;-1:-1:-1;;10590:15:146;10572:12;;;10565:75;2955:82:100;;;;;;;;;10656:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;7544:31:146;;3301:61:100;;::::1;7526:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;7499:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;10881:2:146;3380:67:100::1;::::0;::::1;10863:21:146::0;10920:2;10900:18;;;10893:30;10959:33;10939:18;;;10932:61;11010:18;;3380:67:100::1;10679:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;11229:31:146;;;;11211:50;;11292:2;11277:18;;11270:34;11199:2;11184:18;;11039:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;525:25:146::0;3826:80:100;;;;;;;;;498:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;10090:2:146;4090:31:100::1;::::0;::::1;10072:21:146::0;10129:2;10109:18;;;10102:30;-1:-1:-1;;;10148:18:146;;;10141:51;10209:18;;4090:31:100::1;9888:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;2394:1820:100;;;;;;;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;11517:2:146;2704:63:39;;;11499:21:146;11556:2;11536:18;;;11529:30;11595:33;11575:18;;;11568:61;11646:18;;2704:63:39;11315:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;12153:2:146;8369:35:100;;;12135:21:146;12192:2;12172:18;;;12165:30;12231:27;12211:18;;;12204:55;12276:18;;8369:35:100;11951:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;12507:2:146;8484:22:100;;;12489:21:146;12546:2;12526:18;;;12519:30;-1:-1:-1;;;12565:18:146;;;12558:42;12617:18;;8484:22:100;12305:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;12848:2:146;8569:24:100;;;12830:21:146;12887:2;12867:18;;;12860:30;-1:-1:-1;;;12906:18:146;;;12899:44;12960:18;;8569:24:100;12646:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;13191:2:146;8779:65:100;;;13173:21:146;13230:2;13210:18;;;13203:30;13269:34;13249:18;;;13242:62;13340:25;13320:18;;;13313:53;13383:19;;8779:65:100;12989:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;13615:2:146;6959:81:100;;;13597:21:146;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:146;;;13666:54;13737:18;;6959:81:100;13413:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;14250:2:146;7050:76:100;;;14232:21:146;14289:2;14269:18;;;14262:30;14328:31;14308:18;;;14301:59;14377:18;;7050:76:100;14048:353:146;7050:76:100;6880:253;:::o;7194:121::-;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;14608:2:146;7260:48:100;;;14590:21:146;14647:2;14627:18;;;14620:30;-1:-1:-1;;;14666:18:146;;;14659:49;14725:18;;7260:48:100;14406:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;13615:2:146;7471:81:100;;;13597:21:146;13654:2;13634:18;;;13627:30;-1:-1:-1;;;13673:18:146;;;13666:54;13737:18;;7471:81:100;13413:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;7544:31:146;;7570:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;7499:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;15145:2:146;7562:86:100;;;15127:21:146;15184:2;15164:18;;;15157:30;15223:32;15203:18;;;15196:60;15273:18;;7562:86:100;14943:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;7544:31:146;;7698:38:100;;;7526:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;7499:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;15769:2:146;7746:84:100;;;15751:21:146;15808:2;15788:18;;;15781:30;15847:34;15827:18;;;15820:62;-1:-1:-1;;;15898:18:146;;;15891:32;15940:19;;7746:84:100;15567:398:146;7746:84:100;7461:376;7385:452;;:::o;3094:1947:110:-;3330:4;3346:23;3372:46;3404:13;3372:31;:46::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;17037:2:146;4896:40:110;;;17019:21:146;17076:2;17056:18;;;17049:30;17115:32;17095:18;;;17088:60;17165:18;;4896:40:110;16835:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;17528:2:146;2652:38:111;;;17510:21:146;17567:2;17547:18;;;17540:30;17606;17586:18;;;17579:58;17654:18;;2652:38:111;17326:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;17885:2:146;3233:58:111;;;17867:21:146;17924:2;17904:18;;;17897:30;-1:-1:-1;;;17943:18:146;;;17936:52;18005:18;;3233:58:111;17683:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;18236:2:146;3450:58:111;;;18218:21:146;18275:2;18255:18;;;18248:30;18314:25;18294:18;;;18287:53;18357:18;;3450:58:111;18034:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;18588:2:146;3594:70:111;;;18570:21:146;18627:2;18607:18;;;18600:30;18666:34;18646:18;;;18639:62;-1:-1:-1;;;18717:18:146;;;18710:32;18759:19;;3594:70:111;18386:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;18991:2:146;3803:85:111;;;18973:21:146;19030:2;19010:18;;;19003:30;19069:34;19049:18;;;19042:62;-1:-1:-1;;;19120:18:146;;;19113:37;19167:19;;3803:85:111;18789:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;19399:2:146;4057:142:111;;;19381:21:146;19438:2;19418:18;;;19411:30;19477:34;19457:18;;;19450:62;-1:-1:-1;;;19528:18:146;;;19521:43;19581:19;;4057:142:111;19197:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;735:581:111:-;927:33;;-1:-1:-1;;21585:2:146;21581:15;;;21577:53;927:33:111;;;21565:66:146;872:7:111;;;;21647:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;21799:19:146;;21843:2;21834:12;;21670:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;22059:2:146;1072:58:111;;;22041:21:146;22098:2;22078:18;;;22071:30;-1:-1:-1;;;22117:18:146;;;22110:52;22179:18;;1072:58:111;21857:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;21799:19:146;;21843:2;21834:12;;21670:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;22410:2:146;601:65:111;;;22392:21:146;22449:2;22429:18;;;22422:30;22488;22468:18;;;22461:58;22536:18;;601:65:111;22208:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;56:776:107:-;125:7;240:13;:18;;257:1;240:18;236:590;;-1:-1:-1;383:7:107;;56:776;-1:-1:-1;56:776:107:o;236:590::-;411:13;:18;;428:1;411:18;407:419;;-1:-1:-1;619:7:107;;56:776;-1:-1:-1;56:776:107:o;407:419::-;-1:-1:-1;;;803:12:107;56:776;-1:-1:-1;56:776:107:o;407:419::-;56:776;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;22767:2:146;3101:49:77;;;22749:21:146;22806:2;22786:18;;;22779:30;-1:-1:-1;;;22825:18:146;;;22818:51;22886:18;;3101:49:77;22565:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;21799:19:146;;21843:2;21834:12;;21670:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;23117:2:146;3636:134:77;;;23099:21:146;23156:2;23136:18;;;23129:30;23195:34;23175:18;;;23168:62;-1:-1:-1;;;23246:18:146;;;23239:44;23300:19;;3636:134:77;22915:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;21799:19:146;;;21843:2;21834:12;;21670:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;23532:2:146;3893:176:77;;;23514:21:146;23571:2;23551:18;;;23544:30;23610:31;23590:18;;;23583:59;23659:18;;3893:176:77;23330:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;21799:19:146;;;21843:2;21834:12;;21670:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;23890:2:146;4222:186:77;;;23872:21:146;23929:2;23909:18;;;23902:30;23968:34;23948:18;;;23941:62;-1:-1:-1;;;24019:18:146;;;24012:37;24066:19;;4222:186:77;23688:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;24298:2:146;4509:156:77;;;24280:21:146;24337:2;24317:18;;;24310:30;24376:34;24356:18;;;24349:62;-1:-1:-1;;;24427:18:146;;;24420:36;24473:19;;4509:156:77;24096:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;24705:2:146;5384:158:77;;;24687:21:146;24744:2;24724:18;;;24717:30;24783:34;24763:18;;;24756:62;24854:29;24834:18;;;24827:57;24901:19;;5384:158:77;24503:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;25133:2:146;5626:162:77;;;25115:21:146;25172:2;25152:18;;;25145:30;25211:34;25191:18;;;25184:62;25282:28;25262:18;;;25255:56;25328:19;;5626:162:77;24931:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;25878:2:146;7009:171:77;;;25860:21:146;25917:2;25897:18;;;25890:30;25956:34;25936:18;;;25929:62;26027:28;26007:18;;;26000:56;26073:19;;7009:171:77;25676:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;26305:2:146;7843:185:77;;;26287:21:146;26344:2;26324:18;;;26317:30;26383:34;26363:18;;;26356:62;26454:31;26434:18;;;26427:59;26503:19;;7843:185:77;26103:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;26735:2:146;8463:156:77;;;26717:21:146;26774:2;26754:18;;;26747:30;26813:34;26793:18;;;26786:62;26884:27;26864:18;;;26857:55;26929:19;;8463:156:77;26533:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;27161:2:146;8703:160:77;;;27143:21:146;27200:2;27180:18;;;27173:30;27239:34;27219:18;;;27212:62;27310:26;27290:18;;;27283:54;27354:19;;8703:160:77;26959:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;27586:2:146;9439:60:77;;;27568:21:146;27625:2;27605:18;;;27598:30;27664:34;27644:18;;;27637:62;-1:-1:-1;;;27715:18:146;;;27708:48;27773:19;;9439:60:77;27384:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;28005:2:146;9556:50:77;;;27987:21:146;28044:2;28024:18;;;28017:30;28083:34;28063:18;;;28056:62;-1:-1:-1;;;28134:18:146;;;28127:38;28182:19;;9556:50:77;27803:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;28554:2:146;9641:47:77;;;28536:21:146;28593:2;28573:18;;;28566:30;28632:34;28612:18;;;28605:62;-1:-1:-1;;;28683:18:146;;;28676:35;28728:19;;9641:47:77;28352:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;28960:2:146;2161:136:75;;;28942:21:146;28999:2;28979:18;;;28972:30;29038:34;29018:18;;;29011:62;29109:26;29089:18;;;29082:54;29153:19;;2161:136:75;28758:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;29385:2:146;2308:134:75;;;29367:21:146;29424:2;29404:18;;;29397:30;29463:34;29443:18;;;29436:62;-1:-1:-1;;;29514:18:146;;;29507:48;29572:19;;2308:134:75;29183:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;29804:2:146;12579:55:75;;;29786:21:146;29843:2;29823:18;;;29816:30;29882:28;29862:18;;;29855:56;29928:18;;12579:55:75;29602:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;12160:122::-;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;30159:2:146;11438:55:75;;;30141:21:146;30198:2;30178:18;;;30171:30;30237:28;30217:18;;;30210:56;30283:18;;11438:55:75;29957:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;30159:2:146;11598:72:75;;;30141:21:146;30198:2;30178:18;;;30171:30;30237:28;30217:18;;;30210:56;30283:18;;11598:72:75;29957:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;31340:2:146;409:63:108;;;31322:21:146;31379:2;31359:18;;;31352:30;-1:-1:-1;;;31398:18:146;;;31391:47;31455:18;;409:63:108;31138:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;33015:19:146;;;33059:2;33050:12;;33043:28;33096:2;33087:12;;32858:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;33015:19:146;;;33059:2;33050:12;;33043:28;33096:2;33087:12;;32858:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;33312:2:146;4505:137:75;;;33294:21:146;33351:2;33331:18;;;33324:30;33390:34;33370:18;;;33363:62;33461:27;33441:18;;;33434:55;33506:19;;4505:137:75;33110:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;33738:2:146;4653:136:75;;;33720:21:146;33777:2;33757:18;;;33750:30;33816:34;33796:18;;;33789:62;-1:-1:-1;;;33867:18:146;;;33860:50;33927:19;;4653:136:75;33536:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;34159:2:146;6699:156:75;;;34141:21:146;34198:2;34178:18;;;34171:30;-1:-1:-1;;;;;;;;;;;34217:18:146;;;34210:62;34308:34;34288:18;;;34281:62;-1:-1:-1;;;34359:19:146;;;34352:45;34414:19;;6699:156:75;33957:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;34646:2:146;7025:177:75;;;34628:21:146;34685:2;34665:18;;;34658:30;34724:34;34704:18;;;34697:62;34795:34;34775:18;;;34768:62;-1:-1:-1;;;34846:19:146;;;34839:44;34900:19;;7025:177:75;34444:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;35132:2:146;7387:164:75;;;35114:21:146;35171:2;35151:18;;;35144:30;-1:-1:-1;;;;;;;;;;;35190:18:146;;;35183:62;35281:34;35261:18;;;35254:62;-1:-1:-1;;;35332:19:146;;;35325:48;35390:19;;7387:164:75;34930:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;35622:2:146;7721:159:75;;;35604:21:146;35661:2;35641:18;;;35634:30;-1:-1:-1;;;;;;;;;;;35680:18:146;;;35673:62;35771:34;35751:18;;;35744:62;-1:-1:-1;;;35822:19:146;;;35815:41;35873:19;;7721:159:75;35420:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;36105:2:146;8042:142:75;;;36087:21:146;36144:2;36124:18;;;36117:30;-1:-1:-1;;;;;;;;;;;36163:18:146;;;36156:62;36254:34;36234:18;;;36227:62;-1:-1:-1;;;36305:19:146;;;36298:39;36354:19;;8042:142:75;35903:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;36586:2:146;8199:168:75;;;36568:21:146;36625:2;36605:18;;;36598:30;-1:-1:-1;;;;;;;;;;;36644:18:146;;;36637:62;36735:34;36715:18;;;36708:62;-1:-1:-1;;;36786:19:146;;;36779:43;36839:19;;8199:168:75;36384:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;37071:2:146;8617:153:75;;;37053:21:146;37110:2;37090:18;;;37083:30;-1:-1:-1;;;;;;;;;;;37129:18:146;;;37122:62;37220:34;37200:18;;;37193:62;-1:-1:-1;;;37271:19:146;;;37264:41;37322:19;;8617:153:75;36869:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;37554:2:146;8935:161:75;;;37536:21:146;37593:2;37573:18;;;37566:30;-1:-1:-1;;;;;;;;;;;37612:18:146;;;37605:62;37703:34;37683:18;;;37676:62;-1:-1:-1;;;37754:19:146;;;37747:44;37808:19;;8935:161:75;37352:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;38040:2:146;9266:157:75;;;38022:21:146;38079:2;38059:18;;;38052:30;-1:-1:-1;;;;;;;;;;;38098:18:146;;;38091:62;38189:34;38169:18;;;38162:62;-1:-1:-1;;;38240:19:146;;;38233:39;38289:19;;9266:157:75;37838:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;38521:2:146;9588:141:75;;;38503:21:146;38560:2;38540:18;;;38533:30;-1:-1:-1;;;;;;;;;;;38579:18:146;;;38572:62;38670:34;38650:18;;;38643:62;-1:-1:-1;;;38721:19:146;;;38714:37;38768:19;;9588:141:75;38319:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;39000:2:146;9744:168:75;;;38982:21:146;39039:2;39019:18;;;39012:30;-1:-1:-1;;;;;;;;;;;39058:18:146;;;39051:62;39149:34;39129:18;;;39122:62;-1:-1:-1;;;39200:19:146;;;39193:41;39251:19;;9744:168:75;38798:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;31340:2:146;989:63:74;;;31322:21:146;31379:2;31359:18;;;31352:30;-1:-1:-1;;;31398:18:146;;;31391:47;31455:18;;989:63:74;31138:341:146;14:171;81:20;;-1:-1:-1;;;;;130:30:146;;120:41;;110:69;;175:1;172;165:12;190:184;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;340:28;358:9;340:28;:::i;561:276::-;619:6;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;777:10;770:5;766:22;759:5;756:33;746:61;;803:1;800;793:12;1034:347;1085:8;1095:6;1149:3;1142:4;1134:6;1130:17;1126:27;1116:55;;1167:1;1164;1157:12;1116:55;-1:-1:-1;1190:20:146;;-1:-1:-1;;;;;1222:30:146;;1219:50;;;1265:1;1262;1255:12;1219:50;1302:4;1294:6;1290:17;1278:29;;1354:3;1347:4;1338:6;1330;1326:19;1322:30;1319:39;1316:59;;;1371:1;1368;1361:12;1386:367;1449:8;1459:6;1513:3;1506:4;1498:6;1494:17;1490:27;1480:55;;1531:1;1528;1521:12;1480:55;-1:-1:-1;1554:20:146;;-1:-1:-1;;;;;1586:30:146;;1583:50;;;1629:1;1626;1619:12;1583:50;1666:4;1658:6;1654:17;1642:29;;1726:3;1719:4;1709:6;1706:1;1702:14;1694:6;1690:27;1686:38;1683:47;1680:67;;;1743:1;1740;1733:12;1758:127;1819:10;1814:3;1810:20;1807:1;1800:31;1850:4;1847:1;1840:15;1874:4;1871:1;1864:15;1890:275;1961:2;1955:9;2026:2;2007:13;;-1:-1:-1;;2003:27:146;1991:40;;-1:-1:-1;;;;;2046:34:146;;2082:22;;;2043:62;2040:88;;;2108:18;;:::i;:::-;2144:2;2137:22;1890:275;;-1:-1:-1;1890:275:146:o;2170:530::-;2212:5;2265:3;2258:4;2250:6;2246:17;2242:27;2232:55;;2283:1;2280;2273:12;2232:55;2319:6;2306:20;-1:-1:-1;;;;;2341:2:146;2338:26;2335:52;;;2367:18;;:::i;:::-;2411:55;2454:2;2435:13;;-1:-1:-1;;2431:27:146;2460:4;2427:38;2411:55;:::i;:::-;2491:2;2482:7;2475:19;2537:3;2530:4;2525:2;2517:6;2513:15;2509:26;2506:35;2503:55;;;2554:1;2551;2544:12;2503:55;2619:2;2612:4;2604:6;2600:17;2593:4;2584:7;2580:18;2567:55;2667:1;2642:16;;;2660:4;2638:27;2631:38;;;;2646:7;2170:530;-1:-1:-1;;;2170:530:146:o;2705:1652::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;2994:7;3048:3;3036:9;3027:7;3023:23;3019:33;3016:53;;;3065:1;3062;3055:12;3016:53;-1:-1:-1;;;;;3146:2:146;3134:9;3121:23;3118:31;3115:51;;;3162:1;3159;3152:12;3115:51;3201:75;3268:7;3255:9;3242:23;3231:9;3227:39;3201:75;:::i;:::-;3295:8;;-1:-1:-1;3322:8:146;-1:-1:-1;3373:2:146;3358:18;;3345:32;3342:40;-1:-1:-1;3339:60:146;;;3395:1;3392;3385:12;3339:60;3434:84;3510:7;3503:2;3492:9;3488:18;3475:32;3464:9;3460:48;3434:84;:::i;:::-;3537:8;;-1:-1:-1;3564:8:146;-1:-1:-1;3615:2:146;3600:18;;3587:32;3584:40;-1:-1:-1;3581:60:146;;;3637:1;3634;3627:12;3581:60;3676:96;3764:7;3757:2;3746:9;3742:18;3729:32;3718:9;3714:48;3676:96;:::i;:::-;3791:8;;-1:-1:-1;3818:8:146;-1:-1:-1;3873:2:146;3858:18;;3845:32;;-1:-1:-1;3920:3:146;3905:19;;3892:33;3889:41;-1:-1:-1;3886:61:146;;;3943:1;3940;3933:12;3886:61;3982:97;4071:7;4063:3;4052:9;4048:19;4035:33;4024:9;4020:49;3982:97;:::i;:::-;4098:8;;-1:-1:-1;4125:8:146;-1:-1:-1;4176:3:146;4161:19;;4148:33;4145:41;-1:-1:-1;4142:61:146;;;4199:1;4196;4189:12;4142:61;;4222:76;4290:7;4282:3;4271:9;4267:19;4254:33;4243:9;4239:49;4222:76;:::i;:::-;4212:86;;4346:3;4335:9;4331:19;4318:33;4307:44;;2705:1652;;;;;;;;;;;;;;:::o;4362:180::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;-1:-1:-1;4513:23:146;;4362:180;-1:-1:-1;4362:180:146:o;4547:127::-;4608:10;4603:3;4599:20;4596:1;4589:31;4639:4;4636:1;4629:15;4663:4;4660:1;4653:15;4679:347;4830:2;4815:18;;4863:1;4852:13;;4842:144;;4908:10;4903:3;4899:20;4896:1;4889:31;4943:4;4940:1;4933:15;4971:4;4968:1;4961:15;4842:144;4995:25;;;4679:347;:::o;5840:1155::-;6012:6;6020;6028;6036;6044;6052;6060;6113:3;6101:9;6092:7;6088:23;6084:33;6081:53;;;6130:1;6127;6120:12;6081:53;6153:28;6171:9;6153:28;:::i;:::-;6143:38;;6232:2;6221:9;6217:18;6204:32;-1:-1:-1;;;;;6296:2:146;6288:6;6285:14;6282:34;;;6312:1;6309;6302:12;6282:34;6351:58;6401:7;6392:6;6381:9;6377:22;6351:58;:::i;:::-;6428:8;;-1:-1:-1;6325:84:146;-1:-1:-1;6516:2:146;6501:18;;6488:32;;-1:-1:-1;6532:16:146;;;6529:36;;;6561:1;6558;6551:12;6529:36;6600:72;6664:7;6653:8;6642:9;6638:24;6600:72;:::i;:::-;6691:8;;-1:-1:-1;6574:98:146;-1:-1:-1;6779:2:146;6764:18;;6751:32;;-1:-1:-1;6795:16:146;;;6792:36;;;6824:1;6821;6814:12;6792:36;;6863:72;6927:7;6916:8;6905:9;6901:24;6863:72;:::i;:::-;5840:1155;;;;-1:-1:-1;5840:1155:146;;-1:-1:-1;5840:1155:146;;;;6837:98;;-1:-1:-1;;;5840:1155:146:o;7587:256::-;7653:6;7661;7714:2;7702:9;7693:7;7689:23;7685:32;7682:52;;;7730:1;7727;7720:12;7682:52;7753:28;7771:9;7753:28;:::i;:::-;7743:38;;7800:37;7833:2;7822:9;7818:18;7800:37;:::i;:::-;7790:47;;7587:256;;;;;:::o;8054:184::-;8124:6;8177:2;8165:9;8156:7;8152:23;8148:32;8145:52;;;8193:1;8190;8183:12;8145:52;-1:-1:-1;8216:16:146;;8054:184;-1:-1:-1;8054:184:146:o;8949:934::-;9085:9;-1:-1:-1;;;;;9160:2:146;9152:6;9149:14;9146:40;;;9166:18;;:::i;:::-;9212:6;9209:1;9205:14;9238:4;9262:28;9286:2;9282;9278:11;9262:28;:::i;:::-;9324:19;;;9394:14;;;;9359:12;;;;9431:14;9420:26;;9417:46;;;9459:1;9456;9449:12;9417:46;9483:5;9497:353;9513:6;9508:3;9505:15;9497:353;;;9599:3;9586:17;9635:2;9622:11;9619:19;9616:109;;;9679:1;9708:2;9704;9697:14;9616:109;9750:57;9792:14;9778:11;9771:5;9767:23;9750:57;:::i;:::-;9738:70;;-1:-1:-1;9828:12:146;;;;9530;;9497:353;;;-1:-1:-1;9872:5:146;8949:934;-1:-1:-1;;;;;;;8949:934:146:o;11675:271::-;11858:6;11850;11845:3;11832:33;11814:3;11884:16;;11909:13;;;11884:16;11675:271;-1:-1:-1;11675:271:146:o;13766:277::-;13833:6;13886:2;13874:9;13865:7;13861:23;13857:32;13854:52;;;13902:1;13899;13892:12;13854:52;13934:9;13928:16;13987:5;13980:13;13973:21;13966:5;13963:32;13953:60;;14009:1;14006;13999:12;15302:127;15363:10;15358:3;15354:20;15351:1;15344:31;15394:4;15391:1;15384:15;15418:4;15415:1;15408:15;15434:128;15501:9;;;15522:11;;;15519:37;;;15536:18;;:::i;15970:127::-;16031:10;16026:3;16022:20;16019:1;16012:31;16062:4;16059:1;16052:15;16086:4;16083:1;16076:15;16102:120;16142:1;16168;16158:35;;16173:18;;:::i;:::-;-1:-1:-1;16207:9:146;;16102:120::o;16227:168::-;16267:7;16333:1;16329;16325:6;16321:14;16318:1;16315:21;16310:1;16303:9;16296:17;16292:45;16289:71;;;16340:18;;:::i;:::-;-1:-1:-1;16380:9:146;;16227:168::o;16400:125::-;16465:9;;;16486:10;;;16483:36;;;16499:18;;:::i;16530:183::-;-1:-1:-1;;;;;16649:10:146;;;16637;;;16633:27;;16672:12;;;16669:38;;;16687:18;;:::i;:::-;16669:38;16530:183;;;;:::o;16718:112::-;16750:1;16776;16766:35;;16781:18;;:::i;:::-;-1:-1:-1;16815:9:146;;16718:112::o;17194:127::-;17255:10;17250:3;17246:20;17243:1;17236:31;17286:4;17283:1;17276:15;17310:4;17307:1;17300:15;19611:250;19696:1;19706:113;19720:6;19717:1;19714:13;19706:113;;;19796:11;;;19790:18;19777:11;;;19770:39;19742:2;19735:10;19706:113;;;-1:-1:-1;;19853:1:146;19835:16;;19828:27;19611:250::o;19866:270::-;19907:3;19945:5;19939:12;19972:6;19967:3;19960:19;19988:76;20057:6;20050:4;20045:3;20041:14;20034:4;20027:5;20023:16;19988:76;:::i;:::-;20118:2;20097:15;-1:-1:-1;;20093:29:146;20084:39;;;;20125:4;20080:50;;19866:270;-1:-1:-1;;19866:270:146:o;20141:400::-;20354:10;20342:23;;20324:42;;-1:-1:-1;;;;;20402:32:146;;20397:2;20382:18;;20375:60;20471:2;20466;20451:18;;20444:30;;;-1:-1:-1;;20491:44:146;;20516:18;;20508:6;20491:44;:::i;20546:287::-;20675:3;20713:6;20707:13;20729:66;20788:6;20783:3;20776:4;20768:6;20764:17;20729:66;:::i;:::-;20811:16;;;;;20546:287;-1:-1:-1;;20546:287:146:o;20838:290::-;20907:6;20960:2;20948:9;20939:7;20935:23;20931:32;20928:52;;;20976:1;20973;20966:12;20928:52;21002:16;;-1:-1:-1;;;;;;21047:32:146;;21037:43;;21027:71;;21094:1;21091;21084:12;21133:298;21302:2;21291:9;21284:21;21265:4;21322:44;21362:2;21351:9;21347:18;21339:6;21322:44;:::i;:::-;21314:52;;21416:6;21409:14;21402:22;21397:2;21386:9;21382:18;21375:50;21133:298;;;;;:::o;25358:157::-;25388:1;25422:4;25419:1;25415:12;25446:3;25436:37;;25453:18;;:::i;:::-;25505:3;25498:4;25495:1;25491:12;25487:22;25482:27;;;25358:157;;;;:::o;25520:151::-;25610:4;25603:12;;;25589;;;25585:31;;25628:14;;25625:40;;;25645:18;;:::i;28212:135::-;28251:3;28272:17;;;28269:43;;28292:18;;:::i;:::-;-1:-1:-1;28339:1:146;28328:13;;28212:135::o;30312:478::-;30514:2;30496:21;;;30553:2;30533:18;;;30526:30;30592:34;30587:2;30572:18;;30565:62;30663:34;30658:2;30643:18;;30636:62;-1:-1:-1;;;30729:3:146;30714:19;;30707:41;30780:3;30765:19;;30312:478::o;30795:338::-;30997:2;30979:21;;;31036:2;31016:18;;;31009:30;-1:-1:-1;;;31070:2:146;31055:18;;31048:44;31124:2;31109:18;;30795:338::o;31484:422::-;31573:1;31616:5;31573:1;31630:270;31651:7;31641:8;31638:21;31630:270;;;31710:4;31706:1;31702:6;31698:17;31692:4;31689:27;31686:53;;;31719:18;;:::i;:::-;31769:7;31759:8;31755:22;31752:55;;;31789:16;;;;31752:55;31868:22;;;;31828:15;;;;31630:270;;;31634:3;31484:422;;;;;:::o;31911:806::-;31960:5;31990:8;31980:80;;-1:-1:-1;32031:1:146;32045:5;;31980:80;32079:4;32069:76;;-1:-1:-1;32116:1:146;32130:5;;32069:76;32161:4;32179:1;32174:59;;;;32247:1;32242:130;;;;32154:218;;32174:59;32204:1;32195:10;;32218:5;;;32242:130;32279:3;32269:8;32266:17;32263:43;;;32286:18;;:::i;:::-;-1:-1:-1;;32342:1:146;32328:16;;32357:5;;32154:218;;32456:2;32446:8;32443:16;32437:3;32431:4;32428:13;32424:36;32418:2;32408:8;32405:16;32400:2;32394:4;32391:12;32387:35;32384:77;32381:159;;;-1:-1:-1;32493:19:146;;;32525:5;;32381:159;32572:34;32597:8;32591:4;32572:34;:::i;:::-;32642:6;32638:1;32634:6;32630:19;32621:7;32618:32;32615:58;;;32653:18;;:::i;:::-;32691:20;;31911:806;-1:-1:-1;;;31911:806:146:o;32722:131::-;32782:5;32811:36;32838:8;32832:4;32811:36;:::i", - "linkReferences": {} - }, - "methodIdentifiers": { - "MIN_LIGHT_CLIENT_DELAY()": "e4407b15", - "broadcasters(uint32)": "59f89787", - "executeMessage(uint64,bytes,bytes[],bytes[])": "7acc6754", - "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": "37d5af84", - "frozen(uint32)": "36ae7c18", - "lightClients(uint32)": "7599735c", - "messageStatus(bytes32)": "3c6cf473", - "messages(uint64)": "029d6713", - "nonce()": "affed0e0", - "sendingEnabled()": "3e99e9ce", - "sourceChainIds(uint256)": "9efeff1c", - "sourceChainIdsLength()": "4552f563", - "storageRootCache(bytes32)": "8d080d1d", - "version()": "54fd4d50" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}}},\"stateVariables\":{\"MESSAGES_MAPPING_STORAGE_INDEX\":{\"details\":\"We need this when calling `executeMessage` via storage proofs, as it is used in getting the slot key.\"},\"MSG_HASH_TOPIC_IDX\":{\"details\":\"Because topic[0] is the hash of the event signature (`SENT_MESSAGE_EVENT_SIG` above), the topic index of msgHash is 2.\"}},\"title\":\"Target Arbitrary Message Bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Executes messages sent from the source chain on the destination chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TargetAMB.sol\":\"TargetAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32", - "indexed": true - }, - { - "internalType": "uint64", - "name": "nonce", - "type": "uint64", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes", - "name": "message", - "type": "bytes", - "indexed": false - }, - { - "internalType": "bool", - "name": "status", - "type": "bool", - "indexed": false - } - ], - "type": "event", - "name": "ExecutedMessage", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "version", - "type": "uint8", - "indexed": false - } - ], - "type": "event", - "name": "Initialized", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "MIN_LIGHT_CLIENT_DELAY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "broadcasters", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "slot", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes[]", - "name": "accountProof", - "type": "bytes[]" - }, - { - "internalType": "bytes[]", - "name": "storageProof", - "type": "bytes[]" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "executeMessage" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "srcSlotTxSlotPack", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes32[]", - "name": "receiptsRootProof", - "type": "bytes32[]" - }, - { - "internalType": "bytes32", - "name": "receiptsRoot", - "type": "bytes32" - }, - { - "internalType": "bytes[]", - "name": "receiptProof", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "txIndexRLPEncoded", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "logIndex", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "executeMessageFromLog" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "frozen", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "lightClients", - "outputs": [ - { - "internalType": "contract ILightClient", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "messageStatus", - "outputs": [ - { - "internalType": "enum MessageStatus", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function", - "name": "messages", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "nonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "sendingEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "sourceChainIds", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "sourceChainIdsLength", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "storageRootCache", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "version", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "executeMessage(uint64,bytes,bytes[],bytes[])": { - "params": { - "accountProof": "Used to prove the broadcaster's state root.", - "messageBytes": "The message we want to execute provided as bytes.", - "slot": "Specifies which execution state root should be read from the light client.", - "storageProof": "Used to prove the existence of the message root inside the broadcaster." - } - }, - "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { - "params": { - "logIndex": "The index of the event in our transaction.", - "messageBytes": "The message we want to execute provided as bytes.", - "receiptsRoot": "The receipts root which contains our \"SentMessage\" event.", - "receiptsRootProof": "A merkle proof proving the receiptsRoot in the block header.", - "srcSlotTxSlotPack": "The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.", - "txIndexRLPEncoded": "The index of our transaction inside the block RLP encoded." - } - }, - "sourceChainIdsLength()": { - "returns": { - "_0": "The length of the sourceChainIds array." - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "MIN_LIGHT_CLIENT_DELAY()": { - "notice": "The minimum delay for using any information from the light client." - }, - "broadcasters(uint32)": { - "notice": "Mapping between source chainId and the address of the Telepathy broadcaster on that chain." - }, - "executeMessage(uint64,bytes,bytes[],bytes[])": { - "notice": "Executes a message given a storage proof." - }, - "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { - "notice": "Executes a message given an event proof." - }, - "frozen(uint32)": { - "notice": "Mapping between a source chainId and whether it's frozen." - }, - "lightClients(uint32)": { - "notice": "Mapping between source chainId and the corresponding light client." - }, - "messageStatus(bytes32)": { - "notice": "Mapping between a message root and its status." - }, - "messages(uint64)": { - "notice": "Mapping between a nonce and a message root." - }, - "nonce()": { - "notice": "Keeps track of the next nonce to be used." - }, - "sendingEnabled()": { - "notice": "Whether sending is enabled or not." - }, - "sourceChainIds(uint256)": { - "notice": "All sourceChainIds." - }, - "sourceChainIdsLength()": { - "notice": "Gets the length of the sourceChainIds array." - }, - "storageRootCache(bytes32)": { - "notice": "Storage root cache." - }, - "version()": { - "notice": "Returns current contract version." - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/amb/TargetAMB.sol": "TargetAMB" - }, - "libraries": {} - }, - "sources": { - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", - "urls": [ - "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", - "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { - "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", - "urls": [ - "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", - "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { - "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", - "urls": [ - "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", - "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/Bytes.sol": { - "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", - "urls": [ - "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", - "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { - "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", - "urls": [ - "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", - "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { - "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", - "urls": [ - "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", - "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { - "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", - "urls": [ - "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", - "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" - ], - "license": "MIT" - }, - "src/amb/TargetAMB.sol": { - "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", - "urls": [ - "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", - "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" - ], - "license": null - }, - "src/amb/TelepathyStorage.sol": { - "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", - "urls": [ - "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", - "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" - ], - "license": null - }, - "src/amb/interfaces/ITelepathy.sol": { - "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", - "urls": [ - "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", - "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" - ], - "license": null - }, - "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", - "urls": [ - "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", - "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" - ], - "license": null - }, - "src/libraries/MessageEncoding.sol": { - "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", - "urls": [ - "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", - "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" - ], - "license": null - }, - "src/libraries/SimpleSerialize.sol": { - "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", - "urls": [ - "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", - "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" - ], - "license": null - }, - "src/libraries/StateProofHelper.sol": { - "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", - "urls": [ - "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", - "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" - ], - "license": null - }, - "src/libraries/Typecast.sol": { - "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", - "urls": [ - "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", - "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" - ], - "license": "MIT OR Apache-2.0" - }, - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/amb/TargetAMB.sol", - "id": 42124, - "exportedSymbols": { - "Address": [ - 44319 - ], - "EventProof": [ - 44269 - ], - "ITelepathyHandler": [ - 42764 - ], - "ITelepathyReceiver": [ - 42752 - ], - "Message": [ - 42654 - ], - "MessageEncoding": [ - 43383 - ], - "MessageStatus": [ - 42639 - ], - "ReentrancyGuardUpgradeable": [ - 29613 - ], - "SSZ": [ - 43941 - ], - "StorageProof": [ - 44066 - ], - "TargetAMB": [ - 42123 - ], - "TelepathyStorage": [ - 42633 - ] - }, - "nodeType": "SourceUnit", - "src": "0:10914:100", - "nodes": [ - { - "id": 41481, - "nodeType": "PragmaDirective", - "src": "0:23:100", - "nodes": [], - "literals": [ - "solidity", - "0.8", - ".16" - ] - }, - { - "id": 41483, - "nodeType": "ImportDirective", - "src": "25:122:100", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol", - "file": "openzeppelin-contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "nameLocation": "-1:-1:-1", - "scope": 42124, - "sourceUnit": 29614, - "symbolAliases": [ - { - "foreign": { - "id": 41482, - "name": "ReentrancyGuardUpgradeable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 29613, - "src": "33:26:100", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41485, - "nodeType": "ImportDirective", - "src": "149:54:100", - "nodes": [], - "absolutePath": "src/libraries/SimpleSerialize.sol", - "file": "src/libraries/SimpleSerialize.sol", - "nameLocation": "-1:-1:-1", - "scope": 42124, - "sourceUnit": 43942, - "symbolAliases": [ - { - "foreign": { - "id": 41484, - "name": "SSZ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43941, - "src": "157:3:100", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41488, - "nodeType": "ImportDirective", - "src": "204:76:100", - "nodes": [], - "absolutePath": "src/libraries/StateProofHelper.sol", - "file": "src/libraries/StateProofHelper.sol", - "nameLocation": "-1:-1:-1", - "scope": 42124, - "sourceUnit": 44270, - "symbolAliases": [ - { - "foreign": { - "id": 41486, - "name": "StorageProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44066, - "src": "212:12:100", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 41487, - "name": "EventProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44269, - "src": "226:10:100", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41490, - "nodeType": "ImportDirective", - "src": "281:51:100", - "nodes": [], - "absolutePath": "src/libraries/Typecast.sol", - "file": "src/libraries/Typecast.sol", - "nameLocation": "-1:-1:-1", - "scope": 42124, - "sourceUnit": 44340, - "symbolAliases": [ - { - "foreign": { - "id": 41489, - "name": "Address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44319, - "src": "289:7:100", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41492, - "nodeType": "ImportDirective", - "src": "333:66:100", - "nodes": [], - "absolutePath": "src/libraries/MessageEncoding.sol", - "file": "src/libraries/MessageEncoding.sol", - "nameLocation": "-1:-1:-1", - "scope": 42124, - "sourceUnit": 43384, - "symbolAliases": [ - { - "foreign": { - "id": 41491, - "name": "MessageEncoding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43383, - "src": "341:15:100", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41494, - "nodeType": "ImportDirective", - "src": "401:62:100", - "nodes": [], - "absolutePath": "src/amb/TelepathyStorage.sol", - "file": "src/amb/TelepathyStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 42124, - "sourceUnit": 42634, - "symbolAliases": [ - { - "foreign": { - "id": 41493, - "name": "TelepathyStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42633, - "src": "409:16:100", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 41499, - "nodeType": "ImportDirective", - "src": "464:130:100", - "nodes": [], - "absolutePath": "src/amb/interfaces/ITelepathy.sol", - "file": "src/amb/interfaces/ITelepathy.sol", - "nameLocation": "-1:-1:-1", - "scope": 42124, - "sourceUnit": 42765, - "symbolAliases": [ - { - "foreign": { - "id": 41495, - "name": "ITelepathyHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42764, - "src": "477:17:100", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 41496, - "name": "ITelepathyReceiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42752, - "src": "500:18:100", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 41497, - "name": "Message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42654, - "src": "524:7:100", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 41498, - "name": "MessageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42639, - "src": "537:13:100", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 42123, - "nodeType": "ContractDefinition", - "src": "748:10165:100", - "nodes": [ - { - "id": 41510, - "nodeType": "VariableDeclaration", - "src": "924:58:100", - "nodes": [], - "constant": true, - "documentation": { - "id": 41507, - "nodeType": "StructuredDocumentation", - "src": "841:78:100", - "text": "@notice The minimum delay for using any information from the light client." - }, - "functionSelector": "e4407b15", - "mutability": "constant", - "name": "MIN_LIGHT_CLIENT_DELAY", - "nameLocation": "948:22:100", - "scope": 42123, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 41508, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "924:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "32", - "id": 41509, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "973:9:100", - "subdenomination": "minutes", - "typeDescriptions": { - "typeIdentifier": "t_rational_120_by_1", - "typeString": "int_const 120" - }, - "value": "2" - }, - "visibility": "public" - }, - { - "id": 41516, - "nodeType": "VariableDeclaration", - "src": "1092:105:100", - "nodes": [], - "constant": true, - "documentation": { - "id": 41511, - "nodeType": "StructuredDocumentation", - "src": "989:98:100", - "text": "@notice The ITelepathyBroadcaster SentMessage event signature used in `executeMessageFromLog`." - }, - "mutability": "constant", - "name": "SENT_MESSAGE_EVENT_SIG", - "nameLocation": "1118:22:100", - "scope": 42123, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41512, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1092:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "arguments": [ - { - "hexValue": "53656e744d6573736167652875696e7436342c627974657333322c627974657329", - "id": 41514, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1161:35:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac", - "typeString": "literal_string \"SentMessage(uint64,bytes32,bytes)\"" - }, - "value": "SentMessage(uint64,bytes32,bytes)" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_e5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac", - "typeString": "literal_string \"SentMessage(uint64,bytes32,bytes)\"" - } - ], - "id": 41513, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "1151:9:100", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 41515, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1151:46:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "id": 41520, - "nodeType": "VariableDeclaration", - "src": "1437:48:100", - "nodes": [], - "constant": true, - "documentation": { - "id": 41517, - "nodeType": "StructuredDocumentation", - "src": "1204:228:100", - "text": "@notice The topic index of the message root in the SourceAMB SentMessage event.\n @dev Because topic[0] is the hash of the event signature (`SENT_MESSAGE_EVENT_SIG` above),\n the topic index of msgHash is 2." - }, - "mutability": "constant", - "name": "MSG_HASH_TOPIC_IDX", - "nameLocation": "1463:18:100", - "scope": 42123, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 41518, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1437:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "32", - "id": 41519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1484:1:100", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "visibility": "internal" - }, - { - "id": 41524, - "nodeType": "VariableDeclaration", - "src": "1692:60:100", - "nodes": [], - "constant": true, - "documentation": { - "id": 41521, - "nodeType": "StructuredDocumentation", - "src": "1492:195:100", - "text": "@notice The index of the `messages` mapping in TelepathyStorage.sol.\n @dev We need this when calling `executeMessage` via storage proofs, as it is used in\n getting the slot key." - }, - "mutability": "constant", - "name": "MESSAGES_MAPPING_STORAGE_INDEX", - "nameLocation": "1718:30:100", - "scope": 42123, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 41522, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1692:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "31", - "id": 41523, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1751:1:100", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "visibility": "internal" - }, - { - "id": 41534, - "nodeType": "FunctionDefinition", - "src": "1876:109:100", - "nodes": [], - "body": { - "id": 41533, - "nodeType": "Block", - "src": "1940:45:100", - "nodes": [], - "statements": [ - { - "expression": { - "expression": { - "id": 41530, - "name": "sourceChainIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42597, - "src": "1957:14:100", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage", - "typeString": "uint32[] storage ref" - } - }, - "id": 41531, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1972:6:100", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1957:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 41529, - "id": 41532, - "nodeType": "Return", - "src": "1950:28:100" - } - ] - }, - "documentation": { - "id": 41525, - "nodeType": "StructuredDocumentation", - "src": "1759:112:100", - "text": "@notice Gets the length of the sourceChainIds array.\n @return The length of the sourceChainIds array." - }, - "functionSelector": "4552f563", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "sourceChainIdsLength", - "nameLocation": "1885:20:100", - "parameters": { - "id": 41526, - "nodeType": "ParameterList", - "parameters": [], - "src": "1905:2:100" - }, - "returnParameters": { - "id": 41529, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41528, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 41534, - "src": "1931:7:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 41527, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1931:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1930:9:100" - }, - "scope": 42123, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 41687, - "nodeType": "FunctionDefinition", - "src": "2394:1820:100", - "nodes": [], - "body": { - "id": 41686, - "nodeType": "Block", - "src": "2582:1632:100", - "nodes": [], - "statements": [ - { - "assignments": [ - 41552, - 41554 - ], - "declarations": [ - { - "constant": false, - "id": 41552, - "mutability": "mutable", - "name": "message", - "nameLocation": "2608:7:100", - "nodeType": "VariableDeclaration", - "scope": 41686, - "src": "2593:22:100", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message" - }, - "typeName": { - "id": 41551, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 41550, - "name": "Message", - "nameLocations": [ - "2593:7:100" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42654, - "src": "2593:7:100" - }, - "referencedDeclaration": 42654, - "src": "2593:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_storage_ptr", - "typeString": "struct Message" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41554, - "mutability": "mutable", - "name": "messageRoot", - "nameLocation": "2625:11:100", - "nodeType": "VariableDeclaration", - "scope": 41686, - "src": "2617:19:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41553, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2617:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41558, - "initialValue": { - "arguments": [ - { - "id": 41556, - "name": "messageBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41539, - "src": "2660:12:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 41555, - "name": "_checkPreconditions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42013, - "src": "2640:19:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$", - "typeString": "function (bytes calldata) view returns (struct Message memory,bytes32)" - } - }, - "id": 41557, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2640:33:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$", - "typeString": "tuple(struct Message memory,bytes32)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2592:81:100" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 41560, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41552, - "src": "2713:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41561, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2721:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "2713:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 41559, - "name": "requireLightClientConsistency", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41852, - "src": "2683:29:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", - "typeString": "function (uint32) view" - } - }, - "id": 41562, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2683:52:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41563, - "nodeType": "ExpressionStatement", - "src": "2683:52:100" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 41565, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41552, - "src": "2762:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41566, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2770:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "2762:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 41564, - "name": "requireNotFrozen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41867, - "src": "2745:16:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", - "typeString": "function (uint32) view" - } - }, - "id": 41567, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2745:39:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41568, - "nodeType": "ExpressionStatement", - "src": "2745:39:100" - }, - { - "id": 41679, - "nodeType": "Block", - "src": "2795:1351:100", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 41570, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41537, - "src": "2833:4:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "expression": { - "id": 41571, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41552, - "src": "2839:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41572, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2847:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "2839:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 41569, - "name": "requireLightClientDelay", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41922, - "src": "2809:23:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint32_$returns$__$", - "typeString": "function (uint64,uint32) view" - } - }, - "id": 41573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2809:52:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41574, - "nodeType": "ExpressionStatement", - "src": "2809:52:100" - }, - { - "assignments": [ - 41576 - ], - "declarations": [ - { - "constant": false, - "id": 41576, - "mutability": "mutable", - "name": "storageRoot", - "nameLocation": "2884:11:100", - "nodeType": "VariableDeclaration", - "scope": 41679, - "src": "2876:19:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41575, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2876:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41577, - "nodeType": "VariableDeclarationStatement", - "src": "2876:19:100" - }, - { - "assignments": [ - 41579 - ], - "declarations": [ - { - "constant": false, - "id": 41579, - "mutability": "mutable", - "name": "cacheKey", - "nameLocation": "2917:8:100", - "nodeType": "VariableDeclaration", - "scope": 41679, - "src": "2909:16:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41578, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2909:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41592, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 41583, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41552, - "src": "2972:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41584, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2980:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "2972:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 41585, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41537, - "src": "2995:4:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "baseExpression": { - "id": 41586, - "name": "broadcasters", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42608, - "src": "3001:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", - "typeString": "mapping(uint32 => address)" - } - }, - "id": 41589, - "indexExpression": { - "expression": { - "id": 41587, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41552, - "src": "3014:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41588, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3022:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "3014:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3001:35:100", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 41581, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "2955:3:100", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 41582, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "2959:12:100", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "2955:16:100", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 41590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2955:82:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 41580, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "2928:9:100", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 41591, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2928:123:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2909:142:100" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 41597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 41593, - "name": "storageRootCache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42627, - "src": "3201:16:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 41595, - "indexExpression": { - "id": 41594, - "name": "cacheKey", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41579, - "src": "3218:8:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3201:26:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 41596, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3231:1:100", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3201:31:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 41640, - "nodeType": "Block", - "src": "3694:73:100", - "statements": [ - { - "expression": { - "id": 41638, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 41634, - "name": "storageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41576, - "src": "3712:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 41635, - "name": "storageRootCache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42627, - "src": "3726:16:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 41637, - "indexExpression": { - "id": 41636, - "name": "cacheKey", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41579, - "src": "3743:8:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3726:26:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3712:40:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 41639, - "nodeType": "ExpressionStatement", - "src": "3712:40:100" - } - ] - }, - "id": 41641, - "nodeType": "IfStatement", - "src": "3197:570:100", - "trueBody": { - "id": 41633, - "nodeType": "Block", - "src": "3234:454:100", - "statements": [ - { - "assignments": [ - 41599 - ], - "declarations": [ - { - "constant": false, - "id": 41599, - "mutability": "mutable", - "name": "executionStateRoot", - "nameLocation": "3260:18:100", - "nodeType": "VariableDeclaration", - "scope": 41633, - "src": "3252:26:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41598, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3252:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41607, - "initialValue": { - "arguments": [ - { - "id": 41605, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41537, - "src": "3357:4:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "baseExpression": { - "id": 41600, - "name": "lightClients", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42603, - "src": "3301:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", - "typeString": "mapping(uint32 => contract ILightClient)" - } - }, - "id": 41603, - "indexExpression": { - "expression": { - "id": 41601, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41552, - "src": "3314:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41602, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3322:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "3314:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3301:35:100", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "id": 41604, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3337:19:100", - "memberName": "executionStateRoots", - "nodeType": "MemberAccess", - "referencedDeclaration": 47928, - "src": "3301:55:100", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (uint256) view external returns (bytes32)" - } - }, - "id": 41606, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3301:61:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3252:110:100" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 41611, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41609, - "name": "executionStateRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41599, - "src": "3388:18:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 41610, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3410:1:100", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3388:23:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "457865637574696f6e20537461746520526f6f74206973206e6f7420736574", - "id": 41612, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3413:33:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_bbf02b8009bd8a07f5294acf2aa81ce68ead86aefb7454217afe3a4dfc921ff8", - "typeString": "literal_string \"Execution State Root is not set\"" - }, - "value": "Execution State Root is not set" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_bbf02b8009bd8a07f5294acf2aa81ce68ead86aefb7454217afe3a4dfc921ff8", - "typeString": "literal_string \"Execution State Root is not set\"" - } - ], - "id": 41608, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3380:7:100", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 41613, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3380:67:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41614, - "nodeType": "ExpressionStatement", - "src": "3380:67:100" - }, - { - "expression": { - "id": 41625, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 41615, - "name": "storageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41576, - "src": "3465:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 41618, - "name": "accountProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41542, - "src": "3528:12:100", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, - { - "baseExpression": { - "id": 41619, - "name": "broadcasters", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42608, - "src": "3542:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", - "typeString": "mapping(uint32 => address)" - } - }, - "id": 41622, - "indexExpression": { - "expression": { - "id": 41620, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41552, - "src": "3555:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41621, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3563:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "3555:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3542:35:100", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 41623, - "name": "executionStateRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41599, - "src": "3579:18:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 41616, - "name": "StorageProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44066, - "src": "3479:12:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_StorageProof_$44066_$", - "typeString": "type(library StorageProof)" - } - }, - "id": 41617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3492:14:100", - "memberName": "getStorageRoot", - "nodeType": "MemberAccess", - "referencedDeclaration": 44065, - "src": "3479:27:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes memory[] memory,address,bytes32) pure returns (bytes32)" - } - }, - "id": 41624, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3479:136:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3465:150:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 41626, - "nodeType": "ExpressionStatement", - "src": "3465:150:100" - }, - { - "expression": { - "id": 41631, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 41627, - "name": "storageRootCache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42627, - "src": "3633:16:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 41629, - "indexExpression": { - "id": 41628, - "name": "cacheKey", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41579, - "src": "3650:8:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3633:26:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 41630, - "name": "storageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41576, - "src": "3662:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3633:40:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 41632, - "nodeType": "ExpressionStatement", - "src": "3633:40:100" - } - ] - } - }, - { - "assignments": [ - 41643 - ], - "declarations": [ - { - "constant": false, - "id": 41643, - "mutability": "mutable", - "name": "slotKey", - "nameLocation": "3789:7:100", - "nodeType": "VariableDeclaration", - "scope": 41679, - "src": "3781:15:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41642, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3781:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41657, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 41650, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41552, - "src": "3858:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41651, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3866:5:100", - "memberName": "nonce", - "nodeType": "MemberAccess", - "referencedDeclaration": 42643, - "src": "3858:13:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 41652, - "name": "MESSAGES_MAPPING_STORAGE_INDEX", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41524, - "src": "3873:30:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 41648, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3847:3:100", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 41649, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3851:6:100", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "3847:10:100", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 41653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3847:57:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 41647, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3837:9:100", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 41654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3837:68:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 41645, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3826:3:100", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 41646, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3830:6:100", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "3826:10:100", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 41655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3826:80:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 41644, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3799:9:100", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 41656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3799:121:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3781:139:100" - }, - { - "assignments": [ - 41659 - ], - "declarations": [ - { - "constant": false, - "id": 41659, - "mutability": "mutable", - "name": "slotValue", - "nameLocation": "3942:9:100", - "nodeType": "VariableDeclaration", - "scope": 41679, - "src": "3934:17:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 41658, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3934:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 41666, - "initialValue": { - "arguments": [ - { - "id": 41662, - "name": "slotKey", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41643, - "src": "3983:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41663, - "name": "storageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41576, - "src": "3992:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41664, - "name": "storageProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41545, - "src": "4005:12:100", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - ], - "expression": { - "id": 41660, - "name": "StorageProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44066, - "src": "3954:12:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_StorageProof_$44066_$", - "typeString": "type(library StorageProof)" - } - }, - "id": 41661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3967:15:100", - "memberName": "getStorageValue", - "nodeType": "MemberAccess", - "referencedDeclaration": 43995, - "src": "3954:28:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (bytes32,bytes32,bytes memory[] memory) pure returns (uint256)" - } - }, - "id": 41665, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3954:64:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3934:84:100" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 41672, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 41669, - "name": "slotValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41659, - "src": "4045:9:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 41668, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4037:7:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 41667, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4037:7:100", - "typeDescriptions": {} - } - }, - "id": 41670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4037:18:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 41671, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41554, - "src": "4059:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "4037:33:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 41678, - "nodeType": "IfStatement", - "src": "4033:103:100", - "trueBody": { - "id": 41677, - "nodeType": "Block", - "src": "4072:64:100", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "496e76616c6964206d65737361676520686173682e", - "id": 41674, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4097:23:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_3e91b0734db6a6d2f50f5dc8279b83064cda4a12670ab76573547cfe3c68f73d", - "typeString": "literal_string \"Invalid message hash.\"" - }, - "value": "Invalid message hash." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_3e91b0734db6a6d2f50f5dc8279b83064cda4a12670ab76573547cfe3c68f73d", - "typeString": "literal_string \"Invalid message hash.\"" - } - ], - "id": 41673, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "4090:6:100", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 41675, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4090:31:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41676, - "nodeType": "ExpressionStatement", - "src": "4090:31:100" - } - ] - } - } - ] - }, - { - "expression": { - "arguments": [ - { - "id": 41681, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41552, - "src": "4172:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - { - "id": 41682, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41554, - "src": "4181:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41683, - "name": "messageBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41539, - "src": "4194:12:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 41680, - "name": "_executeMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42122, - "src": "4156:15:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (struct Message memory,bytes32,bytes memory)" - } - }, - "id": 41684, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4156:51:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41685, - "nodeType": "ExpressionStatement", - "src": "4156:51:100" - } - ] - }, - "baseFunctions": [ - 42732 - ], - "documentation": { - "id": 41535, - "nodeType": "StructuredDocumentation", - "src": "1991:398:100", - "text": "@notice Executes a message given a storage proof.\n @param slot Specifies which execution state root should be read from the light client.\n @param messageBytes The message we want to execute provided as bytes.\n @param accountProof Used to prove the broadcaster's state root.\n @param storageProof Used to prove the existence of the message root inside the broadcaster." - }, - "functionSelector": "7acc6754", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 41548, - "kind": "modifierInvocation", - "modifierName": { - "id": 41547, - "name": "nonReentrant", - "nameLocations": [ - "2569:12:100" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 29584, - "src": "2569:12:100" - }, - "nodeType": "ModifierInvocation", - "src": "2569:12:100" - } - ], - "name": "executeMessage", - "nameLocation": "2403:14:100", - "parameters": { - "id": 41546, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41537, - "mutability": "mutable", - "name": "slot", - "nameLocation": "2434:4:100", - "nodeType": "VariableDeclaration", - "scope": 41687, - "src": "2427:11:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 41536, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2427:6:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41539, - "mutability": "mutable", - "name": "messageBytes", - "nameLocation": "2463:12:100", - "nodeType": "VariableDeclaration", - "scope": 41687, - "src": "2448:27:100", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41538, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2448:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41542, - "mutability": "mutable", - "name": "accountProof", - "nameLocation": "2502:12:100", - "nodeType": "VariableDeclaration", - "scope": 41687, - "src": "2485:29:100", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 41540, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2485:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 41541, - "nodeType": "ArrayTypeName", - "src": "2485:7:100", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41545, - "mutability": "mutable", - "name": "storageProof", - "nameLocation": "2541:12:100", - "nodeType": "VariableDeclaration", - "scope": 41687, - "src": "2524:29:100", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 41543, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2524:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 41544, - "nodeType": "ArrayTypeName", - "src": "2524:7:100", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - } - ], - "src": "2417:142:100" - }, - "returnParameters": { - "id": 41549, - "nodeType": "ParameterList", - "parameters": [], - "src": "2582:0:100" - }, - "scope": 42123, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 41821, - "nodeType": "FunctionDefinition", - "src": "4866:1928:100", - "nodes": [], - "body": { - "id": 41820, - "nodeType": "Block", - "src": "5185:1609:100", - "nodes": [], - "statements": [ - { - "assignments": [ - 41711, - 41713 - ], - "declarations": [ - { - "constant": false, - "id": 41711, - "mutability": "mutable", - "name": "message", - "nameLocation": "5275:7:100", - "nodeType": "VariableDeclaration", - "scope": 41820, - "src": "5260:22:100", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message" - }, - "typeName": { - "id": 41710, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 41709, - "name": "Message", - "nameLocations": [ - "5260:7:100" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42654, - "src": "5260:7:100" - }, - "referencedDeclaration": 42654, - "src": "5260:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_storage_ptr", - "typeString": "struct Message" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41713, - "mutability": "mutable", - "name": "messageRoot", - "nameLocation": "5292:11:100", - "nodeType": "VariableDeclaration", - "scope": 41820, - "src": "5284:19:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41712, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5284:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41717, - "initialValue": { - "arguments": [ - { - "id": 41715, - "name": "messageBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41692, - "src": "5327:12:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 41714, - "name": "_checkPreconditions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42013, - "src": "5307:19:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$", - "typeString": "function (bytes calldata) view returns (struct Message memory,bytes32)" - } - }, - "id": 41716, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5307:33:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$", - "typeString": "tuple(struct Message memory,bytes32)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5259:81:100" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 41719, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41711, - "src": "5380:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41720, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5388:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "5380:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 41718, - "name": "requireLightClientConsistency", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41852, - "src": "5350:29:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", - "typeString": "function (uint32) view" - } - }, - "id": 41721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5350:52:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41722, - "nodeType": "ExpressionStatement", - "src": "5350:52:100" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 41724, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41711, - "src": "5429:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41725, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5437:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "5429:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 41723, - "name": "requireNotFrozen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41867, - "src": "5412:16:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", - "typeString": "function (uint32) view" - } - }, - "id": 41726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5412:39:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41727, - "nodeType": "ExpressionStatement", - "src": "5412:39:100" - }, - { - "id": 41786, - "nodeType": "Block", - "src": "5462:561:100", - "statements": [ - { - "assignments": [ - 41729, - 41731 - ], - "declarations": [ - { - "constant": false, - "id": 41729, - "mutability": "mutable", - "name": "srcSlot", - "nameLocation": "5484:7:100", - "nodeType": "VariableDeclaration", - "scope": 41786, - "src": "5477:14:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 41728, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "5477:6:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41731, - "mutability": "mutable", - "name": "txSlot", - "nameLocation": "5500:6:100", - "nodeType": "VariableDeclaration", - "scope": 41786, - "src": "5493:13:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 41730, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "5493:6:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "id": 41741, - "initialValue": { - "arguments": [ - { - "id": 41734, - "name": "srcSlotTxSlotPack", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41690, - "src": "5521:17:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - { - "components": [ - { - "id": 41736, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5541:6:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 41735, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "5541:6:100", - "typeDescriptions": {} - } - }, - { - "id": 41738, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5549:6:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 41737, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "5549:6:100", - "typeDescriptions": {} - } - } - ], - "id": 41739, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5540:16:100", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_type$_t_uint64_$_$_t_type$_t_uint64_$_$", - "typeString": "tuple(type(uint64),type(uint64))" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_tuple$_t_type$_t_uint64_$_$_t_type$_t_uint64_$_$", - "typeString": "tuple(type(uint64),type(uint64))" - } - ], - "expression": { - "id": 41732, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "5510:3:100", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 41733, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "5514:6:100", - "memberName": "decode", - "nodeType": "MemberAccess", - "src": "5510:10:100", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 41740, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5510:47:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", - "typeString": "tuple(uint64,uint64)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5476:81:100" - }, - { - "expression": { - "arguments": [ - { - "id": 41743, - "name": "srcSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41729, - "src": "5595:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "expression": { - "id": 41744, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41711, - "src": "5604:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41745, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5612:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "5604:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 41742, - "name": "requireLightClientDelay", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41922, - "src": "5571:23:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint32_$returns$__$", - "typeString": "function (uint64,uint32) view" - } - }, - "id": 41746, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5571:55:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41747, - "nodeType": "ExpressionStatement", - "src": "5571:55:100" - }, - { - "assignments": [ - 41749 - ], - "declarations": [ - { - "constant": false, - "id": 41749, - "mutability": "mutable", - "name": "headerRoot", - "nameLocation": "5648:10:100", - "nodeType": "VariableDeclaration", - "scope": 41786, - "src": "5640:18:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41748, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5640:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41757, - "initialValue": { - "arguments": [ - { - "id": 41755, - "name": "srcSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41729, - "src": "5705:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "baseExpression": { - "id": 41750, - "name": "lightClients", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42603, - "src": "5661:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", - "typeString": "mapping(uint32 => contract ILightClient)" - } - }, - "id": 41753, - "indexExpression": { - "expression": { - "id": 41751, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41711, - "src": "5674:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41752, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5682:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "5674:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5661:35:100", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "id": 41754, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5697:7:100", - "memberName": "headers", - "nodeType": "MemberAccess", - "referencedDeclaration": 47921, - "src": "5661:43:100", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (uint256) view external returns (bytes32)" - } - }, - "id": 41756, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5661:52:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5640:73:100" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 41764, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41759, - "name": "headerRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41749, - "src": "5735:10:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 41762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5757:1:100", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 41761, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5749:7:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 41760, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5749:7:100", - "typeDescriptions": {} - } - }, - "id": 41763, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5749:10:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "5735:24:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "486561646572526f6f74206973206d697373696e67", - "id": 41765, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5761:23:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_02a1349704ffa751bbc14e2e3da5665267eb20d6db37ee32898d996c4fc87c26", - "typeString": "literal_string \"HeaderRoot is missing\"" - }, - "value": "HeaderRoot is missing" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_02a1349704ffa751bbc14e2e3da5665267eb20d6db37ee32898d996c4fc87c26", - "typeString": "literal_string \"HeaderRoot is missing\"" - } - ], - "id": 41758, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5727:7:100", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 41766, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5727:58:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41767, - "nodeType": "ExpressionStatement", - "src": "5727:58:100" - }, - { - "assignments": [ - 41769 - ], - "declarations": [ - { - "constant": false, - "id": 41769, - "mutability": "mutable", - "name": "isValid", - "nameLocation": "5804:7:100", - "nodeType": "VariableDeclaration", - "scope": 41786, - "src": "5799:12:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 41768, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5799:4:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 41780, - "initialValue": { - "arguments": [ - { - "id": 41772, - "name": "receiptsRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41697, - "src": "5854:12:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41773, - "name": "receiptsRootProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41695, - "src": "5868:17:100", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, - { - "id": 41774, - "name": "headerRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41749, - "src": "5887:10:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41775, - "name": "srcSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41729, - "src": "5899:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 41776, - "name": "txSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41731, - "src": "5908:6:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "expression": { - "id": 41777, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41711, - "src": "5916:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41778, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5924:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "5916:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 41770, - "name": "SSZ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43941, - "src": "5814:3:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", - "typeString": "type(library SSZ)" - } - }, - "id": 41771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5818:18:100", - "memberName": "verifyReceiptsRoot", - "nodeType": "MemberAccess", - "referencedDeclaration": 43940, - "src": "5814:22:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes32_$_t_uint64_$_t_uint64_$_t_uint32_$returns$_t_bool_$", - "typeString": "function (bytes32,bytes32[] memory,bytes32,uint64,uint64,uint32) pure returns (bool)" - } - }, - "id": 41779, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5814:137:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5799:152:100" - }, - { - "expression": { - "arguments": [ - { - "id": 41782, - "name": "isValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41769, - "src": "5973:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "496e76616c696420726563656970747320726f6f742070726f6f66", - "id": 41783, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5982:29:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a8a86cc8e698cc54f14148f81c68ad3a36e4a61b0a2af21ecc438884515f4870", - "typeString": "literal_string \"Invalid receipts root proof\"" - }, - "value": "Invalid receipts root proof" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a8a86cc8e698cc54f14148f81c68ad3a36e4a61b0a2af21ecc438884515f4870", - "typeString": "literal_string \"Invalid receipts root proof\"" - } - ], - "id": 41781, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5965:7:100", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 41784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5965:47:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41785, - "nodeType": "ExpressionStatement", - "src": "5965:47:100" - } - ] - }, - { - "id": 41813, - "nodeType": "Block", - "src": "6033:693:100", - "statements": [ - { - "assignments": [ - 41788 - ], - "declarations": [ - { - "constant": false, - "id": 41788, - "mutability": "mutable", - "name": "receiptMessageRoot", - "nameLocation": "6254:18:100", - "nodeType": "VariableDeclaration", - "scope": 41813, - "src": "6246:26:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41787, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6246:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41805, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "id": 41793, - "name": "receiptProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41700, - "src": "6346:12:100", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, - { - "id": 41794, - "name": "receiptsRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41697, - "src": "6380:12:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41795, - "name": "txIndexRLPEncoded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41702, - "src": "6414:17:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "id": 41796, - "name": "logIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41704, - "src": "6453:8:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "baseExpression": { - "id": 41797, - "name": "broadcasters", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42608, - "src": "6483:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", - "typeString": "mapping(uint32 => address)" - } - }, - "id": 41800, - "indexExpression": { - "expression": { - "id": 41798, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41711, - "src": "6496:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41799, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6504:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "6496:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6483:35:100", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 41801, - "name": "SENT_MESSAGE_EVENT_SIG", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41516, - "src": "6540:22:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41802, - "name": "MSG_HASH_TOPIC_IDX", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41520, - "src": "6584:18:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 41791, - "name": "EventProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44269, - "src": "6300:10:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_EventProof_$44269_$", - "typeString": "type(library EventProof)" - } - }, - "id": 41792, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6311:13:100", - "memberName": "getEventTopic", - "nodeType": "MemberAccess", - "referencedDeclaration": 44268, - "src": "6300:24:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (bytes memory[] memory,bytes32,bytes memory,uint256,address,bytes32,uint256) pure returns (bytes32)" - } - }, - "id": 41803, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6300:320:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 41790, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6275:7:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 41789, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6275:7:100", - "typeDescriptions": {} - } - }, - "id": 41804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6275:359:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6246:388:100" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 41809, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41807, - "name": "receiptMessageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41788, - "src": "6656:18:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 41808, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41713, - "src": "6678:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "6656:33:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "496e76616c6964206d65737361676520686173682e", - "id": 41810, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6691:23:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_3e91b0734db6a6d2f50f5dc8279b83064cda4a12670ab76573547cfe3c68f73d", - "typeString": "literal_string \"Invalid message hash.\"" - }, - "value": "Invalid message hash." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_3e91b0734db6a6d2f50f5dc8279b83064cda4a12670ab76573547cfe3c68f73d", - "typeString": "literal_string \"Invalid message hash.\"" - } - ], - "id": 41806, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6648:7:100", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 41811, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6648:67:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41812, - "nodeType": "ExpressionStatement", - "src": "6648:67:100" - } - ] - }, - { - "expression": { - "arguments": [ - { - "id": 41815, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41711, - "src": "6752:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - { - "id": 41816, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41713, - "src": "6761:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 41817, - "name": "messageBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41692, - "src": "6774:12:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 41814, - "name": "_executeMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42122, - "src": "6736:15:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (struct Message memory,bytes32,bytes memory)" - } - }, - "id": 41818, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6736:51:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41819, - "nodeType": "ExpressionStatement", - "src": "6736:51:100" - } - ] - }, - "baseFunctions": [ - 42751 - ], - "documentation": { - "id": 41688, - "nodeType": "StructuredDocumentation", - "src": "4220:641:100", - "text": "@notice Executes a message given an event proof.\n @param srcSlotTxSlotPack The slot where we want to read the header from and the slot where\n the tx executed, packed as two uint64s.\n @param messageBytes The message we want to execute provided as bytes.\n @param receiptsRootProof A merkle proof proving the receiptsRoot in the block header.\n @param receiptsRoot The receipts root which contains our \"SentMessage\" event.\n @param txIndexRLPEncoded The index of our transaction inside the block RLP encoded.\n @param logIndex The index of the event in our transaction." - }, - "functionSelector": "37d5af84", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 41707, - "kind": "modifierInvocation", - "modifierName": { - "id": 41706, - "name": "nonReentrant", - "nameLocations": [ - "5172:12:100" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 29584, - "src": "5172:12:100" - }, - "nodeType": "ModifierInvocation", - "src": "5172:12:100" - } - ], - "name": "executeMessageFromLog", - "nameLocation": "4875:21:100", - "parameters": { - "id": 41705, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41690, - "mutability": "mutable", - "name": "srcSlotTxSlotPack", - "nameLocation": "4921:17:100", - "nodeType": "VariableDeclaration", - "scope": 41821, - "src": "4906:32:100", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41689, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4906:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41692, - "mutability": "mutable", - "name": "messageBytes", - "nameLocation": "4963:12:100", - "nodeType": "VariableDeclaration", - "scope": 41821, - "src": "4948:27:100", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41691, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4948:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41695, - "mutability": "mutable", - "name": "receiptsRootProof", - "nameLocation": "5004:17:100", - "nodeType": "VariableDeclaration", - "scope": 41821, - "src": "4985:36:100", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 41693, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4985:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 41694, - "nodeType": "ArrayTypeName", - "src": "4985:9:100", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41697, - "mutability": "mutable", - "name": "receiptsRoot", - "nameLocation": "5039:12:100", - "nodeType": "VariableDeclaration", - "scope": 41821, - "src": "5031:20:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41696, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5031:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41700, - "mutability": "mutable", - "name": "receiptProof", - "nameLocation": "5078:12:100", - "nodeType": "VariableDeclaration", - "scope": 41821, - "src": "5061:29:100", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 41698, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5061:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 41699, - "nodeType": "ArrayTypeName", - "src": "5061:7:100", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41702, - "mutability": "mutable", - "name": "txIndexRLPEncoded", - "nameLocation": "5113:17:100", - "nodeType": "VariableDeclaration", - "scope": 41821, - "src": "5100:30:100", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41701, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5100:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41704, - "mutability": "mutable", - "name": "logIndex", - "nameLocation": "5148:8:100", - "nodeType": "VariableDeclaration", - "scope": 41821, - "src": "5140:16:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 41703, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5140:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4896:266:100" - }, - "returnParameters": { - "id": 41708, - "nodeType": "ParameterList", - "parameters": [], - "src": "5185:0:100" - }, - "scope": 42123, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 41852, - "nodeType": "FunctionDefinition", - "src": "6880:253:100", - "nodes": [], - "body": { - "id": 41851, - "nodeType": "Block", - "src": "6949:184:100", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 41838, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "baseExpression": { - "id": 41830, - "name": "lightClients", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42603, - "src": "6975:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", - "typeString": "mapping(uint32 => contract ILightClient)" - } - }, - "id": 41832, - "indexExpression": { - "id": 41831, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41824, - "src": "6988:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6975:21:100", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - ], - "id": 41829, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6967:7:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 41828, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6967:7:100", - "typeDescriptions": {} - } - }, - "id": 41833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6967:30:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 41836, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7009:1:100", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 41835, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7001:7:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 41834, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7001:7:100", - "typeDescriptions": {} - } - }, - "id": 41837, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7001:10:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "6967:44:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", - "id": 41839, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7013:26:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", - "typeString": "literal_string \"Light client is not set.\"" - }, - "value": "Light client is not set." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", - "typeString": "literal_string \"Light client is not set.\"" - } - ], - "id": 41827, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6959:7:100", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 41840, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6959:81:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41841, - "nodeType": "ExpressionStatement", - "src": "6959:81:100" - }, - { - "expression": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "baseExpression": { - "id": 41843, - "name": "lightClients", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42603, - "src": "7058:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", - "typeString": "mapping(uint32 => contract ILightClient)" - } - }, - "id": 41845, - "indexExpression": { - "id": 41844, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41824, - "src": "7071:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7058:21:100", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "id": 41846, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7080:10:100", - "memberName": "consistent", - "nodeType": "MemberAccess", - "referencedDeclaration": 47909, - "src": "7058:32:100", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", - "typeString": "function () view external returns (bool)" - } - }, - "id": 41847, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7058:34:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c6967687420636c69656e7420697320696e636f6e73697374656e742e", - "id": 41848, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7094:31:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2e1e9c043617752a0dea84b31d35e61238519932f65eb40cd6ed13f6fd86c420", - "typeString": "literal_string \"Light client is inconsistent.\"" - }, - "value": "Light client is inconsistent." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2e1e9c043617752a0dea84b31d35e61238519932f65eb40cd6ed13f6fd86c420", - "typeString": "literal_string \"Light client is inconsistent.\"" - } - ], - "id": 41842, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7050:7:100", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 41849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7050:76:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41850, - "nodeType": "ExpressionStatement", - "src": "7050:76:100" - } - ] - }, - "documentation": { - "id": 41822, - "nodeType": "StructuredDocumentation", - "src": "6800:75:100", - "text": "@notice Checks that the light client for a given chainId is consistent." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "requireLightClientConsistency", - "nameLocation": "6889:29:100", - "parameters": { - "id": 41825, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41824, - "mutability": "mutable", - "name": "chainId", - "nameLocation": "6926:7:100", - "nodeType": "VariableDeclaration", - "scope": 41852, - "src": "6919:14:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 41823, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "6919:6:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "6918:16:100" - }, - "returnParameters": { - "id": 41826, - "nodeType": "ParameterList", - "parameters": [], - "src": "6949:0:100" - }, - "scope": 42123, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 41867, - "nodeType": "FunctionDefinition", - "src": "7194:121:100", - "nodes": [], - "body": { - "id": 41866, - "nodeType": "Block", - "src": "7250:65:100", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 41862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "7268:16:100", - "subExpression": { - "baseExpression": { - "id": 41859, - "name": "frozen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42613, - "src": "7269:6:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_bool_$", - "typeString": "mapping(uint32 => bool)" - } - }, - "id": 41861, - "indexExpression": { - "id": 41860, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41855, - "src": "7276:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7269:15:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "436f6e74726163742069732066726f7a656e2e", - "id": 41863, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7286:21:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8a588d987ba140ba8da36da6bed0df68ef46602e008fcb659a3bdc8b60353b80", - "typeString": "literal_string \"Contract is frozen.\"" - }, - "value": "Contract is frozen." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8a588d987ba140ba8da36da6bed0df68ef46602e008fcb659a3bdc8b60353b80", - "typeString": "literal_string \"Contract is frozen.\"" - } - ], - "id": 41858, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7260:7:100", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 41864, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7260:48:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41865, - "nodeType": "ExpressionStatement", - "src": "7260:48:100" - } - ] - }, - "documentation": { - "id": 41853, - "nodeType": "StructuredDocumentation", - "src": "7139:50:100", - "text": "@notice Checks that the chainId is not frozen." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "requireNotFrozen", - "nameLocation": "7203:16:100", - "parameters": { - "id": 41856, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41855, - "mutability": "mutable", - "name": "chainId", - "nameLocation": "7227:7:100", - "nodeType": "VariableDeclaration", - "scope": 41867, - "src": "7220:14:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 41854, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "7220:6:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "7219:16:100" - }, - "returnParameters": { - "id": 41857, - "nodeType": "ParameterList", - "parameters": [], - "src": "7250:0:100" - }, - "scope": 42123, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 41922, - "nodeType": "FunctionDefinition", - "src": "7385:452:100", - "nodes": [], - "body": { - "id": 41921, - "nodeType": "Block", - "src": "7461:376:100", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 41886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "baseExpression": { - "id": 41878, - "name": "lightClients", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42603, - "src": "7487:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", - "typeString": "mapping(uint32 => contract ILightClient)" - } - }, - "id": 41880, - "indexExpression": { - "id": 41879, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41872, - "src": "7500:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7487:21:100", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - ], - "id": 41877, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7479:7:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 41876, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7479:7:100", - "typeDescriptions": {} - } - }, - "id": 41881, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7479:30:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 41884, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7521:1:100", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 41883, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7513:7:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 41882, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7513:7:100", - "typeDescriptions": {} - } - }, - "id": 41885, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7513:10:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "7479:44:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", - "id": 41887, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7525:26:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", - "typeString": "literal_string \"Light client is not set.\"" - }, - "value": "Light client is not set." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", - "typeString": "literal_string \"Light client is not set.\"" - } - ], - "id": 41875, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7471:7:100", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 41888, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7471:81:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41889, - "nodeType": "ExpressionStatement", - "src": "7471:81:100" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 41895, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41870, - "src": "7603:4:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "baseExpression": { - "id": 41891, - "name": "lightClients", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42603, - "src": "7570:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", - "typeString": "mapping(uint32 => contract ILightClient)" - } - }, - "id": 41893, - "indexExpression": { - "id": 41892, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41872, - "src": "7583:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7570:21:100", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "id": 41894, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7592:10:100", - "memberName": "timestamps", - "nodeType": "MemberAccess", - "referencedDeclaration": 47935, - "src": "7570:32:100", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view external returns (uint256)" - } - }, - "id": 41896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7570:38:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 41897, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7612:1:100", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7570:43:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "54696d657374616d70206973206e6f742073657420666f7220736c6f742e", - "id": 41899, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7615:32:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6d7a45101ad497aef48b2b4cd343588a8ff87c05de216f8c1f25e504e4b18b11", - "typeString": "literal_string \"Timestamp is not set for slot.\"" - }, - "value": "Timestamp is not set for slot." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6d7a45101ad497aef48b2b4cd343588a8ff87c05de216f8c1f25e504e4b18b11", - "typeString": "literal_string \"Timestamp is not set for slot.\"" - } - ], - "id": 41890, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7562:7:100", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 41900, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7562:86:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41901, - "nodeType": "ExpressionStatement", - "src": "7562:86:100" - }, - { - "assignments": [ - 41903 - ], - "declarations": [ - { - "constant": false, - "id": 41903, - "mutability": "mutable", - "name": "elapsedTime", - "nameLocation": "7666:11:100", - "nodeType": "VariableDeclaration", - "scope": 41921, - "src": "7658:19:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 41902, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7658:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 41913, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 41904, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "7680:5:100", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 41905, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7686:9:100", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "7680:15:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "arguments": [ - { - "id": 41910, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41870, - "src": "7731:4:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "baseExpression": { - "id": 41906, - "name": "lightClients", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42603, - "src": "7698:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", - "typeString": "mapping(uint32 => contract ILightClient)" - } - }, - "id": 41908, - "indexExpression": { - "id": 41907, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41872, - "src": "7711:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7698:21:100", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "id": 41909, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7720:10:100", - "memberName": "timestamps", - "nodeType": "MemberAccess", - "referencedDeclaration": 47935, - "src": "7698:32:100", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view external returns (uint256)" - } - }, - "id": 41911, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7698:38:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7680:56:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7658:78:100" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41917, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 41915, - "name": "elapsedTime", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41903, - "src": "7754:11:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 41916, - "name": "MIN_LIGHT_CLIENT_DELAY", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41510, - "src": "7769:22:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7754:37:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f742e", - "id": 41918, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7793:36:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_5b51feb04d24e293cda4cdf47dbe63ae0b79975ab7f4fafdae4b8602d5cda444", - "typeString": "literal_string \"Must wait longer to use this slot.\"" - }, - "value": "Must wait longer to use this slot." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_5b51feb04d24e293cda4cdf47dbe63ae0b79975ab7f4fafdae4b8602d5cda444", - "typeString": "literal_string \"Must wait longer to use this slot.\"" - } - ], - "id": 41914, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7746:7:100", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 41919, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7746:84:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41920, - "nodeType": "ExpressionStatement", - "src": "7746:84:100" - } - ] - }, - "documentation": { - "id": 41868, - "nodeType": "StructuredDocumentation", - "src": "7321:59:100", - "text": "@notice Checks that the light client delay is adequate." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "requireLightClientDelay", - "nameLocation": "7394:23:100", - "parameters": { - "id": 41873, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41870, - "mutability": "mutable", - "name": "slot", - "nameLocation": "7425:4:100", - "nodeType": "VariableDeclaration", - "scope": 41922, - "src": "7418:11:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 41869, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "7418:6:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41872, - "mutability": "mutable", - "name": "chainId", - "nameLocation": "7438:7:100", - "nodeType": "VariableDeclaration", - "scope": 41922, - "src": "7431:14:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 41871, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "7431:6:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "7417:29:100" - }, - "returnParameters": { - "id": 41874, - "nodeType": "ParameterList", - "parameters": [], - "src": "7461:0:100" - }, - "scope": 42123, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 42013, - "nodeType": "FunctionDefinition", - "src": "8022:878:100", - "nodes": [], - "body": { - "id": 42012, - "nodeType": "Block", - "src": "8156:744:100", - "nodes": [], - "statements": [ - { - "assignments": [ - 41935 - ], - "declarations": [ - { - "constant": false, - "id": 41935, - "mutability": "mutable", - "name": "message", - "nameLocation": "8181:7:100", - "nodeType": "VariableDeclaration", - "scope": 42012, - "src": "8166:22:100", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message" - }, - "typeName": { - "id": 41934, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 41933, - "name": "Message", - "nameLocations": [ - "8166:7:100" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42654, - "src": "8166:7:100" - }, - "referencedDeclaration": 42654, - "src": "8166:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_storage_ptr", - "typeString": "struct Message" - } - }, - "visibility": "internal" - } - ], - "id": 41940, - "initialValue": { - "arguments": [ - { - "id": 41938, - "name": "messageBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41925, - "src": "8214:12:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "id": 41936, - "name": "MessageEncoding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43383, - "src": "8191:15:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MessageEncoding_$43383_$", - "typeString": "type(library MessageEncoding)" - } - }, - "id": 41937, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8207:6:100", - "memberName": "decode", - "nodeType": "MemberAccess", - "referencedDeclaration": 43382, - "src": "8191:22:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Message_$42654_memory_ptr_$", - "typeString": "function (bytes memory) pure returns (struct Message memory)" - } - }, - "id": 41939, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8191:36:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8166:61:100" - }, - { - "assignments": [ - 41942 - ], - "declarations": [ - { - "constant": false, - "id": 41942, - "mutability": "mutable", - "name": "messageRoot", - "nameLocation": "8245:11:100", - "nodeType": "VariableDeclaration", - "scope": 42012, - "src": "8237:19:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41941, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8237:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 41946, - "initialValue": { - "arguments": [ - { - "id": 41944, - "name": "messageBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41925, - "src": "8269:12:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 41943, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "8259:9:100", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 41945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8259:23:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8237:45:100" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_enum$_MessageStatus_$42639", - "typeString": "enum MessageStatus" - }, - "id": 41952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 41947, - "name": "messageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42619, - "src": "8297:13:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42639_$", - "typeString": "mapping(bytes32 => enum MessageStatus)" - } - }, - "id": 41949, - "indexExpression": { - "id": 41948, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41942, - "src": "8311:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8297:26:100", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42639", - "typeString": "enum MessageStatus" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 41950, - "name": "MessageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42639, - "src": "8327:13:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42639_$", - "typeString": "type(enum MessageStatus)" - } - }, - "id": 41951, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "8341:12:100", - "memberName": "NOT_EXECUTED", - "nodeType": "MemberAccess", - "referencedDeclaration": 42636, - "src": "8327:26:100", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42639", - "typeString": "enum MessageStatus" - } - }, - "src": "8297:56:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 41962, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 41958, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41935, - "src": "8425:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41959, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8433:18:100", - "memberName": "destinationChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42649, - "src": "8425:26:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 41960, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "8455:5:100", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 41961, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8461:7:100", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "8455:13:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8425:43:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 41971, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 41968, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41935, - "src": "8527:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41969, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8535:7:100", - "memberName": "version", - "nodeType": "MemberAccess", - "referencedDeclaration": 42641, - "src": "8527:15:100", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 41970, - "name": "version", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42622, - "src": "8546:7:100", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "8527:26:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 41998, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 41988, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "baseExpression": { - "id": 41979, - "name": "lightClients", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42603, - "src": "8635:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", - "typeString": "mapping(uint32 => contract ILightClient)" - } - }, - "id": 41982, - "indexExpression": { - "expression": { - "id": 41980, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41935, - "src": "8648:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41981, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8656:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "8648:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8635:35:100", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - ], - "id": 41978, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8627:7:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 41977, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8627:7:100", - "typeDescriptions": {} - } - }, - "id": 41983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8627:44:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 41986, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8683:1:100", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 41985, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8675:7:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 41984, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8675:7:100", - "typeDescriptions": {} - } - }, - "id": 41987, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8675:10:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "8627:58:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 41997, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 41989, - "name": "broadcasters", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42608, - "src": "8705:12:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", - "typeString": "mapping(uint32 => address)" - } - }, - "id": 41992, - "indexExpression": { - "expression": { - "id": 41990, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41935, - "src": "8718:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 41991, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8726:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "8718:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8705:35:100", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 41995, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8752:1:100", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 41994, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8744:7:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 41993, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8744:7:100", - "typeDescriptions": {} - } - }, - "id": 41996, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8744:10:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "8705:49:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "8627:127:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 42004, - "nodeType": "IfStatement", - "src": "8610:245:100", - "trueBody": { - "id": 42003, - "nodeType": "Block", - "src": "8765:90:100", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "4c6967687420636c69656e74206f722062726f616463617374657220666f7220736f7572636520636861696e206973206e6f7420736574", - "id": 42000, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8786:57:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_cf4337b8a9aeb4dc59df6bfc8659d708bb8a876834333f5d0b08dc1936bd958a", - "typeString": "literal_string \"Light client or broadcaster for source chain is not set\"" - }, - "value": "Light client or broadcaster for source chain is not set" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_cf4337b8a9aeb4dc59df6bfc8659d708bb8a876834333f5d0b08dc1936bd958a", - "typeString": "literal_string \"Light client or broadcaster for source chain is not set\"" - } - ], - "id": 41999, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "8779:6:100", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 42001, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8779:65:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42002, - "nodeType": "ExpressionStatement", - "src": "8779:65:100" - } - ] - } - }, - "id": 42005, - "nodeType": "IfStatement", - "src": "8523:332:100", - "trueBody": { - "id": 41976, - "nodeType": "Block", - "src": "8555:49:100", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "57726f6e672076657273696f6e2e", - "id": 41973, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8576:16:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e7376ceb646972a17b634167aad9262d9eb18b2043d14ff45148f5097f59c6d2", - "typeString": "literal_string \"Wrong version.\"" - }, - "value": "Wrong version." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_e7376ceb646972a17b634167aad9262d9eb18b2043d14ff45148f5097f59c6d2", - "typeString": "literal_string \"Wrong version.\"" - } - ], - "id": 41972, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "8569:6:100", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 41974, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8569:24:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41975, - "nodeType": "ExpressionStatement", - "src": "8569:24:100" - } - ] - } - }, - "id": 42006, - "nodeType": "IfStatement", - "src": "8421:434:100", - "trueBody": { - "id": 41967, - "nodeType": "Block", - "src": "8470:47:100", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "57726f6e6720636861696e2e", - "id": 41964, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8491:14:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_66ec22ebbfc205b68f0b23655aec8985dbbc1966429655365ba1946190b4daec", - "typeString": "literal_string \"Wrong chain.\"" - }, - "value": "Wrong chain." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_66ec22ebbfc205b68f0b23655aec8985dbbc1966429655365ba1946190b4daec", - "typeString": "literal_string \"Wrong chain.\"" - } - ], - "id": 41963, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "8484:6:100", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 41965, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8484:22:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41966, - "nodeType": "ExpressionStatement", - "src": "8484:22:100" - } - ] - } - }, - "id": 42007, - "nodeType": "IfStatement", - "src": "8293:562:100", - "trueBody": { - "id": 41957, - "nodeType": "Block", - "src": "8355:60:100", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "4d65737361676520616c72656164792065786563757465642e", - "id": 41954, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8376:27:100", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_dc22dc9e42feb4de07feeda5b9f039eb60d7aec2ed0bed57ad163f302257f6e7", - "typeString": "literal_string \"Message already executed.\"" - }, - "value": "Message already executed." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_dc22dc9e42feb4de07feeda5b9f039eb60d7aec2ed0bed57ad163f302257f6e7", - "typeString": "literal_string \"Message already executed.\"" - } - ], - "id": 41953, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "8369:6:100", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 41955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8369:35:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 41956, - "nodeType": "ExpressionStatement", - "src": "8369:35:100" - } - ] - } - }, - { - "expression": { - "components": [ - { - "id": 42008, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41935, - "src": "8872:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - { - "id": 42009, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41942, - "src": "8881:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "id": 42010, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8871:22:100", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Message_$42654_memory_ptr_$_t_bytes32_$", - "typeString": "tuple(struct Message memory,bytes32)" - } - }, - "functionReturnParameters": 41932, - "id": 42011, - "nodeType": "Return", - "src": "8864:29:100" - } - ] - }, - "documentation": { - "id": 41923, - "nodeType": "StructuredDocumentation", - "src": "7843:174:100", - "text": "@notice Decodes the message from messageBytes and checks conditions before message execution\n @param messageBytes The message we want to execute provided as bytes." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_checkPreconditions", - "nameLocation": "8031:19:100", - "parameters": { - "id": 41926, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41925, - "mutability": "mutable", - "name": "messageBytes", - "nameLocation": "8066:12:100", - "nodeType": "VariableDeclaration", - "scope": 42013, - "src": "8051:27:100", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 41924, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8051:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "8050:29:100" - }, - "returnParameters": { - "id": 41932, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 41929, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 42013, - "src": "8127:14:100", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message" - }, - "typeName": { - "id": 41928, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 41927, - "name": "Message", - "nameLocations": [ - "8127:7:100" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42654, - "src": "8127:7:100" - }, - "referencedDeclaration": 42654, - "src": "8127:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_storage_ptr", - "typeString": "struct Message" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 41931, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 42013, - "src": "8143:7:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 41930, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8143:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "8126:25:100" - }, - "scope": 42123, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 42122, - "nodeType": "FunctionDefinition", - "src": "9382:1529:100", - "nodes": [], - "body": { - "id": 42121, - "nodeType": "Block", - "src": "9500:1411:100", - "nodes": [], - "statements": [ - { - "assignments": [ - 42025 - ], - "declarations": [ - { - "constant": false, - "id": 42025, - "mutability": "mutable", - "name": "status", - "nameLocation": "9515:6:100", - "nodeType": "VariableDeclaration", - "scope": 42121, - "src": "9510:11:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 42024, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "9510:4:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 42026, - "nodeType": "VariableDeclarationStatement", - "src": "9510:11:100" - }, - { - "assignments": [ - 42028 - ], - "declarations": [ - { - "constant": false, - "id": 42028, - "mutability": "mutable", - "name": "data", - "nameLocation": "9544:4:100", - "nodeType": "VariableDeclaration", - "scope": 42121, - "src": "9531:17:100", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 42027, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "9531:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 42029, - "nodeType": "VariableDeclarationStatement", - "src": "9531:17:100" - }, - { - "id": 42062, - "nodeType": "Block", - "src": "9558:399:100", - "statements": [ - { - "assignments": [ - 42031 - ], - "declarations": [ - { - "constant": false, - "id": 42031, - "mutability": "mutable", - "name": "receiveCall", - "nameLocation": "9585:11:100", - "nodeType": "VariableDeclaration", - "scope": 42062, - "src": "9572:24:100", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 42030, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "9572:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 42044, - "initialValue": { - "arguments": [ - { - "expression": { - "expression": { - "id": 42034, - "name": "ITelepathyHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42764, - "src": "9639:17:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ITelepathyHandler_$42764_$", - "typeString": "type(contract ITelepathyHandler)" - } - }, - "id": 42035, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9657:15:100", - "memberName": "handleTelepathy", - "nodeType": "MemberAccess", - "referencedDeclaration": 42763, - "src": "9639:33:100", - "typeDescriptions": { - "typeIdentifier": "t_function_declaration_nonpayable$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", - "typeString": "function ITelepathyHandler.handleTelepathy(uint32,address,bytes memory) returns (bytes4)" - } - }, - "id": 42036, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9673:8:100", - "memberName": "selector", - "nodeType": "MemberAccess", - "src": "9639:42:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - { - "expression": { - "id": 42037, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42017, - "src": "9699:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 42038, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9707:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "9699:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 42039, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42017, - "src": "9738:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 42040, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9746:13:100", - "memberName": "sourceAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 42647, - "src": "9738:21:100", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "expression": { - "id": 42041, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42017, - "src": "9777:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 42042, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9785:4:100", - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 42653, - "src": "9777:12:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "id": 42032, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "9599:3:100", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 42033, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9603:18:100", - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "src": "9599:22:100", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 42043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9599:204:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9572:231:100" - }, - { - "assignments": [ - 42046 - ], - "declarations": [ - { - "constant": false, - "id": 42046, - "mutability": "mutable", - "name": "destination", - "nameLocation": "9825:11:100", - "nodeType": "VariableDeclaration", - "scope": 42062, - "src": "9817:19:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 42045, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9817:7:100", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 42052, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 42049, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42017, - "src": "9859:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 42050, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9867:18:100", - "memberName": "destinationAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 42651, - "src": "9859:26:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 42047, - "name": "Address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44319, - "src": "9839:7:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Address_$44319_$", - "typeString": "type(library Address)" - } - }, - "id": 42048, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9847:11:100", - "memberName": "fromBytes32", - "nodeType": "MemberAccess", - "referencedDeclaration": 44318, - "src": "9839:19:100", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32) pure returns (address)" - } - }, - "id": 42051, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9839:47:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9817:69:100" - }, - { - "expression": { - "id": 42060, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 42053, - "name": "status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42025, - "src": "9901:6:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 42054, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42028, - "src": "9909:4:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "id": 42055, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "9900:14:100", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 42058, - "name": "receiveCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42031, - "src": "9934:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "id": 42056, - "name": "destination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42046, - "src": "9917:11:100", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 42057, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9929:4:100", - "memberName": "call", - "nodeType": "MemberAccess", - "src": "9917:16:100", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 42059, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9917:29:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "src": "9900:46:100", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42061, - "nodeType": "ExpressionStatement", - "src": "9900:46:100" - } - ] - }, - { - "assignments": [ - 42064 - ], - "declarations": [ - { - "constant": false, - "id": 42064, - "mutability": "mutable", - "name": "implementsHandler", - "nameLocation": "10348:17:100", - "nodeType": "VariableDeclaration", - "scope": 42121, - "src": "10343:22:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 42063, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "10343:4:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 42066, - "initialValue": { - "hexValue": "66616c7365", - "id": 42065, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10368:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "nodeType": "VariableDeclarationStatement", - "src": "10343:30:100" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 42070, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 42067, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42028, - "src": "10387:4:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 42068, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10392:6:100", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "10387:11:100", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "3332", - "id": 42069, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10402:2:100", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "10387:17:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 42090, - "nodeType": "IfStatement", - "src": "10383:176:100", - "trueBody": { - "id": 42089, - "nodeType": "Block", - "src": "10406:153:100", - "statements": [ - { - "assignments": [ - 42072 - ], - "declarations": [ - { - "constant": false, - "id": 42072, - "mutability": "mutable", - "name": "magic", - "nameLocation": "10428:5:100", - "nodeType": "VariableDeclaration", - "scope": 42089, - "src": "10421:12:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 42071, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "10421:6:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "id": 42080, - "initialValue": { - "arguments": [ - { - "id": 42075, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42028, - "src": "10448:4:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "components": [ - { - "id": 42077, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "10455:6:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - }, - "typeName": { - "id": 42076, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "10455:6:100", - "typeDescriptions": {} - } - } - ], - "id": 42078, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "10454:8:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - } - ], - "expression": { - "id": 42073, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "10437:3:100", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 42074, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "10441:6:100", - "memberName": "decode", - "nodeType": "MemberAccess", - "src": "10437:10:100", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 42079, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10437:26:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10420:43:100" - }, - { - "expression": { - "id": 42087, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 42081, - "name": "implementsHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42064, - "src": "10477:17:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 42086, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 42082, - "name": "magic", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42072, - "src": "10497:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "expression": { - "id": 42083, - "name": "ITelepathyHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42764, - "src": "10506:17:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ITelepathyHandler_$42764_$", - "typeString": "type(contract ITelepathyHandler)" - } - }, - "id": 42084, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "10524:15:100", - "memberName": "handleTelepathy", - "nodeType": "MemberAccess", - "referencedDeclaration": 42763, - "src": "10506:33:100", - "typeDescriptions": { - "typeIdentifier": "t_function_declaration_nonpayable$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", - "typeString": "function ITelepathyHandler.handleTelepathy(uint32,address,bytes memory) returns (bytes4)" - } - }, - "id": 42085, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "10540:8:100", - "memberName": "selector", - "nodeType": "MemberAccess", - "src": "10506:42:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "10497:51:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "10477:71:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 42088, - "nodeType": "ExpressionStatement", - "src": "10477:71:100" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 42093, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 42091, - "name": "status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42025, - "src": "10573:6:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "id": 42092, - "name": "implementsHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42064, - "src": "10583:17:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "10573:27:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 42109, - "nodeType": "Block", - "src": "10695:84:100", - "statements": [ - { - "expression": { - "id": 42107, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 42102, - "name": "messageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42619, - "src": "10709:13:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42639_$", - "typeString": "mapping(bytes32 => enum MessageStatus)" - } - }, - "id": 42104, - "indexExpression": { - "id": 42103, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42019, - "src": "10723:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10709:26:100", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42639", - "typeString": "enum MessageStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 42105, - "name": "MessageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42639, - "src": "10738:13:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42639_$", - "typeString": "type(enum MessageStatus)" - } - }, - "id": 42106, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "10752:16:100", - "memberName": "EXECUTION_FAILED", - "nodeType": "MemberAccess", - "referencedDeclaration": 42637, - "src": "10738:30:100", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42639", - "typeString": "enum MessageStatus" - } - }, - "src": "10709:59:100", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42639", - "typeString": "enum MessageStatus" - } - }, - "id": 42108, - "nodeType": "ExpressionStatement", - "src": "10709:59:100" - } - ] - }, - "id": 42110, - "nodeType": "IfStatement", - "src": "10569:210:100", - "trueBody": { - "id": 42101, - "nodeType": "Block", - "src": "10602:87:100", - "statements": [ - { - "expression": { - "id": 42099, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 42094, - "name": "messageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42619, - "src": "10616:13:100", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_MessageStatus_$42639_$", - "typeString": "mapping(bytes32 => enum MessageStatus)" - } - }, - "id": 42096, - "indexExpression": { - "id": 42095, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42019, - "src": "10630:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10616:26:100", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42639", - "typeString": "enum MessageStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 42097, - "name": "MessageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42639, - "src": "10645:13:100", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MessageStatus_$42639_$", - "typeString": "type(enum MessageStatus)" - } - }, - "id": 42098, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "10659:19:100", - "memberName": "EXECUTION_SUCCEEDED", - "nodeType": "MemberAccess", - "referencedDeclaration": 42638, - "src": "10645:33:100", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42639", - "typeString": "enum MessageStatus" - } - }, - "src": "10616:62:100", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MessageStatus_$42639", - "typeString": "enum MessageStatus" - } - }, - "id": 42100, - "nodeType": "ExpressionStatement", - "src": "10616:62:100" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 42112, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42017, - "src": "10823:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 42113, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10831:13:100", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 42645, - "src": "10823:21:100", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 42114, - "name": "message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42017, - "src": "10846:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message memory" - } - }, - "id": 42115, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10854:5:100", - "memberName": "nonce", - "nodeType": "MemberAccess", - "referencedDeclaration": 42643, - "src": "10846:13:100", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 42116, - "name": "messageRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42019, - "src": "10861:11:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 42117, - "name": "messageBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42021, - "src": "10874:12:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "id": 42118, - "name": "status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42025, - "src": "10888:6:100", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 42111, - "name": "ExecutedMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42719, - "src": "10794:15:100", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint64_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", - "typeString": "function (uint32,uint64,bytes32,bytes memory,bool)" - } - }, - "id": 42119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10794:110:100", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42120, - "nodeType": "EmitStatement", - "src": "10789:115:100" - } - ] - }, - "documentation": { - "id": 42014, - "nodeType": "StructuredDocumentation", - "src": "8906:471:100", - "text": "@notice Executes a message and updates storage with status and emits an event.\n @dev Assumes that the message is valid and has not been already executed.\n @dev Assumes that message, messageRoot and messageBytes have already been validated.\n @param message The message we want to execute.\n @param messageRoot The message root of the message.\n @param messageBytes The message we want to execute provided as bytes for use in the event." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_executeMessage", - "nameLocation": "9391:15:100", - "parameters": { - "id": 42022, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 42017, - "mutability": "mutable", - "name": "message", - "nameLocation": "9422:7:100", - "nodeType": "VariableDeclaration", - "scope": 42122, - "src": "9407:22:100", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_memory_ptr", - "typeString": "struct Message" - }, - "typeName": { - "id": 42016, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 42015, - "name": "Message", - "nameLocations": [ - "9407:7:100" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42654, - "src": "9407:7:100" - }, - "referencedDeclaration": 42654, - "src": "9407:7:100", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$42654_storage_ptr", - "typeString": "struct Message" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 42019, - "mutability": "mutable", - "name": "messageRoot", - "nameLocation": "9439:11:100", - "nodeType": "VariableDeclaration", - "scope": 42122, - "src": "9431:19:100", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 42018, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9431:7:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 42021, - "mutability": "mutable", - "name": "messageBytes", - "nameLocation": "9465:12:100", - "nodeType": "VariableDeclaration", - "scope": 42122, - "src": "9452:25:100", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 42020, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "9452:5:100", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "9406:72:100" - }, - "returnParameters": { - "id": 42023, - "nodeType": "ParameterList", - "parameters": [], - "src": "9500:0:100" - }, - "scope": 42123, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 41501, - "name": "TelepathyStorage", - "nameLocations": [ - "770:16:100" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42633, - "src": "770:16:100" - }, - "id": 41502, - "nodeType": "InheritanceSpecifier", - "src": "770:16:100" - }, - { - "baseName": { - "id": 41503, - "name": "ReentrancyGuardUpgradeable", - "nameLocations": [ - "788:26:100" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 29613, - "src": "788:26:100" - }, - "id": 41504, - "nodeType": "InheritanceSpecifier", - "src": "788:26:100" - }, - { - "baseName": { - "id": 41505, - "name": "ITelepathyReceiver", - "nameLocations": [ - "816:18:100" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42752, - "src": "816:18:100" - }, - "id": 41506, - "nodeType": "InheritanceSpecifier", - "src": "816:18:100" - } - ], - "canonicalName": "TargetAMB", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 41500, - "nodeType": "StructuredDocumentation", - "src": "596:152:100", - "text": "@title Target Arbitrary Message Bridge\n @author Succinct Labs\n @notice Executes messages sent from the source chain on the destination chain." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 42123, - 42752, - 29613, - 29404, - 42633 - ], - "name": "TargetAMB", - "nameLocation": "757:9:100", - "scope": 42124, - "usedErrors": [] - } - ] - }, - "id": 100 -} \ No newline at end of file diff --git a/out/TelepathyPubSub.sol/TelepathyPubSub.json b/out/TelepathyPubSub.sol/TelepathyPubSub.json deleted file mode 100644 index f144d76..0000000 --- a/out/TelepathyPubSub.sol/TelepathyPubSub.json +++ /dev/null @@ -1,1540 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_telepathyRouter", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "startSlot", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "endSlot", - "type": "uint64" - } - ], - "name": "InvalidSlotRange", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - } - ], - "name": "SubscriptionAlreadyActive", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - } - ], - "name": "SubscriptionNotActive", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "indexed": true, - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "name": "Publish", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "startSlot", - "type": "uint64" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "endSlot", - "type": "uint64" - }, - { - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ], - "indexed": false, - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple" - } - ], - "name": "Subscribe", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ], - "indexed": false, - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple" - } - ], - "name": "Unsubscribe", - "type": "event" - }, - { - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "eventsPublished", - "outputs": [ - { - "internalType": "enum PublishStatus", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "srcSlotTxSlotPack", - "type": "bytes" - }, - { - "internalType": "bytes32[]", - "name": "receiptsRootProof", - "type": "bytes32[]" - }, - { - "internalType": "bytes32", - "name": "receiptsRoot", - "type": "bytes32" - }, - { - "internalType": "bytes[]", - "name": "receiptProof", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "txIndexRLPEncoded", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "logIndex", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ], - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple" - } - ], - "name": "publishEvent", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_eventSig", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "_startSlot", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "_endSlot", - "type": "uint64" - } - ], - "name": "subscribe", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "subscriptions", - "outputs": [ - { - "internalType": "enum SubscriptionStatus", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_eventSig", - "type": "bytes32" - } - ], - "name": "unsubscribe", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x60806040523480156200001157600080fd5b5060405162003b1638038062003b1683398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b613a7a806200009c6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a6100753660046130cf565b60016020526000908152604090205460ff1681565b60405161009791906130fe565b60405180910390f35b6100b36100ae366004613158565b610133565b604051908152602001610097565b6100e46100cf3660046130cf565b60026020526000908152604090205460ff1681565b60405161009791906131c9565b6100b36100ff3660046131dd565b61029a565b610117610112366004613375565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b031681526020018681525090506000816040516020016101849190613457565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c36130e8565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb73856040516102869190613457565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb9190613457565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff166001811115610329576103296130e8565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c890610391908590613457565b60405180910390a29150505b9392505050565b6103b96103b46020830183613499565b6106fe565b6103ce6103c96020830183613499565b6108e4565b6000816040516020016103e191906134b4565b60405160208183030381529060405280519060200120905060008b8b86868560405160200161041495949392919061355d565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff166002811115610452576104526130e8565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f6135b0565b90925090506104c9826104c46020880188613499565b610999565b600080546001600160a01b0316637599735c6104e86020890189613499565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e91906135e3565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613600565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b60006106598c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061065460208e018e613499565b610d57565b9050806106a85760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106d86106b88d8f613619565b8f8d8d8d60200160208101906106ce919061369c565b8e60600135610f61565b915091506106ea888a898886866112ac565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561074d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077191906135e3565b6001600160a01b0316036107c25760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083491906135e3565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089591906136b9565b6108e15760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095691906136b9565b156108e15760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c91906135e3565b6001600160a01b031603610a5d5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf91906135e3565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190613600565b600003610b915760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0491906135e3565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c779190613600565b610c8190426136f1565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190613600565b811015610d525760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b600080610d63836114a1565b9050600081856001600160401b031610610d7e57601b610d81565b60075b60ff169050600082866001600160401b031610610dbd57612000610dae846001600160401b0389166136f1565b610db8919061371a565b610dd2565b610dd26120006001600160401b03881661371a565b90506000866001600160401b0316886001600160401b031603610e115750600b610dfe8161020061372e565b610e0a9061018361374d565b9050610f46565b612000610e1e888a613760565b6001600160401b031611610e805750600b610e3a81602061372e565b610e4590600661374d565b9050610e5c6120006001600160401b038916613780565b610e686120008361372e565b610e72919061374d565b9050610dfe8161020061372e565b876001600160401b0316876001600160401b03161015610efe5750600b82610ea982602061372e565b610eb3919061374d565b9050610ec081600261372e565b610ecb90600061374d565b905081610edc63010000008361372e565b610ee6919061374d565b9050610ef381600261372e565b610e4590600161374d565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101e0565b610f528b828c8c6114e1565b9b9a5050505050505050505050565b6060806000610f71878a8a6114fb565b9050600081600081518110610f8857610f88613794565b01602001516001600160f81b03191690506000600160f81b821480610fba5750600160f91b6001600160f81b03198316145b15610fc75750600161102c565b600360fe1b6001600160f81b0319831610610fe45750600061102c565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b60006020840190506000604051806040016040528084875161104e91906136f1565b815260200161105d858561374d565b90529050600061106c82611d8e565b905080516004146110b85760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b60006110dd826003815181106110d0576110d0613794565b6020026020010151611d8e565b905080518c1061112f5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b6000611146828e815181106110d0576110d0613794565b9050600061116d8260008151811061116057611160613794565b6020026020010151611fb3565b90508c6001600160a01b0316816001600160a01b0316146111e15760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b60006112016111fc846001815181106110d0576110d0613794565b612027565b90508c8160008151811061121757611217613794565b60200260200101511461126c5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b60006112918460028151811061128457611284613794565b60200260200101516120d7565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b896112c760208b018b613499565b6112d760408c0160208d0161369c565b8989896040516024016112ef969594939291906137aa565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506113339060608a01908a0161369c565b6001600160a01b03168160405161134a919061382a565b6000604051808303816000865af19150503d8060008114611387576040519150601f19603f3d011682016040523d82523d6000602084013e61138c565b606091505b5080519194509250600091506020036113cc576000828060200190518101906113b59190613846565b6001600160e01b031916635160951d60e11b149150505b8280156113d65750805b156113f9576000878152600160205260409020805460ff19166002179055611416565b6000878152600160208190526040909120805460ff191690911790555b6114266040890160208a0161369c565b6001600160a01b031661143c60208a018a613499565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61147460608d0160408e0161369c565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b60008163ffffffff166001036114bb5750625ec000919050565b8163ffffffff166005036114d35750624f4000919050565b50600019919050565b919050565b6000806114ef868686612203565b90921495945050505050565b606060008451116115465760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b60006115518461239b565b9050600061155e86612489565b905060008460405160200161157591815260200190565b60405160208183030381529060405290506000805b8451811015611d375760008582815181106115a7576115a7613794565b6020026020010151905084518311156116195760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b826000036116b857805180516020918201206040516116679261164192910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116b35760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6117ae565b80515160201161173e57805180516020918201206040516116e29261164192910190815260200190565b6116b35760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146117ae5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b6117ba6010600161374d565b8160200151510361195a57845183036118f25760006117e9826020015160108151811061128457611284613794565b905060008151116118625760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b6001875161187091906136f1565b83146118e45760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b600085848151811061190657611906613794565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061193157611931613794565b60200260200101519050611944816125a3565b955061195160018661374d565b94505050611d24565b600281602001515103611ccb576000611972826125c8565b905060008160008151811061198957611989613794565b016020015160f81c905060006119a0600283613870565b6119ab906002613892565b905060006119bc848360ff166125ec565b905060006119ca8a896125ec565b905060006119d88383612622565b905080835114611a505760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff851660021480611a65575060ff85166003145b15611c0b5780825114611ae05760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611afc886020015160018151811061128457611284613794565b90506000815111611b755760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611b8391906136f1565b8914611bf75760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611c1e575060ff85166001145b15611c5d57611c4a8760200151600181518110611c3d57611c3d613794565b60200260200101516125a3565b9950611c56818a61374d565b9850611cc0565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611d24565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611d2f816138ab565b91505061158a565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611d9e856126a1565b919450925090506001816001811115611db957611db96130e8565b14611e2c5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611e38838561374d565b14611ea05760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611eb95790505090506000845b8751811015611fa757600080611f2c6040518060400160405280858d60000151611f1091906136f1565b8152602001858d60200151611f25919061374d565b90526126a1565b509150915060405180604001604052808383611f48919061374d565b8152602001848c60200151611f5d919061374d565b815250858581518110611f7257611f72613794565b6020908102919091010152611f8860018561374d565b9350611f94818361374d565b611f9e908461374d565b92505050611ee6565b50815295945050505050565b8051600090600103611fc757506000919050565b81516015146120185760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b61202182612d64565b92915050565b6060600082516001600160401b03811115612044576120446132a8565b60405190808252806020026020018201604052801561206d578160200160208202803683370190505b50905060005b83518110156120d05761209e84828151811061209157612091613794565b6020026020010151612d64565b60001b8282815181106120b3576120b3613794565b6020908102919091010152806120c8816138ab565b915050612073565b5092915050565b606060008060006120e7856126a1565b919450925090506000816001811115612102576121026130e8565b146121755760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b61217f828461374d565b8551146121eb5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b6121fa85602001518484612d6f565b95945050505050565b60008282516001612214919061374d565b61221f9060026139a8565b1161222957600080fd5b8360005b8460011461239257612240600286613780565b6001036122df57600284828151811061225b5761225b613794565b60200260200101518360405160200161227e929190918252602082015260400190565b60408051601f19818403018152908290526122989161382a565b602060405180830381855afa1580156122b5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122d89190613600565b9150612373565b6002828583815181106122f4576122f4613794565b6020026020010151604051602001612316929190918252602082015260400190565b60408051601f19818403018152908290526123309161382a565b602060405180830381855afa15801561234d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906123709190613600565b91505b61237e60028661371a565b94508061238a816138ab565b91505061222d565b50949350505050565b80516060906000816001600160401b038111156123ba576123ba6132a8565b6040519080825280602002602001820160405280156123ff57816020015b60408051808201909152606080825260208201528152602001906001900390816123d85790505b50905060005b8281101561248157604051806040016040528086838151811061242a5761242a613794565b6020026020010151815260200161245987848151811061244c5761244c613794565b6020026020010151612e0f565b81525082828151811061246e5761246e613794565b6020908102919091010152600101612405565b509392505050565b8051606090600061249b82600261372e565b6001600160401b038111156124b2576124b26132a8565b6040519080825280601f01601f1916602001820160405280156124dc576020820181803683370190505b5090506000805b83811015612599578581815181106124fd576124fd613794565b6020910101516001600160f81b03198116925060041c60ff60f41b168361252583600261372e565b8151811061253557612535613794565b60200101906001600160f81b031916908160001a905350600f60f81b82168361255f83600261372e565b61256a90600161374d565b8151811061257a5761257a613794565b60200101906001600160f81b031916908160001a9053506001016124e3565b5090949350505050565b606060208260000151106125bf576125ba826120d7565b612021565b61202182612e22565b60606120216125e7836020015160008151811061128457611284613794565b612489565b60608251821061260b5750604080516020810190915260008152612021565b61039d838384865161261d91906136f1565b612e38565b6000806000835185511061263757835161263a565b84515b90505b8082108015612691575083828151811061265957612659613794565b602001015160f81c60f81b6001600160f81b03191685838151811061268057612680613794565b01602001516001600160f81b031916145b156124815781600101915061263d565b6000806000808460000151116126c95760405162461bcd60e51b81526004016101e0906139b4565b6020840151805160001a607f81116126ee576000600160009450945094505050612d5d565b60b7811161284b5760006127036080836136f1565b9050808760000151116127835760405162461bcd60e51b815260206004820152604e6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127b05750600160ff1b6001600160f81b0319821610155b6128385760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612d5d915050565b60bf8111612a8c57600061286060b7836136f1565b9050808760000151116128e35760405162461bcd60e51b81526020600482015260516024820152600080516020613a2583398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b031916600081900361296a5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c603781116129ed5760405162461bcd60e51b81526020600482015260486024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b6129f7818461374d565b895111612a6f5760405162461bcd60e51b815260206004820152604c6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b612a7a83600161374d565b9750955060009450612d5d9350505050565b60f78111612b2e576000612aa160c0836136f1565b905080876000015111612b1d5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612d5d915050565b6000612b3b60f7836136f1565b905080876000015111612bba5760405162461bcd60e51b815260206004820152604d6024820152600080516020613a2583398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612c3f5760405162461bcd60e51b81526020600482015260486024820152600080516020613a2583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612cc05760405162461bcd60e51b81526020600482015260466024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612cca818461374d565b895111612d405760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612d4b83600161374d565b9750955060019450612d5d9350505050565b9193909250565b600061202182612f79565b60606000826001600160401b03811115612d8b57612d8b6132a8565b6040519080825280601f01601f191660200182016040528015612db5576020820181803683370190505b50905082600003612dc757905061039d565b6000612dd3858761374d565b90506020820160005b85811015612df4578281015182820152602001612ddc565b85811115612e03576000868301525b50919695505050505050565b6060612021612e1d8361307c565b611d8e565b6060612021826020015160008460000151612d6f565b60608182601f011015612e7e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612ec15760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612f085760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612f275760405191506000825260208201604052612392565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612f60578051835260209283019201612f48565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612fd05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000612fde856126a1565b919450925090506000816001811115612ff957612ff96130e8565b146130465760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000838660200151613058919061374d565b805190915060208410156130725760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130b15760405162461bcd60e51b81526004016101e0906139b4565b50604080518082019091528151815260209182019181019190915290565b6000602082840312156130e157600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310613112576131126130e8565b91905290565b803563ffffffff811681146114dc57600080fd5b6001600160a01b03811681146108e157600080fd5b80356001600160401b03811681146114dc57600080fd5b60008060008060008060c0878903121561317157600080fd5b61317a87613118565b9550602087013561318a8161312c565b9450604087013561319a8161312c565b9350606087013592506131af60808801613141565b91506131bd60a08801613141565b90509295509295509295565b6020810160028310613112576131126130e8565b6000806000606084860312156131f257600080fd5b6131fb84613118565b9250602084013561320b8161312c565b929592945050506040919091013590565b60008083601f84011261322e57600080fd5b5081356001600160401b0381111561324557600080fd5b60208301915083602082850101111561325d57600080fd5b9250929050565b60008083601f84011261327657600080fd5b5081356001600160401b0381111561328d57600080fd5b6020830191508360208260051b850101111561325d57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156132e6576132e66132a8565b604052919050565b600082601f8301126132ff57600080fd5b81356001600160401b03811115613318576133186132a8565b61332b601f8201601f19166020016132be565b81815284602083860101111561334057600080fd5b816020850160208301376000918101602001919091529392505050565b60006080828403121561336f57600080fd5b50919050565b6000806000806000806000806000806101408b8d03121561339557600080fd5b8a356001600160401b03808211156133ac57600080fd5b6133b88e838f0161321c565b909c509a5060208d01359150808211156133d157600080fd5b6133dd8e838f01613264565b909a50985060408d0135975060608d01359150808211156133fd57600080fd5b6134098e838f01613264565b909750955060808d013591508082111561342257600080fd5b5061342f8d828e016132ee565b93505060a08b013591506134468c60c08d0161335d565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b6000602082840312156134ab57600080fd5b61039d82613118565b6080810163ffffffff6134c684613118565b16825260208301356134d78161312c565b6001600160a01b0390811660208401526040840135906134f68261312c565b166040830152606092830135929091019190915290565b60005b83811015613528578181015183820152602001613510565b50506000910152565b6000815180845261354981602086016020860161350d565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a083820301602084015261359b60a0820187613531565b60408401959095525050606001529392505050565b600080604083850312156135c357600080fd5b6135cc83613141565b91506135da60208401613141565b90509250929050565b6000602082840312156135f557600080fd5b815161039d8161312c565b60006020828403121561361257600080fd5b5051919050565b60006001600160401b0380841115613633576136336132a8565b8360051b60206136448183016132be565b86815291850191818101903684111561365c57600080fd5b865b84811015613690578035868111156136765760008081fd5b61368236828b016132ee565b84525091830191830161365e565b50979650505050505050565b6000602082840312156136ae57600080fd5b813561039d8161312c565b6000602082840312156136cb57600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612021576120216136db565b634e487b7160e01b600052601260045260246000fd5b60008261372957613729613704565b500490565b6000816000190483118215151615613748576137486136db565b500290565b80820180821115612021576120216136db565b6001600160401b038281168282160390808211156120d0576120d06136db565b60008261378f5761378f613704565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b81811015613816578451835293830193918301916001016137fa565b505084810360a0860152610f528187613531565b6000825161383c81846020870161350d565b9190910192915050565b60006020828403121561385857600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff83168061388357613883613704565b8060ff84160691505092915050565b60ff8281168282160390811115612021576120216136db565b6000600182016138bd576138bd6136db565b5060010190565b600181815b808511156138ff5781600019048211156138e5576138e56136db565b808516156138f257918102915b93841c93908002906138c9565b509250929050565b60008261391657506001612021565b8161392357506000612021565b816001811461393957600281146139435761395f565b6001915050612021565b60ff841115613954576139546136db565b50506001821b612021565b5060208310610133831016604e8410600b8410161715613982575081810a612021565b61398c83836138c4565b80600019048211156139a0576139a06136db565b029392505050565b600061039d8383613907565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212207d38ec67345e6bd95cda9dcd48b432f06d282b10b764f6f5e44c193a3c2daee364736f6c63430008100033", - "sourceMap": "843:386:123:-:0;;;957:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1005:15;:51;;-1:-1:-1;;;;;;1005:51:123;-1:-1:-1;;;;;1005:51:123;;;;;;;;;;843:386;;14:290:146;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:146;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:146:o;:::-;843:386:123;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80633cca331c1461006757806365138959146100a057806394259c6c146100c157806397229719146100f1578063bbe6d64214610104578063ffa1ad7414610119575b600080fd5b61008a6100753660046130cf565b60016020526000908152604090205460ff1681565b60405161009791906130fe565b60405180910390f35b6100b36100ae366004613158565b610133565b604051908152602001610097565b6100e46100cf3660046130cf565b60026020526000908152604090205460ff1681565b60405161009791906131c9565b6100b36100ff3660046131dd565b61029a565b610117610112366004613375565b6103a4565b005b610121600181565b60405160ff9091168152602001610097565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b031681526020018681525090506000816040516020016101849190613457565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff1660018111156101c3576101c36130e8565b036101e957604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff191660011790556001600160401b03808616908516101561024257604051633c04832160e21b81526001600160401b038087166004830152851660248201526044016101e0565b836001600160401b0316856001600160401b0316827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb73856040516102869190613457565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102eb9190613457565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff166001811115610329576103296130e8565b036103495760405162191d2960e11b8152600481018290526024016101e0565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c890610391908590613457565b60405180910390a29150505b9392505050565b6103b96103b46020830183613499565b6106fe565b6103ce6103c96020830183613499565b6108e4565b6000816040516020016103e191906134b4565b60405160208183030381529060405280519060200120905060008b8b86868560405160200161041495949392919061355d565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff166002811115610452576104526130e8565b1461049f5760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064016101e0565b6000806104ae8d8f018f6135b0565b90925090506104c9826104c46020880188613499565b610999565b600080546001600160a01b0316637599735c6104e86020890189613499565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e91906135e3565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa15801561059d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c19190613600565b9050806106085760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101e0565b60006106598c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061065460208e018e613499565b610d57565b9050806106a85760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101e0565b6000806106d86106b88d8f613619565b8f8d8d8d60200160208101906106ce919061369c565b8e60600135610f61565b915091506106ea888a898886866112ac565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561074d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077191906135e3565b6001600160a01b0316036107c25760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083491906135e3565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089591906136b9565b6108e15760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101e0565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095691906136b9565b156108e15760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c91906135e3565b6001600160a01b031603610a5d5760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101e0565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf91906135e3565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190613600565b600003610b915760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101e0565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0491906135e3565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c779190613600565b610c8190426136f1565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190613600565b811015610d525760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101e0565b505050565b600080610d63836114a1565b9050600081856001600160401b031610610d7e57601b610d81565b60075b60ff169050600082866001600160401b031610610dbd57612000610dae846001600160401b0389166136f1565b610db8919061371a565b610dd2565b610dd26120006001600160401b03881661371a565b90506000866001600160401b0316886001600160401b031603610e115750600b610dfe8161020061372e565b610e0a9061018361374d565b9050610f46565b612000610e1e888a613760565b6001600160401b031611610e805750600b610e3a81602061372e565b610e4590600661374d565b9050610e5c6120006001600160401b038916613780565b610e686120008361372e565b610e72919061374d565b9050610dfe8161020061372e565b876001600160401b0316876001600160401b03161015610efe5750600b82610ea982602061372e565b610eb3919061374d565b9050610ec081600261372e565b610ecb90600061374d565b905081610edc63010000008361372e565b610ee6919061374d565b9050610ef381600261372e565b610e4590600161374d565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101e0565b610f528b828c8c6114e1565b9b9a5050505050505050505050565b6060806000610f71878a8a6114fb565b9050600081600081518110610f8857610f88613794565b01602001516001600160f81b03191690506000600160f81b821480610fba5750600160f91b6001600160f81b03198316145b15610fc75750600161102c565b600360fe1b6001600160f81b0319831610610fe45750600061102c565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101e0565b60006020840190506000604051806040016040528084875161104e91906136f1565b815260200161105d858561374d565b90529050600061106c82611d8e565b905080516004146110b85760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101e0565b60006110dd826003815181106110d0576110d0613794565b6020026020010151611d8e565b905080518c1061112f5760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101e0565b6000611146828e815181106110d0576110d0613794565b9050600061116d8260008151811061116057611160613794565b6020026020010151611fb3565b90508c6001600160a01b0316816001600160a01b0316146111e15760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101e0565b60006112016111fc846001815181106110d0576110d0613794565b612027565b90508c8160008151811061121757611217613794565b60200260200101511461126c5760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101e0565b60006112918460028151811061128457611284613794565b60200260200101516120d7565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b896112c760208b018b613499565b6112d760408c0160208d0161369c565b8989896040516024016112ef969594939291906137aa565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506113339060608a01908a0161369c565b6001600160a01b03168160405161134a919061382a565b6000604051808303816000865af19150503d8060008114611387576040519150601f19603f3d011682016040523d82523d6000602084013e61138c565b606091505b5080519194509250600091506020036113cc576000828060200190518101906113b59190613846565b6001600160e01b031916635160951d60e11b149150505b8280156113d65750805b156113f9576000878152600160205260409020805460ff19166002179055611416565b6000878152600160208190526040909120805460ff191690911790555b6114266040890160208a0161369c565b6001600160a01b031661143c60208a018a613499565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61147460608d0160408e0161369c565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b60008163ffffffff166001036114bb5750625ec000919050565b8163ffffffff166005036114d35750624f4000919050565b50600019919050565b919050565b6000806114ef868686612203565b90921495945050505050565b606060008451116115465760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101e0565b60006115518461239b565b9050600061155e86612489565b905060008460405160200161157591815260200190565b60405160208183030381529060405290506000805b8451811015611d375760008582815181106115a7576115a7613794565b6020026020010151905084518311156116195760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101e0565b826000036116b857805180516020918201206040516116679261164192910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6116b35760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e0565b6117ae565b80515160201161173e57805180516020918201206040516116e29261164192910190815260200190565b6116b35760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101e0565b8051845160208087019190912082519190920120146117ae5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101e0565b6117ba6010600161374d565b8160200151510361195a57845183036118f25760006117e9826020015160108151811061128457611284613794565b905060008151116118625760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e0565b6001875161187091906136f1565b83146118e45760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e0565b965061039d95505050505050565b600085848151811061190657611906613794565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061193157611931613794565b60200260200101519050611944816125a3565b955061195160018661374d565b94505050611d24565b600281602001515103611ccb576000611972826125c8565b905060008160008151811061198957611989613794565b016020015160f81c905060006119a0600283613870565b6119ab906002613892565b905060006119bc848360ff166125ec565b905060006119ca8a896125ec565b905060006119d88383612622565b905080835114611a505760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e0565b60ff851660021480611a65575060ff85166003145b15611c0b5780825114611ae05760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e0565b6000611afc886020015160018151811061128457611284613794565b90506000815111611b755760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e0565b60018d51611b8391906136f1565b8914611bf75760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e0565b9c5061039d9b505050505050505050505050565b60ff85161580611c1e575060ff85166001145b15611c5d57611c4a8760200151600181518110611c3d57611c3d613794565b60200260200101516125a3565b9950611c56818a61374d565b9850611cc0565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101e0565b505050505050611d24565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101e0565b5080611d2f816138ab565b91505061158a565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101e0565b60606000806000611d9e856126a1565b919450925090506001816001811115611db957611db96130e8565b14611e2c5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101e0565b8451611e38838561374d565b14611ea05760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101e0565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611eb95790505090506000845b8751811015611fa757600080611f2c6040518060400160405280858d60000151611f1091906136f1565b8152602001858d60200151611f25919061374d565b90526126a1565b509150915060405180604001604052808383611f48919061374d565b8152602001848c60200151611f5d919061374d565b815250858581518110611f7257611f72613794565b6020908102919091010152611f8860018561374d565b9350611f94818361374d565b611f9e908461374d565b92505050611ee6565b50815295945050505050565b8051600090600103611fc757506000919050565b81516015146120185760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101e0565b61202182612d64565b92915050565b6060600082516001600160401b03811115612044576120446132a8565b60405190808252806020026020018201604052801561206d578160200160208202803683370190505b50905060005b83518110156120d05761209e84828151811061209157612091613794565b6020026020010151612d64565b60001b8282815181106120b3576120b3613794565b6020908102919091010152806120c8816138ab565b915050612073565b5092915050565b606060008060006120e7856126a1565b919450925090506000816001811115612102576121026130e8565b146121755760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e0565b61217f828461374d565b8551146121eb5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101e0565b6121fa85602001518484612d6f565b95945050505050565b60008282516001612214919061374d565b61221f9060026139a8565b1161222957600080fd5b8360005b8460011461239257612240600286613780565b6001036122df57600284828151811061225b5761225b613794565b60200260200101518360405160200161227e929190918252602082015260400190565b60408051601f19818403018152908290526122989161382a565b602060405180830381855afa1580156122b5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906122d89190613600565b9150612373565b6002828583815181106122f4576122f4613794565b6020026020010151604051602001612316929190918252602082015260400190565b60408051601f19818403018152908290526123309161382a565b602060405180830381855afa15801561234d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906123709190613600565b91505b61237e60028661371a565b94508061238a816138ab565b91505061222d565b50949350505050565b80516060906000816001600160401b038111156123ba576123ba6132a8565b6040519080825280602002602001820160405280156123ff57816020015b60408051808201909152606080825260208201528152602001906001900390816123d85790505b50905060005b8281101561248157604051806040016040528086838151811061242a5761242a613794565b6020026020010151815260200161245987848151811061244c5761244c613794565b6020026020010151612e0f565b81525082828151811061246e5761246e613794565b6020908102919091010152600101612405565b509392505050565b8051606090600061249b82600261372e565b6001600160401b038111156124b2576124b26132a8565b6040519080825280601f01601f1916602001820160405280156124dc576020820181803683370190505b5090506000805b83811015612599578581815181106124fd576124fd613794565b6020910101516001600160f81b03198116925060041c60ff60f41b168361252583600261372e565b8151811061253557612535613794565b60200101906001600160f81b031916908160001a905350600f60f81b82168361255f83600261372e565b61256a90600161374d565b8151811061257a5761257a613794565b60200101906001600160f81b031916908160001a9053506001016124e3565b5090949350505050565b606060208260000151106125bf576125ba826120d7565b612021565b61202182612e22565b60606120216125e7836020015160008151811061128457611284613794565b612489565b60608251821061260b5750604080516020810190915260008152612021565b61039d838384865161261d91906136f1565b612e38565b6000806000835185511061263757835161263a565b84515b90505b8082108015612691575083828151811061265957612659613794565b602001015160f81c60f81b6001600160f81b03191685838151811061268057612680613794565b01602001516001600160f81b031916145b156124815781600101915061263d565b6000806000808460000151116126c95760405162461bcd60e51b81526004016101e0906139b4565b6020840151805160001a607f81116126ee576000600160009450945094505050612d5d565b60b7811161284b5760006127036080836136f1565b9050808760000151116127835760405162461bcd60e51b815260206004820152604e6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101e0565b6001838101516001600160f81b03191690821415806127b05750600160ff1b6001600160f81b0319821610155b6128385760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101e0565b5060019550935060009250612d5d915050565b60bf8111612a8c57600061286060b7836136f1565b9050808760000151116128e35760405162461bcd60e51b81526020600482015260516024820152600080516020613a2583398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101e0565b60018301516001600160f81b031916600081900361296a5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101e0565b600184015160088302610100031c603781116129ed5760405162461bcd60e51b81526020600482015260486024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101e0565b6129f7818461374d565b895111612a6f5760405162461bcd60e51b815260206004820152604c6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101e0565b612a7a83600161374d565b9750955060009450612d5d9350505050565b60f78111612b2e576000612aa160c0836136f1565b905080876000015111612b1d5760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101e0565b600195509350849250612d5d915050565b6000612b3b60f7836136f1565b905080876000015111612bba5760405162461bcd60e51b815260206004820152604d6024820152600080516020613a2583398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101e0565b60018301516001600160f81b0319166000819003612c3f5760405162461bcd60e51b81526020600482015260486024820152600080516020613a2583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101e0565b600184015160088302610100031c60378111612cc05760405162461bcd60e51b81526020600482015260466024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101e0565b612cca818461374d565b895111612d405760405162461bcd60e51b815260206004820152604a6024820152600080516020613a2583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101e0565b612d4b83600161374d565b9750955060019450612d5d9350505050565b9193909250565b600061202182612f79565b60606000826001600160401b03811115612d8b57612d8b6132a8565b6040519080825280601f01601f191660200182016040528015612db5576020820181803683370190505b50905082600003612dc757905061039d565b6000612dd3858761374d565b90506020820160005b85811015612df4578281015182820152602001612ddc565b85811115612e03576000868301525b50919695505050505050565b6060612021612e1d8361307c565b611d8e565b6060612021826020015160008460000151612d6f565b60608182601f011015612e7e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b828284011015612ec15760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101e0565b81830184511015612f085760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101e0565b606082158015612f275760405191506000825260208201604052612392565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612f60578051835260209283019201612f48565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612fd05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000806000612fde856126a1565b919450925090506000816001811115612ff957612ff96130e8565b146130465760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101e0565b6000838660200151613058919061374d565b805190915060208410156130725760208490036101000a90045b9695505050505050565b604080518082019091526000808252602082015260008251116130b15760405162461bcd60e51b81526004016101e0906139b4565b50604080518082019091528151815260209182019181019190915290565b6000602082840312156130e157600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310613112576131126130e8565b91905290565b803563ffffffff811681146114dc57600080fd5b6001600160a01b03811681146108e157600080fd5b80356001600160401b03811681146114dc57600080fd5b60008060008060008060c0878903121561317157600080fd5b61317a87613118565b9550602087013561318a8161312c565b9450604087013561319a8161312c565b9350606087013592506131af60808801613141565b91506131bd60a08801613141565b90509295509295509295565b6020810160028310613112576131126130e8565b6000806000606084860312156131f257600080fd5b6131fb84613118565b9250602084013561320b8161312c565b929592945050506040919091013590565b60008083601f84011261322e57600080fd5b5081356001600160401b0381111561324557600080fd5b60208301915083602082850101111561325d57600080fd5b9250929050565b60008083601f84011261327657600080fd5b5081356001600160401b0381111561328d57600080fd5b6020830191508360208260051b850101111561325d57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156132e6576132e66132a8565b604052919050565b600082601f8301126132ff57600080fd5b81356001600160401b03811115613318576133186132a8565b61332b601f8201601f19166020016132be565b81815284602083860101111561334057600080fd5b816020850160208301376000918101602001919091529392505050565b60006080828403121561336f57600080fd5b50919050565b6000806000806000806000806000806101408b8d03121561339557600080fd5b8a356001600160401b03808211156133ac57600080fd5b6133b88e838f0161321c565b909c509a5060208d01359150808211156133d157600080fd5b6133dd8e838f01613264565b909a50985060408d0135975060608d01359150808211156133fd57600080fd5b6134098e838f01613264565b909750955060808d013591508082111561342257600080fd5b5061342f8d828e016132ee565b93505060a08b013591506134468c60c08d0161335d565b90509295989b9194979a5092959850565b815163ffffffff1681526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b6000602082840312156134ab57600080fd5b61039d82613118565b6080810163ffffffff6134c684613118565b16825260208301356134d78161312c565b6001600160a01b0390811660208401526040840135906134f68261312c565b166040830152606092830135929091019190915290565b60005b83811015613528578181015183820152602001613510565b50506000910152565b6000815180845261354981602086016020860161350d565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a083820301602084015261359b60a0820187613531565b60408401959095525050606001529392505050565b600080604083850312156135c357600080fd5b6135cc83613141565b91506135da60208401613141565b90509250929050565b6000602082840312156135f557600080fd5b815161039d8161312c565b60006020828403121561361257600080fd5b5051919050565b60006001600160401b0380841115613633576136336132a8565b8360051b60206136448183016132be565b86815291850191818101903684111561365c57600080fd5b865b84811015613690578035868111156136765760008081fd5b61368236828b016132ee565b84525091830191830161365e565b50979650505050505050565b6000602082840312156136ae57600080fd5b813561039d8161312c565b6000602082840312156136cb57600080fd5b8151801515811461039d57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612021576120216136db565b634e487b7160e01b600052601260045260246000fd5b60008261372957613729613704565b500490565b6000816000190483118215151615613748576137486136db565b500290565b80820180821115612021576120216136db565b6001600160401b038281168282160390808211156120d0576120d06136db565b60008261378f5761378f613704565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b81811015613816578451835293830193918301916001016137fa565b505084810360a0860152610f528187613531565b6000825161383c81846020870161350d565b9190910192915050565b60006020828403121561385857600080fd5b81516001600160e01b03198116811461039d57600080fd5b600060ff83168061388357613883613704565b8060ff84160691505092915050565b60ff8281168282160390811115612021576120216136db565b6000600182016138bd576138bd6136db565b5060010190565b600181815b808511156138ff5781600019048211156138e5576138e56136db565b808516156138f257918102915b93841c93908002906138c9565b509250929050565b60008261391657506001612021565b8161392357506000612021565b816001811461393957600281146139435761395f565b6001915050612021565b60ff841115613954576139546136db565b50506001821b612021565b5060208310610133831016604e8410600b8410161715613982575081810a612021565b61398c83836138c4565b80600019048211156139a0576139a06136db565b029392505050565b600061039d8383613907565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212207d38ec67345e6bd95cda9dcd48b432f06d282b10b764f6f5e44c193a3c2daee364736f6c63430008100033", - "sourceMap": "843:386:123:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;837:960:125;;;;;;:::i;:::-;;:::i;:::-;;;1892:25:146;;;1880:2;1865:18;837:960:125;1746:177:146;723:59:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1888:644:125:-;;;;;;:::i;:::-;;:::i;1533:1766:124:-;;;;;;:::i;:::-;;:::i;:::-;;917:33:123;;949:1;917:33;;;;;6140:4:146;6128:17;;;6110:36;;6098:2;6083:18;917:33:123;5968:184:146;837:960:125;1056:7;1075:32;1122:73;;;;;;;;1135:14;1122:73;;;;;;1151:14;-1:-1:-1;;;;;1122:73:125;;;;;1167:16;-1:-1:-1;;;;;1122:73:125;;;;;1185:9;1122:73;;;1075:120;;1205:22;1251:12;1240:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1240:24:125;;;;;;;;;1230:35;;1240:24;1230:35;;;;;-1:-1:-1;1313:29:125;1280;;;;:13;:29;;;;;;;;;:62;;;;;;;:::i;:::-;;1276:141;;1365:41;;-1:-1:-1;;;1365:41:125;;;;;1892:25:146;;;1865:18;;1365:41:125;;;;;;;;1276:141;1426:29;;;;:13;:29;;;;;:61;;-1:-1:-1;;1426:61:125;1458:29;1426:61;;;-1:-1:-1;;;;;1589:21:125;;;;;;;1585:97;;;1633:38;;-1:-1:-1;;;1633:38:125;;-1:-1:-1;;;;;6937:15:146;;;1633:38:125;;;6919:34:146;6989:15;;6969:18;;;6962:43;6855:18;;1633:38:125;6712:299:146;1585:97:125;1735:8;-1:-1:-1;;;;;1697:61:125;1723:10;-1:-1:-1;;;;;1697:61:125;1707:14;1697:61;1745:12;1697:61;;;;;;:::i;:::-;;;;;;;;1776:14;837:960;-1:-1:-1;;;;;;;;837:960:125:o;1888:644::-;2009:7;2032:32;2079:67;;;;;;;;2092:14;2079:67;;;;;;2108:14;-1:-1:-1;;;;;2079:67:125;;;;;2124:10;-1:-1:-1;;;;;2079:67:125;;;;;2136:9;2079:67;;;2032:114;;2156:22;2202:12;2191:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2191:24:125;;;;;;;;;2181:35;;2191:24;2181:35;;;;;-1:-1:-1;2264:30:125;2231:29;;;;:13;:29;;;;;;;;;:63;;;;;;;:::i;:::-;;2227:138;;2317:37;;-1:-1:-1;;;2317:37:125;;;;;1892:25:146;;;1865:18;;2317:37:125;1746:177:146;2227:138:125;2406:30;2374:29;;;:13;:29;;;;;;;:62;;-1:-1:-1;;2374:62:125;;;2452:41;2374:29;;2452:41;;;;2480:12;;2452:41;:::i;:::-;;;;;;;;2511:14;-1:-1:-1;;1888:644:125;;;;;;:::o;1533:1766:124:-;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:124;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:124;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:124;;9326:2:146;2243:115:124;;;9308:21:146;9365:2;9345:18;;;9338:30;9404:25;9384:18;;;9377:53;9447:18;;2243:115:124;9124:347:146;2243:115:124;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:124;-1:-1:-1;2460:60:124;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:124;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:124;;;;;;;;9899:23:146;;;;2563:56:124;;;9881:42:146;9854:18;;2563:56:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:124;;-1:-1:-1;;;;;10375:31:146;;2563:73:124;;;10357:50:146;-1:-1:-1;;;;;2563:64:124;;;;;;;10330:18:146;;2563:73:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:124;2646:58;;;;-1:-1:-1;;;2646:58:124;;10809:2:146;2646:58:124;;;10791:21:146;10848:2;10828:18;;;10821:30;-1:-1:-1;;;10867:18:146;;;10860:51;10928:18;;2646:58:124;10607:345:146;2646:58:124;2714:12;2729:134;2765:12;2779:17;;2729:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2798:10:124;;-1:-1:-1;2810:7:124;;-1:-1:-1;2819:6:124;;-1:-1:-1;2827:26:124;;;;:12;:26;:::i;:::-;2729:22;:134::i;:::-;2714:149;;2881:7;2873:47;;;;-1:-1:-1;;;2873:47:124;;11159:2:146;2873:47:124;;;11141:21:146;11198:2;11178:18;;;11171:30;11237:29;11217:18;;;11210:57;11284:18;;2873:47:124;10957:351:146;2873:47:124;2932:28;;2988:211;;3023:12;;2988:211;:::i;:::-;3049:12;3075:17;3106:8;3128:12;:26;;;;;;;;;;:::i;:::-;3168:12;:21;;;2988;:211::i;:::-;2931:268;;;;3210:82;3219:14;3235:12;3249:10;3261:6;3269:11;3282:9;3210:8;:82::i;:::-;1837:1462;;;;;;;;1533:1766;;;;;;;;;;:::o;3385:307::-;3543:1;3493:15;;:37;;-1:-1:-1;;;3493:37:124;;9911:10:146;9899:23;;3493:37:124;;;9881:42:146;-1:-1:-1;;;;;3493:15:124;;;;:28;;9854:18:146;;3493:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3485:60:124;;3464:119;;;;-1:-1:-1;;;3464:119:124;;12706:2:146;3464:119:124;;;12688:21:146;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:146;;;12757:54;12828:18;;3464:119:124;12504:348:146;3464:119:124;3601:15;;:37;;-1:-1:-1;;;3601:37:124;;9911:10:146;9899:23;;3601:37:124;;;9881:42:146;-1:-1:-1;;;;;3601:15:124;;;;:28;;9854:18:146;;3601:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3601:48:124;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3593:92;;;;-1:-1:-1;;;3593:92:124;;13341:2:146;3593:92:124;;;13323:21:146;13380:2;13360:18;;;13353:30;13419:31;13399:18;;;13392:59;13468:18;;3593:92:124;13139:353:146;3593:92:124;3385:307;:::o;3753:137::-;3828:15;;:31;;-1:-1:-1;;;3828:31:124;;9911:10:146;9899:23;;3828:31:124;;;9881:42:146;-1:-1:-1;;;;;3828:15:124;;;;:22;;9854:18:146;;3828:31:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3827:32;3819:64;;;;-1:-1:-1;;;3819:64:124;;13699:2:146;3819:64:124;;;13681:21:146;13738:2;13718:18;;;13711:30;-1:-1:-1;;;13757:18:146;;;13750:49;13816:18;;3819:64:124;13497:343:146;3960:620:124;4125:1;4075:15;;:37;;-1:-1:-1;;;4075:37:124;;9911:10:146;9899:23;;4075:37:124;;;9881:42:146;-1:-1:-1;;;;;4075:15:124;;;;:28;;9854:18:146;;4075:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4067:60:124;;4046:119;;;;-1:-1:-1;;;4046:119:124;;12706:2:146;4046:119:124;;;12688:21:146;12745:2;12725:18;;;12718:30;-1:-1:-1;;;12764:18:146;;;12757:54;12828:18;;4046:119:124;12504:348:146;4046:119:124;4196:15;;:37;;-1:-1:-1;;;4196:37:124;;9911:10:146;9899:23;;4196:37:124;;;9881:42:146;-1:-1:-1;;;;;4196:15:124;;;;:28;;9854:18:146;;4196:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4196:54:124;;-1:-1:-1;;;;;10375:31:146;;4196:54:124;;;10357:50:146;-1:-1:-1;;;;;4196:48:124;;;;;;;10330:18:146;;4196:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4254:1;4196:59;4175:136;;;;-1:-1:-1;;;4175:136:124;;14236:2:146;4175:136:124;;;14218:21:146;14275:2;14255:18;;;14248:30;14314:32;14294:18;;;14287:60;14364:18;;4175:136:124;14034:354:146;4175:136:124;4321:19;4373:15;;:37;;-1:-1:-1;;;4373:37:124;;9911:10:146;9899:23;;4373:37:124;;;9881:42:146;-1:-1:-1;;;;;4373:15:124;;;;:28;;9854:18:146;;4373:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4373:54:124;;-1:-1:-1;;;;;10375:31:146;;4373:54:124;;;10357:50:146;-1:-1:-1;;;;;4373:48:124;;;;;;;10330:18:146;;4373:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4355:72;;:15;:72;:::i;:::-;4321:106;;4473:15;;;;;;;;-1:-1:-1;;;;;4473:15:124;-1:-1:-1;;;;;4473:38:124;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4458:11;:55;;4437:136;;;;-1:-1:-1;;;4437:136:124;;14860:2:146;4437:136:124;;;14842:21:146;14899:2;14879:18;;;14872:30;14938:34;14918:18;;;14911:62;-1:-1:-1;;;14989:18:146;;;14982:32;15031:19;;4437:136:124;14658:398:146;4437:136:124;4036:544;3960:620;;:::o;3094:1947:110:-;3330:4;3346:23;3372:46;3404:13;3372:31;:46::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;16128:2:146;4896:40:110;;;16110:21:146;16167:2;16147:18;;;16140:30;16206:32;16186:18;;;16179:60;16256:18;;4896:40:110;15926:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;431:2729:121:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:121;;-1:-1:-1;1486:14:121;-1:-1:-1;;;1514:25:121;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:121;;;1514:54;1510:236;;;-1:-1:-1;1593:1:121;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:121;;;1611:135;;-1:-1:-1;1665:1:121;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:121;;16619:2:146;1697:38:121;;;16601:21:146;16658:2;16638:18;;;16631:30;16697;16677:18;;;16670:58;16745:18;;1697:38:121;16417:352:146;1611:135:121;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:121;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:121;;16976:2:146;2278:58:121;;;16958:21:146;17015:2;16995:18;;;16988:30;-1:-1:-1;;;17034:18:146;;;17027:52;17096:18;;2278:58:121;16774:346:146;2278:58:121;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:121;;17327:2:146;2495:59:121;;;17309:21:146;17366:2;17346:18;;;17339:30;17405:25;17385:18;;;17378:53;17448:18;;2495:59:121;17125:347:146;2495:59:121;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:121;:14;-1:-1:-1;;;;;2777:30:121;;2769:83;;;;-1:-1:-1;;;2769:83:121;;17679:2:146;2769:83:121;;;17661:21:146;17718:2;17698:18;;;17691:30;17757:34;17737:18;;;17730:62;-1:-1:-1;;;17808:18:146;;;17801:38;17856:19;;2769:83:121;17477:404:146;2769:83:121;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:121;;18088:2:146;2990:74:121;;;18070:21:146;18127:2;18107:18;;;18100:30;18166:32;18146:18;;;18139:60;18216:18;;2990:74:121;17886:354:146;2990:74:121;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:121;;-1:-1:-1;;;;;;;;;;;431:2729:121;;;;;;;;;:::o;4705:1397:124:-;4951:12;4973:17;4951:12;-1:-1:-1;;;5143:15:124;5176:27;;;;:13;:27;:::i;:::-;5221;;;;;;;;:::i;:::-;5266:7;5291:12;5321:10;5041:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5041:304:124;;;;;;;;;;;;;;-1:-1:-1;;;;;5041:304:124;-1:-1:-1;;;;;;5041:304:124;;;;;;;;;;;-1:-1:-1;5377:29:124;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5377:34:124;5412:11;5377:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5489:11:124;;5359:65;;-1:-1:-1;5359:65:124;-1:-1:-1;5445:22:124;;-1:-1:-1;5504:2:124;5489:17;5485:178;;5523:12;5550:4;5539:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5599:53:124;-1:-1:-1;;;5599:53:124;;-1:-1:-1;;5485:178:124;5677:7;:28;;;;;5688:17;5677:28;5673:215;;;5721:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5721:64:124;5752:33;5721:64;;;5673:215;;;5816:28;;;;5847:30;5816:28;;;;;;;;:61;;-1:-1:-1;;5816:61:124;;;;;;5673:215;5994:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5903:192:124;5953:27;;;;:13;:27;:::i;:::-;5903:192;;5924:15;5903:192;6035:29;;;;;;;;:::i;:::-;5903:192;;;-1:-1:-1;;;;;20136:32:146;;;20118:51;;20212:14;;20205:22;20200:2;20185:18;;20178:50;20091:18;5903:192:124;;;;;;;4941:1161;;;4705:1397;;;;;;:::o;56:776:107:-;125:7;240:13;:18;;257:1;240:18;236:590;;-1:-1:-1;383:7:107;;56:776;-1:-1:-1;56:776:107:o;236:590::-;411:13;:18;;428:1;411:18;407:419;;-1:-1:-1;619:7:107;;56:776;-1:-1:-1;56:776:107:o;407:419::-;-1:-1:-1;;;803:12:107;56:776;-1:-1:-1;56:776:107:o;407:419::-;56:776;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;20441:2:146;3101:49:77;;;20423:21:146;20480:2;20460:18;;;20453:30;-1:-1:-1;;;20499:18:146;;;20492:51;20560:18;;3101:49:77;20239:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;20718:19:146;;20762:2;20753:12;;20589:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;20978:2:146;3636:134:77;;;20960:21:146;21017:2;20997:18;;;20990:30;21056:34;21036:18;;;21029:62;-1:-1:-1;;;21107:18:146;;;21100:44;21161:19;;3636:134:77;20776:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;20718:19:146;;;20762:2;20753:12;;20589:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;21393:2:146;3893:176:77;;;21375:21:146;21432:2;21412:18;;;21405:30;21471:31;21451:18;;;21444:59;21520:18;;3893:176:77;21191:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;20718:19:146;;;20762:2;20753:12;;20589:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;21751:2:146;4222:186:77;;;21733:21:146;21790:2;21770:18;;;21763:30;21829:34;21809:18;;;21802:62;-1:-1:-1;;;21880:18:146;;;21873:37;21927:19;;4222:186:77;21549:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;22159:2:146;4509:156:77;;;22141:21:146;22198:2;22178:18;;;22171:30;22237:34;22217:18;;;22210:62;-1:-1:-1;;;22288:18:146;;;22281:36;22334:19;;4509:156:77;21957:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;22566:2:146;5384:158:77;;;22548:21:146;22605:2;22585:18;;;22578:30;22644:34;22624:18;;;22617:62;22715:29;22695:18;;;22688:57;22762:19;;5384:158:77;22364:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;22994:2:146;5626:162:77;;;22976:21:146;23033:2;23013:18;;;23006:30;23072:34;23052:18;;;23045:62;23143:28;23123:18;;;23116:56;23189:19;;5626:162:77;22792:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;23739:2:146;7009:171:77;;;23721:21:146;23778:2;23758:18;;;23751:30;23817:34;23797:18;;;23790:62;23888:28;23868:18;;;23861:56;23934:19;;7009:171:77;23537:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;24166:2:146;7843:185:77;;;24148:21:146;24205:2;24185:18;;;24178:30;24244:34;24224:18;;;24217:62;24315:31;24295:18;;;24288:59;24364:19;;7843:185:77;23964:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;24596:2:146;8463:156:77;;;24578:21:146;24635:2;24615:18;;;24608:30;24674:34;24654:18;;;24647:62;24745:27;24725:18;;;24718:55;24790:19;;8463:156:77;24394:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;25022:2:146;8703:160:77;;;25004:21:146;25061:2;25041:18;;;25034:30;25100:34;25080:18;;;25073:62;25171:26;25151:18;;;25144:54;25215:19;;8703:160:77;24820:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;25447:2:146;9439:60:77;;;25429:21:146;25486:2;25466:18;;;25459:30;25525:34;25505:18;;;25498:62;-1:-1:-1;;;25576:18:146;;;25569:48;25634:19;;9439:60:77;25245:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;25866:2:146;9556:50:77;;;25848:21:146;25905:2;25885:18;;;25878:30;25944:34;25924:18;;;25917:62;-1:-1:-1;;;25995:18:146;;;25988:38;26043:19;;9556:50:77;25664:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;26415:2:146;9641:47:77;;;26397:21:146;26454:2;26434:18;;;26427:30;26493:34;26473:18;;;26466:62;-1:-1:-1;;;26544:18:146;;;26537:35;26589:19;;9641:47:77;26213:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;26821:2:146;2161:136:75;;;26803:21:146;26860:2;26840:18;;;26833:30;26899:34;26879:18;;;26872:62;26970:26;26950:18;;;26943:54;27014:19;;2161:136:75;26619:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;27246:2:146;2308:134:75;;;27228:21:146;27285:2;27265:18;;;27258:30;27324:34;27304:18;;;27297:62;-1:-1:-1;;;27375:18:146;;;27368:48;27433:19;;2308:134:75;27044:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;27665:2:146;12579:55:75;;;27647:21:146;27704:2;27684:18;;;27677:30;27743:28;27723:18;;;27716:56;27789:18;;12579:55:75;27463:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:121:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:121;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:121;3166:384;-1:-1:-1;;3166:384:121:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;28020:2:146;4505:137:75;;;28002:21:146;28059:2;28039:18;;;28032:30;28098:34;28078:18;;;28071:62;28169:27;28149:18;;;28142:55;28214:19;;4505:137:75;27818:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;28446:2:146;4653:136:75;;;28428:21:146;28485:2;28465:18;;;28458:30;28524:34;28504:18;;;28497:62;-1:-1:-1;;;28575:18:146;;;28568:50;28635:19;;4653:136:75;28244:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;30196:19:146;;;30240:2;30231:12;;30224:28;30277:2;30268:12;;30039:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;30196:19:146;;;30240:2;30231:12;;30224:28;30277:2;30268:12;;30039:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;;-1:-1:-1;1822:5:110;1283:551;-1:-1:-1;;;;1283:551:110:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;30976:2:146;6699:156:75;;;30958:21:146;31015:2;30995:18;;;30988:30;-1:-1:-1;;;;;;;;;;;31034:18:146;;;31027:62;31125:34;31105:18;;;31098:62;-1:-1:-1;;;31176:19:146;;;31169:45;31231:19;;6699:156:75;30774:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;31463:2:146;7025:177:75;;;31445:21:146;31502:2;31482:18;;;31475:30;31541:34;31521:18;;;31514:62;31612:34;31592:18;;;31585:62;-1:-1:-1;;;31663:19:146;;;31656:44;31717:19;;7025:177:75;31261:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;31949:2:146;7387:164:75;;;31931:21:146;31988:2;31968:18;;;31961:30;-1:-1:-1;;;;;;;;;;;32007:18:146;;;32000:62;32098:34;32078:18;;;32071:62;-1:-1:-1;;;32149:19:146;;;32142:48;32207:19;;7387:164:75;31747:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;32439:2:146;7721:159:75;;;32421:21:146;32478:2;32458:18;;;32451:30;-1:-1:-1;;;;;;;;;;;32497:18:146;;;32490:62;32588:34;32568:18;;;32561:62;-1:-1:-1;;;32639:19:146;;;32632:41;32690:19;;7721:159:75;32237:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;32922:2:146;8042:142:75;;;32904:21:146;32961:2;32941:18;;;32934:30;-1:-1:-1;;;;;;;;;;;32980:18:146;;;32973:62;33071:34;33051:18;;;33044:62;-1:-1:-1;;;33122:19:146;;;33115:39;33171:19;;8042:142:75;32720:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;33403:2:146;8199:168:75;;;33385:21:146;33442:2;33422:18;;;33415:30;-1:-1:-1;;;;;;;;;;;33461:18:146;;;33454:62;33552:34;33532:18;;;33525:62;-1:-1:-1;;;33603:19:146;;;33596:43;33656:19;;8199:168:75;33201:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;33888:2:146;8617:153:75;;;33870:21:146;33927:2;33907:18;;;33900:30;-1:-1:-1;;;;;;;;;;;33946:18:146;;;33939:62;34037:34;34017:18;;;34010:62;-1:-1:-1;;;34088:19:146;;;34081:41;34139:19;;8617:153:75;33686:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;34371:2:146;8935:161:75;;;34353:21:146;34410:2;34390:18;;;34383:30;-1:-1:-1;;;;;;;;;;;34429:18:146;;;34422:62;34520:34;34500:18;;;34493:62;-1:-1:-1;;;34571:19:146;;;34564:44;34625:19;;8935:161:75;34169:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;34857:2:146;9266:157:75;;;34839:21:146;34896:2;34876:18;;;34869:30;-1:-1:-1;;;;;;;;;;;34915:18:146;;;34908:62;35006:34;34986:18;;;34979:62;-1:-1:-1;;;35057:19:146;;;35050:39;35106:19;;9266:157:75;34655:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;35338:2:146;9588:141:75;;;35320:21:146;35377:2;35357:18;;;35350:30;-1:-1:-1;;;;;;;;;;;35396:18:146;;;35389:62;35487:34;35467:18;;;35460:62;-1:-1:-1;;;35538:19:146;;;35531:37;35585:19;;9588:141:75;35136:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;35817:2:146;9744:168:75;;;35799:21:146;35856:2;35836:18;;;35829:30;-1:-1:-1;;;;;;;;;;;35875:18:146;;;35868:62;35966:34;35946:18;;;35939:62;-1:-1:-1;;;36017:19:146;;;36010:41;36068:19;;9744:168:75;35615:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;36300:2:146;858:50:74;;;36282:21:146;36339:2;36319:18;;;36312:30;-1:-1:-1;;;36358:18:146;;;36351:44;36412:18;;858:50:74;36098:338:146;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;36300:2:146;922:53:74;;;36282:21:146;36339:2;36319:18;;;36312:30;-1:-1:-1;;;36358:18:146;;;36351:44;36412:18;;922:53:74;36098:338:146;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;36643:2:146;989:63:74;;;36625:21:146;36682:2;36662:18;;;36655:30;-1:-1:-1;;;36701:18:146;;;36694:47;36758:18;;989:63:74;36441:341:146;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;36989:2:146;11438:55:75;;;36971:21:146;37028:2;37008:18;;;37001:30;37067:28;37047:18;;;37040:56;37113:18;;11438:55:75;36787:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;36989:2:146;11598:72:75;;;36971:21:146;37028:2;37008:18;;;37001:30;37067:28;37047:18;;;37040:56;37113:18;;11598:72:75;36787:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:146:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:146;;14:180;-1:-1:-1;14:180:146:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:163::-;653:20;;713:10;702:22;;692:33;;682:61;;739:1;736;729:12;754:131;-1:-1:-1;;;;;829:31:146;;819:42;;809:70;;875:1;872;865:12;890:171;957:20;;-1:-1:-1;;;;;1006:30:146;;996:41;;986:69;;1051:1;1048;1041:12;1066:675;1167:6;1175;1183;1191;1199;1207;1260:3;1248:9;1239:7;1235:23;1231:33;1228:53;;;1277:1;1274;1267:12;1228:53;1300:28;1318:9;1300:28;:::i;:::-;1290:38;;1378:2;1367:9;1363:18;1350:32;1391:31;1416:5;1391:31;:::i;:::-;1441:5;-1:-1:-1;1498:2:146;1483:18;;1470:32;1511:33;1470:32;1511:33;:::i;:::-;1563:7;-1:-1:-1;1617:2:146;1602:18;;1589:32;;-1:-1:-1;1640:38:146;1673:3;1658:19;;1640:38;:::i;:::-;1630:48;;1697:38;1730:3;1719:9;1715:19;1697:38;:::i;:::-;1687:48;;1066:675;;;;;;;;:::o;1928:255::-;2084:2;2069:18;;2117:1;2106:13;;2096:47;;2123:18;;:::i;2188:387::-;2264:6;2272;2280;2333:2;2321:9;2312:7;2308:23;2304:32;2301:52;;;2349:1;2346;2339:12;2301:52;2372:28;2390:9;2372:28;:::i;:::-;2362:38;;2450:2;2439:9;2435:18;2422:32;2463:31;2488:5;2463:31;:::i;:::-;2188:387;;2513:5;;-1:-1:-1;;;2565:2:146;2550:18;;;;2537:32;;2188:387::o;2580:347::-;2631:8;2641:6;2695:3;2688:4;2680:6;2676:17;2672:27;2662:55;;2713:1;2710;2703:12;2662:55;-1:-1:-1;2736:20:146;;-1:-1:-1;;;;;2768:30:146;;2765:50;;;2811:1;2808;2801:12;2765:50;2848:4;2840:6;2836:17;2824:29;;2900:3;2893:4;2884:6;2876;2872:19;2868:30;2865:39;2862:59;;;2917:1;2914;2907:12;2862:59;2580:347;;;;;:::o;2932:367::-;2995:8;3005:6;3059:3;3052:4;3044:6;3040:17;3036:27;3026:55;;3077:1;3074;3067:12;3026:55;-1:-1:-1;3100:20:146;;-1:-1:-1;;;;;3132:30:146;;3129:50;;;3175:1;3172;3165:12;3129:50;3212:4;3204:6;3200:17;3188:29;;3272:3;3265:4;3255:6;3252:1;3248:14;3240:6;3236:27;3232:38;3229:47;3226:67;;;3289:1;3286;3279:12;3304:127;3365:10;3360:3;3356:20;3353:1;3346:31;3396:4;3393:1;3386:15;3420:4;3417:1;3410:15;3436:275;3507:2;3501:9;3572:2;3553:13;;-1:-1:-1;;3549:27:146;3537:40;;-1:-1:-1;;;;;3592:34:146;;3628:22;;;3589:62;3586:88;;;3654:18;;:::i;:::-;3690:2;3683:22;3436:275;;-1:-1:-1;3436:275:146:o;3716:530::-;3758:5;3811:3;3804:4;3796:6;3792:17;3788:27;3778:55;;3829:1;3826;3819:12;3778:55;3865:6;3852:20;-1:-1:-1;;;;;3887:2:146;3884:26;3881:52;;;3913:18;;:::i;:::-;3957:55;4000:2;3981:13;;-1:-1:-1;;3977:27:146;4006:4;3973:38;3957:55;:::i;:::-;4037:2;4028:7;4021:19;4083:3;4076:4;4071:2;4063:6;4059:15;4055:26;4052:35;4049:55;;;4100:1;4097;4090:12;4049:55;4165:2;4158:4;4150:6;4146:17;4139:4;4130:7;4126:18;4113:55;4213:1;4188:16;;;4206:4;4184:27;4177:38;;;;4192:7;3716:530;-1:-1:-1;;;3716:530:146:o;4251:161::-;4316:5;4361:3;4352:6;4347:3;4343:16;4339:26;4336:46;;;4378:1;4375;4368:12;4336:46;-1:-1:-1;4400:6:146;4251:161;-1:-1:-1;4251:161:146:o;4417:1546::-;4648:6;4656;4664;4672;4680;4688;4696;4704;4712;4720;4773:3;4761:9;4752:7;4748:23;4744:33;4741:53;;;4790:1;4787;4780:12;4741:53;4830:9;4817:23;-1:-1:-1;;;;;4900:2:146;4892:6;4889:14;4886:34;;;4916:1;4913;4906:12;4886:34;4955:58;5005:7;4996:6;4985:9;4981:22;4955:58;:::i;:::-;5032:8;;-1:-1:-1;4929:84:146;-1:-1:-1;5120:2:146;5105:18;;5092:32;;-1:-1:-1;5136:16:146;;;5133:36;;;5165:1;5162;5155:12;5133:36;5204:72;5268:7;5257:8;5246:9;5242:24;5204:72;:::i;:::-;5295:8;;-1:-1:-1;5178:98:146;-1:-1:-1;5377:2:146;5362:18;;5349:32;;-1:-1:-1;5434:2:146;5419:18;;5406:32;;-1:-1:-1;5450:16:146;;;5447:36;;;5479:1;5476;5469:12;5447:36;5518:72;5582:7;5571:8;5560:9;5556:24;5518:72;:::i;:::-;5609:8;;-1:-1:-1;5492:98:146;-1:-1:-1;5697:3:146;5682:19;;5669:33;;-1:-1:-1;5714:16:146;;;5711:36;;;5743:1;5740;5733:12;5711:36;;5766:51;5809:7;5798:8;5787:9;5783:24;5766:51;:::i;:::-;5756:61;;;5864:3;5853:9;5849:19;5836:33;5826:43;;5888:69;5949:7;5943:3;5932:9;5928:19;5888:69;:::i;:::-;5878:79;;4417:1546;;;;;;;;;;;;;:::o;6157:550::-;6388:13;;6403:10;6384:30;6366:49;;6462:4;6450:17;;;6444:24;-1:-1:-1;;;;;6544:21:146;;;6522:20;;;6515:51;;;;6626:4;6614:17;;;6608:24;6604:33;;;6582:20;;;6575:63;6694:4;6682:17;;;6676:24;6654:20;;;6647:54;;;;6353:3;6338:19;;6157:550::o;7016:184::-;7074:6;7127:2;7115:9;7106:7;7102:23;7098:32;7095:52;;;7143:1;7140;7133:12;7095:52;7166:28;7184:9;7166:28;:::i;7205:684::-;7403:3;7388:19;;7465:10;7438:25;7456:6;7438:25;:::i;:::-;7434:42;7423:9;7416:61;7524:4;7516:6;7512:17;7499:31;7539;7564:5;7539:31;:::i;:::-;-1:-1:-1;;;;;7646:14:146;;;7639:4;7624:20;;7617:44;7710:4;7698:17;;7685:31;;7725:33;7685:31;7725:33;:::i;:::-;7796:16;7789:4;7774:20;;7767:46;7876:4;7864:17;;;7851:31;7829:20;;;;7822:61;;;;7205:684;:::o;7894:250::-;7979:1;7989:113;8003:6;8000:1;7997:13;7989:113;;;8079:11;;;8073:18;8060:11;;;8053:39;8025:2;8018:10;7989:113;;;-1:-1:-1;;8136:1:146;8118:16;;8111:27;7894:250::o;8149:270::-;8190:3;8228:5;8222:12;8255:6;8250:3;8243:19;8271:76;8340:6;8333:4;8328:3;8324:14;8317:4;8310:5;8306:16;8271:76;:::i;:::-;8401:2;8380:15;-1:-1:-1;;8376:29:146;8367:39;;;;8408:4;8363:50;;8149:270;-1:-1:-1;;8149:270:146:o;8424:695::-;8683:3;8672:9;8665:22;8724:6;8718:3;8707:9;8703:19;8696:35;8782:6;8774;8768:3;8757:9;8753:19;8740:49;8839:1;8833:3;8824:6;8813:9;8809:22;8805:32;8798:43;8646:4;8900:2;8896:7;8891:2;8883:6;8879:15;8875:29;8864:9;8860:45;8967:3;8955:9;8951:2;8947:18;8943:28;8936:4;8925:9;8921:20;8914:58;8989:38;9022:3;9018:2;9014:12;9006:6;8989:38;:::i;:::-;9058:2;9043:18;;9036:34;;;;-1:-1:-1;;9101:2:146;9086:18;9079:34;8981:46;8424:695;-1:-1:-1;;;8424:695:146:o;9476:256::-;9542:6;9550;9603:2;9591:9;9582:7;9578:23;9574:32;9571:52;;;9619:1;9616;9609:12;9571:52;9642:28;9660:9;9642:28;:::i;:::-;9632:38;;9689:37;9722:2;9711:9;9707:18;9689:37;:::i;:::-;9679:47;;9476:256;;;;;:::o;9934:273::-;10026:6;10079:2;10067:9;10058:7;10054:23;10050:32;10047:52;;;10095:1;10092;10085:12;10047:52;10127:9;10121:16;10146:31;10171:5;10146:31;:::i;10418:184::-;10488:6;10541:2;10529:9;10520:7;10516:23;10512:32;10509:52;;;10557:1;10554;10547:12;10509:52;-1:-1:-1;10580:16:146;;10418:184;-1:-1:-1;10418:184:146:o;11313:934::-;11449:9;-1:-1:-1;;;;;11524:2:146;11516:6;11513:14;11510:40;;;11530:18;;:::i;:::-;11576:6;11573:1;11569:14;11602:4;11626:28;11650:2;11646;11642:11;11626:28;:::i;:::-;11688:19;;;11758:14;;;;11723:12;;;;11795:14;11784:26;;11781:46;;;11823:1;11820;11813:12;11781:46;11847:5;11861:353;11877:6;11872:3;11869:15;11861:353;;;11963:3;11950:17;11999:2;11986:11;11983:19;11980:109;;;12043:1;12072:2;12068;12061:14;11980:109;12114:57;12156:14;12142:11;12135:5;12131:23;12114:57;:::i;:::-;12102:70;;-1:-1:-1;12192:12:146;;;;11894;;11861:353;;;-1:-1:-1;12236:5:146;11313:934;-1:-1:-1;;;;;;;11313:934:146:o;12252:247::-;12311:6;12364:2;12352:9;12343:7;12339:23;12335:32;12332:52;;;12380:1;12377;12370:12;12332:52;12419:9;12406:23;12438:31;12463:5;12438:31;:::i;12857:277::-;12924:6;12977:2;12965:9;12956:7;12952:23;12948:32;12945:52;;;12993:1;12990;12983:12;12945:52;13025:9;13019:16;13078:5;13071:13;13064:21;13057:5;13054:32;13044:60;;13100:1;13097;13090:12;14393:127;14454:10;14449:3;14445:20;14442:1;14435:31;14485:4;14482:1;14475:15;14509:4;14506:1;14499:15;14525:128;14592:9;;;14613:11;;;14610:37;;;14627:18;;:::i;15061:127::-;15122:10;15117:3;15113:20;15110:1;15103:31;15153:4;15150:1;15143:15;15177:4;15174:1;15167:15;15193:120;15233:1;15259;15249:35;;15264:18;;:::i;:::-;-1:-1:-1;15298:9:146;;15193:120::o;15318:168::-;15358:7;15424:1;15420;15416:6;15412:14;15409:1;15406:21;15401:1;15394:9;15387:17;15383:45;15380:71;;;15431:18;;:::i;:::-;-1:-1:-1;15471:9:146;;15318:168::o;15491:125::-;15556:9;;;15577:10;;;15574:36;;;15590:18;;:::i;15621:183::-;-1:-1:-1;;;;;15740:10:146;;;15728;;;15724:27;;15763:12;;;15760:38;;;15778:18;;:::i;15809:112::-;15841:1;15867;15857:35;;15872:18;;:::i;:::-;-1:-1:-1;15906:9:146;;15809:112::o;16285:127::-;16346:10;16341:3;16337:20;16334:1;16327:31;16377:4;16374:1;16367:15;16401:4;16398:1;16391:15;18245:1113;18602:25;;;18696:10;18684:23;;18646:2;18664:18;;;18657:51;;;;-1:-1:-1;;;;;18744:32:146;;18739:2;18724:18;;18717:60;-1:-1:-1;;;;;18813:31:146;;18808:2;18793:18;;18786:59;18589:3;18876;18861:19;;18854:32;;;18935:13;;18574:19;;;18957:22;;;18541:4;;19037:15;;;;19010:3;18995:19;;;18541:4;19080:169;19094:6;19091:1;19088:13;19080:169;;;19155:13;;19143:26;;19224:15;;;;19189:12;;;;19116:1;19109:9;19080:169;;;19084:3;;19295:9;19290:3;19286:19;19280:3;19269:9;19265:19;19258:48;19323:29;19348:3;19340:6;19323:29;:::i;19363:287::-;19492:3;19530:6;19524:13;19546:66;19605:6;19600:3;19593:4;19585:6;19581:17;19546:66;:::i;:::-;19628:16;;;;;19363:287;-1:-1:-1;;19363:287:146:o;19655:290::-;19724:6;19777:2;19765:9;19756:7;19752:23;19748:32;19745:52;;;19793:1;19790;19783:12;19745:52;19819:16;;-1:-1:-1;;;;;;19864:32:146;;19854:43;;19844:71;;19911:1;19908;19901:12;23219:157;23249:1;23283:4;23280:1;23276:12;23307:3;23297:37;;23314:18;;:::i;:::-;23366:3;23359:4;23356:1;23352:12;23348:22;23343:27;;;23219:157;;;;:::o;23381:151::-;23471:4;23464:12;;;23450;;;23446:31;;23489:14;;23486:40;;;23506:18;;:::i;26073:135::-;26112:3;26133:17;;;26130:43;;26153:18;;:::i;:::-;-1:-1:-1;26200:1:146;26189:13;;26073:135::o;28665:422::-;28754:1;28797:5;28754:1;28811:270;28832:7;28822:8;28819:21;28811:270;;;28891:4;28887:1;28883:6;28879:17;28873:4;28870:27;28867:53;;;28900:18;;:::i;:::-;28950:7;28940:8;28936:22;28933:55;;;28970:16;;;;28933:55;29049:22;;;;29009:15;;;;28811:270;;;28815:3;28665:422;;;;;:::o;29092:806::-;29141:5;29171:8;29161:80;;-1:-1:-1;29212:1:146;29226:5;;29161:80;29260:4;29250:76;;-1:-1:-1;29297:1:146;29311:5;;29250:76;29342:4;29360:1;29355:59;;;;29428:1;29423:130;;;;29335:218;;29355:59;29385:1;29376:10;;29399:5;;;29423:130;29460:3;29450:8;29447:17;29444:43;;;29467:18;;:::i;:::-;-1:-1:-1;;29523:1:146;29509:16;;29538:5;;29335:218;;29637:2;29627:8;29624:16;29618:3;29612:4;29609:13;29605:36;29599:2;29589:8;29586:16;29581:2;29575:4;29572:12;29568:35;29565:77;29562:159;;;-1:-1:-1;29674:19:146;;;29706:5;;29562:159;29753:34;29778:8;29772:4;29753:34;:::i;:::-;29823:6;29819:1;29815:6;29811:19;29802:7;29799:32;29796:58;;;29834:18;;:::i;:::-;29872:20;;29092:806;-1:-1:-1;;;29092:806:146:o;29903:131::-;29963:5;29992:36;30019:8;30013:4;29992:36;:::i;30291:478::-;30493:2;30475:21;;;30532:2;30512:18;;;30505:30;30571:34;30566:2;30551:18;;30544:62;30642:34;30637:2;30622:18;;30615:62;-1:-1:-1;;;30708:3:146;30693:19;;30686:41;30759:3;30744:19;;30291:478::o", - "linkReferences": {} - }, - "methodIdentifiers": { - "VERSION()": "ffa1ad74", - "eventsPublished(bytes32)": "3cca331c", - "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": "bbe6d642", - "subscribe(uint32,address,address,bytes32,uint64,uint64)": "65138959", - "subscriptions(bytes32)": "94259c6c", - "unsubscribe(uint32,address,bytes32)": "97229719" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyRouter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathyPubSub\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"},\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"This allows an on-chain Publisher-Suscriber model to be used for events. Contracts can subscribe to events emitted from a source contract, and it will be relayed these events through the publisher. Before the events are relayed, they are verified using the Telepathy Light Client for proof of consensus on the source chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPubSub.sol\":\"TelepathyPubSub\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_telepathyRouter", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "startSlot", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "endSlot", - "type": "uint64" - } - ], - "type": "error", - "name": "InvalidSlotRange" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - } - ], - "type": "error", - "name": "SubscriptionAlreadyActive" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - } - ], - "type": "error", - "name": "SubscriptionNotActive" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32", - "indexed": true - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address", - "indexed": false - }, - { - "internalType": "bool", - "name": "success", - "type": "bool", - "indexed": false - } - ], - "type": "event", - "name": "Publish", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "uint64", - "name": "startSlot", - "type": "uint64", - "indexed": true - }, - { - "internalType": "uint64", - "name": "endSlot", - "type": "uint64", - "indexed": true - }, - { - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple", - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ], - "indexed": false - } - ], - "type": "event", - "name": "Subscribe", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple", - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ], - "indexed": false - } - ], - "type": "event", - "name": "Unsubscribe", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "VERSION", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "eventsPublished", - "outputs": [ - { - "internalType": "enum PublishStatus", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "srcSlotTxSlotPack", - "type": "bytes" - }, - { - "internalType": "bytes32[]", - "name": "receiptsRootProof", - "type": "bytes32[]" - }, - { - "internalType": "bytes32", - "name": "receiptsRoot", - "type": "bytes32" - }, - { - "internalType": "bytes[]", - "name": "receiptProof", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "txIndexRLPEncoded", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "logIndex", - "type": "uint256" - }, - { - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple", - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ] - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "publishEvent" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_eventSig", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "_startSlot", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "_endSlot", - "type": "uint64" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "subscribe", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "subscriptions", - "outputs": [ - { - "internalType": "enum SubscriptionStatus", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_eventSig", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "unsubscribe", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": { - "details": "This function should be called for every subscriber that is subscribed to the event.", - "params": { - "logIndex": "The index of the event in our transaction.", - "receiptsRoot": "The receipts root which contains the event.", - "receiptsRootProof": "A merkle proof proving the receiptsRoot in the block header.", - "srcSlotTxSlotPack": "The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.", - "subscription": "The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).", - "txIndexRLPEncoded": "The index of our transaction inside the block RLP encoded." - } - }, - "subscribe(uint32,address,address,bytes32,uint64,uint64)": { - "details": "The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish." - }, - "unsubscribe(uint32,address,bytes32)": { - "details": "Only the original callbackAddress contract will be able to unsubscribe." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": { - "notice": "Publishes an event emit to a callback Subscriber, given an event proof." - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/pubsub/TelepathyPubSub.sol": "TelepathyPubSub" - }, - "libraries": {} - }, - "sources": { - "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { - "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", - "urls": [ - "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", - "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { - "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", - "urls": [ - "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", - "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { - "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", - "urls": [ - "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", - "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { - "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", - "urls": [ - "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", - "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { - "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", - "urls": [ - "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", - "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { - "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", - "urls": [ - "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", - "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", - "urls": [ - "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", - "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { - "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", - "urls": [ - "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", - "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { - "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", - "urls": [ - "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", - "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { - "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", - "urls": [ - "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", - "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { - "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", - "urls": [ - "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", - "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { - "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", - "urls": [ - "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", - "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { - "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", - "urls": [ - "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", - "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { - "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", - "urls": [ - "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", - "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { - "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", - "urls": [ - "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", - "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { - "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", - "urls": [ - "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", - "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/Bytes.sol": { - "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", - "urls": [ - "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", - "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { - "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", - "urls": [ - "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", - "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { - "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", - "urls": [ - "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", - "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { - "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", - "urls": [ - "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", - "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" - ], - "license": "MIT" - }, - "src/amb/SourceAMB.sol": { - "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", - "urls": [ - "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", - "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" - ], - "license": null - }, - "src/amb/TargetAMB.sol": { - "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", - "urls": [ - "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", - "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" - ], - "license": null - }, - "src/amb/TelepathyAccess.sol": { - "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", - "urls": [ - "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", - "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" - ], - "license": null - }, - "src/amb/TelepathyRouter.sol": { - "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", - "urls": [ - "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", - "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" - ], - "license": null - }, - "src/amb/TelepathyStorage.sol": { - "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", - "urls": [ - "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", - "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" - ], - "license": null - }, - "src/amb/interfaces/ITelepathy.sol": { - "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", - "urls": [ - "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", - "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" - ], - "license": null - }, - "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", - "urls": [ - "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", - "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" - ], - "license": null - }, - "src/libraries/MessageEncoding.sol": { - "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", - "urls": [ - "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", - "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" - ], - "license": null - }, - "src/libraries/SimpleSerialize.sol": { - "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", - "urls": [ - "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", - "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" - ], - "license": null - }, - "src/libraries/StateProofHelper.sol": { - "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", - "urls": [ - "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", - "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" - ], - "license": null - }, - "src/libraries/Typecast.sol": { - "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", - "urls": [ - "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", - "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" - ], - "license": "MIT OR Apache-2.0" - }, - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - }, - "src/pubsub/EventProof.sol": { - "keccak256": "0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e", - "urls": [ - "bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78", - "dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi" - ], - "license": null - }, - "src/pubsub/PubSubStorage.sol": { - "keccak256": "0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b", - "urls": [ - "bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e", - "dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL" - ], - "license": null - }, - "src/pubsub/TelepathyPubSub.sol": { - "keccak256": "0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61", - "urls": [ - "bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241", - "dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG" - ], - "license": null - }, - "src/pubsub/TelepathyPublisher.sol": { - "keccak256": "0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521", - "urls": [ - "bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f", - "dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe" - ], - "license": null - }, - "src/pubsub/TelepathySubscriber.sol": { - "keccak256": "0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd", - "urls": [ - "bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4", - "dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3" - ], - "license": null - }, - "src/pubsub/interfaces/IPubSub.sol": { - "keccak256": "0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c", - "urls": [ - "bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a", - "dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt" - ], - "license": null - }, - "src/pubsub/interfaces/ISubscriptionReceiver.sol": { - "keccak256": "0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c", - "urls": [ - "bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb", - "dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/pubsub/TelepathyPubSub.sol", - "id": 48584, - "exportedSymbols": { - "PubSubStorage": [ - 48552 - ], - "TelepathyPubSub": [ - 48583 - ], - "TelepathyPublisher": [ - 48979 - ], - "TelepathyRouter": [ - 42576 - ], - "TelepathySubscriber": [ - 49142 - ] - }, - "nodeType": "SourceUnit", - "src": "0:1230:123", - "nodes": [ - { - "id": 48554, - "nodeType": "PragmaDirective", - "src": "0:24:123", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".16" - ] - }, - { - "id": 48556, - "nodeType": "ImportDirective", - "src": "26:69:123", - "nodes": [], - "absolutePath": "src/pubsub/TelepathyPublisher.sol", - "file": "src/pubsub/TelepathyPublisher.sol", - "nameLocation": "-1:-1:-1", - "scope": 48584, - "sourceUnit": 48980, - "symbolAliases": [ - { - "foreign": { - "id": 48555, - "name": "TelepathyPublisher", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48979, - "src": "34:18:123", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48558, - "nodeType": "ImportDirective", - "src": "97:71:123", - "nodes": [], - "absolutePath": "src/pubsub/TelepathySubscriber.sol", - "file": "src/pubsub/TelepathySubscriber.sol", - "nameLocation": "-1:-1:-1", - "scope": 48584, - "sourceUnit": 49143, - "symbolAliases": [ - { - "foreign": { - "id": 48557, - "name": "TelepathySubscriber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49142, - "src": "105:19:123", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48560, - "nodeType": "ImportDirective", - "src": "170:59:123", - "nodes": [], - "absolutePath": "src/pubsub/PubSubStorage.sol", - "file": "src/pubsub/PubSubStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 48584, - "sourceUnit": 48553, - "symbolAliases": [ - { - "foreign": { - "id": 48559, - "name": "PubSubStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48552, - "src": "178:13:123", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48562, - "nodeType": "ImportDirective", - "src": "231:60:123", - "nodes": [], - "absolutePath": "src/amb/TelepathyRouter.sol", - "file": "src/amb/TelepathyRouter.sol", - "nameLocation": "-1:-1:-1", - "scope": 48584, - "sourceUnit": 42577, - "symbolAliases": [ - { - "foreign": { - "id": 48561, - "name": "TelepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42576, - "src": "239:15:123", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48583, - "nodeType": "ContractDefinition", - "src": "843:386:123", - "nodes": [ - { - "id": 48570, - "nodeType": "VariableDeclaration", - "src": "917:33:123", - "nodes": [], - "constant": true, - "functionSelector": "ffa1ad74", - "mutability": "constant", - "name": "VERSION", - "nameLocation": "939:7:123", - "scope": 48583, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 48568, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "917:5:123", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": { - "hexValue": "31", - "id": 48569, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "949:1:123", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "visibility": "public" - }, - { - "id": 48582, - "nodeType": "FunctionDefinition", - "src": "957:106:123", - "nodes": [], - "body": { - "id": 48581, - "nodeType": "Block", - "src": "995:68:123", - "nodes": [], - "statements": [ - { - "expression": { - "id": 48579, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 48575, - "name": "telepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48536, - "src": "1005:15:123", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42576", - "typeString": "contract TelepathyRouter" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 48577, - "name": "_telepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48572, - "src": "1039:16:123", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 48576, - "name": "TelepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42576, - "src": "1023:15:123", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TelepathyRouter_$42576_$", - "typeString": "type(contract TelepathyRouter)" - } - }, - "id": 48578, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1023:33:123", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42576", - "typeString": "contract TelepathyRouter" - } - }, - "src": "1005:51:123", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42576", - "typeString": "contract TelepathyRouter" - } - }, - "id": 48580, - "nodeType": "ExpressionStatement", - "src": "1005:51:123" - } - ] - }, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 48573, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 48572, - "mutability": "mutable", - "name": "_telepathyRouter", - "nameLocation": "977:16:123", - "nodeType": "VariableDeclaration", - "scope": 48582, - "src": "969:24:123", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 48571, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "969:7:123", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "968:26:123" - }, - "returnParameters": { - "id": 48574, - "nodeType": "ParameterList", - "parameters": [], - "src": "995:0:123" - }, - "scope": 48583, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 48564, - "name": "TelepathyPublisher", - "nameLocations": [ - "871:18:123" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48979, - "src": "871:18:123" - }, - "id": 48565, - "nodeType": "InheritanceSpecifier", - "src": "871:18:123" - }, - { - "baseName": { - "id": 48566, - "name": "TelepathySubscriber", - "nameLocations": [ - "891:19:123" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49142, - "src": "891:19:123" - }, - "id": 48567, - "nodeType": "InheritanceSpecifier", - "src": "891:19:123" - } - ], - "canonicalName": "TelepathyPubSub", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 48563, - "nodeType": "StructuredDocumentation", - "src": "418:425:123", - "text": "@title TelepathyPubSub\n @author Succinct Labs\n @notice This allows an on-chain Publisher-Suscriber model to be used for events. Contracts can subscribe to\n events emitted from a source contract, and it will be relayed these events through the publisher. Before\n the events are relayed, they are verified using the Telepathy Light Client for proof of consensus on the\n source chain." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 48583, - 49142, - 48979, - 48552, - 49205, - 49243 - ], - "name": "TelepathyPubSub", - "nameLocation": "852:15:123", - "scope": 48584, - "usedErrors": [ - 48996, - 49000, - 49006 - ] - } - ] - }, - "id": 123 -} \ No newline at end of file diff --git a/out/TelepathyPublisher.sol/TelepathyPublisher.json b/out/TelepathyPublisher.sol/TelepathyPublisher.json deleted file mode 100644 index c5127a0..0000000 --- a/out/TelepathyPublisher.sol/TelepathyPublisher.json +++ /dev/null @@ -1,6209 +0,0 @@ -{ - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "indexed": true, - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "name": "Publish", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "eventsPublished", - "outputs": [ - { - "internalType": "enum PublishStatus", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "srcSlotTxSlotPack", - "type": "bytes" - }, - { - "internalType": "bytes32[]", - "name": "receiptsRootProof", - "type": "bytes32[]" - }, - { - "internalType": "bytes32", - "name": "receiptsRoot", - "type": "bytes32" - }, - { - "internalType": "bytes[]", - "name": "receiptProof", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "txIndexRLPEncoded", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "logIndex", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ], - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple" - } - ], - "name": "publishEvent", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "subscriptions", - "outputs": [ - { - "internalType": "enum SubscriptionStatus", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b506136b4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612dfb565b60016020526000908152604090205460ff1681565b6040516100769190612e2a565b60405180910390f35b6100a261008d366004612dfb565b60026020526000908152604090205460ff1681565b6040516100769190612e44565b6100c26100bd366004612fb1565b6100c4565b005b6100d96100d460208301836130a7565b610423565b6100ee6100e960208301836130a7565b610609565b60008160405160200161010191906130d7565b60405160208183030381529060405280519060200120905060008b8b868685604051602001610134959493929190613180565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612e14565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f6131ea565b90925090506101ee826101e960208801886130a7565b6106be565b600080546001600160a01b0316637599735c61020d60208901896130a7565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610273919061321d565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e6919061323a565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b600061037e8c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061037960208e018e6130a7565b610a7c565b9050806103cd5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103fd6103dd8d8f613253565b8f8d8d8d60200160208101906103f391906132d6565b8e60600135610c86565b9150915061040f888a89888686610fd1565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610496919061321d565b6001600160a01b0316036104e75760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610535573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610559919061321d565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba91906132f3565b6106065760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b91906132f3565b156106065760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610731919061321d565b6001600160a01b0316036107825760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f4919061321d565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610867919061323a565b6000036108b65760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610905573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610929919061321d565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c919061323a565b6109a6904261332b565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d919061323a565b811015610a775760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b600080610a88836111c6565b9050600081856001600160401b031610610aa357601b610aa6565b60075b60ff169050600082866001600160401b031610610ae257612000610ad3846001600160401b03891661332b565b610add9190613354565b610af7565b610af76120006001600160401b038816613354565b90506000866001600160401b0316886001600160401b031603610b365750600b610b2381610200613368565b610b2f90610183613387565b9050610c6b565b612000610b43888a61339a565b6001600160401b031611610ba55750600b610b5f816020613368565b610b6a906006613387565b9050610b816120006001600160401b0389166133ba565b610b8d61200083613368565b610b979190613387565b9050610b2381610200613368565b876001600160401b0316876001600160401b03161015610c235750600b82610bce826020613368565b610bd89190613387565b9050610be5816002613368565b610bf0906000613387565b905081610c01630100000083613368565b610c0b9190613387565b9050610c18816002613368565b610b6a906001613387565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101bb565b610c778b828c8c611206565b9b9a5050505050505050505050565b6060806000610c96878a8a611220565b9050600081600081518110610cad57610cad6133ce565b01602001516001600160f81b03191690506000600160f81b821480610cdf5750600160f91b6001600160f81b03198316145b15610cec57506001610d51565b600360fe1b6001600160f81b0319831610610d0957506000610d51565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610d73919061332b565b8152602001610d828585613387565b905290506000610d9182611aba565b90508051600414610ddd5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610e0282600381518110610df557610df56133ce565b6020026020010151611aba565b905080518c10610e545760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610e6b828e81518110610df557610df56133ce565b90506000610e9282600081518110610e8557610e856133ce565b6020026020010151611cdf565b90508c6001600160a01b0316816001600160a01b031614610f065760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610f26610f2184600181518110610df557610df56133ce565b611d53565b90508c81600081518110610f3c57610f3c6133ce565b602002602001015114610f915760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b6000610fb684600281518110610fa957610fa96133ce565b6020026020010151611e03565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b89610fec60208b018b6130a7565b610ffc60408c0160208d016132d6565b898989604051602401611014969594939291906133e4565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506110589060608a01908a016132d6565b6001600160a01b03168160405161106f9190613464565b6000604051808303816000865af19150503d80600081146110ac576040519150601f19603f3d011682016040523d82523d6000602084013e6110b1565b606091505b5080519194509250600091506020036110f1576000828060200190518101906110da9190613480565b6001600160e01b031916635160951d60e11b149150505b8280156110fb5750805b1561111e576000878152600160205260409020805460ff1916600217905561113b565b6000878152600160208190526040909120805460ff191690911790555b61114b6040890160208a016132d6565b6001600160a01b031661116160208a018a6130a7565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61119960608d0160408e016132d6565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b60008163ffffffff166001036111e05750625ec000919050565b8163ffffffff166005036111f85750624f4000919050565b50600019919050565b919050565b600080611214868686611f2f565b90921495945050505050565b6060600084511161126b5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b6000611276846120c7565b90506000611283866121b5565b905060008460405160200161129a91815260200190565b60405160208183030381529060405290506000805b8451811015611a5c5760008582815181106112cc576112cc6133ce565b60200260200101519050845183111561133e5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b826000036113dd578051805160209182012060405161138c9261136692910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6113d85760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b6114d3565b80515160201161146357805180516020918201206040516114079261136692910190815260200190565b6113d85760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146114d35760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b6114df60106001613387565b8160200151510361167f578451830361161757600061150e8260200151601081518110610fa957610fa96133ce565b905060008151116115875760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b60018751611595919061332b565b83146116095760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611ab395505050505050565b600085848151811061162b5761162b6133ce565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611656576116566133ce565b60200260200101519050611669816122cf565b9550611676600186613387565b94505050611a49565b6002816020015151036119f0576000611697826122f4565b90506000816000815181106116ae576116ae6133ce565b016020015160f81c905060006116c56002836134aa565b6116d09060026134cc565b905060006116e1848360ff16612318565b905060006116ef8a89612318565b905060006116fd838361234e565b9050808351146117755760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff85166002148061178a575060ff85166003145b1561193057808251146118055760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b60006118218860200151600181518110610fa957610fa96133ce565b9050600081511161189a5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516118a8919061332b565b891461191c5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611ab39b505050505050505050505050565b60ff85161580611943575060ff85166001145b156119825761196f8760200151600181518110611962576119626133ce565b60200260200101516122cf565b995061197b818a613387565b98506119e5565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b505050505050611a49565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b5080611a54816134e5565b9150506112af565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611aca856123cd565b919450925090506001816001811115611ae557611ae5612e14565b14611b585760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611b648385613387565b14611bcc5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611be55790505090506000845b8751811015611cd357600080611c586040518060400160405280858d60000151611c3c919061332b565b8152602001858d60200151611c519190613387565b90526123cd565b509150915060405180604001604052808383611c749190613387565b8152602001848c60200151611c899190613387565b815250858581518110611c9e57611c9e6133ce565b6020908102919091010152611cb4600185613387565b9350611cc08183613387565b611cca9084613387565b92505050611c12565b50815295945050505050565b8051600090600103611cf357506000919050565b8151601514611d445760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611d4d82612a90565b92915050565b6060600082516001600160401b03811115611d7057611d70612ee4565b604051908082528060200260200182016040528015611d99578160200160208202803683370190505b50905060005b8351811015611dfc57611dca848281518110611dbd57611dbd6133ce565b6020026020010151612a90565b60001b828281518110611ddf57611ddf6133ce565b602090810291909101015280611df4816134e5565b915050611d9f565b5092915050565b60606000806000611e13856123cd565b919450925090506000816001811115611e2e57611e2e612e14565b14611ea15760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611eab8284613387565b855114611f175760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611f2685602001518484612a9b565b95945050505050565b60008282516001611f409190613387565b611f4b9060026135e2565b11611f5557600080fd5b8360005b846001146120be57611f6c6002866133ba565b60010361200b576002848281518110611f8757611f876133ce565b602002602001015183604051602001611faa929190918252602082015260400190565b60408051601f1981840301815290829052611fc491613464565b602060405180830381855afa158015611fe1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612004919061323a565b915061209f565b600282858381518110612020576120206133ce565b6020026020010151604051602001612042929190918252602082015260400190565b60408051601f198184030181529082905261205c91613464565b602060405180830381855afa158015612079573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061209c919061323a565b91505b6120aa600286613354565b9450806120b6816134e5565b915050611f59565b50949350505050565b80516060906000816001600160401b038111156120e6576120e6612ee4565b60405190808252806020026020018201604052801561212b57816020015b60408051808201909152606080825260208201528152602001906001900390816121045790505b50905060005b828110156121ad576040518060400160405280868381518110612156576121566133ce565b60200260200101518152602001612185878481518110612178576121786133ce565b6020026020010151612b3b565b81525082828151811061219a5761219a6133ce565b6020908102919091010152600101612131565b509392505050565b805160609060006121c7826002613368565b6001600160401b038111156121de576121de612ee4565b6040519080825280601f01601f191660200182016040528015612208576020820181803683370190505b5090506000805b838110156122c557858181518110612229576122296133ce565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612251836002613368565b81518110612261576122616133ce565b60200101906001600160f81b031916908160001a905350600f60f81b82168361228b836002613368565b612296906001613387565b815181106122a6576122a66133ce565b60200101906001600160f81b031916908160001a90535060010161220f565b5090949350505050565b606060208260000151106122eb576122e682611e03565b611d4d565b611d4d82612b4e565b6060611d4d6123138360200151600081518110610fa957610fa96133ce565b6121b5565b6060825182106123375750604080516020810190915260008152611d4d565b611ab38383848651612349919061332b565b612b64565b60008060008351855110612363578351612366565b84515b90505b80821080156123bd5750838281518110612385576123856133ce565b602001015160f81c60f81b6001600160f81b0319168583815181106123ac576123ac6133ce565b01602001516001600160f81b031916145b156121ad57816001019150612369565b6000806000808460000151116123f55760405162461bcd60e51b81526004016101bb906135ee565b6020840151805160001a607f811161241a576000600160009450945094505050612a89565b60b7811161257757600061242f60808361332b565b9050808760000151116124af5760405162461bcd60e51b815260206004820152604e602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b03191690821415806124dc5750600160ff1b6001600160f81b0319821610155b6125645760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b5060019550935060009250612a89915050565b60bf81116127b857600061258c60b78361332b565b90508087600001511161260f5760405162461bcd60e51b8152602060048201526051602482015260008051602061365f83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036126965760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c603781116127195760405162461bcd60e51b8152602060048201526048602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b6127238184613387565b89511161279b5760405162461bcd60e51b815260206004820152604c602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6127a6836001613387565b9750955060009450612a899350505050565b60f7811161285a5760006127cd60c08361332b565b9050808760000151116128495760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b600195509350849250612a89915050565b600061286760f78361332b565b9050808760000151116128e65760405162461bcd60e51b815260206004820152604d602482015260008051602061365f83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b031916600081900361296b5760405162461bcd60e51b8152602060048201526048602482015260008051602061365f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c603781116129ec5760405162461bcd60e51b8152602060048201526046602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b6129f68184613387565b895111612a6c5760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b612a77836001613387565b9750955060019450612a899350505050565b9193909250565b6000611d4d82612ca5565b60606000826001600160401b03811115612ab757612ab7612ee4565b6040519080825280601f01601f191660200182016040528015612ae1576020820181803683370190505b50905082600003612af3579050611ab3565b6000612aff8587613387565b90506020820160005b85811015612b20578281015182820152602001612b08565b85811115612b2f576000868301525b50919695505050505050565b6060611d4d612b4983612da8565b611aba565b6060611d4d826020015160008460000151612a9b565b60608182601f011015612baa5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612bed5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612c345760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612c5357604051915060008252602082016040526120be565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612c8c578051835260209283019201612c74565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612cfc5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612d0a856123cd565b919450925090506000816001811115612d2557612d25612e14565b14612d725760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612d849190613387565b80519091506020841015612d9e5760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612ddd5760405162461bcd60e51b81526004016101bb906135ee565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612e0d57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612e3e57612e3e612e14565b91905290565b6020810160028310612e3e57612e3e612e14565b60008083601f840112612e6a57600080fd5b5081356001600160401b03811115612e8157600080fd5b602083019150836020828501011115612e9957600080fd5b9250929050565b60008083601f840112612eb257600080fd5b5081356001600160401b03811115612ec957600080fd5b6020830191508360208260051b8501011115612e9957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612f2257612f22612ee4565b604052919050565b600082601f830112612f3b57600080fd5b81356001600160401b03811115612f5457612f54612ee4565b612f67601f8201601f1916602001612efa565b818152846020838601011115612f7c57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612fab57600080fd5b50919050565b6000806000806000806000806000806101408b8d031215612fd157600080fd5b8a356001600160401b0380821115612fe857600080fd5b612ff48e838f01612e58565b909c509a5060208d013591508082111561300d57600080fd5b6130198e838f01612ea0565b909a50985060408d0135975060608d013591508082111561303957600080fd5b6130458e838f01612ea0565b909750955060808d013591508082111561305e57600080fd5b5061306b8d828e01612f2a565b93505060a08b013591506130828c60c08d01612f99565b90509295989b9194979a5092959850565b803563ffffffff8116811461120157600080fd5b6000602082840312156130b957600080fd5b611ab382613093565b6001600160a01b038116811461060657600080fd5b6080810163ffffffff6130e984613093565b16825260208301356130fa816130c2565b6001600160a01b039081166020840152604084013590613119826130c2565b166040830152606092830135929091019190915290565b60005b8381101561314b578181015183820152602001613133565b50506000910152565b6000815180845261316c816020860160208601613130565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526131be60a0820187613154565b60408401959095525050606001529392505050565b80356001600160401b038116811461120157600080fd5b600080604083850312156131fd57600080fd5b613206836131d3565b9150613214602084016131d3565b90509250929050565b60006020828403121561322f57600080fd5b8151611ab3816130c2565b60006020828403121561324c57600080fd5b5051919050565b60006001600160401b038084111561326d5761326d612ee4565b8360051b602061327e818301612efa565b86815291850191818101903684111561329657600080fd5b865b848110156132ca578035868111156132b05760008081fd5b6132bc36828b01612f2a565b845250918301918301613298565b50979650505050505050565b6000602082840312156132e857600080fd5b8135611ab3816130c2565b60006020828403121561330557600080fd5b81518015158114611ab357600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611d4d57611d4d613315565b634e487b7160e01b600052601260045260246000fd5b6000826133635761336361333e565b500490565b600081600019048311821515161561338257613382613315565b500290565b80820180821115611d4d57611d4d613315565b6001600160401b03828116828216039080821115611dfc57611dfc613315565b6000826133c9576133c961333e565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561345057845183529383019391830191600101613434565b505084810360a0860152610c778187613154565b60008251613476818460208701613130565b9190910192915050565b60006020828403121561349257600080fd5b81516001600160e01b031981168114611ab357600080fd5b600060ff8316806134bd576134bd61333e565b8060ff84160691505092915050565b60ff8281168282160390811115611d4d57611d4d613315565b6000600182016134f7576134f7613315565b5060010190565b600181815b8085111561353957816000190482111561351f5761351f613315565b8085161561352c57918102915b93841c9390800290613503565b509250929050565b60008261355057506001611d4d565b8161355d57506000611d4d565b8160018114613573576002811461357d57613599565b6001915050611d4d565b60ff84111561358e5761358e613315565b50506001821b611d4d565b5060208310610133831016604e8410600b84101617156135bc575081810a611d4d565b6135c683836134fe565b80600019048211156135da576135da613315565b029392505050565b6000611ab38383613541565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a264697066735822122026db42a5fa22e30691e0bb7da88d8b225a81d80765f2b503c5bdcc5ee1a38b9064736f6c63430008100033", - "sourceMap": "678:5426:124:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633cca331c1461004657806394259c6c1461007f578063bbe6d642146100af575b600080fd5b610069610054366004612dfb565b60016020526000908152604090205460ff1681565b6040516100769190612e2a565b60405180910390f35b6100a261008d366004612dfb565b60026020526000908152604090205460ff1681565b6040516100769190612e44565b6100c26100bd366004612fb1565b6100c4565b005b6100d96100d460208301836130a7565b610423565b6100ee6100e960208301836130a7565b610609565b60008160405160200161010191906130d7565b60405160208183030381529060405280519060200120905060008b8b868685604051602001610134959493929190613180565b60408051601f19818403018152919052805160209091012090506000808281526001602052604090205460ff16600281111561017257610172612e14565b146101c45760405162461bcd60e51b815260206004820152601760248201527f4576656e7420616c7265616479207075626c697368656400000000000000000060448201526064015b60405180910390fd5b6000806101d38d8f018f6131ea565b90925090506101ee826101e960208801886130a7565b6106be565b600080546001600160a01b0316637599735c61020d60208901896130a7565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610273919061321d565b6040516356f90d7960e01b81526001600160401b03851660048201526001600160a01b0391909116906356f90d7990602401602060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e6919061323a565b90508061032d5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016101bb565b600061037e8c8f8f8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925089915088905061037960208e018e6130a7565b610a7c565b9050806103cd5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016101bb565b6000806103fd6103dd8d8f613253565b8f8d8d8d60200160208101906103f391906132d6565b8e60600135610c86565b9150915061040f888a89888686610fd1565b505050505050505050505050505050505050565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610496919061321d565b6001600160a01b0316036104e75760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610535573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610559919061321d565b6001600160a01b0316632bcccca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba91906132f3565b6106065760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016101bb565b50565b6000546040516306d5cf8360e31b815263ffffffff831660048201526001600160a01b03909116906336ae7c1890602401602060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b91906132f3565b156106065760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610731919061321d565b6001600160a01b0316036107825760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016101bb565b600054604051631d665cd760e21b815263ffffffff831660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f4919061321d565b604051638bc33af360e01b81526001600160401b03841660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610867919061323a565b6000036108b65760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016101bb565b60008054604051631d665cd760e21b815263ffffffff841660048201526001600160a01b0390911690637599735c90602401602060405180830381865afa158015610905573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610929919061321d565b604051638bc33af360e01b81526001600160401b03851660048201526001600160a01b039190911690638bc33af390602401602060405180830381865afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c919061323a565b6109a6904261332b565b905060008054906101000a90046001600160a01b03166001600160a01b031663e4407b156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d919061323a565b811015610a775760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016101bb565b505050565b600080610a88836111c6565b9050600081856001600160401b031610610aa357601b610aa6565b60075b60ff169050600082866001600160401b031610610ae257612000610ad3846001600160401b03891661332b565b610add9190613354565b610af7565b610af76120006001600160401b038816613354565b90506000866001600160401b0316886001600160401b031603610b365750600b610b2381610200613368565b610b2f90610183613387565b9050610c6b565b612000610b43888a61339a565b6001600160401b031611610ba55750600b610b5f816020613368565b610b6a906006613387565b9050610b816120006001600160401b0389166133ba565b610b8d61200083613368565b610b979190613387565b9050610b2381610200613368565b876001600160401b0316876001600160401b03161015610c235750600b82610bce826020613368565b610bd89190613387565b9050610be5816002613368565b610bf0906000613387565b905081610c01630100000083613368565b610c0b9190613387565b9050610c18816002613368565b610b6a906001613387565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016101bb565b610c778b828c8c611206565b9b9a5050505050505050505050565b6060806000610c96878a8a611220565b9050600081600081518110610cad57610cad6133ce565b01602001516001600160f81b03191690506000600160f81b821480610cdf5750600160f91b6001600160f81b03198316145b15610cec57506001610d51565b600360fe1b6001600160f81b0319831610610d0957506000610d51565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016101bb565b600060208401905060006040518060400160405280848751610d73919061332b565b8152602001610d828585613387565b905290506000610d9182611aba565b90508051600414610ddd5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016101bb565b6000610e0282600381518110610df557610df56133ce565b6020026020010151611aba565b905080518c10610e545760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016101bb565b6000610e6b828e81518110610df557610df56133ce565b90506000610e9282600081518110610e8557610e856133ce565b6020026020010151611cdf565b90508c6001600160a01b0316816001600160a01b031614610f065760405162461bcd60e51b815260206004820152602860248201527f4576656e7420776173206e6f7420656d697474656420627920736f757263652060448201526718dbdb9d1c9858dd60c21b60648201526084016101bb565b6000610f26610f2184600181518110610df557610df56133ce565b611d53565b90508c81600081518110610f3c57610f3c6133ce565b602002602001015114610f915760405162461bcd60e51b815260206004820152601e60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368000060448201526064016101bb565b6000610fb684600281518110610fa957610fa96133ce565b6020026020010151611e03565b919c50909a5050505050505050505050965096945050505050565b6000606081635160951d60e11b89610fec60208b018b6130a7565b610ffc60408c0160208d016132d6565b898989604051602401611014969594939291906133e4565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925291506110589060608a01908a016132d6565b6001600160a01b03168160405161106f9190613464565b6000604051808303816000865af19150503d80600081146110ac576040519150601f19603f3d011682016040523d82523d6000602084013e6110b1565b606091505b5080519194509250600091506020036110f1576000828060200190518101906110da9190613480565b6001600160e01b031916635160951d60e11b149150505b8280156110fb5750805b1561111e576000878152600160205260409020805460ff1916600217905561113b565b6000878152600160208190526040909120805460ff191690911790555b61114b6040890160208a016132d6565b6001600160a01b031661116160208a018a6130a7565b63ffffffff168a7f47168527703e2b64019824d3deab18f025015c94de1e8bfe6091ab32e02d12ed61119960608d0160408e016132d6565b604080516001600160a01b03909216825288151560208301520160405180910390a4505050505050505050565b60008163ffffffff166001036111e05750625ec000919050565b8163ffffffff166005036111f85750624f4000919050565b50600019919050565b919050565b600080611214868686611f2f565b90921495945050505050565b6060600084511161126b5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016101bb565b6000611276846120c7565b90506000611283866121b5565b905060008460405160200161129a91815260200190565b60405160208183030381529060405290506000805b8451811015611a5c5760008582815181106112cc576112cc6133ce565b60200260200101519050845183111561133e5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016101bb565b826000036113dd578051805160209182012060405161138c9261136692910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6113d85760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101bb565b6114d3565b80515160201161146357805180516020918201206040516114079261136692910190815260200190565b6113d85760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016101bb565b8051845160208087019190912082519190920120146114d35760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016101bb565b6114df60106001613387565b8160200151510361167f578451830361161757600061150e8260200151601081518110610fa957610fa96133ce565b905060008151116115875760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101bb565b60018751611595919061332b565b83146116095760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101bb565b9650611ab395505050505050565b600085848151811061162b5761162b6133ce565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110611656576116566133ce565b60200260200101519050611669816122cf565b9550611676600186613387565b94505050611a49565b6002816020015151036119f0576000611697826122f4565b90506000816000815181106116ae576116ae6133ce565b016020015160f81c905060006116c56002836134aa565b6116d09060026134cc565b905060006116e1848360ff16612318565b905060006116ef8a89612318565b905060006116fd838361234e565b9050808351146117755760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101bb565b60ff85166002148061178a575060ff85166003145b1561193057808251146118055760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101bb565b60006118218860200151600181518110610fa957610fa96133ce565b9050600081511161189a5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101bb565b60018d516118a8919061332b565b891461191c5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101bb565b9c50611ab39b505050505050505050505050565b60ff85161580611943575060ff85166001145b156119825761196f8760200151600181518110611962576119626133ce565b60200260200101516122cf565b995061197b818a613387565b98506119e5565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016101bb565b505050505050611a49565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016101bb565b5080611a54816134e5565b9150506112af565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016101bb565b9392505050565b60606000806000611aca856123cd565b919450925090506001816001811115611ae557611ae5612e14565b14611b585760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016101bb565b8451611b648385613387565b14611bcc5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016101bb565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611be55790505090506000845b8751811015611cd357600080611c586040518060400160405280858d60000151611c3c919061332b565b8152602001858d60200151611c519190613387565b90526123cd565b509150915060405180604001604052808383611c749190613387565b8152602001848c60200151611c899190613387565b815250858581518110611c9e57611c9e6133ce565b6020908102919091010152611cb4600185613387565b9350611cc08183613387565b611cca9084613387565b92505050611c12565b50815295945050505050565b8051600090600103611cf357506000919050565b8151601514611d445760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016101bb565b611d4d82612a90565b92915050565b6060600082516001600160401b03811115611d7057611d70612ee4565b604051908082528060200260200182016040528015611d99578160200160208202803683370190505b50905060005b8351811015611dfc57611dca848281518110611dbd57611dbd6133ce565b6020026020010151612a90565b60001b828281518110611ddf57611ddf6133ce565b602090810291909101015280611df4816134e5565b915050611d9f565b5092915050565b60606000806000611e13856123cd565b919450925090506000816001811115611e2e57611e2e612e14565b14611ea15760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101bb565b611eab8284613387565b855114611f175760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016101bb565b611f2685602001518484612a9b565b95945050505050565b60008282516001611f409190613387565b611f4b9060026135e2565b11611f5557600080fd5b8360005b846001146120be57611f6c6002866133ba565b60010361200b576002848281518110611f8757611f876133ce565b602002602001015183604051602001611faa929190918252602082015260400190565b60408051601f1981840301815290829052611fc491613464565b602060405180830381855afa158015611fe1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612004919061323a565b915061209f565b600282858381518110612020576120206133ce565b6020026020010151604051602001612042929190918252602082015260400190565b60408051601f198184030181529082905261205c91613464565b602060405180830381855afa158015612079573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061209c919061323a565b91505b6120aa600286613354565b9450806120b6816134e5565b915050611f59565b50949350505050565b80516060906000816001600160401b038111156120e6576120e6612ee4565b60405190808252806020026020018201604052801561212b57816020015b60408051808201909152606080825260208201528152602001906001900390816121045790505b50905060005b828110156121ad576040518060400160405280868381518110612156576121566133ce565b60200260200101518152602001612185878481518110612178576121786133ce565b6020026020010151612b3b565b81525082828151811061219a5761219a6133ce565b6020908102919091010152600101612131565b509392505050565b805160609060006121c7826002613368565b6001600160401b038111156121de576121de612ee4565b6040519080825280601f01601f191660200182016040528015612208576020820181803683370190505b5090506000805b838110156122c557858181518110612229576122296133ce565b6020910101516001600160f81b03198116925060041c60ff60f41b1683612251836002613368565b81518110612261576122616133ce565b60200101906001600160f81b031916908160001a905350600f60f81b82168361228b836002613368565b612296906001613387565b815181106122a6576122a66133ce565b60200101906001600160f81b031916908160001a90535060010161220f565b5090949350505050565b606060208260000151106122eb576122e682611e03565b611d4d565b611d4d82612b4e565b6060611d4d6123138360200151600081518110610fa957610fa96133ce565b6121b5565b6060825182106123375750604080516020810190915260008152611d4d565b611ab38383848651612349919061332b565b612b64565b60008060008351855110612363578351612366565b84515b90505b80821080156123bd5750838281518110612385576123856133ce565b602001015160f81c60f81b6001600160f81b0319168583815181106123ac576123ac6133ce565b01602001516001600160f81b031916145b156121ad57816001019150612369565b6000806000808460000151116123f55760405162461bcd60e51b81526004016101bb906135ee565b6020840151805160001a607f811161241a576000600160009450945094505050612a89565b60b7811161257757600061242f60808361332b565b9050808760000151116124af5760405162461bcd60e51b815260206004820152604e602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016101bb565b6001838101516001600160f81b03191690821415806124dc5750600160ff1b6001600160f81b0319821610155b6125645760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016101bb565b5060019550935060009250612a89915050565b60bf81116127b857600061258c60b78361332b565b90508087600001511161260f5760405162461bcd60e51b8152602060048201526051602482015260008051602061365f83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016101bb565b60018301516001600160f81b03191660008190036126965760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016101bb565b600184015160088302610100031c603781116127195760405162461bcd60e51b8152602060048201526048602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016101bb565b6127238184613387565b89511161279b5760405162461bcd60e51b815260206004820152604c602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016101bb565b6127a6836001613387565b9750955060009450612a899350505050565b60f7811161285a5760006127cd60c08361332b565b9050808760000151116128495760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016101bb565b600195509350849250612a89915050565b600061286760f78361332b565b9050808760000151116128e65760405162461bcd60e51b815260206004820152604d602482015260008051602061365f83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016101bb565b60018301516001600160f81b031916600081900361296b5760405162461bcd60e51b8152602060048201526048602482015260008051602061365f83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016101bb565b600184015160088302610100031c603781116129ec5760405162461bcd60e51b8152602060048201526046602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016101bb565b6129f68184613387565b895111612a6c5760405162461bcd60e51b815260206004820152604a602482015260008051602061365f83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016101bb565b612a77836001613387565b9750955060019450612a899350505050565b9193909250565b6000611d4d82612ca5565b60606000826001600160401b03811115612ab757612ab7612ee4565b6040519080825280601f01601f191660200182016040528015612ae1576020820181803683370190505b50905082600003612af3579050611ab3565b6000612aff8587613387565b90506020820160005b85811015612b20578281015182820152602001612b08565b85811115612b2f576000868301525b50919695505050505050565b6060611d4d612b4983612da8565b611aba565b6060611d4d826020015160008460000151612a9b565b60608182601f011015612baa5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b828284011015612bed5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101bb565b81830184511015612c345760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101bb565b606082158015612c5357604051915060008252602082016040526120be565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612c8c578051835260209283019201612c74565b5050858452601f01601f19166040525050949350505050565b6000602182600001511115612cfc5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000806000612d0a856123cd565b919450925090506000816001811115612d2557612d25612e14565b14612d725760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016101bb565b6000838660200151612d849190613387565b80519091506020841015612d9e5760208490036101000a90045b9695505050505050565b60408051808201909152600080825260208201526000825111612ddd5760405162461bcd60e51b81526004016101bb906135ee565b50604080518082019091528151815260209182019181019190915290565b600060208284031215612e0d57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612e3e57612e3e612e14565b91905290565b6020810160028310612e3e57612e3e612e14565b60008083601f840112612e6a57600080fd5b5081356001600160401b03811115612e8157600080fd5b602083019150836020828501011115612e9957600080fd5b9250929050565b60008083601f840112612eb257600080fd5b5081356001600160401b03811115612ec957600080fd5b6020830191508360208260051b8501011115612e9957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612f2257612f22612ee4565b604052919050565b600082601f830112612f3b57600080fd5b81356001600160401b03811115612f5457612f54612ee4565b612f67601f8201601f1916602001612efa565b818152846020838601011115612f7c57600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215612fab57600080fd5b50919050565b6000806000806000806000806000806101408b8d031215612fd157600080fd5b8a356001600160401b0380821115612fe857600080fd5b612ff48e838f01612e58565b909c509a5060208d013591508082111561300d57600080fd5b6130198e838f01612ea0565b909a50985060408d0135975060608d013591508082111561303957600080fd5b6130458e838f01612ea0565b909750955060808d013591508082111561305e57600080fd5b5061306b8d828e01612f2a565b93505060a08b013591506130828c60c08d01612f99565b90509295989b9194979a5092959850565b803563ffffffff8116811461120157600080fd5b6000602082840312156130b957600080fd5b611ab382613093565b6001600160a01b038116811461060657600080fd5b6080810163ffffffff6130e984613093565b16825260208301356130fa816130c2565b6001600160a01b039081166020840152604084013590613119826130c2565b166040830152606092830135929091019190915290565b60005b8381101561314b578181015183820152602001613133565b50506000910152565b6000815180845261316c816020860160208601613130565b601f01601f19169290920160200192915050565b60808152846080820152848660a0830137600060a086830101526000601f19601f870116820160a08382030160208401526131be60a0820187613154565b60408401959095525050606001529392505050565b80356001600160401b038116811461120157600080fd5b600080604083850312156131fd57600080fd5b613206836131d3565b9150613214602084016131d3565b90509250929050565b60006020828403121561322f57600080fd5b8151611ab3816130c2565b60006020828403121561324c57600080fd5b5051919050565b60006001600160401b038084111561326d5761326d612ee4565b8360051b602061327e818301612efa565b86815291850191818101903684111561329657600080fd5b865b848110156132ca578035868111156132b05760008081fd5b6132bc36828b01612f2a565b845250918301918301613298565b50979650505050505050565b6000602082840312156132e857600080fd5b8135611ab3816130c2565b60006020828403121561330557600080fd5b81518015158114611ab357600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611d4d57611d4d613315565b634e487b7160e01b600052601260045260246000fd5b6000826133635761336361333e565b500490565b600081600019048311821515161561338257613382613315565b500290565b80820180821115611d4d57611d4d613315565b6001600160401b03828116828216039080821115611dfc57611dfc613315565b6000826133c9576133c961333e565b500690565b634e487b7160e01b600052603260045260246000fd5b86815263ffffffff86166020808301919091526001600160a01b03861660408301526001600160401b038516606083015260c06080830181905284519083018190526000918581019160e0850190845b8181101561345057845183529383019391830191600101613434565b505084810360a0860152610c778187613154565b60008251613476818460208701613130565b9190910192915050565b60006020828403121561349257600080fd5b81516001600160e01b031981168114611ab357600080fd5b600060ff8316806134bd576134bd61333e565b8060ff84160691505092915050565b60ff8281168282160390811115611d4d57611d4d613315565b6000600182016134f7576134f7613315565b5060010190565b600181815b8085111561353957816000190482111561351f5761351f613315565b8085161561352c57918102915b93841c9390800290613503565b509250929050565b60008261355057506001611d4d565b8161355d57506000611d4d565b8160018114613573576002811461357d57613599565b6001915050611d4d565b60ff84111561358e5761358e613315565b50506001821b611d4d565b5060208310610133831016604e8410600b84101617156135bc575081810a611d4d565b6135c683836134fe565b80600019048211156135da576135da613315565b029392505050565b6000611ab38383613541565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a264697066735822122026db42a5fa22e30691e0bb7da88d8b225a81d80765f2b503c5bdcc5ee1a38b9064736f6c63430008100033", - "sourceMap": "678:5426:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;723:59;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1533:1766:124:-;;;;;;:::i;:::-;;:::i;:::-;;;1847:57;1877:26;;;;:12;:26;:::i;:::-;1847:29;:57::i;:::-;1914:44;1931:26;;;;:12;:26;:::i;:::-;1914:16;:44::i;:::-;2045:22;2091:12;2080:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;2070:35;;;;;;2045:60;;2115:18;2169:17;;2188;2207:8;2217:14;2158:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2158:74:124;;;;;;;;;2148:85;;2158:74;2148:85;;;;;-1:-1:-1;2295:26:124;2264:27;;;;:15;:27;;;;;;;;:57;;;;;;;;:::i;:::-;;2243:115;;;;-1:-1:-1;;;2243:115:124;;6848:2:146;2243:115:124;;;6830:21:146;6887:2;6867:18;;;6860:30;6926:25;6906:18;;;6899:53;6969:18;;2243:115:124;;;;;;;;;2370:14;;2403:47;;;;2414:17;2403:47;:::i;:::-;2369:81;;-1:-1:-1;2369:81:124;-1:-1:-1;2460:60:124;2369:81;2493:26;;;;:12;:26;:::i;:::-;2460:23;:60::i;:::-;2530:18;2563:15;;-1:-1:-1;;;;;2563:15:124;:28;2592:26;;;;:12;:26;:::i;:::-;2563:56;;-1:-1:-1;;;;;;2563:56:124;;;;;;;;7597:23:146;;;;2563:56:124;;;7579:42:146;7552:18;;2563:56:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;-1:-1:-1;;;2563:73:124;;-1:-1:-1;;;;;8073:31:146;;2563:73:124;;;8055:50:146;-1:-1:-1;;;;;2563:64:124;;;;;;;8028:18:146;;2563:73:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2530:106;-1:-1:-1;2530:106:124;2646:58;;;;-1:-1:-1;;;2646:58:124;;8507:2:146;2646:58:124;;;8489:21:146;8546:2;8526:18;;;8519:30;-1:-1:-1;;;8565:18:146;;;8558:51;8626:18;;2646:58:124;8305:345:146;2646:58:124;2714:12;2729:134;2765:12;2779:17;;2729:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2798:10:124;;-1:-1:-1;2810:7:124;;-1:-1:-1;2819:6:124;;-1:-1:-1;2827:26:124;;;;:12;:26;:::i;:::-;2729:22;:134::i;:::-;2714:149;;2881:7;2873:47;;;;-1:-1:-1;;;2873:47:124;;8857:2:146;2873:47:124;;;8839:21:146;8896:2;8876:18;;;8869:30;8935:29;8915:18;;;8908:57;8982:18;;2873:47:124;8655:351:146;2873:47:124;2932:28;;2988:211;;3023:12;;2988:211;:::i;:::-;3049:12;3075:17;3106:8;3128:12;:26;;;;;;;;;;:::i;:::-;3168:12;:21;;;2988;:211::i;:::-;2931:268;;;;3210:82;3219:14;3235:12;3249:10;3261:6;3269:11;3282:9;3210:8;:82::i;:::-;1837:1462;;;;;;;;1533:1766;;;;;;;;;;:::o;3385:307::-;3543:1;3493:15;;:37;;-1:-1:-1;;;3493:37:124;;7609:10:146;7597:23;;3493:37:124;;;7579:42:146;-1:-1:-1;;;;;3493:15:124;;;;:28;;7552:18:146;;3493:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3485:60:124;;3464:119;;;;-1:-1:-1;;;3464:119:124;;10404:2:146;3464:119:124;;;10386:21:146;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:146;;;10455:54;10526:18;;3464:119:124;10202:348:146;3464:119:124;3601:15;;:37;;-1:-1:-1;;;3601:37:124;;7609:10:146;7597:23;;3601:37:124;;;7579:42:146;-1:-1:-1;;;;;3601:15:124;;;;:28;;7552:18:146;;3601:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3601:48:124;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3593:92;;;;-1:-1:-1;;;3593:92:124;;11039:2:146;3593:92:124;;;11021:21:146;11078:2;11058:18;;;11051:30;11117:31;11097:18;;;11090:59;11166:18;;3593:92:124;10837:353:146;3593:92:124;3385:307;:::o;3753:137::-;3828:15;;:31;;-1:-1:-1;;;3828:31:124;;7609:10:146;7597:23;;3828:31:124;;;7579:42:146;-1:-1:-1;;;;;3828:15:124;;;;:22;;7552:18:146;;3828:31:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3827:32;3819:64;;;;-1:-1:-1;;;3819:64:124;;11397:2:146;3819:64:124;;;11379:21:146;11436:2;11416:18;;;11409:30;-1:-1:-1;;;11455:18:146;;;11448:49;11514:18;;3819:64:124;11195:343:146;3960:620:124;4125:1;4075:15;;:37;;-1:-1:-1;;;4075:37:124;;7609:10:146;7597:23;;4075:37:124;;;7579:42:146;-1:-1:-1;;;;;4075:15:124;;;;:28;;7552:18:146;;4075:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4067:60:124;;4046:119;;;;-1:-1:-1;;;4046:119:124;;10404:2:146;4046:119:124;;;10386:21:146;10443:2;10423:18;;;10416:30;-1:-1:-1;;;10462:18:146;;;10455:54;10526:18;;4046:119:124;10202:348:146;4046:119:124;4196:15;;:37;;-1:-1:-1;;;4196:37:124;;7609:10:146;7597:23;;4196:37:124;;;7579:42:146;-1:-1:-1;;;;;4196:15:124;;;;:28;;7552:18:146;;4196:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4196:54:124;;-1:-1:-1;;;;;8073:31:146;;4196:54:124;;;8055:50:146;-1:-1:-1;;;;;4196:48:124;;;;;;;8028:18:146;;4196:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4254:1;4196:59;4175:136;;;;-1:-1:-1;;;4175:136:124;;11934:2:146;4175:136:124;;;11916:21:146;11973:2;11953:18;;;11946:30;12012:32;11992:18;;;11985:60;12062:18;;4175:136:124;11732:354:146;4175:136:124;4321:19;4373:15;;:37;;-1:-1:-1;;;4373:37:124;;7609:10:146;7597:23;;4373:37:124;;;7579:42:146;-1:-1:-1;;;;;4373:15:124;;;;:28;;7552:18:146;;4373:37:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;4373:54:124;;-1:-1:-1;;;;;8073:31:146;;4373:54:124;;;8055:50:146;-1:-1:-1;;;;;4373:48:124;;;;;;;8028:18:146;;4373:54:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4355:72;;:15;:72;:::i;:::-;4321:106;;4473:15;;;;;;;;-1:-1:-1;;;;;4473:15:124;-1:-1:-1;;;;;4473:38:124;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4458:11;:55;;4437:136;;;;-1:-1:-1;;;4437:136:124;;12558:2:146;4437:136:124;;;12540:21:146;12597:2;12577:18;;;12570:30;12636:34;12616:18;;;12609:62;-1:-1:-1;;;12687:18:146;;;12680:32;12729:19;;4437:136:124;12356:398:146;4437:136:124;4036:544;3960:620;;:::o;3094:1947:110:-;3330:4;3346:23;3372:46;3404:13;3372:31;:46::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;13826:2:146;4896:40:110;;;13808:21:146;13865:2;13845:18;;;13838:30;13904:32;13884:18;;;13877:60;13954:18;;4896:40:110;13624:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;431:2729:121:-;673:16;691:12;715:18;736:63;751:18;771:13;786:12;736:14;:63::i;:::-;715:84;;809:24;836:5;842:1;836:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;836:8:121;;-1:-1:-1;1486:14:121;-1:-1:-1;;;1514:25:121;;;:54;;-1:-1:-1;;;;;;;;;;1543:25:121;;;1514:54;1510:236;;;-1:-1:-1;1593:1:121;1510:236;;;-1:-1:-1;;;;;;;;;1615:25:121;;;1611:135;;-1:-1:-1;1665:1:121;1611:135;;;1697:38;;-1:-1:-1;;;1697:38:121;;14317:2:146;1697:38:121;;;14299:21:146;14356:2;14336:18;;;14329:30;14395;14375:18;;;14368:58;14443:18;;1697:38:121;14115:352:146;1611:135:121;1842:11;1904:2;1897:5;1893:14;1886:21;;1926:36;1965:133;;;;;;;;2020:6;2005:5;:12;:21;;;;:::i;:::-;1965:133;;;;2074:12;2080:6;2074:3;:12;:::i;:::-;1965:133;;1926:172;-1:-1:-1;2205:38:121;2246:22;1926:172;2246:20;:22::i;:::-;2205:63;;2286:11;:18;2308:1;2286:23;2278:58;;;;-1:-1:-1;;;2278:58:121;;14674:2:146;2278:58:121;;;14656:21:146;14713:2;14693:18;;;14686:30;-1:-1:-1;;;14732:18:146;;;14725:52;14794:18;;2278:58:121;14472:346:146;2278:58:121;2426:31;2460:25;:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;2426:59;;2515:4;:11;2503:9;:23;2495:59;;;;-1:-1:-1;;;2495:59:121;;15025:2:146;2495:59:121;;;15007:21:146;15064:2;15044:18;;;15037:30;15103:25;15083:18;;;15076:53;15146:18;;2495:59:121;14823:347:146;2495:59:121;2564:38;2605:26;:4;2610:9;2605:15;;;;;;;;:::i;:26::-;2564:67;;2706:22;2731:28;:11;2743:1;2731:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;2706:53;;2795:12;-1:-1:-1;;;;;2777:30:121;:14;-1:-1:-1;;;;;2777:30:121;;2769:83;;;;-1:-1:-1;;;2769:83:121;;15377:2:146;2769:83:121;;;15359:21:146;15416:2;15396:18;;;15389:30;15455:34;15435:18;;;15428:62;-1:-1:-1;;;15506:18:146;;;15499:38;15554:19;;2769:83:121;15175:404:146;2769:83:121;2916:23;2942:38;2954:25;:11;2966:1;2954:14;;;;;;;;:::i;:25::-;2942:11;:38::i;:::-;2916:64;;3020:9;3006:6;3013:1;3006:9;;;;;;;;:::i;:::-;;;;;;;2998:31;2990:74;;;;-1:-1:-1;;;2990:74:121;;15786:2:146;2990:74:121;;;15768:21:146;15825:2;15805:18;;;15798:30;15864:32;15844:18;;;15837:60;15914:18;;2990:74:121;15584:354:146;2990:74:121;3075:17;3095:26;:11;3107:1;3095:14;;;;;;;;:::i;:::-;;;;;;;:24;:26::i;:::-;3140:6;;-1:-1:-1;3075:46:121;;-1:-1:-1;;;;;;;;;;;431:2729:121;;;;;;;;;:::o;4705:1397:124:-;4951:12;4973:17;4951:12;-1:-1:-1;;;5143:15:124;5176:27;;;;:13;:27;:::i;:::-;5221;;;;;;;;:::i;:::-;5266:7;5291:12;5321:10;5041:304;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5041:304:124;;;;;;;;;;;;;;-1:-1:-1;;;;;5041:304:124;-1:-1:-1;;;;;;5041:304:124;;;;;;;;;;;-1:-1:-1;5377:29:124;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5377:34:124;5412:11;5377:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5489:11:124;;5359:65;;-1:-1:-1;5359:65:124;-1:-1:-1;5445:22:124;;-1:-1:-1;5504:2:124;5489:17;5485:178;;5523:12;5550:4;5539:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5599:53:124;-1:-1:-1;;;5599:53:124;;-1:-1:-1;;5485:178:124;5677:7;:28;;;;;5688:17;5677:28;5673:215;;;5721:28;;;;:15;:28;;;;;:64;;-1:-1:-1;;5721:64:124;5752:33;5721:64;;;5673:215;;;5816:28;;;;5847:30;5816:28;;;;;;;;:61;;-1:-1:-1;;5816:61:124;;;;;;5673:215;5994:27;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5903:192:124;5953:27;;;;:13;:27;:::i;:::-;5903:192;;5924:15;5903:192;6035:29;;;;;;;;:::i;:::-;5903:192;;;-1:-1:-1;;;;;17834:32:146;;;17816:51;;17910:14;;17903:22;17898:2;17883:18;;17876:50;17789:18;5903:192:124;;;;;;;4941:1161;;;4705:1397;;;;;;:::o;56:776:107:-;125:7;240:13;:18;;257:1;240:18;236:590;;-1:-1:-1;383:7:107;;56:776;-1:-1:-1;56:776:107:o;236:590::-;411:13;:18;;428:1;411:18;407:419;;-1:-1:-1;619:7:107;;56:776;-1:-1:-1;56:776:107:o;407:419::-;-1:-1:-1;;;803:12:107;56:776;-1:-1:-1;56:776:107:o;407:419::-;56:776;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;18139:2:146;3101:49:77;;;18121:21:146;18178:2;18158:18;;;18151:30;-1:-1:-1;;;18197:18:146;;;18190:51;18258:18;;3101:49:77;17937:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;18416:19:146;;18460:2;18451:12;;18287:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;18676:2:146;3636:134:77;;;18658:21:146;18715:2;18695:18;;;18688:30;18754:34;18734:18;;;18727:62;-1:-1:-1;;;18805:18:146;;;18798:44;18859:19;;3636:134:77;18474:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;18416:19:146;;;18460:2;18451:12;;18287:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;19091:2:146;3893:176:77;;;19073:21:146;19130:2;19110:18;;;19103:30;19169:31;19149:18;;;19142:59;19218:18;;3893:176:77;18889:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;18416:19:146;;;18460:2;18451:12;;18287:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;19449:2:146;4222:186:77;;;19431:21:146;19488:2;19468:18;;;19461:30;19527:34;19507:18;;;19500:62;-1:-1:-1;;;19578:18:146;;;19571:37;19625:19;;4222:186:77;19247:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;19857:2:146;4509:156:77;;;19839:21:146;19896:2;19876:18;;;19869:30;19935:34;19915:18;;;19908:62;-1:-1:-1;;;19986:18:146;;;19979:36;20032:19;;4509:156:77;19655:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;5310:52::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;20264:2:146;5384:158:77;;;20246:21:146;20303:2;20283:18;;;20276:30;20342:34;20322:18;;;20315:62;20413:29;20393:18;;;20386:57;20460:19;;5384:158:77;20062:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;20692:2:146;5626:162:77;;;20674:21:146;20731:2;20711:18;;;20704:30;20770:34;20750:18;;;20743:62;20841:28;20821:18;;;20814:56;20887:19;;5626:162:77;20490:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;21437:2:146;7009:171:77;;;21419:21:146;21476:2;21456:18;;;21449:30;21515:34;21495:18;;;21488:62;21586:28;21566:18;;;21559:56;21632:19;;7009:171:77;21235:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;21864:2:146;7843:185:77;;;21846:21:146;21903:2;21883:18;;;21876:30;21942:34;21922:18;;;21915:62;22013:31;21993:18;;;21986:59;22062:19;;7843:185:77;21662:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;22294:2:146;8463:156:77;;;22276:21:146;22333:2;22313:18;;;22306:30;22372:34;22352:18;;;22345:62;22443:27;22423:18;;;22416:55;22488:19;;8463:156:77;22092:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;22720:2:146;8703:160:77;;;22702:21:146;22759:2;22739:18;;;22732:30;22798:34;22778:18;;;22771:62;22869:26;22849:18;;;22842:54;22913:19;;8703:160:77;22518:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;23145:2:146;9439:60:77;;;23127:21:146;23184:2;23164:18;;;23157:30;23223:34;23203:18;;;23196:62;-1:-1:-1;;;23274:18:146;;;23267:48;23332:19;;9439:60:77;22943:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;23564:2:146;9556:50:77;;;23546:21:146;23603:2;23583:18;;;23576:30;23642:34;23622:18;;;23615:62;-1:-1:-1;;;23693:18:146;;;23686:38;23741:19;;9556:50:77;23362:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;24113:2:146;9641:47:77;;;24095:21:146;24152:2;24132:18;;;24125:30;24191:34;24171:18;;;24164:62;-1:-1:-1;;;24242:18:146;;;24235:35;24287:19;;9641:47:77;23911:401:146;2954:6741:77;;;;;;:::o;1978:1895:75:-;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;24519:2:146;2161:136:75;;;24501:21:146;24558:2;24538:18;;;24531:30;24597:34;24577:18;;;24570:62;24668:26;24648:18;;;24641:54;24712:19;;2161:136:75;24317:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;24944:2:146;2308:134:75;;;24926:21:146;24983:2;24963:18;;;24956:30;25022:34;25002:18;;;24995:62;-1:-1:-1;;;25073:18:146;;;25066:48;25131:19;;2308:134:75;24742:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;25363:2:146;12579:55:75;;;25345:21:146;25402:2;25382:18;;;25375:30;25441:28;25421:18;;;25414:56;25487:18;;12579:55:75;25161:350:146;12579:55:75;12668:16;12680:3;12668:11;:16::i;:::-;12645:41;12423:270;-1:-1:-1;;12423:270:75:o;3166:384:121:-;3279:16;3311:23;3351:17;:24;-1:-1:-1;;;;;3337:39:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3337:39:121;;3311:65;;3391:9;3386:135;3410:17;:24;3406:1;:28;3386:135;;;3475:34;:17;3493:1;3475:20;;;;;;;;:::i;:::-;;;;;;;:32;:34::i;:::-;3467:43;;3455:6;3462:1;3455:9;;;;;;;;:::i;:::-;;;;;;;;;;:55;3436:3;;;;:::i;:::-;;;;3386:135;;;-1:-1:-1;3537:6:121;3166:384;-1:-1:-1;;3166:384:121:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;25718:2:146;4505:137:75;;;25700:21:146;25757:2;25737:18;;;25730:30;25796:34;25776:18;;;25769:62;25867:27;25847:18;;;25840:55;25912:19;;4505:137:75;25516:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;26144:2:146;4653:136:75;;;26126:21:146;26183:2;26163:18;;;26156:30;26222:34;26202:18;;;26195:62;-1:-1:-1;;;26273:18:146;;;26266:50;26333:19;;4653:136:75;25942:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;:::-;4800:45;4325:527;-1:-1:-1;;;;;4325:527:75:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;27894:19:146;;;27938:2;27929:12;;27922:28;27975:2;27966:12;;27737:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;27894:19:146;;;27938:2;27929:12;;27922:28;27975:2;27966:12;;27737:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;;-1:-1:-1;1822:5:110;1283:551;-1:-1:-1;;;;1283:551:110:o;10004:422:77:-;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;28674:2:146;6699:156:75;;;28656:21:146;28713:2;28693:18;;;28686:30;-1:-1:-1;;;;;;;;;;;28732:18:146;;;28725:62;28823:34;28803:18;;;28796:62;-1:-1:-1;;;28874:19:146;;;28867:45;28929:19;;6699:156:75;28472:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;29161:2:146;7025:177:75;;;29143:21:146;29200:2;29180:18;;;29173:30;29239:34;29219:18;;;29212:62;29310:34;29290:18;;;29283:62;-1:-1:-1;;;29361:19:146;;;29354:44;29415:19;;7025:177:75;28959:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;29647:2:146;7387:164:75;;;29629:21:146;29686:2;29666:18;;;29659:30;-1:-1:-1;;;;;;;;;;;29705:18:146;;;29698:62;29796:34;29776:18;;;29769:62;-1:-1:-1;;;29847:19:146;;;29840:48;29905:19;;7387:164:75;29445:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;30137:2:146;7721:159:75;;;30119:21:146;30176:2;30156:18;;;30149:30;-1:-1:-1;;;;;;;;;;;30195:18:146;;;30188:62;30286:34;30266:18;;;30259:62;-1:-1:-1;;;30337:19:146;;;30330:41;30388:19;;7721:159:75;29935:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;30620:2:146;8042:142:75;;;30602:21:146;30659:2;30639:18;;;30632:30;-1:-1:-1;;;;;;;;;;;30678:18:146;;;30671:62;30769:34;30749:18;;;30742:62;-1:-1:-1;;;30820:19:146;;;30813:39;30869:19;;8042:142:75;30418:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;31101:2:146;8199:168:75;;;31083:21:146;31140:2;31120:18;;;31113:30;-1:-1:-1;;;;;;;;;;;31159:18:146;;;31152:62;31250:34;31230:18;;;31223:62;-1:-1:-1;;;31301:19:146;;;31294:43;31354:19;;8199:168:75;30899:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;31586:2:146;8617:153:75;;;31568:21:146;31625:2;31605:18;;;31598:30;-1:-1:-1;;;;;;;;;;;31644:18:146;;;31637:62;31735:34;31715:18;;;31708:62;-1:-1:-1;;;31786:19:146;;;31779:41;31837:19;;8617:153:75;31384:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;32069:2:146;8935:161:75;;;32051:21:146;32108:2;32088:18;;;32081:30;-1:-1:-1;;;;;;;;;;;32127:18:146;;;32120:62;32218:34;32198:18;;;32191:62;-1:-1:-1;;;32269:19:146;;;32262:44;32323:19;;8935:161:75;31867:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;32555:2:146;9266:157:75;;;32537:21:146;32594:2;32574:18;;;32567:30;-1:-1:-1;;;;;;;;;;;32613:18:146;;;32606:62;32704:34;32684:18;;;32677:62;-1:-1:-1;;;32755:19:146;;;32748:39;32804:19;;9266:157:75;32353:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;33036:2:146;9588:141:75;;;33018:21:146;33075:2;33055:18;;;33048:30;-1:-1:-1;;;;;;;;;;;33094:18:146;;;33087:62;33185:34;33165:18;;;33158:62;-1:-1:-1;;;33236:19:146;;;33229:37;33283:19;;9588:141:75;32834:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;33515:2:146;9744:168:75;;;33497:21:146;33554:2;33534:18;;;33527:30;-1:-1:-1;;;;;;;;;;;33573:18:146;;;33566:62;33664:34;33644:18;;;33637:62;-1:-1:-1;;;33715:19:146;;;33708:41;33766:19;;9744:168:75;33313:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;12160:122::-;12224:7;12258:16;12270:3;12258:11;:16::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;4047:125::-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;:::-;4141:8;:24::i;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;33998:2:146;858:50:74;;;33980:21:146;34037:2;34017:18;;;34010:30;-1:-1:-1;;;34056:18:146;;;34049:44;34110:18;;858:50:74;33796:338:146;858:50:74;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;33998:2:146;922:53:74;;;33980:21:146;34037:2;34017:18;;;34010:30;-1:-1:-1;;;34056:18:146;;;34049:44;34110:18;;922:53:74;33796:338:146;922:53:74;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;34341:2:146;989:63:74;;;34323:21:146;34380:2;34360:18;;;34353:30;-1:-1:-1;;;34399:18:146;;;34392:47;34456:18;;989:63:74;34139:341:146;989:63:74;1073:22;1136:15;;1164:1967;;;;3272:4;3266:11;3253:24;;3459:1;3448:9;3441:20;3507:4;3496:9;3492:20;3486:4;3479:34;1129:2398;;1164:1967;1346:4;1340:11;1327:24;;2005:2;1996:7;1992:16;2387:9;2380:17;2374:4;2370:28;2358:9;2347;2343:25;2339:60;2435:7;2431:2;2427:16;2687:6;2673:9;2666:17;2660:4;2656:28;2644:9;2636:6;2632:22;2628:57;2624:70;2461:425;2720:3;2716:2;2713:11;2461:425;;;2858:9;;2847:21;;2761:4;2753:13;;;;2793;2461:425;;;-1:-1:-1;;2904:26:74;;;3112:2;3095:11;-1:-1:-1;;3091:25:74;3085:4;3078:39;-1:-1:-1;;3554:9:74;688:2882;-1:-1:-1;;;;688:2882:74:o;11355:664:75:-;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;34687:2:146;11438:55:75;;;34669:21:146;34726:2;34706:18;;;34699:30;34765:28;34745:18;;;34738:56;34811:18;;11438:55:75;34485:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;34687:2:146;11598:72:75;;;34669:21:146;34726:2;34706:18;;;34699:30;34765:28;34745:18;;;34738:56;34811:18;;11598:72:75;34485:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1385:419::-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;14:180:146:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:146;;14:180;-1:-1:-1;14:180:146:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:255::-;742:2;727:18;;775:1;764:13;;754:47;;781:18;;:::i;846:347::-;897:8;907:6;961:3;954:4;946:6;942:17;938:27;928:55;;979:1;976;969:12;928:55;-1:-1:-1;1002:20:146;;-1:-1:-1;;;;;1034:30:146;;1031:50;;;1077:1;1074;1067:12;1031:50;1114:4;1106:6;1102:17;1090:29;;1166:3;1159:4;1150:6;1142;1138:19;1134:30;1131:39;1128:59;;;1183:1;1180;1173:12;1128:59;846:347;;;;;:::o;1198:367::-;1261:8;1271:6;1325:3;1318:4;1310:6;1306:17;1302:27;1292:55;;1343:1;1340;1333:12;1292:55;-1:-1:-1;1366:20:146;;-1:-1:-1;;;;;1398:30:146;;1395:50;;;1441:1;1438;1431:12;1395:50;1478:4;1470:6;1466:17;1454:29;;1538:3;1531:4;1521:6;1518:1;1514:14;1506:6;1502:27;1498:38;1495:47;1492:67;;;1555:1;1552;1545:12;1570:127;1631:10;1626:3;1622:20;1619:1;1612:31;1662:4;1659:1;1652:15;1686:4;1683:1;1676:15;1702:275;1773:2;1767:9;1838:2;1819:13;;-1:-1:-1;;1815:27:146;1803:40;;-1:-1:-1;;;;;1858:34:146;;1894:22;;;1855:62;1852:88;;;1920:18;;:::i;:::-;1956:2;1949:22;1702:275;;-1:-1:-1;1702:275:146:o;1982:530::-;2024:5;2077:3;2070:4;2062:6;2058:17;2054:27;2044:55;;2095:1;2092;2085:12;2044:55;2131:6;2118:20;-1:-1:-1;;;;;2153:2:146;2150:26;2147:52;;;2179:18;;:::i;:::-;2223:55;2266:2;2247:13;;-1:-1:-1;;2243:27:146;2272:4;2239:38;2223:55;:::i;:::-;2303:2;2294:7;2287:19;2349:3;2342:4;2337:2;2329:6;2325:15;2321:26;2318:35;2315:55;;;2366:1;2363;2356:12;2315:55;2431:2;2424:4;2416:6;2412:17;2405:4;2396:7;2392:18;2379:55;2479:1;2454:16;;;2472:4;2450:27;2443:38;;;;2458:7;1982:530;-1:-1:-1;;;1982:530:146:o;2517:161::-;2582:5;2627:3;2618:6;2613:3;2609:16;2605:26;2602:46;;;2644:1;2641;2634:12;2602:46;-1:-1:-1;2666:6:146;2517:161;-1:-1:-1;2517:161:146:o;2683:1546::-;2914:6;2922;2930;2938;2946;2954;2962;2970;2978;2986;3039:3;3027:9;3018:7;3014:23;3010:33;3007:53;;;3056:1;3053;3046:12;3007:53;3096:9;3083:23;-1:-1:-1;;;;;3166:2:146;3158:6;3155:14;3152:34;;;3182:1;3179;3172:12;3152:34;3221:58;3271:7;3262:6;3251:9;3247:22;3221:58;:::i;:::-;3298:8;;-1:-1:-1;3195:84:146;-1:-1:-1;3386:2:146;3371:18;;3358:32;;-1:-1:-1;3402:16:146;;;3399:36;;;3431:1;3428;3421:12;3399:36;3470:72;3534:7;3523:8;3512:9;3508:24;3470:72;:::i;:::-;3561:8;;-1:-1:-1;3444:98:146;-1:-1:-1;3643:2:146;3628:18;;3615:32;;-1:-1:-1;3700:2:146;3685:18;;3672:32;;-1:-1:-1;3716:16:146;;;3713:36;;;3745:1;3742;3735:12;3713:36;3784:72;3848:7;3837:8;3826:9;3822:24;3784:72;:::i;:::-;3875:8;;-1:-1:-1;3758:98:146;-1:-1:-1;3963:3:146;3948:19;;3935:33;;-1:-1:-1;3980:16:146;;;3977:36;;;4009:1;4006;3999:12;3977:36;;4032:51;4075:7;4064:8;4053:9;4049:24;4032:51;:::i;:::-;4022:61;;;4130:3;4119:9;4115:19;4102:33;4092:43;;4154:69;4215:7;4209:3;4198:9;4194:19;4154:69;:::i;:::-;4144:79;;2683:1546;;;;;;;;;;;;;:::o;4234:163::-;4301:20;;4361:10;4350:22;;4340:33;;4330:61;;4387:1;4384;4377:12;4402:184;4460:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:52;;;4529:1;4526;4519:12;4481:52;4552:28;4570:9;4552:28;:::i;4591:131::-;-1:-1:-1;;;;;4666:31:146;;4656:42;;4646:70;;4712:1;4709;4702:12;4727:684;4925:3;4910:19;;4987:10;4960:25;4978:6;4960:25;:::i;:::-;4956:42;4945:9;4938:61;5046:4;5038:6;5034:17;5021:31;5061;5086:5;5061:31;:::i;:::-;-1:-1:-1;;;;;5168:14:146;;;5161:4;5146:20;;5139:44;5232:4;5220:17;;5207:31;;5247:33;5207:31;5247:33;:::i;:::-;5318:16;5311:4;5296:20;;5289:46;5398:4;5386:17;;;5373:31;5351:20;;;;5344:61;;;;4727:684;:::o;5416:250::-;5501:1;5511:113;5525:6;5522:1;5519:13;5511:113;;;5601:11;;;5595:18;5582:11;;;5575:39;5547:2;5540:10;5511:113;;;-1:-1:-1;;5658:1:146;5640:16;;5633:27;5416:250::o;5671:270::-;5712:3;5750:5;5744:12;5777:6;5772:3;5765:19;5793:76;5862:6;5855:4;5850:3;5846:14;5839:4;5832:5;5828:16;5793:76;:::i;:::-;5923:2;5902:15;-1:-1:-1;;5898:29:146;5889:39;;;;5930:4;5885:50;;5671:270;-1:-1:-1;;5671:270:146:o;5946:695::-;6205:3;6194:9;6187:22;6246:6;6240:3;6229:9;6225:19;6218:35;6304:6;6296;6290:3;6279:9;6275:19;6262:49;6361:1;6355:3;6346:6;6335:9;6331:22;6327:32;6320:43;6168:4;6422:2;6418:7;6413:2;6405:6;6401:15;6397:29;6386:9;6382:45;6489:3;6477:9;6473:2;6469:18;6465:28;6458:4;6447:9;6443:20;6436:58;6511:38;6544:3;6540:2;6536:12;6528:6;6511:38;:::i;:::-;6580:2;6565:18;;6558:34;;;;-1:-1:-1;;6623:2:146;6608:18;6601:34;6503:46;5946:695;-1:-1:-1;;;5946:695:146:o;6998:171::-;7065:20;;-1:-1:-1;;;;;7114:30:146;;7104:41;;7094:69;;7159:1;7156;7149:12;7174:256;7240:6;7248;7301:2;7289:9;7280:7;7276:23;7272:32;7269:52;;;7317:1;7314;7307:12;7269:52;7340:28;7358:9;7340:28;:::i;:::-;7330:38;;7387:37;7420:2;7409:9;7405:18;7387:37;:::i;:::-;7377:47;;7174:256;;;;;:::o;7632:273::-;7724:6;7777:2;7765:9;7756:7;7752:23;7748:32;7745:52;;;7793:1;7790;7783:12;7745:52;7825:9;7819:16;7844:31;7869:5;7844:31;:::i;8116:184::-;8186:6;8239:2;8227:9;8218:7;8214:23;8210:32;8207:52;;;8255:1;8252;8245:12;8207:52;-1:-1:-1;8278:16:146;;8116:184;-1:-1:-1;8116:184:146:o;9011:934::-;9147:9;-1:-1:-1;;;;;9222:2:146;9214:6;9211:14;9208:40;;;9228:18;;:::i;:::-;9274:6;9271:1;9267:14;9300:4;9324:28;9348:2;9344;9340:11;9324:28;:::i;:::-;9386:19;;;9456:14;;;;9421:12;;;;9493:14;9482:26;;9479:46;;;9521:1;9518;9511:12;9479:46;9545:5;9559:353;9575:6;9570:3;9567:15;9559:353;;;9661:3;9648:17;9697:2;9684:11;9681:19;9678:109;;;9741:1;9770:2;9766;9759:14;9678:109;9812:57;9854:14;9840:11;9833:5;9829:23;9812:57;:::i;:::-;9800:70;;-1:-1:-1;9890:12:146;;;;9592;;9559:353;;;-1:-1:-1;9934:5:146;9011:934;-1:-1:-1;;;;;;;9011:934:146:o;9950:247::-;10009:6;10062:2;10050:9;10041:7;10037:23;10033:32;10030:52;;;10078:1;10075;10068:12;10030:52;10117:9;10104:23;10136:31;10161:5;10136:31;:::i;10555:277::-;10622:6;10675:2;10663:9;10654:7;10650:23;10646:32;10643:52;;;10691:1;10688;10681:12;10643:52;10723:9;10717:16;10776:5;10769:13;10762:21;10755:5;10752:32;10742:60;;10798:1;10795;10788:12;12091:127;12152:10;12147:3;12143:20;12140:1;12133:31;12183:4;12180:1;12173:15;12207:4;12204:1;12197:15;12223:128;12290:9;;;12311:11;;;12308:37;;;12325:18;;:::i;12759:127::-;12820:10;12815:3;12811:20;12808:1;12801:31;12851:4;12848:1;12841:15;12875:4;12872:1;12865:15;12891:120;12931:1;12957;12947:35;;12962:18;;:::i;:::-;-1:-1:-1;12996:9:146;;12891:120::o;13016:168::-;13056:7;13122:1;13118;13114:6;13110:14;13107:1;13104:21;13099:1;13092:9;13085:17;13081:45;13078:71;;;13129:18;;:::i;:::-;-1:-1:-1;13169:9:146;;13016:168::o;13189:125::-;13254:9;;;13275:10;;;13272:36;;;13288:18;;:::i;13319:183::-;-1:-1:-1;;;;;13438:10:146;;;13426;;;13422:27;;13461:12;;;13458:38;;;13476:18;;:::i;13507:112::-;13539:1;13565;13555:35;;13570:18;;:::i;:::-;-1:-1:-1;13604:9:146;;13507:112::o;13983:127::-;14044:10;14039:3;14035:20;14032:1;14025:31;14075:4;14072:1;14065:15;14099:4;14096:1;14089:15;15943:1113;16300:25;;;16394:10;16382:23;;16344:2;16362:18;;;16355:51;;;;-1:-1:-1;;;;;16442:32:146;;16437:2;16422:18;;16415:60;-1:-1:-1;;;;;16511:31:146;;16506:2;16491:18;;16484:59;16287:3;16574;16559:19;;16552:32;;;16633:13;;16272:19;;;16655:22;;;16239:4;;16735:15;;;;16708:3;16693:19;;;16239:4;16778:169;16792:6;16789:1;16786:13;16778:169;;;16853:13;;16841:26;;16922:15;;;;16887:12;;;;16814:1;16807:9;16778:169;;;16782:3;;16993:9;16988:3;16984:19;16978:3;16967:9;16963:19;16956:48;17021:29;17046:3;17038:6;17021:29;:::i;17061:287::-;17190:3;17228:6;17222:13;17244:66;17303:6;17298:3;17291:4;17283:6;17279:17;17244:66;:::i;:::-;17326:16;;;;;17061:287;-1:-1:-1;;17061:287:146:o;17353:290::-;17422:6;17475:2;17463:9;17454:7;17450:23;17446:32;17443:52;;;17491:1;17488;17481:12;17443:52;17517:16;;-1:-1:-1;;;;;;17562:32:146;;17552:43;;17542:71;;17609:1;17606;17599:12;20917:157;20947:1;20981:4;20978:1;20974:12;21005:3;20995:37;;21012:18;;:::i;:::-;21064:3;21057:4;21054:1;21050:12;21046:22;21041:27;;;20917:157;;;;:::o;21079:151::-;21169:4;21162:12;;;21148;;;21144:31;;21187:14;;21184:40;;;21204:18;;:::i;23771:135::-;23810:3;23831:17;;;23828:43;;23851:18;;:::i;:::-;-1:-1:-1;23898:1:146;23887:13;;23771:135::o;26363:422::-;26452:1;26495:5;26452:1;26509:270;26530:7;26520:8;26517:21;26509:270;;;26589:4;26585:1;26581:6;26577:17;26571:4;26568:27;26565:53;;;26598:18;;:::i;:::-;26648:7;26638:8;26634:22;26631:55;;;26668:16;;;;26631:55;26747:22;;;;26707:15;;;;26509:270;;;26513:3;26363:422;;;;;:::o;26790:806::-;26839:5;26869:8;26859:80;;-1:-1:-1;26910:1:146;26924:5;;26859:80;26958:4;26948:76;;-1:-1:-1;26995:1:146;27009:5;;26948:76;27040:4;27058:1;27053:59;;;;27126:1;27121:130;;;;27033:218;;27053:59;27083:1;27074:10;;27097:5;;;27121:130;27158:3;27148:8;27145:17;27142:43;;;27165:18;;:::i;:::-;-1:-1:-1;;27221:1:146;27207:16;;27236:5;;27033:218;;27335:2;27325:8;27322:16;27316:3;27310:4;27307:13;27303:36;27297:2;27287:8;27284:16;27279:2;27273:4;27270:12;27266:35;27263:77;27260:159;;;-1:-1:-1;27372:19:146;;;27404:5;;27260:159;27451:34;27476:8;27470:4;27451:34;:::i;:::-;27521:6;27517:1;27513:6;27509:19;27500:7;27497:32;27494:58;;;27532:18;;:::i;:::-;27570:20;;26790:806;-1:-1:-1;;;26790:806:146:o;27601:131::-;27661:5;27690:36;27717:8;27711:4;27690:36;:::i;27989:478::-;28191:2;28173:21;;;28230:2;28210:18;;;28203:30;28269:34;28264:2;28249:18;;28242:62;28340:34;28335:2;28320:18;;28313:62;-1:-1:-1;;;28406:3:146;28391:19;;28384:41;28457:3;28442:19;;27989:478::o", - "linkReferences": {} - }, - "methodIdentifiers": { - "eventsPublished(bytes32)": "3cca331c", - "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": "bbe6d642", - "subscriptions(bytes32)": "94259c6c" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"Publish\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"publishEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"details\":\"This function should be called for every subscriber that is subscribed to the event.\",\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"receiptsRoot\":\"The receipts root which contains the event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"subscription\":\"The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}}},\"title\":\"TelepathyPublisher\",\"version\":1},\"userdoc\":{\"events\":{\"Publish(bytes32,uint32,address,address,bool)\":{\"notice\":\"Emitted when an event is published for a given subscription.\"}},\"kind\":\"user\",\"methods\":{\"publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))\":{\"notice\":\"Publishes an event emit to a callback Subscriber, given an event proof.\"}},\"notice\":\"A contract that can publish events to a ISubscriptionReceiver contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathyPublisher.sol\":\"TelepathyPublisher\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32", - "indexed": true - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address", - "indexed": false - }, - { - "internalType": "bool", - "name": "success", - "type": "bool", - "indexed": false - } - ], - "type": "event", - "name": "Publish", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "eventsPublished", - "outputs": [ - { - "internalType": "enum PublishStatus", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "srcSlotTxSlotPack", - "type": "bytes" - }, - { - "internalType": "bytes32[]", - "name": "receiptsRootProof", - "type": "bytes32[]" - }, - { - "internalType": "bytes32", - "name": "receiptsRoot", - "type": "bytes32" - }, - { - "internalType": "bytes[]", - "name": "receiptProof", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "txIndexRLPEncoded", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "logIndex", - "type": "uint256" - }, - { - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple", - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ] - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "publishEvent" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "subscriptions", - "outputs": [ - { - "internalType": "enum SubscriptionStatus", - "name": "", - "type": "uint8" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": { - "details": "This function should be called for every subscriber that is subscribed to the event.", - "params": { - "logIndex": "The index of the event in our transaction.", - "receiptsRoot": "The receipts root which contains the event.", - "receiptsRootProof": "A merkle proof proving the receiptsRoot in the block header.", - "srcSlotTxSlotPack": "The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.", - "subscription": "The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).", - "txIndexRLPEncoded": "The index of our transaction inside the block RLP encoded." - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "publishEvent(bytes,bytes32[],bytes32,bytes[],bytes,uint256,(uint32,address,address,bytes32))": { - "notice": "Publishes an event emit to a callback Subscriber, given an event proof." - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/pubsub/TelepathyPublisher.sol": "TelepathyPublisher" - }, - "libraries": {} - }, - "sources": { - "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { - "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", - "urls": [ - "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", - "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { - "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", - "urls": [ - "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", - "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { - "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", - "urls": [ - "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", - "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { - "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", - "urls": [ - "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", - "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { - "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", - "urls": [ - "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", - "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { - "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", - "urls": [ - "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", - "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", - "urls": [ - "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", - "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { - "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", - "urls": [ - "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", - "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { - "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", - "urls": [ - "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", - "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { - "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", - "urls": [ - "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", - "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { - "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", - "urls": [ - "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", - "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { - "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", - "urls": [ - "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", - "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { - "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", - "urls": [ - "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", - "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { - "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", - "urls": [ - "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", - "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { - "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", - "urls": [ - "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", - "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { - "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", - "urls": [ - "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", - "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/Bytes.sol": { - "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", - "urls": [ - "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", - "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { - "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", - "urls": [ - "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", - "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { - "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", - "urls": [ - "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", - "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { - "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", - "urls": [ - "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", - "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" - ], - "license": "MIT" - }, - "src/amb/SourceAMB.sol": { - "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", - "urls": [ - "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", - "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" - ], - "license": null - }, - "src/amb/TargetAMB.sol": { - "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", - "urls": [ - "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", - "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" - ], - "license": null - }, - "src/amb/TelepathyAccess.sol": { - "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", - "urls": [ - "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", - "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" - ], - "license": null - }, - "src/amb/TelepathyRouter.sol": { - "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", - "urls": [ - "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", - "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" - ], - "license": null - }, - "src/amb/TelepathyStorage.sol": { - "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", - "urls": [ - "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", - "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" - ], - "license": null - }, - "src/amb/interfaces/ITelepathy.sol": { - "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", - "urls": [ - "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", - "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" - ], - "license": null - }, - "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", - "urls": [ - "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", - "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" - ], - "license": null - }, - "src/libraries/MessageEncoding.sol": { - "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", - "urls": [ - "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", - "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" - ], - "license": null - }, - "src/libraries/SimpleSerialize.sol": { - "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", - "urls": [ - "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", - "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" - ], - "license": null - }, - "src/libraries/StateProofHelper.sol": { - "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", - "urls": [ - "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", - "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" - ], - "license": null - }, - "src/libraries/Typecast.sol": { - "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", - "urls": [ - "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", - "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" - ], - "license": "MIT OR Apache-2.0" - }, - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - }, - "src/pubsub/EventProof.sol": { - "keccak256": "0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e", - "urls": [ - "bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78", - "dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi" - ], - "license": null - }, - "src/pubsub/PubSubStorage.sol": { - "keccak256": "0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b", - "urls": [ - "bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e", - "dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL" - ], - "license": null - }, - "src/pubsub/TelepathyPublisher.sol": { - "keccak256": "0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521", - "urls": [ - "bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f", - "dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe" - ], - "license": null - }, - "src/pubsub/interfaces/IPubSub.sol": { - "keccak256": "0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c", - "urls": [ - "bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a", - "dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt" - ], - "license": null - }, - "src/pubsub/interfaces/ISubscriptionReceiver.sol": { - "keccak256": "0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c", - "urls": [ - "bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb", - "dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/pubsub/TelepathyPublisher.sol", - "id": 48980, - "exportedSymbols": { - "Address": [ - 44319 - ], - "EventProof": [ - 48525 - ], - "IPublisher": [ - 49243 - ], - "ISubscriptionReceiver": [ - 49264 - ], - "PubSubStorage": [ - 48552 - ], - "PublishStatus": [ - 49209 - ], - "SSZ": [ - 43941 - ], - "Subscription": [ - 49156 - ], - "TelepathyPublisher": [ - 48979 - ], - "TelepathyRouter": [ - 42576 - ] - }, - "nodeType": "SourceUnit", - "src": "0:6105:124", - "nodes": [ - { - "id": 48585, - "nodeType": "PragmaDirective", - "src": "0:24:124", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".16" - ] - }, - { - "id": 48588, - "nodeType": "ImportDirective", - "src": "26:75:124", - "nodes": [], - "absolutePath": "src/pubsub/interfaces/IPubSub.sol", - "file": "src/pubsub/interfaces/IPubSub.sol", - "nameLocation": "-1:-1:-1", - "scope": 48980, - "sourceUnit": 49244, - "symbolAliases": [ - { - "foreign": { - "id": 48586, - "name": "Subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49156, - "src": "34:12:124", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 48587, - "name": "IPublisher", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49243, - "src": "48:10:124", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48590, - "nodeType": "ImportDirective", - "src": "102:53:124", - "nodes": [], - "absolutePath": "src/pubsub/EventProof.sol", - "file": "src/pubsub/EventProof.sol", - "nameLocation": "-1:-1:-1", - "scope": 48980, - "sourceUnit": 48526, - "symbolAliases": [ - { - "foreign": { - "id": 48589, - "name": "EventProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48525, - "src": "110:10:124", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48592, - "nodeType": "ImportDirective", - "src": "156:86:124", - "nodes": [], - "absolutePath": "src/pubsub/interfaces/ISubscriptionReceiver.sol", - "file": "src/pubsub/interfaces/ISubscriptionReceiver.sol", - "nameLocation": "-1:-1:-1", - "scope": 48980, - "sourceUnit": 49265, - "symbolAliases": [ - { - "foreign": { - "id": 48591, - "name": "ISubscriptionReceiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49264, - "src": "164:21:124", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48594, - "nodeType": "ImportDirective", - "src": "243:60:124", - "nodes": [], - "absolutePath": "src/amb/TelepathyRouter.sol", - "file": "src/amb/TelepathyRouter.sol", - "nameLocation": "-1:-1:-1", - "scope": 48980, - "sourceUnit": 42577, - "symbolAliases": [ - { - "foreign": { - "id": 48593, - "name": "TelepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42576, - "src": "251:15:124", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48596, - "nodeType": "ImportDirective", - "src": "304:54:124", - "nodes": [], - "absolutePath": "src/libraries/SimpleSerialize.sol", - "file": "src/libraries/SimpleSerialize.sol", - "nameLocation": "-1:-1:-1", - "scope": 48980, - "sourceUnit": 43942, - "symbolAliases": [ - { - "foreign": { - "id": 48595, - "name": "SSZ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43941, - "src": "312:3:124", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48598, - "nodeType": "ImportDirective", - "src": "359:51:124", - "nodes": [], - "absolutePath": "src/libraries/Typecast.sol", - "file": "src/libraries/Typecast.sol", - "nameLocation": "-1:-1:-1", - "scope": 48980, - "sourceUnit": 44340, - "symbolAliases": [ - { - "foreign": { - "id": 48597, - "name": "Address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44319, - "src": "367:7:124", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48600, - "nodeType": "ImportDirective", - "src": "411:59:124", - "nodes": [], - "absolutePath": "src/pubsub/PubSubStorage.sol", - "file": "src/pubsub/PubSubStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 48980, - "sourceUnit": 48553, - "symbolAliases": [ - { - "foreign": { - "id": 48599, - "name": "PubSubStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48552, - "src": "419:13:124", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48602, - "nodeType": "ImportDirective", - "src": "472:64:124", - "nodes": [], - "absolutePath": "src/pubsub/interfaces/IPubSub.sol", - "file": "src/pubsub/interfaces/IPubSub.sol", - "nameLocation": "-1:-1:-1", - "scope": 48980, - "sourceUnit": 49244, - "symbolAliases": [ - { - "foreign": { - "id": 48601, - "name": "PublishStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49209, - "src": "480:13:124", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48979, - "nodeType": "ContractDefinition", - "src": "678:5426:124", - "nodes": [ - { - "id": 48757, - "nodeType": "FunctionDefinition", - "src": "1533:1766:124", - "nodes": [], - "body": { - "id": 48756, - "nodeType": "Block", - "src": "1837:1462:124", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 48629, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48625, - "src": "1877:12:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48630, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1890:13:124", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 49149, - "src": "1877:26:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 48628, - "name": "requireLightClientConsistency", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48790, - "src": "1847:29:124", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", - "typeString": "function (uint32) view" - } - }, - "id": 48631, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1847:57:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48632, - "nodeType": "ExpressionStatement", - "src": "1847:57:124" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 48634, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48625, - "src": "1931:12:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48635, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1944:13:124", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 49149, - "src": "1931:26:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 48633, - "name": "requireNotFrozen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48806, - "src": "1914:16:124", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$__$", - "typeString": "function (uint32) view" - } - }, - "id": 48636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1914:44:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48637, - "nodeType": "ExpressionStatement", - "src": "1914:44:124" - }, - { - "assignments": [ - 48639 - ], - "declarations": [ - { - "constant": false, - "id": 48639, - "mutability": "mutable", - "name": "subscriptionId", - "nameLocation": "2053:14:124", - "nodeType": "VariableDeclaration", - "scope": 48756, - "src": "2045:22:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 48638, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2045:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 48646, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "id": 48643, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48625, - "src": "2091:12:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - ], - "expression": { - "id": 48641, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "2080:3:124", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 48642, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "2084:6:124", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "2080:10:124", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 48644, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2080:24:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 48640, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "2070:9:124", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 48645, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2070:35:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2045:60:124" - }, - { - "assignments": [ - 48648 - ], - "declarations": [ - { - "constant": false, - "id": 48648, - "mutability": "mutable", - "name": "publishKey", - "nameLocation": "2123:10:124", - "nodeType": "VariableDeclaration", - "scope": 48756, - "src": "2115:18:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 48647, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2115:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 48658, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "id": 48652, - "name": "srcSlotTxSlotPack", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48610, - "src": "2169:17:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - { - "id": 48653, - "name": "txIndexRLPEncoded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48620, - "src": "2188:17:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "id": 48654, - "name": "logIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48622, - "src": "2207:8:124", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 48655, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48639, - "src": "2217:14:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 48650, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "2158:3:124", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 48651, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "2162:6:124", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "2158:10:124", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 48656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2158:74:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 48649, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "2148:9:124", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 48657, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2148:85:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2115:118:124" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_enum$_PublishStatus_$49209", - "typeString": "enum PublishStatus" - }, - "id": 48665, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 48660, - "name": "eventsPublished", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48541, - "src": "2264:15:124", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49209_$", - "typeString": "mapping(bytes32 => enum PublishStatus)" - } - }, - "id": 48662, - "indexExpression": { - "id": 48661, - "name": "publishKey", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48648, - "src": "2280:10:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2264:27:124", - "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49209", - "typeString": "enum PublishStatus" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 48663, - "name": "PublishStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49209, - "src": "2295:13:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49209_$", - "typeString": "type(enum PublishStatus)" - } - }, - "id": 48664, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "2309:12:124", - "memberName": "NOT_EXECUTED", - "nodeType": "MemberAccess", - "referencedDeclaration": 49206, - "src": "2295:26:124", - "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49209", - "typeString": "enum PublishStatus" - } - }, - "src": "2264:57:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4576656e7420616c7265616479207075626c6973686564", - "id": 48666, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2323:25:124", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_38898c42571d1d09f1b6fd17083a50dddf3e70a43104a0c556295d55517f3eb3", - "typeString": "literal_string \"Event already published\"" - }, - "value": "Event already published" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_38898c42571d1d09f1b6fd17083a50dddf3e70a43104a0c556295d55517f3eb3", - "typeString": "literal_string \"Event already published\"" - } - ], - "id": 48659, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2243:7:124", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 48667, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2243:115:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48668, - "nodeType": "ExpressionStatement", - "src": "2243:115:124" - }, - { - "assignments": [ - 48670, - 48672 - ], - "declarations": [ - { - "constant": false, - "id": 48670, - "mutability": "mutable", - "name": "srcSlot", - "nameLocation": "2377:7:124", - "nodeType": "VariableDeclaration", - "scope": 48756, - "src": "2370:14:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 48669, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2370:6:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48672, - "mutability": "mutable", - "name": "txSlot", - "nameLocation": "2393:6:124", - "nodeType": "VariableDeclaration", - "scope": 48756, - "src": "2386:13:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 48671, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2386:6:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "id": 48682, - "initialValue": { - "arguments": [ - { - "id": 48675, - "name": "srcSlotTxSlotPack", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48610, - "src": "2414:17:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - { - "components": [ - { - "id": 48677, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2434:6:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 48676, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2434:6:124", - "typeDescriptions": {} - } - }, - { - "id": 48679, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2442:6:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 48678, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2442:6:124", - "typeDescriptions": {} - } - } - ], - "id": 48680, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2433:16:124", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_type$_t_uint64_$_$_t_type$_t_uint64_$_$", - "typeString": "tuple(type(uint64),type(uint64))" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_tuple$_t_type$_t_uint64_$_$_t_type$_t_uint64_$_$", - "typeString": "tuple(type(uint64),type(uint64))" - } - ], - "expression": { - "id": 48673, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "2403:3:124", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 48674, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "2407:6:124", - "memberName": "decode", - "nodeType": "MemberAccess", - "src": "2403:10:124", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 48681, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2403:47:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", - "typeString": "tuple(uint64,uint64)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2369:81:124" - }, - { - "expression": { - "arguments": [ - { - "id": 48684, - "name": "srcSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48670, - "src": "2484:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "expression": { - "id": 48685, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48625, - "src": "2493:12:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48686, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2506:13:124", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 49149, - "src": "2493:26:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 48683, - "name": "requireLightClientDelay", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48866, - "src": "2460:23:124", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint32_$returns$__$", - "typeString": "function (uint64,uint32) view" - } - }, - "id": 48687, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2460:60:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48688, - "nodeType": "ExpressionStatement", - "src": "2460:60:124" - }, - { - "assignments": [ - 48690 - ], - "declarations": [ - { - "constant": false, - "id": 48690, - "mutability": "mutable", - "name": "headerRoot", - "nameLocation": "2538:10:124", - "nodeType": "VariableDeclaration", - "scope": 48756, - "src": "2530:18:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 48689, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2530:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 48699, - "initialValue": { - "arguments": [ - { - "id": 48697, - "name": "srcSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48670, - "src": "2628:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 48693, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48625, - "src": "2592:12:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48694, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2605:13:124", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 49149, - "src": "2592:26:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 48691, - "name": "telepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48536, - "src": "2563:15:124", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42576", - "typeString": "contract TelepathyRouter" - } - }, - "id": 48692, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2579:12:124", - "memberName": "lightClients", - "nodeType": "MemberAccess", - "referencedDeclaration": 42603, - "src": "2563:28:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", - "typeString": "function (uint32) view external returns (contract ILightClient)" - } - }, - "id": 48695, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2563:56:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "id": 48696, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2620:7:124", - "memberName": "headers", - "nodeType": "MemberAccess", - "referencedDeclaration": 47921, - "src": "2563:64:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (uint256) view external returns (bytes32)" - } - }, - "id": 48698, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2563:73:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2530:106:124" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 48706, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 48701, - "name": "headerRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48690, - "src": "2654:10:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 48704, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2676:1:124", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 48703, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2668:7:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 48702, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2668:7:124", - "typeDescriptions": {} - } - }, - "id": 48705, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2668:10:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "2654:24:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "486561646572526f6f74206973206d697373696e67", - "id": 48707, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2680:23:124", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_02a1349704ffa751bbc14e2e3da5665267eb20d6db37ee32898d996c4fc87c26", - "typeString": "literal_string \"HeaderRoot is missing\"" - }, - "value": "HeaderRoot is missing" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_02a1349704ffa751bbc14e2e3da5665267eb20d6db37ee32898d996c4fc87c26", - "typeString": "literal_string \"HeaderRoot is missing\"" - } - ], - "id": 48700, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2646:7:124", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 48708, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2646:58:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48709, - "nodeType": "ExpressionStatement", - "src": "2646:58:124" - }, - { - "assignments": [ - 48711 - ], - "declarations": [ - { - "constant": false, - "id": 48711, - "mutability": "mutable", - "name": "isValid", - "nameLocation": "2719:7:124", - "nodeType": "VariableDeclaration", - "scope": 48756, - "src": "2714:12:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 48710, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2714:4:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 48722, - "initialValue": { - "arguments": [ - { - "id": 48714, - "name": "receiptsRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48615, - "src": "2765:12:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 48715, - "name": "receiptsRootProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48613, - "src": "2779:17:124", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, - { - "id": 48716, - "name": "headerRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48690, - "src": "2798:10:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 48717, - "name": "srcSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48670, - "src": "2810:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 48718, - "name": "txSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48672, - "src": "2819:6:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "expression": { - "id": 48719, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48625, - "src": "2827:12:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2840:13:124", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 49149, - "src": "2827:26:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 48712, - "name": "SSZ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43941, - "src": "2729:3:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SSZ_$43941_$", - "typeString": "type(library SSZ)" - } - }, - "id": 48713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2733:18:124", - "memberName": "verifyReceiptsRoot", - "nodeType": "MemberAccess", - "referencedDeclaration": 43940, - "src": "2729:22:124", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes32_$_t_uint64_$_t_uint64_$_t_uint32_$returns$_t_bool_$", - "typeString": "function (bytes32,bytes32[] memory,bytes32,uint64,uint64,uint32) pure returns (bool)" - } - }, - "id": 48721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2729:134:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2714:149:124" - }, - { - "expression": { - "arguments": [ - { - "id": 48724, - "name": "isValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48711, - "src": "2881:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "496e76616c696420726563656970747320726f6f742070726f6f66", - "id": 48725, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2890:29:124", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a8a86cc8e698cc54f14148f81c68ad3a36e4a61b0a2af21ecc438884515f4870", - "typeString": "literal_string \"Invalid receipts root proof\"" - }, - "value": "Invalid receipts root proof" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a8a86cc8e698cc54f14148f81c68ad3a36e4a61b0a2af21ecc438884515f4870", - "typeString": "literal_string \"Invalid receipts root proof\"" - } - ], - "id": 48723, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2873:7:124", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 48726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2873:47:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48727, - "nodeType": "ExpressionStatement", - "src": "2873:47:124" - }, - { - "assignments": [ - 48732, - 48734 - ], - "declarations": [ - { - "constant": false, - "id": 48732, - "mutability": "mutable", - "name": "eventTopics", - "nameLocation": "2949:11:124", - "nodeType": "VariableDeclaration", - "scope": 48756, - "src": "2932:28:124", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 48730, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2932:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 48731, - "nodeType": "ArrayTypeName", - "src": "2932:9:124", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48734, - "mutability": "mutable", - "name": "eventData", - "nameLocation": "2975:9:124", - "nodeType": "VariableDeclaration", - "scope": 48756, - "src": "2962:22:124", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 48733, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2962:5:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 48746, - "initialValue": { - "arguments": [ - { - "id": 48737, - "name": "receiptProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48618, - "src": "3023:12:124", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, - { - "id": 48738, - "name": "receiptsRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48615, - "src": "3049:12:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 48739, - "name": "txIndexRLPEncoded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48620, - "src": "3075:17:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "id": 48740, - "name": "logIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48622, - "src": "3106:8:124", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 48741, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48625, - "src": "3128:12:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48742, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3141:13:124", - "memberName": "sourceAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 49151, - "src": "3128:26:124", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "expression": { - "id": 48743, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48625, - "src": "3168:12:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48744, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3181:8:124", - "memberName": "eventSig", - "nodeType": "MemberAccess", - "referencedDeclaration": 49155, - "src": "3168:21:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 48735, - "name": "EventProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48525, - "src": "2988:10:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_EventProof_$48525_$", - "typeString": "type(library EventProof)" - } - }, - "id": 48736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2999:10:124", - "memberName": "parseEvent", - "nodeType": "MemberAccess", - "referencedDeclaration": 48473, - "src": "2988:21:124", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory[] memory,bytes32,bytes memory,uint256,address,bytes32) pure returns (bytes32[] memory,bytes memory)" - } - }, - "id": 48745, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2988:211:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bytes32[] memory,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2931:268:124" - }, - { - "expression": { - "arguments": [ - { - "id": 48748, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48639, - "src": "3219:14:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 48749, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48625, - "src": "3235:12:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - { - "id": 48750, - "name": "publishKey", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48648, - "src": "3249:10:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 48751, - "name": "txSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48672, - "src": "3261:6:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 48752, - "name": "eventTopics", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48732, - "src": "3269:11:124", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - { - "id": 48753, - "name": "eventData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48734, - "src": "3282:9:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 48747, - "name": "_publish", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48978, - "src": "3210:8:124", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49156_calldata_ptr_$_t_bytes32_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes32,struct Subscription calldata,bytes32,uint64,bytes32[] memory,bytes memory)" - } - }, - "id": 48754, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3210:82:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48755, - "nodeType": "ExpressionStatement", - "src": "3210:82:124" - } - ] - }, - "baseFunctions": [ - 49242 - ], - "documentation": { - "id": 48608, - "nodeType": "StructuredDocumentation", - "src": "741:787:124", - "text": "@notice Publishes an event emit to a callback Subscriber, given an event proof.\n @param srcSlotTxSlotPack The slot where we want to read the header from and the slot where\n the tx executed, packed as two uint64s.\n @param receiptsRootProof A merkle proof proving the receiptsRoot in the block header.\n @param receiptsRoot The receipts root which contains the event.\n @param txIndexRLPEncoded The index of our transaction inside the block RLP encoded.\n @param logIndex The index of the event in our transaction.\n @param subscription The subscription data (sourceChainId, sourceAddress, callbackAddress, eventSig).\n @dev This function should be called for every subscriber that is subscribed to the event." - }, - "functionSelector": "bbe6d642", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "publishEvent", - "nameLocation": "1542:12:124", - "parameters": { - "id": 48626, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 48610, - "mutability": "mutable", - "name": "srcSlotTxSlotPack", - "nameLocation": "1579:17:124", - "nodeType": "VariableDeclaration", - "scope": 48757, - "src": "1564:32:124", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 48609, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1564:5:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48613, - "mutability": "mutable", - "name": "receiptsRootProof", - "nameLocation": "1625:17:124", - "nodeType": "VariableDeclaration", - "scope": 48757, - "src": "1606:36:124", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 48611, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1606:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 48612, - "nodeType": "ArrayTypeName", - "src": "1606:9:124", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48615, - "mutability": "mutable", - "name": "receiptsRoot", - "nameLocation": "1660:12:124", - "nodeType": "VariableDeclaration", - "scope": 48757, - "src": "1652:20:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 48614, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1652:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48618, - "mutability": "mutable", - "name": "receiptProof", - "nameLocation": "1699:12:124", - "nodeType": "VariableDeclaration", - "scope": 48757, - "src": "1682:29:124", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 48616, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1682:5:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 48617, - "nodeType": "ArrayTypeName", - "src": "1682:7:124", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48620, - "mutability": "mutable", - "name": "txIndexRLPEncoded", - "nameLocation": "1734:17:124", - "nodeType": "VariableDeclaration", - "scope": 48757, - "src": "1721:30:124", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 48619, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1721:5:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48622, - "mutability": "mutable", - "name": "logIndex", - "nameLocation": "1769:8:124", - "nodeType": "VariableDeclaration", - "scope": 48757, - "src": "1761:16:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 48621, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1761:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48625, - "mutability": "mutable", - "name": "subscription", - "nameLocation": "1809:12:124", - "nodeType": "VariableDeclaration", - "scope": 48757, - "src": "1787:34:124", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription" - }, - "typeName": { - "id": 48624, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 48623, - "name": "Subscription", - "nameLocations": [ - "1787:12:124" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49156, - "src": "1787:12:124" - }, - "referencedDeclaration": 49156, - "src": "1787:12:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_storage_ptr", - "typeString": "struct Subscription" - } - }, - "visibility": "internal" - } - ], - "src": "1554:273:124" - }, - "returnParameters": { - "id": 48627, - "nodeType": "ParameterList", - "parameters": [], - "src": "1837:0:124" - }, - "scope": 48979, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 48790, - "nodeType": "FunctionDefinition", - "src": "3385:307:124", - "nodes": [], - "body": { - "id": 48789, - "nodeType": "Block", - "src": "3454:238:124", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 48775, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 48768, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48760, - "src": "3522:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 48766, - "name": "telepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48536, - "src": "3493:15:124", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42576", - "typeString": "contract TelepathyRouter" - } - }, - "id": 48767, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3509:12:124", - "memberName": "lightClients", - "nodeType": "MemberAccess", - "referencedDeclaration": 42603, - "src": "3493:28:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", - "typeString": "function (uint32) view external returns (contract ILightClient)" - } - }, - "id": 48769, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3493:37:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - ], - "id": 48765, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3485:7:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 48764, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3485:7:124", - "typeDescriptions": {} - } - }, - "id": 48770, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3485:46:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 48773, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3543:1:124", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 48772, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3535:7:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 48771, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3535:7:124", - "typeDescriptions": {} - } - }, - "id": 48774, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3535:10:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3485:60:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", - "id": 48776, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3547:26:124", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", - "typeString": "literal_string \"Light client is not set.\"" - }, - "value": "Light client is not set." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", - "typeString": "literal_string \"Light client is not set.\"" - } - ], - "id": 48763, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3464:7:124", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 48777, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3464:119:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48778, - "nodeType": "ExpressionStatement", - "src": "3464:119:124" - }, - { - "expression": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 48782, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48760, - "src": "3630:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 48780, - "name": "telepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48536, - "src": "3601:15:124", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42576", - "typeString": "contract TelepathyRouter" - } - }, - "id": 48781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3617:12:124", - "memberName": "lightClients", - "nodeType": "MemberAccess", - "referencedDeclaration": 42603, - "src": "3601:28:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", - "typeString": "function (uint32) view external returns (contract ILightClient)" - } - }, - "id": 48783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3601:37:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "id": 48784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3639:10:124", - "memberName": "consistent", - "nodeType": "MemberAccess", - "referencedDeclaration": 47909, - "src": "3601:48:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", - "typeString": "function () view external returns (bool)" - } - }, - "id": 48785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3601:50:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c6967687420636c69656e7420697320696e636f6e73697374656e742e", - "id": 48786, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3653:31:124", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2e1e9c043617752a0dea84b31d35e61238519932f65eb40cd6ed13f6fd86c420", - "typeString": "literal_string \"Light client is inconsistent.\"" - }, - "value": "Light client is inconsistent." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2e1e9c043617752a0dea84b31d35e61238519932f65eb40cd6ed13f6fd86c420", - "typeString": "literal_string \"Light client is inconsistent.\"" - } - ], - "id": 48779, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3593:7:124", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 48787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3593:92:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48788, - "nodeType": "ExpressionStatement", - "src": "3593:92:124" - } - ] - }, - "documentation": { - "id": 48758, - "nodeType": "StructuredDocumentation", - "src": "3305:75:124", - "text": "@notice Checks that the light client for a given chainId is consistent." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "requireLightClientConsistency", - "nameLocation": "3394:29:124", - "parameters": { - "id": 48761, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 48760, - "mutability": "mutable", - "name": "chainId", - "nameLocation": "3431:7:124", - "nodeType": "VariableDeclaration", - "scope": 48790, - "src": "3424:14:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 48759, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "3424:6:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "3423:16:124" - }, - "returnParameters": { - "id": 48762, - "nodeType": "ParameterList", - "parameters": [], - "src": "3454:0:124" - }, - "scope": 48979, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 48806, - "nodeType": "FunctionDefinition", - "src": "3753:137:124", - "nodes": [], - "body": { - "id": 48805, - "nodeType": "Block", - "src": "3809:81:124", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 48801, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "3827:32:124", - "subExpression": { - "arguments": [ - { - "id": 48799, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48793, - "src": "3851:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 48797, - "name": "telepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48536, - "src": "3828:15:124", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42576", - "typeString": "contract TelepathyRouter" - } - }, - "id": 48798, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3844:6:124", - "memberName": "frozen", - "nodeType": "MemberAccess", - "referencedDeclaration": 42613, - "src": "3828:22:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_bool_$", - "typeString": "function (uint32) view external returns (bool)" - } - }, - "id": 48800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3828:31:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "436f6e74726163742069732066726f7a656e2e", - "id": 48802, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3861:21:124", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8a588d987ba140ba8da36da6bed0df68ef46602e008fcb659a3bdc8b60353b80", - "typeString": "literal_string \"Contract is frozen.\"" - }, - "value": "Contract is frozen." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8a588d987ba140ba8da36da6bed0df68ef46602e008fcb659a3bdc8b60353b80", - "typeString": "literal_string \"Contract is frozen.\"" - } - ], - "id": 48796, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3819:7:124", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 48803, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3819:64:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48804, - "nodeType": "ExpressionStatement", - "src": "3819:64:124" - } - ] - }, - "documentation": { - "id": 48791, - "nodeType": "StructuredDocumentation", - "src": "3698:50:124", - "text": "@notice Checks that the chainId is not frozen." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "requireNotFrozen", - "nameLocation": "3762:16:124", - "parameters": { - "id": 48794, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 48793, - "mutability": "mutable", - "name": "chainId", - "nameLocation": "3786:7:124", - "nodeType": "VariableDeclaration", - "scope": 48806, - "src": "3779:14:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 48792, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "3779:6:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "3778:16:124" - }, - "returnParameters": { - "id": 48795, - "nodeType": "ParameterList", - "parameters": [], - "src": "3809:0:124" - }, - "scope": 48979, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 48866, - "nodeType": "FunctionDefinition", - "src": "3960:620:124", - "nodes": [], - "body": { - "id": 48865, - "nodeType": "Block", - "src": "4036:544:124", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 48826, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 48819, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48811, - "src": "4104:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 48817, - "name": "telepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48536, - "src": "4075:15:124", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42576", - "typeString": "contract TelepathyRouter" - } - }, - "id": 48818, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4091:12:124", - "memberName": "lightClients", - "nodeType": "MemberAccess", - "referencedDeclaration": 42603, - "src": "4075:28:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", - "typeString": "function (uint32) view external returns (contract ILightClient)" - } - }, - "id": 48820, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4075:37:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - ], - "id": 48816, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4067:7:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 48815, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4067:7:124", - "typeDescriptions": {} - } - }, - "id": 48821, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4067:46:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 48824, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4125:1:124", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 48823, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4117:7:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 48822, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4117:7:124", - "typeDescriptions": {} - } - }, - "id": 48825, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4117:10:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4067:60:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c6967687420636c69656e74206973206e6f74207365742e", - "id": 48827, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4129:26:124", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", - "typeString": "literal_string \"Light client is not set.\"" - }, - "value": "Light client is not set." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e101b5373cdc26cb425143e3cbafbd497c41de0fee1949cfc5d2e531f6595a56", - "typeString": "literal_string \"Light client is not set.\"" - } - ], - "id": 48814, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4046:7:124", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 48828, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4046:119:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48829, - "nodeType": "ExpressionStatement", - "src": "4046:119:124" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 48839, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 48836, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48809, - "src": "4245:4:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "arguments": [ - { - "id": 48833, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48811, - "src": "4225:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 48831, - "name": "telepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48536, - "src": "4196:15:124", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42576", - "typeString": "contract TelepathyRouter" - } - }, - "id": 48832, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4212:12:124", - "memberName": "lightClients", - "nodeType": "MemberAccess", - "referencedDeclaration": 42603, - "src": "4196:28:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", - "typeString": "function (uint32) view external returns (contract ILightClient)" - } - }, - "id": 48834, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4196:37:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "id": 48835, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4234:10:124", - "memberName": "timestamps", - "nodeType": "MemberAccess", - "referencedDeclaration": 47935, - "src": "4196:48:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view external returns (uint256)" - } - }, - "id": 48837, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4196:54:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 48838, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4254:1:124", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4196:59:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "54696d657374616d70206973206e6f742073657420666f7220736c6f742e", - "id": 48840, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4269:32:124", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6d7a45101ad497aef48b2b4cd343588a8ff87c05de216f8c1f25e504e4b18b11", - "typeString": "literal_string \"Timestamp is not set for slot.\"" - }, - "value": "Timestamp is not set for slot." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6d7a45101ad497aef48b2b4cd343588a8ff87c05de216f8c1f25e504e4b18b11", - "typeString": "literal_string \"Timestamp is not set for slot.\"" - } - ], - "id": 48830, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4175:7:124", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 48841, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4175:136:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48842, - "nodeType": "ExpressionStatement", - "src": "4175:136:124" - }, - { - "assignments": [ - 48844 - ], - "declarations": [ - { - "constant": false, - "id": 48844, - "mutability": "mutable", - "name": "elapsedTime", - "nameLocation": "4329:11:124", - "nodeType": "VariableDeclaration", - "scope": 48865, - "src": "4321:19:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 48843, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4321:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 48855, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 48854, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 48845, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "4355:5:124", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 48846, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4361:9:124", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "4355:15:124", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "arguments": [ - { - "id": 48852, - "name": "slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48809, - "src": "4422:4:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "arguments": [ - { - "id": 48849, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48811, - "src": "4402:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 48847, - "name": "telepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48536, - "src": "4373:15:124", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42576", - "typeString": "contract TelepathyRouter" - } - }, - "id": 48848, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4389:12:124", - "memberName": "lightClients", - "nodeType": "MemberAccess", - "referencedDeclaration": 42603, - "src": "4373:28:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_contract$_ILightClient_$47936_$", - "typeString": "function (uint32) view external returns (contract ILightClient)" - } - }, - "id": 48850, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4373:37:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "id": 48851, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4411:10:124", - "memberName": "timestamps", - "nodeType": "MemberAccess", - "referencedDeclaration": 47935, - "src": "4373:48:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view external returns (uint256)" - } - }, - "id": 48853, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4373:54:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4355:72:124", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4321:106:124" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 48861, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 48857, - "name": "elapsedTime", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48844, - "src": "4458:11:124", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 48858, - "name": "telepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48536, - "src": "4473:15:124", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyRouter_$42576", - "typeString": "contract TelepathyRouter" - } - }, - "id": 48859, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "4489:22:124", - "memberName": "MIN_LIGHT_CLIENT_DELAY", - "nodeType": "MemberAccess", - "referencedDeclaration": 41510, - "src": "4473:38:124", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", - "typeString": "function () view external returns (uint256)" - } - }, - "id": 48860, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4473:40:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4458:55:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f742e", - "id": 48862, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4527:36:124", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_5b51feb04d24e293cda4cdf47dbe63ae0b79975ab7f4fafdae4b8602d5cda444", - "typeString": "literal_string \"Must wait longer to use this slot.\"" - }, - "value": "Must wait longer to use this slot." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_5b51feb04d24e293cda4cdf47dbe63ae0b79975ab7f4fafdae4b8602d5cda444", - "typeString": "literal_string \"Must wait longer to use this slot.\"" - } - ], - "id": 48856, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4437:7:124", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 48863, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4437:136:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48864, - "nodeType": "ExpressionStatement", - "src": "4437:136:124" - } - ] - }, - "documentation": { - "id": 48807, - "nodeType": "StructuredDocumentation", - "src": "3896:59:124", - "text": "@notice Checks that the light client delay is adequate." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "requireLightClientDelay", - "nameLocation": "3969:23:124", - "parameters": { - "id": 48812, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 48809, - "mutability": "mutable", - "name": "slot", - "nameLocation": "4000:4:124", - "nodeType": "VariableDeclaration", - "scope": 48866, - "src": "3993:11:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 48808, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "3993:6:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48811, - "mutability": "mutable", - "name": "chainId", - "nameLocation": "4013:7:124", - "nodeType": "VariableDeclaration", - "scope": 48866, - "src": "4006:14:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 48810, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "4006:6:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "3992:29:124" - }, - "returnParameters": { - "id": 48813, - "nodeType": "ParameterList", - "parameters": [], - "src": "4036:0:124" - }, - "scope": 48979, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 48978, - "nodeType": "FunctionDefinition", - "src": "4705:1397:124", - "nodes": [], - "body": { - "id": 48977, - "nodeType": "Block", - "src": "4941:1161:124", - "nodes": [], - "statements": [ - { - "assignments": [ - 48885 - ], - "declarations": [ - { - "constant": false, - "id": 48885, - "mutability": "mutable", - "name": "success", - "nameLocation": "4956:7:124", - "nodeType": "VariableDeclaration", - "scope": 48977, - "src": "4951:12:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 48884, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4951:4:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 48886, - "nodeType": "VariableDeclarationStatement", - "src": "4951:12:124" - }, - { - "assignments": [ - 48888 - ], - "declarations": [ - { - "constant": false, - "id": 48888, - "mutability": "mutable", - "name": "data", - "nameLocation": "4986:4:124", - "nodeType": "VariableDeclaration", - "scope": 48977, - "src": "4973:17:124", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 48887, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4973:5:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 48889, - "nodeType": "VariableDeclarationStatement", - "src": "4973:17:124" - }, - { - "id": 48917, - "nodeType": "Block", - "src": "5000:435:124", - "statements": [ - { - "assignments": [ - 48891 - ], - "declarations": [ - { - "constant": false, - "id": 48891, - "mutability": "mutable", - "name": "receiveCall", - "nameLocation": "5027:11:124", - "nodeType": "VariableDeclaration", - "scope": 48917, - "src": "5014:24:124", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 48890, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5014:5:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 48906, - "initialValue": { - "arguments": [ - { - "expression": { - "expression": { - "id": 48894, - "name": "ISubscriptionReceiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49264, - "src": "5081:21:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49264_$", - "typeString": "type(contract ISubscriptionReceiver)" - } - }, - "id": 48895, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "5103:13:124", - "memberName": "handlePublish", - "nodeType": "MemberAccess", - "referencedDeclaration": 49263, - "src": "5081:35:124", - "typeDescriptions": { - "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", - "typeString": "function ISubscriptionReceiver.handlePublish(bytes32,uint32,address,uint64,bytes32[] memory,bytes memory) returns (bytes4)" - } - }, - "id": 48896, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "5117:8:124", - "memberName": "selector", - "nodeType": "MemberAccess", - "src": "5081:44:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - { - "id": 48897, - "name": "_subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48869, - "src": "5143:15:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 48898, - "name": "_subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48872, - "src": "5176:13:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48899, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5190:13:124", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 49149, - "src": "5176:27:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 48900, - "name": "_subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48872, - "src": "5221:13:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48901, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5235:13:124", - "memberName": "sourceAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 49151, - "src": "5221:27:124", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 48902, - "name": "_txSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48876, - "src": "5266:7:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 48903, - "name": "_eventTopics", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48879, - "src": "5291:12:124", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - { - "id": 48904, - "name": "_eventData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48881, - "src": "5321:10:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "id": 48892, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "5041:3:124", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 48893, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "5045:18:124", - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "src": "5041:22:124", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 48905, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5041:304:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5014:331:124" - }, - { - "expression": { - "id": 48915, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 48907, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48885, - "src": "5360:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 48908, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48888, - "src": "5369:4:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "id": 48909, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "5359:15:124", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 48913, - "name": "receiveCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48891, - "src": "5412:11:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "expression": { - "id": 48910, - "name": "_subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48872, - "src": "5377:13:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48911, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5391:15:124", - "memberName": "callbackAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 49153, - "src": "5377:29:124", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 48912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5407:4:124", - "memberName": "call", - "nodeType": "MemberAccess", - "src": "5377:34:124", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 48914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5377:47:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "src": "5359:65:124", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48916, - "nodeType": "ExpressionStatement", - "src": "5359:65:124" - } - ] - }, - { - "assignments": [ - 48919 - ], - "declarations": [ - { - "constant": false, - "id": 48919, - "mutability": "mutable", - "name": "implementsHandler", - "nameLocation": "5450:17:124", - "nodeType": "VariableDeclaration", - "scope": 48977, - "src": "5445:22:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 48918, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5445:4:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 48921, - "initialValue": { - "hexValue": "66616c7365", - "id": 48920, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5470:5:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "nodeType": "VariableDeclarationStatement", - "src": "5445:30:124" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 48925, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 48922, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48888, - "src": "5489:4:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 48923, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5494:6:124", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "5489:11:124", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "3332", - "id": 48924, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5504:2:124", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "5489:17:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 48945, - "nodeType": "IfStatement", - "src": "5485:178:124", - "trueBody": { - "id": 48944, - "nodeType": "Block", - "src": "5508:155:124", - "statements": [ - { - "assignments": [ - 48927 - ], - "declarations": [ - { - "constant": false, - "id": 48927, - "mutability": "mutable", - "name": "magic", - "nameLocation": "5530:5:124", - "nodeType": "VariableDeclaration", - "scope": 48944, - "src": "5523:12:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 48926, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "5523:6:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "id": 48935, - "initialValue": { - "arguments": [ - { - "id": 48930, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48888, - "src": "5550:4:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "components": [ - { - "id": 48932, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5557:6:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - }, - "typeName": { - "id": 48931, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "5557:6:124", - "typeDescriptions": {} - } - } - ], - "id": 48933, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5556:8:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - } - ], - "expression": { - "id": 48928, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "5539:3:124", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 48929, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "5543:6:124", - "memberName": "decode", - "nodeType": "MemberAccess", - "src": "5539:10:124", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 48934, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5539:26:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5522:43:124" - }, - { - "expression": { - "id": 48942, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 48936, - "name": "implementsHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48919, - "src": "5579:17:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 48941, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 48937, - "name": "magic", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48927, - "src": "5599:5:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "expression": { - "id": 48938, - "name": "ISubscriptionReceiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49264, - "src": "5608:21:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ISubscriptionReceiver_$49264_$", - "typeString": "type(contract ISubscriptionReceiver)" - } - }, - "id": 48939, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "5630:13:124", - "memberName": "handlePublish", - "nodeType": "MemberAccess", - "referencedDeclaration": 49263, - "src": "5608:35:124", - "typeDescriptions": { - "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint64_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", - "typeString": "function ISubscriptionReceiver.handlePublish(bytes32,uint32,address,uint64,bytes32[] memory,bytes memory) returns (bytes4)" - } - }, - "id": 48940, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "5644:8:124", - "memberName": "selector", - "nodeType": "MemberAccess", - "src": "5608:44:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "5599:53:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "5579:73:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 48943, - "nodeType": "ExpressionStatement", - "src": "5579:73:124" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 48948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 48946, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48885, - "src": "5677:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "id": 48947, - "name": "implementsHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48919, - "src": "5688:17:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "5677:28:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 48964, - "nodeType": "Block", - "src": "5802:86:124", - "statements": [ - { - "expression": { - "id": 48962, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 48957, - "name": "eventsPublished", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48541, - "src": "5816:15:124", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49209_$", - "typeString": "mapping(bytes32 => enum PublishStatus)" - } - }, - "id": 48959, - "indexExpression": { - "id": 48958, - "name": "_publishKey", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48874, - "src": "5832:11:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5816:28:124", - "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49209", - "typeString": "enum PublishStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 48960, - "name": "PublishStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49209, - "src": "5847:13:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49209_$", - "typeString": "type(enum PublishStatus)" - } - }, - "id": 48961, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "5861:16:124", - "memberName": "EXECUTION_FAILED", - "nodeType": "MemberAccess", - "referencedDeclaration": 49207, - "src": "5847:30:124", - "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49209", - "typeString": "enum PublishStatus" - } - }, - "src": "5816:61:124", - "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49209", - "typeString": "enum PublishStatus" - } - }, - "id": 48963, - "nodeType": "ExpressionStatement", - "src": "5816:61:124" - } - ] - }, - "id": 48965, - "nodeType": "IfStatement", - "src": "5673:215:124", - "trueBody": { - "id": 48956, - "nodeType": "Block", - "src": "5707:89:124", - "statements": [ - { - "expression": { - "id": 48954, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 48949, - "name": "eventsPublished", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48541, - "src": "5721:15:124", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_PublishStatus_$49209_$", - "typeString": "mapping(bytes32 => enum PublishStatus)" - } - }, - "id": 48951, - "indexExpression": { - "id": 48950, - "name": "_publishKey", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48874, - "src": "5737:11:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5721:28:124", - "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49209", - "typeString": "enum PublishStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 48952, - "name": "PublishStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49209, - "src": "5752:13:124", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_PublishStatus_$49209_$", - "typeString": "type(enum PublishStatus)" - } - }, - "id": 48953, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "5766:19:124", - "memberName": "EXECUTION_SUCCEEDED", - "nodeType": "MemberAccess", - "referencedDeclaration": 49208, - "src": "5752:33:124", - "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49209", - "typeString": "enum PublishStatus" - } - }, - "src": "5721:64:124", - "typeDescriptions": { - "typeIdentifier": "t_enum$_PublishStatus_$49209", - "typeString": "enum PublishStatus" - } - }, - "id": 48955, - "nodeType": "ExpressionStatement", - "src": "5721:64:124" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "id": 48967, - "name": "_subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48869, - "src": "5924:15:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 48968, - "name": "_subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48872, - "src": "5953:13:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48969, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5967:13:124", - "memberName": "sourceChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 49149, - "src": "5953:27:124", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 48970, - "name": "_subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48872, - "src": "5994:13:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48971, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6008:13:124", - "memberName": "sourceAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 49151, - "src": "5994:27:124", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "expression": { - "id": 48972, - "name": "_subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48872, - "src": "6035:13:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription calldata" - } - }, - "id": 48973, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6049:15:124", - "memberName": "callbackAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 49153, - "src": "6035:29:124", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 48974, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48885, - "src": "6078:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 48966, - "name": "Publish", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49222, - "src": "5903:7:124", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_address_$_t_bool_$returns$__$", - "typeString": "function (bytes32,uint32,address,address,bool)" - } - }, - "id": 48975, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5903:192:124", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 48976, - "nodeType": "EmitStatement", - "src": "5898:197:124" - } - ] - }, - "documentation": { - "id": 48867, - "nodeType": "StructuredDocumentation", - "src": "4586:114:124", - "text": "@notice Executes the callback function on the subscriber, and marks the event publish as successful or failed." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_publish", - "nameLocation": "4714:8:124", - "parameters": { - "id": 48882, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 48869, - "mutability": "mutable", - "name": "_subscriptionId", - "nameLocation": "4740:15:124", - "nodeType": "VariableDeclaration", - "scope": 48978, - "src": "4732:23:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 48868, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4732:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48872, - "mutability": "mutable", - "name": "_subscription", - "nameLocation": "4787:13:124", - "nodeType": "VariableDeclaration", - "scope": 48978, - "src": "4765:35:124", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_calldata_ptr", - "typeString": "struct Subscription" - }, - "typeName": { - "id": 48871, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 48870, - "name": "Subscription", - "nameLocations": [ - "4765:12:124" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49156, - "src": "4765:12:124" - }, - "referencedDeclaration": 49156, - "src": "4765:12:124", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_storage_ptr", - "typeString": "struct Subscription" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48874, - "mutability": "mutable", - "name": "_publishKey", - "nameLocation": "4818:11:124", - "nodeType": "VariableDeclaration", - "scope": 48978, - "src": "4810:19:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 48873, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4810:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48876, - "mutability": "mutable", - "name": "_txSlot", - "nameLocation": "4846:7:124", - "nodeType": "VariableDeclaration", - "scope": 48978, - "src": "4839:14:124", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 48875, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "4839:6:124", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48879, - "mutability": "mutable", - "name": "_eventTopics", - "nameLocation": "4880:12:124", - "nodeType": "VariableDeclaration", - "scope": 48978, - "src": "4863:29:124", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 48877, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4863:7:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 48878, - "nodeType": "ArrayTypeName", - "src": "4863:9:124", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 48881, - "mutability": "mutable", - "name": "_eventData", - "nameLocation": "4915:10:124", - "nodeType": "VariableDeclaration", - "scope": 48978, - "src": "4902:23:124", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 48880, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4902:5:124", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "4722:209:124" - }, - "returnParameters": { - "id": 48883, - "nodeType": "ParameterList", - "parameters": [], - "src": "4941:0:124" - }, - "scope": 48979, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 48604, - "name": "IPublisher", - "nameLocations": [ - "709:10:124" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49243, - "src": "709:10:124" - }, - "id": 48605, - "nodeType": "InheritanceSpecifier", - "src": "709:10:124" - }, - { - "baseName": { - "id": 48606, - "name": "PubSubStorage", - "nameLocations": [ - "721:13:124" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48552, - "src": "721:13:124" - }, - "id": 48607, - "nodeType": "InheritanceSpecifier", - "src": "721:13:124" - } - ], - "canonicalName": "TelepathyPublisher", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 48603, - "nodeType": "StructuredDocumentation", - "src": "538:140:124", - "text": "@title TelepathyPublisher\n @author Succinct Labs\n @notice A contract that can publish events to a ISubscriptionReceiver contract." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 48979, - 48552, - 49243 - ], - "name": "TelepathyPublisher", - "nameLocation": "687:18:124", - "scope": 48980, - "usedErrors": [] - } - ] - }, - "id": 124 -} \ No newline at end of file diff --git a/out/TelepathyRouter.sol/TelepathyRouter.json b/out/TelepathyRouter.sol/TelepathyRouter.json deleted file mode 100644 index 80200b8..0000000 --- a/out/TelepathyRouter.sol/TelepathyRouter.json +++ /dev/null @@ -1,4536 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "CannotSendToSameChain", - "type": "error" - }, - { - "inputs": [], - "name": "SendingDisabled", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "nonce", - "type": "uint64" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "message", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "bool", - "name": "status", - "type": "bool" - } - ], - "name": "ExecutedMessage", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint32", - "name": "chainId", - "type": "uint32" - } - ], - "name": "Freeze", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "FreezeAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bool", - "name": "enabled", - "type": "bool" - } - ], - "name": "SendingEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "nonce", - "type": "uint64" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "message", - "type": "bytes" - } - ], - "name": "SentMessage", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint32", - "name": "chainId", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "address", - "name": "lightClient", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "broadcaster", - "type": "address" - } - ], - "name": "SetLightClientAndBroadcaster", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint32", - "name": "chainId", - "type": "uint32" - } - ], - "name": "SourceChainAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint32", - "name": "chainId", - "type": "uint32" - } - ], - "name": "Unfreeze", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "UnfreezeAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "GUARDIAN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MIN_LIGHT_CLIENT_DELAY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "TIMELOCK_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "broadcasters", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "slot", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes[]", - "name": "accountProof", - "type": "bytes[]" - }, - { - "internalType": "bytes[]", - "name": "storageProof", - "type": "bytes[]" - } - ], - "name": "executeMessage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "srcSlotTxSlotPack", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes32[]", - "name": "receiptsRootProof", - "type": "bytes32[]" - }, - { - "internalType": "bytes32", - "name": "receiptsRoot", - "type": "bytes32" - }, - { - "internalType": "bytes[]", - "name": "receiptProof", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "txIndexRLPEncoded", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "logIndex", - "type": "uint256" - } - ], - "name": "executeMessageFromLog", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "chainId", - "type": "uint32" - } - ], - "name": "freeze", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "freezeAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "frozen", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32[]", - "name": "_sourceChainIds", - "type": "uint32[]" - }, - { - "internalType": "address[]", - "name": "_lightClients", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "_broadcasters", - "type": "address[]" - }, - { - "internalType": "address", - "name": "_timelock", - "type": "address" - }, - { - "internalType": "address", - "name": "_guardian", - "type": "address" - }, - { - "internalType": "bool", - "name": "_sendingEnabled", - "type": "bool" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "lightClients", - "outputs": [ - { - "internalType": "contract ILightClient", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "messageStatus", - "outputs": [ - { - "internalType": "enum MessageStatus", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "name": "messages", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "destinationAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "send", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "destinationAddress", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "send", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "destinationAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "sendViaStorage", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "destinationAddress", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "sendViaStorage", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "sendingEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "chainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "lightclient", - "type": "address" - }, - { - "internalType": "address", - "name": "broadcaster", - "type": "address" - } - ], - "name": "setLightClientAndBroadcaster", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "enabled", - "type": "bool" - } - ], - "name": "setSendingEnabled", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "sourceChainIds", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "sourceChainIdsLength", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "storageRootCache", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "chainId", - "type": "uint32" - } - ], - "name": "unfreeze", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unfreezeAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": { - "object": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e8565b603254610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60325460ff9081161015620000e6576032805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615f7c62000120600039600081816109f901528181610a3901528181610da601528181610de60152610e750152615f7c6000f3fe6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004615023565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a366004615057565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b53660046150de565b6107be565b3480156102c657600080fd5b506102da6102d536600461513e565b6108c4565b005b3480156102e857600080fd5b5061028c6102f7366004615159565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615f2783398151915281565b34801561033a57600080fd5b506102da610349366004615172565b610947565b34801561035a57600080fd5b506102da610369366004615172565b610971565b34801561037a57600080fd5b506102da61038936600461519e565b6109ef565b34801561039a57600080fd5b5061024a6103a936600461513e565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d93660046152b2565b610ace565b3480156103ea57600080fd5b5061040e6103f9366004615159565b60076020526000908152604090205460ff1681565b60405161025691906153c5565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da6104583660046153ed565b610d9c565b34801561046957600080fd5b5061028c610e68565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b936600461513e565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da6105073660046154e8565b610f1b565b34801561051857600080fd5b506102da61121e565b34801561052d57600080fd5b5061028c61053c3660046150de565b611303565b34801561054d57600080fd5b5061028c61055c3660046155fc565b611384565b34801561056d57600080fd5b506104d461057c36600461513e565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b236600461563d565b6113dd565b3480156105c357600080fd5b5061028c6105d2366004615159565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff3660046156e7565b6116f2565b34801561061057600080fd5b5061024a61061f366004615172565b6118a3565b34801561063057600080fd5b506102da6118ce565b34801561064557600080fd5b506102da61065436600461513e565b6119b3565b34801561066557600080fd5b50610679610674366004615159565b611a30565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be3660046155fc565b611a6a565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da610716366004615172565b611ac3565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b36600461572a565b611ae8565b34801561075c57600080fd5b5061028c600080516020615ea083398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107e257604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036108085760405163b0747d8160e01b815260040160405180910390fd5b600080610821876001600160a01b0388165b8787611b63565b600280546001600160401b0390811660009081526001602052604081208490558254949650929450849316916108568361575d565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b291906157d3565b60405180910390a39695505050505050565b6108dc600080516020615f27833981519152336118a3565b6109015760405162461bcd60e51b81526004016108f8906157e6565b60405180910390fd5b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096281611bda565b61096c8383611be4565b505050565b6001600160a01b03811633146109e15760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108f8565b6109eb8282611c6a565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a375760405162461bcd60e51b81526004016108f89061583b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a80600080516020615ee0833981519152546001600160a01b031690565b6001600160a01b031614610aa65760405162461bcd60e51b81526004016108f890615887565b610aaf81611cd1565b60408051600080825260208201909252610acb91839190611d05565b50565b610ad6611e70565b600080610ae38b8b611ec9565b91509150610af48260400151612133565b610b018260400151612262565b6000808e8e810190610b1391906158d3565b91509150610b258285604001516122be565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb491906158fd565b905080610bfb5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016108f8565b6000610c448b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a0151869150889088906124f2565b905080610c935760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016108f8565b505050506000610cf8878790610ca99190615916565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026126fc565b9050818114610d415760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b50610d8382828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612aaf92505050565b5050610d8f6001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610de45760405162461bcd60e51b81526004016108f89061583b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e2d600080516020615ee0833981519152546001600160a01b031690565b6001600160a01b031614610e535760405162461bcd60e51b81526004016108f890615887565b610e5c82611cd1565b6109eb82826001611d05565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f085760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f8565b50600080516020615ee083398151915290565b603254610100900460ff1615808015610f3b5750603254600160ff909116105b80610f555750303b158015610f55575060325460ff166001145b610fb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f8565b6032805460ff191660011790558015610fdb576032805461ff0019166101001790555b610fe3612c5d565b610feb612c8e565b611003600080516020615f2783398151915284611be4565b61101b600080516020615ea083398151915285611be4565b611026600085611be4565b61102e612c8e565b855187511461103c57600080fd5b845187511461104a57600080fd5b865161105d9060039060208a0190614f49565b5060005b60035463ffffffff821610156111b157868163ffffffff16815181106110895761108961597d565b60200260200101516004600060038463ffffffff16815481106110ae576110ae61597d565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112a5761112a61597d565b60200260200101516005600060038463ffffffff168154811061114f5761114f61597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a981615993565b915050611061565b506000805483151560ff19918216179091556008805490911660011790558015611215576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b611236600080516020615f27833981519152336118a3565b6112525760405162461bcd60e51b81526004016108f8906157e6565b60005b60035463ffffffff821610156112d75760006006600060038463ffffffff16815481106112845761128461597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112cf81615993565b915050611255565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661132757604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361134d5760405163b0747d8160e01b815260040160405180910390fd5b600080611363876001600160a01b03881661081a565b6002805492945090925082916001600160401b03169060006108568361575d565b6000805460ff166113a857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036113ce5760405163b0747d8160e01b815260040160405180910390fd5b60008061082187878787611b63565b6113e5611e70565b6000806113f28888611ec9565b915091506114038260400151612133565b6114108260400151612262565b61141e8983604001516122be565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115d05760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa15801561150b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152f91906158fd565b905060008190036115825760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016108f8565b6115b661158f898b615916565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612cb5565b600083815260096020526040902081905592506115e29050565b60008181526009602052604090205491505b6000846020015160016040516020016116109291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061165882856116538a8c615916565b612dac565b90508481146116a15760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b505050506116e682828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612aaf92505050565b50506112156001603355565b61170a600080516020615ea0833981519152336118a3565b6117265760405162461bcd60e51b81526004016108f8906159ac565b6000805b600354811015611792578463ffffffff166003828154811061174e5761174e61597d565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117805760019150611792565b8061178a81615a01565b91505061172a565b508061181b57600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118e6600080516020615f27833981519152336118a3565b6119025760405162461bcd60e51b81526004016108f8906157e6565b60005b60035463ffffffff821610156119875760016006600060038463ffffffff16815481106119345761193461597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff19169115159190911790558061197f81615993565b915050611905565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119cb600080516020615f27833981519152336118a3565b6119e75760405162461bcd60e51b81526004016108f8906157e6565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a4057600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a8e57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff1603611ab45760405163b0747d8160e01b815260040160405180910390fd5b60008061136387878787611b63565b600082815260c96020526040902060010154611ade81611bda565b61096c8383611c6a565b611b00600080516020615f27833981519152336118a3565b611b1c5760405162461bcd60e51b81526004016108f8906157e6565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bc69360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612e4892505050565b805160208201209097909650945050505050565b610acb8133612e83565b611bee82826118a3565b6109eb57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c263390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c7482826118a3565b156109eb57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611ce9600080516020615ea0833981519152336118a3565b610acb5760405162461bcd60e51b81526004016108f8906159ac565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d385761096c83612edc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d92575060408051601f3d908101601f19168201909252611d8f918101906158fd565b60015b611df55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f8565b600080516020615ee08339815191528114611e645760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f8565b5061096c838383612f78565b600260335403611ec25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108f8565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f4685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612fa392505050565b905060008585604051611f5a929190615a1a565b60405190819003902090506000808281526007602052604090205460ff166002811115611f8957611f896153af565b14611fd65760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016108f8565b46826080015163ffffffff161461201e5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016108f8565b600854825160ff9081169116146120685760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016108f8565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120b3575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121265760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016108f8565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b03166121995760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122169190615a2a565b610acb5760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016108f8565b63ffffffff811660009081526006602052604090205460ff1615610acb5760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016108f8565b63ffffffff81166000908152600460205260409020546001600160a01b03166123245760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b191906158fd565b6000036124005760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016108f8565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248a91906158fd565b6124949042615a47565b9050607881101561096c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016108f8565b6000806124fe83613068565b9050600081856001600160401b03161061251957601b61251c565b60075b60ff169050600082866001600160401b03161061255857612000612549846001600160401b038916615a47565b6125539190615a70565b61256d565b61256d6120006001600160401b038816615a70565b90506000866001600160401b0316886001600160401b0316036125ac5750600b61259981610200615a84565b6125a590610183615aa3565b90506126e1565b6120006125b9888a615ab6565b6001600160401b03161161261b5750600b6125d5816020615a84565b6125e0906006615aa3565b90506125f76120006001600160401b038916615add565b61260361200083615a84565b61260d9190615aa3565b905061259981610200615a84565b876001600160401b0316876001600160401b031610156126995750600b82612644826020615a84565b61264e9190615aa3565b905061265b816002615a84565b612666906000615aa3565b905081612677630100000083615a84565b6126819190615aa3565b905061268e816002615a84565b6125e0906001615aa3565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016108f8565b6126ed8b828c8c6130a8565b9b9a5050505050505050505050565b60008061270a878a8a6130c2565b90506000816000815181106127215761272161597d565b01602001516001600160f81b03191690506000600160f81b8214806127535750600160f91b6001600160f81b03198316145b15612760575060016127c5565b600360fe1b6001600160f81b031983161061277d575060006127c5565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016108f8565b6000602084019050600060405180604001604052808487516127e79190615a47565b81526020016127f68585615aa3565b90529050600061280582613962565b905080516004146128515760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016108f8565b6000612876826003815181106128695761286961597d565b6020026020010151613962565b905080518c106128c85760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016108f8565b60006128df828e815181106128695761286961597d565b9050805160031461293d5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016108f8565b6000612962826000815181106129555761295561597d565b6020026020010151613b87565b90508c6001600160a01b0316816001600160a01b0316146129d55760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016108f8565b60006129ed836001815181106128695761286961597d565b90508c612a1382600081518110612a0657612a0661597d565b6020026020010151613bf1565b14612a765760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016108f8565b612a98818d81518110612a8b57612a8b61597d565b6020026020010151613bf8565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612ade93929190615af1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612b309190615b21565b6000604051808303816000865af19150503d8060008114612b6d576040519150601f19603f3d011682016040523d82523d6000602084013e612b72565b606091505b5080519195509350600092506020039050612bb457600082806020019051810190612b9d9190615b3d565b6001600160e01b031916631dee306b60e11b149150505b828015612bbe5750805b15612be1576000858152600760205260409020805460ff19166002179055612bfb565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612c46929190615b5a565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612c845760405162461bcd60e51b81526004016108f890615b7e565b612c8c613cfb565b565b603254610100900460ff16612c8c5760405162461bcd60e51b81526004016108f890615b7e565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612d1a82604051602001612d0491815260200190565b60405160208183030381529060405287866130c2565b90506000815111612d665760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016108f8565b6000612d79612d7483613d22565b613962565b90508051600414612d8957600080fd5b612d9f81600281518110612a0657612a0661597d565b93505050505b9392505050565b600080612ddb85604051602001612dc591815260200190565b60405160208183030381529060405284866130c2565b90506000815111612e2e5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016108f8565b612e3f612e3a82613d22565b613bf1565b95945050505050565b606087878787878787604051602001612e679796959493929190615bc9565b6040516020818303038152906040529050979650505050505050565b612e8d82826118a3565b6109eb57612e9a81613d75565b612ea5836020613d87565b604051602001612eb6929190615c50565b60408051601f198184030181529082905262461bcd60e51b82526108f8916004016157d3565b6001600160a01b0381163b612f495760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f8565b600080516020615ee083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612f8183613f22565b600082511180612f8e5750805b1561096c57612f9d8383613f62565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091613057918a9190613052908290615a47565b61404d565b60c088015250949695505050505050565b60008163ffffffff166001036130825750625ec000919050565b8163ffffffff1660050361309a5750624f4000919050565b50600019919050565b919050565b6000806130b6868686614139565b90921495945050505050565b6060600084511161310d5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016108f8565b6000613118846142c8565b90506000613125866143b6565b905060008460405160200161313c91815260200190565b60405160208183030381529060405290506000805b845181101561390b57600085828151811061316e5761316e61597d565b6020026020010151905084518311156131e05760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016108f8565b8260000361327f578051805160209182012060405161322e9261320892910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61327a5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016108f8565b613375565b80515160201161330557805180516020918201206040516132a99261320892910190815260200190565b61327a5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016108f8565b8051845160208087019190912082519190920120146133755760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016108f8565b61338160106001615aa3565b8160200151510361352e57845183036134c65760006133bd82602001516010815181106133b0576133b061597d565b60200260200101516144d0565b905060008151116134365760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016108f8565b600187516134449190615a47565b83146134b85760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016108f8565b9650612da595505050505050565b60008584815181106134da576134da61597d565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106135055761350561597d565b60200260200101519050613518816145f3565b9550613525600186615aa3565b945050506138f8565b60028160200151510361389f57600061354682614618565b905060008160008151811061355d5761355d61597d565b016020015160f81c90506000613574600283615cc5565b61357f906002615ce7565b90506000613590848360ff1661463c565b9050600061359e8a8961463c565b905060006135ac8383614672565b9050808351146136245760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016108f8565b60ff851660021480613639575060ff85166003145b156137df57808251146136b45760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016108f8565b60006136d088602001516001815181106133b0576133b061597d565b905060008151116137495760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016108f8565b60018d516137579190615a47565b89146137cb5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016108f8565b9c50612da59b505050505050505050505050565b60ff851615806137f2575060ff85166001145b156138315761381e87602001516001815181106138115761381161597d565b60200260200101516145f3565b995061382a818a615aa3565b9850613894565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016108f8565b5050505050506138f8565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016108f8565b508061390381615a01565b915050613151565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016108f8565b60606000806000613972856146f1565b91945092509050600181600181111561398d5761398d6153af565b14613a005760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016108f8565b8451613a0c8385615aa3565b14613a745760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016108f8565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081613a8d5790505090506000845b8751811015613b7b57600080613b006040518060400160405280858d60000151613ae49190615a47565b8152602001858d60200151613af99190615aa3565b90526146f1565b509150915060405180604001604052808383613b1c9190615aa3565b8152602001848c60200151613b319190615aa3565b815250858581518110613b4657613b4661597d565b6020908102919091010152613b5c600185615aa3565b9350613b688183615aa3565b613b729084615aa3565b92505050613aba565b50815295945050505050565b8051600090600103613b9b57506000919050565b8151601514613bec5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016108f8565b6107b8825b60006107b8825b6000602182600001511115613c4f5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000806000613c5d856146f1565b919450925090506000816001811115613c7857613c786153af565b14613cc55760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000838660200151613cd79190615aa3565b80519091506020841015613cf15760208490036101000a90045b9695505050505050565b603254610100900460ff16612c565760405162461bcd60e51b81526004016108f890615b7e565b60408051808201909152600080825260208201526000825111613d575760405162461bcd60e51b81526004016108f890615d00565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613d96836002615a84565b613da1906002615aa3565b6001600160401b03811115613db857613db86151fd565b6040519080825280601f01601f191660200182016040528015613de2576020820181803683370190505b509050600360fc1b81600081518110613dfd57613dfd61597d565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613e2c57613e2c61597d565b60200101906001600160f81b031916908160001a9053506000613e50846002615a84565b613e5b906001615aa3565b90505b6001811115613ed3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613e8f57613e8f61597d565b1a60f81b828281518110613ea557613ea561597d565b60200101906001600160f81b031916908160001a90535060049490941c93613ecc81615d70565b9050613e5e565b508315612da55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108f8565b613f2b81612edc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613fca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108f8565b600080846001600160a01b031684604051613fe59190615b21565b600060405180830381855af49150503d8060008114614020576040519150601f19603f3d011682016040523d82523d6000602084013e614025565b606091505b5091509150612e3f8282604051806060016040528060278152602001615f0060279139614db4565b60608161405b81601f615aa3565b10156140795760405162461bcd60e51b81526004016108f890615d87565b6140838284615aa3565b845110156140c75760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b6060821580156140e65760405191506000825260208201604052614130565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561411f578051835260209283019201614107565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161414a9190615aa3565b614155906002615e93565b1161415f57600080fd5b8360005b8460011461413057614176600286615add565b6001036142155760028482815181106141915761419161597d565b6020026020010151836040516020016141b4929190918252602082015260400190565b60408051601f19818403018152908290526141ce91615b21565b602060405180830381855afa1580156141eb573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061420e91906158fd565b91506142a9565b60028285838151811061422a5761422a61597d565b602002602001015160405160200161424c929190918252602082015260400190565b60408051601f198184030181529082905261426691615b21565b602060405180830381855afa158015614283573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142a691906158fd565b91505b6142b4600286615a70565b9450806142c081615a01565b915050614163565b80516060906000816001600160401b038111156142e7576142e76151fd565b60405190808252806020026020018201604052801561432c57816020015b60408051808201909152606080825260208201528152602001906001900390816143055790505b50905060005b828110156143ae5760405180604001604052808683815181106143575761435761597d565b602002602001015181526020016143868784815181106143795761437961597d565b6020026020010151614dcd565b81525082828151811061439b5761439b61597d565b6020908102919091010152600101614332565b509392505050565b805160609060006143c8826002615a84565b6001600160401b038111156143df576143df6151fd565b6040519080825280601f01601f191660200182016040528015614409576020820181803683370190505b5090506000805b838110156144c65785818151811061442a5761442a61597d565b6020910101516001600160f81b03198116925060041c60ff60f41b1683614452836002615a84565b815181106144625761446261597d565b60200101906001600160f81b031916908160001a905350600f60f81b82168361448c836002615a84565b614497906001615aa3565b815181106144a7576144a761597d565b60200101906001600160f81b031916908160001a905350600101614410565b5090949350505050565b606060008060006144e0856146f1565b9194509250905060008160018111156144fb576144fb6153af565b1461456e5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016108f8565b6145788284615aa3565b8551146145e45760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016108f8565b612e3f85602001518484614ddb565b6060602082600001511061460f5761460a826144d0565b6107b8565b6107b882614e7b565b60606107b861463783602001516000815181106133b0576133b061597d565b6143b6565b60608251821061465b57506040805160208101909152600081526107b8565b612da5838384865161466d9190615a47565b614e91565b6000806000835185511061468757835161468a565b84515b90505b80821080156146e157508382815181106146a9576146a961597d565b602001015160f81c60f81b6001600160f81b0319168583815181106146d0576146d061597d565b01602001516001600160f81b031916145b156143ae5781600101915061468d565b6000806000808460000151116147195760405162461bcd60e51b81526004016108f890615d00565b6020840151805160001a607f811161473e576000600160009450945094505050614dad565b60b7811161489b576000614753608083615a47565b9050808760000151116147d35760405162461bcd60e51b815260206004820152604e6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016108f8565b6001838101516001600160f81b03191690821415806148005750600160ff1b6001600160f81b0319821610155b6148885760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016108f8565b5060019550935060009250614dad915050565b60bf8111614adc5760006148b060b783615a47565b9050808760000151116149335760405162461bcd60e51b81526020600482015260516024820152600080516020615ec083398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016108f8565b60018301516001600160f81b03191660008190036149ba5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016108f8565b600184015160088302610100031c60378111614a3d5760405162461bcd60e51b81526020600482015260486024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016108f8565b614a478184615aa3565b895111614abf5760405162461bcd60e51b815260206004820152604c6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016108f8565b614aca836001615aa3565b9750955060009450614dad9350505050565b60f78111614b7e576000614af160c083615a47565b905080876000015111614b6d5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016108f8565b600195509350849250614dad915050565b6000614b8b60f783615a47565b905080876000015111614c0a5760405162461bcd60e51b815260206004820152604d6024820152600080516020615ec083398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016108f8565b60018301516001600160f81b0319166000819003614c8f5760405162461bcd60e51b81526020600482015260486024820152600080516020615ec083398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016108f8565b600184015160088302610100031c60378111614d105760405162461bcd60e51b81526020600482015260466024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016108f8565b614d1a8184615aa3565b895111614d905760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016108f8565b614d9b836001615aa3565b9750955060019450614dad9350505050565b9193909250565b60608315614dc3575081612da5565b612da58383614f1f565b60606107b8612d7483613d22565b60606000826001600160401b03811115614df757614df76151fd565b6040519080825280601f01601f191660200182016040528015614e21576020820181803683370190505b50905082600003614e33579050612da5565b6000614e3f8587615aa3565b90506020820160005b85811015614e60578281015182820152602001614e48565b85811115614e6f576000868301525b50919695505050505050565b60606107b8826020015160008460000151614ddb565b60608182601f011015614eb65760405162461bcd60e51b81526004016108f890615d87565b828284011015614ed85760405162461bcd60e51b81526004016108f890615d87565b818301845110156140c75760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b815115614f2f5781518083602001fd5b8060405162461bcd60e51b81526004016108f891906157d3565b82805482825590600052602060002090600701600890048101928215614fe85791602002820160005b83821115614fb657835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614f72565b8015614fe65782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614fb6565b505b50614ff4929150614ff8565b5090565b5b80821115614ff45760008155600101614ff9565b6001600160e01b031981168114610acb57600080fd5b60006020828403121561503557600080fd5b8135612da58161500d565b80356001600160401b03811681146130a357600080fd5b60006020828403121561506957600080fd5b612da582615040565b803563ffffffff811681146130a357600080fd5b80356001600160a01b03811681146130a357600080fd5b60008083601f8401126150af57600080fd5b5081356001600160401b038111156150c657600080fd5b60208301915083602082850101111561212c57600080fd5b600080600080606085870312156150f457600080fd5b6150fd85615072565b935061510b60208601615086565b925060408501356001600160401b0381111561512657600080fd5b6151328782880161509d565b95989497509550505050565b60006020828403121561515057600080fd5b612da582615072565b60006020828403121561516b57600080fd5b5035919050565b6000806040838503121561518557600080fd5b8235915061519560208401615086565b90509250929050565b6000602082840312156151b057600080fd5b612da582615086565b60008083601f8401126151cb57600080fd5b5081356001600160401b038111156151e257600080fd5b6020830191508360208260051b850101111561212c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561523b5761523b6151fd565b604052919050565b600082601f83011261525457600080fd5b81356001600160401b0381111561526d5761526d6151fd565b615280601f8201601f1916602001615213565b81815284602083860101111561529557600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156152d357600080fd5b6001600160401b03808d3511156152e957600080fd5b6152f68e8e358f0161509d565b909c509a5060208d013581101561530c57600080fd5b61531c8e60208f01358f0161509d565b909a50985060408d013581101561533257600080fd5b6153428e60408f01358f016151b9565b909850965060608d0135955060808d013581101561535f57600080fd5b61536f8e60808f01358f016151b9565b909550935060a08d013581101561538557600080fd5b506153968d60a08e01358e01615243565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b60208101600383106153e757634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561540057600080fd5b61540983615086565b915060208301356001600160401b0381111561542457600080fd5b61543085828601615243565b9150509250929050565b60006001600160401b03821115615453576154536151fd565b5060051b60200190565b600082601f83011261546e57600080fd5b8135602061548361547e8361543a565b615213565b82815260059290921b840181019181810190868411156154a257600080fd5b8286015b848110156154c4576154b781615086565b83529183019183016154a6565b509695505050505050565b8015158114610acb57600080fd5b80356130a3816154cf565b60008060008060008060c0878903121561550157600080fd5b86356001600160401b038082111561551857600080fd5b818901915089601f83011261552c57600080fd5b8135602061553c61547e8361543a565b82815260059290921b8401810191818101908d84111561555b57600080fd5b948201945b838610156155805761557186615072565b82529482019490820190615560565b9a50508a01359250508082111561559657600080fd5b6155a28a838b0161545d565b965060408901359150808211156155b857600080fd5b506155c589828a0161545d565b9450506155d460608801615086565b92506155e260808801615086565b91506155f060a088016154dd565b90509295509295509295565b6000806000806060858703121561561257600080fd5b61561b85615072565b93506020850135925060408501356001600160401b0381111561512657600080fd5b60008060008060008060006080888a03121561565857600080fd5b61566188615040565b965060208801356001600160401b038082111561567d57600080fd5b6156898b838c0161509d565b909850965060408a01359150808211156156a257600080fd5b6156ae8b838c016151b9565b909650945060608a01359150808211156156c757600080fd5b506156d48a828b016151b9565b989b979a50959850939692959293505050565b6000806000606084860312156156fc57600080fd5b61570584615072565b925061571360208501615086565b915061572160408501615086565b90509250925092565b60006020828403121561573c57600080fd5b8135612da5816154cf565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681810361577957615779615747565b6001019392505050565b60005b8381101561579e578181015183820152602001615786565b50506000910152565b600081518084526157bf816020860160208601615783565b601f01601f19169290920160200192915050565b602081526000612da560208301846157a7565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600080604083850312156158e657600080fd5b6158ef83615040565b915061519560208401615040565b60006020828403121561590f57600080fd5b5051919050565b600061592461547e8461543a565b80848252602080830192508560051b85013681111561594257600080fd5b855b81811015614e6f5780356001600160401b038111156159635760008081fd5b61596f36828a01615243565b865250938201938201615944565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff80831681810361577957615779615747565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b600060018201615a1357615a13615747565b5060010190565b8183823760009101908152919050565b600060208284031215615a3c57600080fd5b8151612da5816154cf565b818103818111156107b8576107b8615747565b634e487b7160e01b600052601260045260246000fd5b600082615a7f57615a7f615a5a565b500490565b6000816000190483118215151615615a9e57615a9e615747565b500290565b808201808211156107b8576107b8615747565b6001600160401b03828116828216039080821115615ad657615ad6615747565b5092915050565b600082615aec57615aec615a5a565b500690565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612e3f908301846157a7565b60008251615b33818460208701615783565b9190910192915050565b600060208284031215615b4f57600080fd5b8151612da58161500d565b604081526000615b6d60408301856157a7565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615c3d816045850160208701615783565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615c88816017850160208801615783565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615cb9816028840160208801615783565b01602801949350505050565b600060ff831680615cd857615cd8615a5a565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b8615747565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615d7f57615d7f615747565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615dea578160001904821115615dd057615dd0615747565b80851615615ddd57918102915b93841c9390800290615db4565b509250929050565b600082615e01575060016107b8565b81615e0e575060006107b8565b8160018114615e245760028114615e2e57615e4a565b60019150506107b8565b60ff841115615e3f57615e3f615747565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615e6d575081810a6107b8565b615e778383615daf565b8060001904821115615e8b57615e8b615747565b029392505050565b6000612da58383615df256fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220d1e681f8339d20f7fcc3322c41e55c3dcb7cdb430c94d44ac0291a618458e04664736f6c63430008100033", - "sourceMap": "698:1544:102:-:0;;;1332:4:38;1289:48;;987:53:102;;;;;;;;;-1:-1:-1;1011:22:102;:20;:22::i;:::-;698:1544;;5928:279:37;5996:13;;;;;;;5995:14;5987:66;;;;-1:-1:-1;;;5987:66:37;;216:2:146;5987:66:37;;;198:21:146;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:146;;;338:37;392:19;;5987:66:37;;;;;;;;6067:12;;6082:15;6067:12;;;:30;6063:138;;;6113:12;:30;;-1:-1:-1;;6113:30:37;6128:15;6113:30;;;;;;6162:28;;564:36:146;;;6162:28:37;;552:2:146;537:18;6162:28:37;;;;;;;6063:138;5928:279::o;422:184:146:-;698:1544:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x6080604052600436106102255760003560e01c806366c5c4a0116101235780639a2ed203116100ab578063d547741f1161006f578063d547741f146106fb578063e4407b151461071b578063ed762d4414610730578063f288a2e214610750578063ffa1ad741461077257600080fd5b80639a2ed203146106395780639efeff1c14610659578063a217fddf1461068e578063a96a2e92146106a3578063affed0e0146106c357600080fd5b80637acc6754116100f25780637acc6754146105975780638d080d1d146105b757806391cd8bfd146105e457806391d148541461060457806399464c891461062457600080fd5b806366c5c4a01461050c57806368346a92146105215780636fdbccbf146105415780637599735c1461056157600080fd5b806336ae7c18116101b15780634f1ef286116101755780634f1ef2861461044a57806352d1902d1461045d57806354fd4d501461047257806359f897871461049e5780635cb77819146104ec57600080fd5b806336ae7c181461038e57806337d5af84146103be5780633c6cf473146103de5780633e99e9ce1461041b5780634552f5631461043557600080fd5b8063248a9ca3116101f8578063248a9ca3146102dc57806324ea54f41461030c5780632f2ff15d1461032e57806336568abe1461034e5780633659cfe61461036e57600080fd5b806301ffc9a71461022a578063029d67131461025f578063147bce491461029a5780631f3d25a9146102ba575b600080fd5b34801561023657600080fd5b5061024a610245366004615023565b610787565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061028c61027a366004615057565b60016020526000908152604090205481565b604051908152602001610256565b3480156102a657600080fd5b5061028c6102b53660046150de565b6107be565b3480156102c657600080fd5b506102da6102d536600461513e565b6108c4565b005b3480156102e857600080fd5b5061028c6102f7366004615159565b600090815260c9602052604090206001015490565b34801561031857600080fd5b5061028c600080516020615f2783398151915281565b34801561033a57600080fd5b506102da610349366004615172565b610947565b34801561035a57600080fd5b506102da610369366004615172565b610971565b34801561037a57600080fd5b506102da61038936600461519e565b6109ef565b34801561039a57600080fd5b5061024a6103a936600461513e565b60066020526000908152604090205460ff1681565b3480156103ca57600080fd5b506102da6103d93660046152b2565b610ace565b3480156103ea57600080fd5b5061040e6103f9366004615159565b60076020526000908152604090205460ff1681565b60405161025691906153c5565b34801561042757600080fd5b5060005461024a9060ff1681565b34801561044157600080fd5b5060035461028c565b6102da6104583660046153ed565b610d9c565b34801561046957600080fd5b5061028c610e68565b34801561047e57600080fd5b5060085461048c9060ff1681565b60405160ff9091168152602001610256565b3480156104aa57600080fd5b506104d46104b936600461513e565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104f857600080fd5b506102da6105073660046154e8565b610f1b565b34801561051857600080fd5b506102da61121e565b34801561052d57600080fd5b5061028c61053c3660046150de565b611303565b34801561054d57600080fd5b5061028c61055c3660046155fc565b611384565b34801561056d57600080fd5b506104d461057c36600461513e565b6004602052600090815260409020546001600160a01b031681565b3480156105a357600080fd5b506102da6105b236600461563d565b6113dd565b3480156105c357600080fd5b5061028c6105d2366004615159565b60096020526000908152604090205481565b3480156105f057600080fd5b506102da6105ff3660046156e7565b6116f2565b34801561061057600080fd5b5061024a61061f366004615172565b6118a3565b34801561063057600080fd5b506102da6118ce565b34801561064557600080fd5b506102da61065436600461513e565b6119b3565b34801561066557600080fd5b50610679610674366004615159565b611a30565b60405163ffffffff9091168152602001610256565b34801561069a57600080fd5b5061028c600081565b3480156106af57600080fd5b5061028c6106be3660046155fc565b611a6a565b3480156106cf57600080fd5b506002546106e3906001600160401b031681565b6040516001600160401b039091168152602001610256565b34801561070757600080fd5b506102da610716366004615172565b611ac3565b34801561072757600080fd5b5061028c607881565b34801561073c57600080fd5b506102da61074b36600461572a565b611ae8565b34801561075c57600080fd5b5061028c600080516020615ea083398151915281565b34801561077e57600080fd5b5061048c600181565b60006001600160e01b03198216637965db0b60e01b14806107b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805460ff166107e257604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036108085760405163b0747d8160e01b815260040160405180910390fd5b600080610821876001600160a01b0388165b8787611b63565b600280546001600160401b0390811660009081526001602052604081208490558254949650929450849316916108568361575d565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506001600160401b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac846040516108b291906157d3565b60405180910390a39695505050505050565b6108dc600080516020615f27833981519152336118a3565b6109015760405162461bcd60e51b81526004016108f8906157e6565b60405180910390fd5b63ffffffff8116600081815260066020526040808220805460ff19169055517f9fd67bd682613b07687b42f99d8b24402d09feabb75df93abdb26b8fcf9845839190a250565b600082815260c9602052604090206001015461096281611bda565b61096c8383611be4565b505050565b6001600160a01b03811633146109e15760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108f8565b6109eb8282611c6a565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a375760405162461bcd60e51b81526004016108f89061583b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a80600080516020615ee0833981519152546001600160a01b031690565b6001600160a01b031614610aa65760405162461bcd60e51b81526004016108f890615887565b610aaf81611cd1565b60408051600080825260208201909252610acb91839190611d05565b50565b610ad6611e70565b600080610ae38b8b611ec9565b91509150610af48260400151612133565b610b018260400151612262565b6000808e8e810190610b1391906158d3565b91509150610b258285604001516122be565b60408481015163ffffffff166000908152600460208190528282205492516356f90d7960e01b81526001600160401b0386169181019190915290916001600160a01b0316906356f90d7990602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb491906158fd565b905080610bfb5760405162461bcd60e51b8152602060048201526015602482015274486561646572526f6f74206973206d697373696e6760581b60448201526064016108f8565b6000610c448b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060408a0151869150889088906124f2565b905080610c935760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726563656970747320726f6f742070726f6f66000000000060448201526064016108f8565b505050506000610cf8878790610ca99190615916565b60408086015163ffffffff166000908152600560205220548a90889088906001600160a01b03167fe5944a34d67c652e0ebf2304b48432aae0b55e40f79ba8a21a4d7054c169ffac60026126fc565b9050818114610d415760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b50610d8382828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612aaf92505050565b5050610d8f6001603355565b5050505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610de45760405162461bcd60e51b81526004016108f89061583b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e2d600080516020615ee0833981519152546001600160a01b031690565b6001600160a01b031614610e535760405162461bcd60e51b81526004016108f890615887565b610e5c82611cd1565b6109eb82826001611d05565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f085760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f8565b50600080516020615ee083398151915290565b603254610100900460ff1615808015610f3b5750603254600160ff909116105b80610f555750303b158015610f55575060325460ff166001145b610fb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f8565b6032805460ff191660011790558015610fdb576032805461ff0019166101001790555b610fe3612c5d565b610feb612c8e565b611003600080516020615f2783398151915284611be4565b61101b600080516020615ea083398151915285611be4565b611026600085611be4565b61102e612c8e565b855187511461103c57600080fd5b845187511461104a57600080fd5b865161105d9060039060208a0190614f49565b5060005b60035463ffffffff821610156111b157868163ffffffff16815181106110895761108961597d565b60200260200101516004600060038463ffffffff16815481106110ae576110ae61597d565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858163ffffffff168151811061112a5761112a61597d565b60200260200101516005600060038463ffffffff168154811061114f5761114f61597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168352820192909252604001902080546001600160a01b0319166001600160a01b0392909216919091179055806111a981615993565b915050611061565b506000805483151560ff19918216179091556008805490911660011790558015611215576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b611236600080516020615f27833981519152336118a3565b6112525760405162461bcd60e51b81526004016108f8906157e6565b60005b60035463ffffffff821610156112d75760006006600060038463ffffffff16815481106112845761128461597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff1916911515919091179055806112cf81615993565b915050611255565b506040517fe6fdbf73945dd61794a752b9181ea29f77170a7b1ffd37e0a7ff9d2c6f7258b990600090a1565b6000805460ff1661132757604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff160361134d5760405163b0747d8160e01b815260040160405180910390fd5b600080611363876001600160a01b03881661081a565b6002805492945090925082916001600160401b03169060006108568361575d565b6000805460ff166113a857604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff16036113ce5760405163b0747d8160e01b815260040160405180910390fd5b60008061082187878787611b63565b6113e5611e70565b6000806113f28888611ec9565b915091506114038260400151612133565b6114108260400151612262565b61141e8983604001516122be565b60408281015163ffffffff811660009081526005602090815283822054845160e09490941b6001600160e01b0319168483015260c08e901b6001600160c01b031916602485015260601b6001600160601b031916602c840152835180840382018152928401845282519281019290922080825260099092529182205482036115d05760408085015163ffffffff16600090815260046020819052828220549251637623ee2960e01b81526001600160401b038f169181019190915290916001600160a01b031690637623ee2990602401602060405180830381865afa15801561150b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152f91906158fd565b905060008190036115825760405162461bcd60e51b815260206004820152601f60248201527f457865637574696f6e20537461746520526f6f74206973206e6f74207365740060448201526064016108f8565b6115b661158f898b615916565b60408088015163ffffffff166000908152600560205220546001600160a01b031683612cb5565b600083815260096020526040902081905592506115e29050565b60008181526009602052604090205491505b6000846020015160016040516020016116109291906001600160401b03929092168252602082015260400190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209050600061165882856116538a8c615916565b612dac565b90508481146116a15760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21036b2b9b9b0b3b2903430b9b41760591b60448201526064016108f8565b505050506116e682828a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612aaf92505050565b50506112156001603355565b61170a600080516020615ea0833981519152336118a3565b6117265760405162461bcd60e51b81526004016108f8906159ac565b6000805b600354811015611792578463ffffffff166003828154811061174e5761174e61597d565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16036117805760019150611792565b8061178a81615a01565b91505061172a565b508061181b57600380546001810182556000918252600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805463ffffffff80891660046007909516949094026101000a84810291021990911617905560405190917f65a791dc0a39717013964ace2b78f8307f275c293b7fdb425346ce8e18cb318891a25b63ffffffff8416600081815260046020908152604080832080546001600160a01b038981166001600160a01b031992831681179093556005855294839020805495891695909116851790558151908152918201929092527f0205eaadbbed4fbe918b2a594d41bceb212a89010cc678c6762b18d65679b2ef910160405180910390a250505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118e6600080516020615f27833981519152336118a3565b6119025760405162461bcd60e51b81526004016108f8906157e6565b60005b60035463ffffffff821610156119875760016006600060038463ffffffff16815481106119345761193461597d565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff1683528201929092526040019020805460ff19169115159190911790558061197f81615993565b915050611905565b506040517f61340a1b154d5d21d259a74bf95379201799b9d12cc6509bb46cb56dc281df5590600090a1565b6119cb600080516020615f27833981519152336118a3565b6119e75760405162461bcd60e51b81526004016108f8906157e6565b63ffffffff8116600081815260066020526040808220805460ff19166001179055517ff6cf9095f1dcea2429c26c832cbcc084fa0a1692b2c301601edd75b9d83520b29190a250565b60038181548110611a4057600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6000805460ff16611a8e57604051631492b62f60e11b815260040160405180910390fd5b468563ffffffff1603611ab45760405163b0747d8160e01b815260040160405180910390fd5b60008061136387878787611b63565b600082815260c96020526040902060010154611ade81611bda565b61096c8383611c6a565b611b00600080516020615f27833981519152336118a3565b611b1c5760405162461bcd60e51b81526004016108f8906157e6565b6000805460ff19168215159081179091556040519081527f3eea1dc6ce990571e1081137b38c853529a3893b52e9719a48a2f4ac5e3a956c9060200160405180910390a150565b600854600254604080516020601f8601819004810282018101909252848152606093600093611bc69360ff909216926001600160401b0390911691469133918c918c918c908c9081908401838280828437600092019190915250612e4892505050565b805160208201209097909650945050505050565b610acb8133612e83565b611bee82826118a3565b6109eb57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c263390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c7482826118a3565b156109eb57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611ce9600080516020615ea0833981519152336118a3565b610acb5760405162461bcd60e51b81526004016108f8906159ac565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d385761096c83612edc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d92575060408051601f3d908101601f19168201909252611d8f918101906158fd565b60015b611df55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f8565b600080516020615ee08339815191528114611e645760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f8565b5061096c838383612f78565b600260335403611ec25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108f8565b6002603355565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152600080611f4685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612fa392505050565b905060008585604051611f5a929190615a1a565b60405190819003902090506000808281526007602052604090205460ff166002811115611f8957611f896153af565b14611fd65760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792065786563757465642e0000000000000060448201526064016108f8565b46826080015163ffffffff161461201e5760405162461bcd60e51b815260206004820152600c60248201526b2bb937b7339031b430b4b71760a11b60448201526064016108f8565b600854825160ff9081169116146120685760405162461bcd60e51b815260206004820152600e60248201526d2bb937b733903b32b939b4b7b71760911b60448201526064016108f8565b60408083015163ffffffff166000908152600460205220546001600160a01b031615806120b3575060408083015163ffffffff166000908152600560205220546001600160a01b0316155b156121265760405162461bcd60e51b815260206004820152603760248201527f4c6967687420636c69656e74206f722062726f616463617374657220666f722060448201527f736f7572636520636861696e206973206e6f742073657400000000000000000060648201526084016108f8565b90925090505b9250929050565b63ffffffff81166000908152600460205260409020546001600160a01b03166121995760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020818152604092839020548351632bcccca560e01b815293516001600160a01b0390911693632bcccca5938181019392918290030181865afa1580156121f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122169190615a2a565b610acb5760405162461bcd60e51b815260206004820152601d60248201527f4c6967687420636c69656e7420697320696e636f6e73697374656e742e00000060448201526064016108f8565b63ffffffff811660009081526006602052604090205460ff1615610acb5760405162461bcd60e51b815260206004820152601360248201527221b7b73a3930b1ba1034b990333937bd32b71760691b60448201526064016108f8565b63ffffffff81166000908152600460205260409020546001600160a01b03166123245760405162461bcd60e51b81526020600482015260186024820152772634b3b43a1031b634b2b73a1034b9903737ba1039b2ba1760411b60448201526064016108f8565b63ffffffff8116600090815260046020819052604091829020549151638bc33af360e01b81526001600160401b038516918101919091526001600160a01b0390911690638bc33af390602401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b191906158fd565b6000036124005760405162461bcd60e51b815260206004820152601e60248201527f54696d657374616d70206973206e6f742073657420666f7220736c6f742e000060448201526064016108f8565b63ffffffff81166000908152600460208190526040808320549051638bc33af360e01b81526001600160401b038616928101929092526001600160a01b031690638bc33af390602401602060405180830381865afa158015612466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248a91906158fd565b6124949042615a47565b9050607881101561096c5760405162461bcd60e51b815260206004820152602260248201527f4d7573742077616974206c6f6e67657220746f20757365207468697320736c6f6044820152613a1760f11b60648201526084016108f8565b6000806124fe83613068565b9050600081856001600160401b03161061251957601b61251c565b60075b60ff169050600082866001600160401b03161061255857612000612549846001600160401b038916615a47565b6125539190615a70565b61256d565b61256d6120006001600160401b038816615a70565b90506000866001600160401b0316886001600160401b0316036125ac5750600b61259981610200615a84565b6125a590610183615aa3565b90506126e1565b6120006125b9888a615ab6565b6001600160401b03161161261b5750600b6125d5816020615a84565b6125e0906006615aa3565b90506125f76120006001600160401b038916615add565b61260361200083615a84565b61260d9190615aa3565b905061259981610200615a84565b876001600160401b0316876001600160401b031610156126995750600b82612644826020615a84565b61264e9190615aa3565b905061265b816002615a84565b612666906000615aa3565b905081612677630100000083615a84565b6126819190615aa3565b905061268e816002615a84565b6125e0906001615aa3565b60405162461bcd60e51b815260206004820152601e60248201527f546172676574414d423a20696e76616c69642074617267657420736c6f74000060448201526064016108f8565b6126ed8b828c8c6130a8565b9b9a5050505050505050505050565b60008061270a878a8a6130c2565b90506000816000815181106127215761272161597d565b01602001516001600160f81b03191690506000600160f81b8214806127535750600160f91b6001600160f81b03198316145b15612760575060016127c5565b600360fe1b6001600160f81b031983161061277d575060006127c5565b60405162461bcd60e51b815260206004820152601c60248201527f556e737570706f72746564207472616e73616374696f6e20747970650000000060448201526064016108f8565b6000602084019050600060405180604001604052808487516127e79190615a47565b81526020016127f68585615aa3565b90529050600061280582613962565b905080516004146128515760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e4cac6cad2e0e840d8cadccee8d60531b60448201526064016108f8565b6000612876826003815181106128695761286961597d565b6020026020010151613962565b905080518c106128c85760405162461bcd60e51b815260206004820152601760248201527f4c6f6720696e646578206f7574206f6620626f756e647300000000000000000060448201526064016108f8565b60006128df828e815181106128695761286961597d565b9050805160031461293d5760405162461bcd60e51b815260206004820152602260248201527f4c6f672068617320696e636f7272656374206e756d626572206f66206669656c604482015261647360f01b60648201526084016108f8565b6000612962826000815181106129555761295561597d565b6020026020010151613b87565b90508c6001600160a01b0316816001600160a01b0316146129d55760405162461bcd60e51b815260206004820152602760248201527f4576656e7420776173206e6f7420656d697474656420627920636c61696d656460448201526622b6b4ba3a32b960c91b60648201526084016108f8565b60006129ed836001815181106128695761286961597d565b90508c612a1382600081518110612a0657612a0661597d565b6020026020010151613bf1565b14612a765760405162461bcd60e51b815260206004820152602d60248201527f4576656e74207369676e617475726520646f6573206e6f74206d61746368206560448201526c76656e745369676e617475726560981b60648201526084016108f8565b612a98818d81518110612a8b57612a8b61597d565b6020026020010151613bf8565b9a5050505050505050505050979650505050505050565b600060606000633bdc60d660e01b866040015187606001518860c00151604051602401612ade93929190615af1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260a0870151909150806001600160a01b031682604051612b309190615b21565b6000604051808303816000865af19150503d8060008114612b6d576040519150601f19603f3d011682016040523d82523d6000602084013e612b72565b606091505b5080519195509350600092506020039050612bb457600082806020019051810190612b9d9190615b3d565b6001600160e01b031916631dee306b60e11b149150505b828015612bbe5750805b15612be1576000858152600760205260409020805460ff19166002179055612bfb565b6000858152600760205260409020805460ff191660011790555b8486602001516001600160401b0316876040015163ffffffff167f1f26985f3389d5ee1e49b37cdef193b3e98c927d7dd8b6a1f9cddd17a1fe89478787604051612c46929190615b5a565b60405180910390a4505050505050565b6001603355565b603254610100900460ff16612c845760405162461bcd60e51b81526004016108f890615b7e565b612c8c613cfb565b565b603254610100900460ff16612c8c5760405162461bcd60e51b81526004016108f890615b7e565b6040516001600160601b0319606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506000612d1a82604051602001612d0491815260200190565b60405160208183030381529060405287866130c2565b90506000815111612d665760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016108f8565b6000612d79612d7483613d22565b613962565b90508051600414612d8957600080fd5b612d9f81600281518110612a0657612a0661597d565b93505050505b9392505050565b600080612ddb85604051602001612dc591815260200190565b60405160208183030381529060405284866130c2565b90506000815111612e2e5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016108f8565b612e3f612e3a82613d22565b613bf1565b95945050505050565b606087878787878787604051602001612e679796959493929190615bc9565b6040516020818303038152906040529050979650505050505050565b612e8d82826118a3565b6109eb57612e9a81613d75565b612ea5836020613d87565b604051602001612eb6929190615c50565b60408051601f198184030181529082905262461bcd60e51b82526108f8916004016157d3565b6001600160a01b0381163b612f495760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f8565b600080516020615ee083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612f8183613f22565b600082511180612f8e5750805b1561096c57612f9d8383613f62565b50505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260018201516009830151600d8401516021850151602586015160458088015160ff871688526001600160401b038616602089015263ffffffff80861660408a01526001600160a01b03851660608a01528316608089015260a0880181905288519091613057918a9190613052908290615a47565b61404d565b60c088015250949695505050505050565b60008163ffffffff166001036130825750625ec000919050565b8163ffffffff1660050361309a5750624f4000919050565b50600019919050565b919050565b6000806130b6868686614139565b90921495945050505050565b6060600084511161310d5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016108f8565b6000613118846142c8565b90506000613125866143b6565b905060008460405160200161313c91815260200190565b60405160208183030381529060405290506000805b845181101561390b57600085828151811061316e5761316e61597d565b6020026020010151905084518311156131e05760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016108f8565b8260000361327f578051805160209182012060405161322e9261320892910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61327a5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016108f8565b613375565b80515160201161330557805180516020918201206040516132a99261320892910190815260200190565b61327a5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016108f8565b8051845160208087019190912082519190920120146133755760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016108f8565b61338160106001615aa3565b8160200151510361352e57845183036134c65760006133bd82602001516010815181106133b0576133b061597d565b60200260200101516144d0565b905060008151116134365760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016108f8565b600187516134449190615a47565b83146134b85760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016108f8565b9650612da595505050505050565b60008584815181106134da576134da61597d565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106135055761350561597d565b60200260200101519050613518816145f3565b9550613525600186615aa3565b945050506138f8565b60028160200151510361389f57600061354682614618565b905060008160008151811061355d5761355d61597d565b016020015160f81c90506000613574600283615cc5565b61357f906002615ce7565b90506000613590848360ff1661463c565b9050600061359e8a8961463c565b905060006135ac8383614672565b9050808351146136245760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016108f8565b60ff851660021480613639575060ff85166003145b156137df57808251146136b45760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016108f8565b60006136d088602001516001815181106133b0576133b061597d565b905060008151116137495760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016108f8565b60018d516137579190615a47565b89146137cb5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016108f8565b9c50612da59b505050505050505050505050565b60ff851615806137f2575060ff85166001145b156138315761381e87602001516001815181106138115761381161597d565b60200260200101516145f3565b995061382a818a615aa3565b9850613894565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016108f8565b5050505050506138f8565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016108f8565b508061390381615a01565b915050613151565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016108f8565b60606000806000613972856146f1565b91945092509050600181600181111561398d5761398d6153af565b14613a005760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016108f8565b8451613a0c8385615aa3565b14613a745760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016108f8565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081613a8d5790505090506000845b8751811015613b7b57600080613b006040518060400160405280858d60000151613ae49190615a47565b8152602001858d60200151613af99190615aa3565b90526146f1565b509150915060405180604001604052808383613b1c9190615aa3565b8152602001848c60200151613b319190615aa3565b815250858581518110613b4657613b4661597d565b6020908102919091010152613b5c600185615aa3565b9350613b688183615aa3565b613b729084615aa3565b92505050613aba565b50815295945050505050565b8051600090600103613b9b57506000919050565b8151601514613bec5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e00000000000060448201526064016108f8565b6107b8825b60006107b8825b6000602182600001511115613c4f5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000806000613c5d856146f1565b919450925090506000816001811115613c7857613c786153af565b14613cc55760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016108f8565b6000838660200151613cd79190615aa3565b80519091506020841015613cf15760208490036101000a90045b9695505050505050565b603254610100900460ff16612c565760405162461bcd60e51b81526004016108f890615b7e565b60408051808201909152600080825260208201526000825111613d575760405162461bcd60e51b81526004016108f890615d00565b50604080518082019091528151815260209182019181019190915290565b60606107b86001600160a01b03831660145b60606000613d96836002615a84565b613da1906002615aa3565b6001600160401b03811115613db857613db86151fd565b6040519080825280601f01601f191660200182016040528015613de2576020820181803683370190505b509050600360fc1b81600081518110613dfd57613dfd61597d565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613e2c57613e2c61597d565b60200101906001600160f81b031916908160001a9053506000613e50846002615a84565b613e5b906001615aa3565b90505b6001811115613ed3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613e8f57613e8f61597d565b1a60f81b828281518110613ea557613ea561597d565b60200101906001600160f81b031916908160001a90535060049490941c93613ecc81615d70565b9050613e5e565b508315612da55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108f8565b613f2b81612edc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613fca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108f8565b600080846001600160a01b031684604051613fe59190615b21565b600060405180830381855af49150503d8060008114614020576040519150601f19603f3d011682016040523d82523d6000602084013e614025565b606091505b5091509150612e3f8282604051806060016040528060278152602001615f0060279139614db4565b60608161405b81601f615aa3565b10156140795760405162461bcd60e51b81526004016108f890615d87565b6140838284615aa3565b845110156140c75760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b6060821580156140e65760405191506000825260208201604052614130565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561411f578051835260209283019201614107565b5050858452601f01601f1916604052505b50949350505050565b6000828251600161414a9190615aa3565b614155906002615e93565b1161415f57600080fd5b8360005b8460011461413057614176600286615add565b6001036142155760028482815181106141915761419161597d565b6020026020010151836040516020016141b4929190918252602082015260400190565b60408051601f19818403018152908290526141ce91615b21565b602060405180830381855afa1580156141eb573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061420e91906158fd565b91506142a9565b60028285838151811061422a5761422a61597d565b602002602001015160405160200161424c929190918252602082015260400190565b60408051601f198184030181529082905261426691615b21565b602060405180830381855afa158015614283573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906142a691906158fd565b91505b6142b4600286615a70565b9450806142c081615a01565b915050614163565b80516060906000816001600160401b038111156142e7576142e76151fd565b60405190808252806020026020018201604052801561432c57816020015b60408051808201909152606080825260208201528152602001906001900390816143055790505b50905060005b828110156143ae5760405180604001604052808683815181106143575761435761597d565b602002602001015181526020016143868784815181106143795761437961597d565b6020026020010151614dcd565b81525082828151811061439b5761439b61597d565b6020908102919091010152600101614332565b509392505050565b805160609060006143c8826002615a84565b6001600160401b038111156143df576143df6151fd565b6040519080825280601f01601f191660200182016040528015614409576020820181803683370190505b5090506000805b838110156144c65785818151811061442a5761442a61597d565b6020910101516001600160f81b03198116925060041c60ff60f41b1683614452836002615a84565b815181106144625761446261597d565b60200101906001600160f81b031916908160001a905350600f60f81b82168361448c836002615a84565b614497906001615aa3565b815181106144a7576144a761597d565b60200101906001600160f81b031916908160001a905350600101614410565b5090949350505050565b606060008060006144e0856146f1565b9194509250905060008160018111156144fb576144fb6153af565b1461456e5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016108f8565b6145788284615aa3565b8551146145e45760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016108f8565b612e3f85602001518484614ddb565b6060602082600001511061460f5761460a826144d0565b6107b8565b6107b882614e7b565b60606107b861463783602001516000815181106133b0576133b061597d565b6143b6565b60608251821061465b57506040805160208101909152600081526107b8565b612da5838384865161466d9190615a47565b614e91565b6000806000835185511061468757835161468a565b84515b90505b80821080156146e157508382815181106146a9576146a961597d565b602001015160f81c60f81b6001600160f81b0319168583815181106146d0576146d061597d565b01602001516001600160f81b031916145b156143ae5781600101915061468d565b6000806000808460000151116147195760405162461bcd60e51b81526004016108f890615d00565b6020840151805160001a607f811161473e576000600160009450945094505050614dad565b60b7811161489b576000614753608083615a47565b9050808760000151116147d35760405162461bcd60e51b815260206004820152604e6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016108f8565b6001838101516001600160f81b03191690821415806148005750600160ff1b6001600160f81b0319821610155b6148885760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016108f8565b5060019550935060009250614dad915050565b60bf8111614adc5760006148b060b783615a47565b9050808760000151116149335760405162461bcd60e51b81526020600482015260516024820152600080516020615ec083398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016108f8565b60018301516001600160f81b03191660008190036149ba5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016108f8565b600184015160088302610100031c60378111614a3d5760405162461bcd60e51b81526020600482015260486024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016108f8565b614a478184615aa3565b895111614abf5760405162461bcd60e51b815260206004820152604c6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016108f8565b614aca836001615aa3565b9750955060009450614dad9350505050565b60f78111614b7e576000614af160c083615a47565b905080876000015111614b6d5760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016108f8565b600195509350849250614dad915050565b6000614b8b60f783615a47565b905080876000015111614c0a5760405162461bcd60e51b815260206004820152604d6024820152600080516020615ec083398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016108f8565b60018301516001600160f81b0319166000819003614c8f5760405162461bcd60e51b81526020600482015260486024820152600080516020615ec083398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016108f8565b600184015160088302610100031c60378111614d105760405162461bcd60e51b81526020600482015260466024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016108f8565b614d1a8184615aa3565b895111614d905760405162461bcd60e51b815260206004820152604a6024820152600080516020615ec083398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016108f8565b614d9b836001615aa3565b9750955060019450614dad9350505050565b9193909250565b60608315614dc3575081612da5565b612da58383614f1f565b60606107b8612d7483613d22565b60606000826001600160401b03811115614df757614df76151fd565b6040519080825280601f01601f191660200182016040528015614e21576020820181803683370190505b50905082600003614e33579050612da5565b6000614e3f8587615aa3565b90506020820160005b85811015614e60578281015182820152602001614e48565b85811115614e6f576000868301525b50919695505050505050565b60606107b8826020015160008460000151614ddb565b60608182601f011015614eb65760405162461bcd60e51b81526004016108f890615d87565b828284011015614ed85760405162461bcd60e51b81526004016108f890615d87565b818301845110156140c75760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108f8565b815115614f2f5781518083602001fd5b8060405162461bcd60e51b81526004016108f891906157d3565b82805482825590600052602060002090600701600890048101928215614fe85791602002820160005b83821115614fb657835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614f72565b8015614fe65782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614fb6565b505b50614ff4929150614ff8565b5090565b5b80821115614ff45760008155600101614ff9565b6001600160e01b031981168114610acb57600080fd5b60006020828403121561503557600080fd5b8135612da58161500d565b80356001600160401b03811681146130a357600080fd5b60006020828403121561506957600080fd5b612da582615040565b803563ffffffff811681146130a357600080fd5b80356001600160a01b03811681146130a357600080fd5b60008083601f8401126150af57600080fd5b5081356001600160401b038111156150c657600080fd5b60208301915083602082850101111561212c57600080fd5b600080600080606085870312156150f457600080fd5b6150fd85615072565b935061510b60208601615086565b925060408501356001600160401b0381111561512657600080fd5b6151328782880161509d565b95989497509550505050565b60006020828403121561515057600080fd5b612da582615072565b60006020828403121561516b57600080fd5b5035919050565b6000806040838503121561518557600080fd5b8235915061519560208401615086565b90509250929050565b6000602082840312156151b057600080fd5b612da582615086565b60008083601f8401126151cb57600080fd5b5081356001600160401b038111156151e257600080fd5b6020830191508360208260051b850101111561212c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561523b5761523b6151fd565b604052919050565b600082601f83011261525457600080fd5b81356001600160401b0381111561526d5761526d6151fd565b615280601f8201601f1916602001615213565b81815284602083860101111561529557600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080600080600060e08c8e0312156152d357600080fd5b6001600160401b03808d3511156152e957600080fd5b6152f68e8e358f0161509d565b909c509a5060208d013581101561530c57600080fd5b61531c8e60208f01358f0161509d565b909a50985060408d013581101561533257600080fd5b6153428e60408f01358f016151b9565b909850965060608d0135955060808d013581101561535f57600080fd5b61536f8e60808f01358f016151b9565b909550935060a08d013581101561538557600080fd5b506153968d60a08e01358e01615243565b915060c08c013590509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b60208101600383106153e757634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561540057600080fd5b61540983615086565b915060208301356001600160401b0381111561542457600080fd5b61543085828601615243565b9150509250929050565b60006001600160401b03821115615453576154536151fd565b5060051b60200190565b600082601f83011261546e57600080fd5b8135602061548361547e8361543a565b615213565b82815260059290921b840181019181810190868411156154a257600080fd5b8286015b848110156154c4576154b781615086565b83529183019183016154a6565b509695505050505050565b8015158114610acb57600080fd5b80356130a3816154cf565b60008060008060008060c0878903121561550157600080fd5b86356001600160401b038082111561551857600080fd5b818901915089601f83011261552c57600080fd5b8135602061553c61547e8361543a565b82815260059290921b8401810191818101908d84111561555b57600080fd5b948201945b838610156155805761557186615072565b82529482019490820190615560565b9a50508a01359250508082111561559657600080fd5b6155a28a838b0161545d565b965060408901359150808211156155b857600080fd5b506155c589828a0161545d565b9450506155d460608801615086565b92506155e260808801615086565b91506155f060a088016154dd565b90509295509295509295565b6000806000806060858703121561561257600080fd5b61561b85615072565b93506020850135925060408501356001600160401b0381111561512657600080fd5b60008060008060008060006080888a03121561565857600080fd5b61566188615040565b965060208801356001600160401b038082111561567d57600080fd5b6156898b838c0161509d565b909850965060408a01359150808211156156a257600080fd5b6156ae8b838c016151b9565b909650945060608a01359150808211156156c757600080fd5b506156d48a828b016151b9565b989b979a50959850939692959293505050565b6000806000606084860312156156fc57600080fd5b61570584615072565b925061571360208501615086565b915061572160408501615086565b90509250925092565b60006020828403121561573c57600080fd5b8135612da5816154cf565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681810361577957615779615747565b6001019392505050565b60005b8381101561579e578181015183820152602001615786565b50506000910152565b600081518084526157bf816020860160208601615783565b601f01601f19169290920160200192915050565b602081526000612da560208301846157a7565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c7920677561726469616e206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600080604083850312156158e657600080fd5b6158ef83615040565b915061519560208401615040565b60006020828403121561590f57600080fd5b5051919050565b600061592461547e8461543a565b80848252602080830192508560051b85013681111561594257600080fd5b855b81811015614e6f5780356001600160401b038111156159635760008081fd5b61596f36828a01615243565b865250938201938201615944565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff80831681810361577957615779615747565b60208082526035908201527f54656c657061746879526f757465723a206f6e6c792074696d656c6f636b206360408201527430b71031b0b636103a3434b990333ab731ba34b7b760591b606082015260800190565b600060018201615a1357615a13615747565b5060010190565b8183823760009101908152919050565b600060208284031215615a3c57600080fd5b8151612da5816154cf565b818103818111156107b8576107b8615747565b634e487b7160e01b600052601260045260246000fd5b600082615a7f57615a7f615a5a565b500490565b6000816000190483118215151615615a9e57615a9e615747565b500290565b808201808211156107b8576107b8615747565b6001600160401b03828116828216039080821115615ad657615ad6615747565b5092915050565b600082615aec57615aec615a5a565b500690565b63ffffffff841681526001600160a01b0383166020820152606060408201819052600090612e3f908301846157a7565b60008251615b33818460208701615783565b9190910192915050565b600060208284031215615b4f57600080fd5b8151612da58161500d565b604081526000615b6d60408301856157a7565b905082151560208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f889901b1681526001600160c01b031960c088901b1660018201526001600160e01b031960e087811b821660098401526001600160601b0319606088901b16600d84015285901b166021820152602581018390528151600090615c3d816045850160208701615783565b9190910160450198975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615c88816017850160208801615783565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615cb9816028840160208801615783565b01602801949350505050565b600060ff831680615cd857615cd8615a5a565b8060ff84160691505092915050565b60ff82811682821603908111156107b8576107b8615747565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b600081615d7f57615d7f615747565b506000190190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b600181815b80851115615dea578160001904821115615dd057615dd0615747565b80851615615ddd57918102915b93841c9390800290615db4565b509250929050565b600082615e01575060016107b8565b81615e0e575060006107b8565b8160018114615e245760028114615e2e57615e4a565b60019150506107b8565b60ff841115615e3f57615e3f615747565b50506001821b6107b8565b5060208310610133831016604e8410600b8410161715615e6d575081810a6107b8565b615e778383615daf565b8060001904821115615e8b57615e8b615747565b029392505050565b6000612da58383615df256fef66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220d1e681f8339d20f7fcc3322c41e55c3dcb7cdb430c94d44ac0291a618458e04664736f6c63430008100033", - "sourceMap": "698:1544:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2903:213:31;;;;;;;;;;-1:-1:-1;2903:213:31;;;;;:::i;:::-;;:::i;:::-;;;565:14:146;;558:22;540:41;;528:2;513:18;2903:213:31;;;;;;;;527:42:103;;;;;;;;;;-1:-1:-1;527:42:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1103:25:146;;;1091:2;1076:18;527:42:103;957:177:146;3438:539:99;;;;;;;;;;-1:-1:-1;3438:539:99;;;;;:::i;:::-;;:::i;3147:128:101:-;;;;;;;;;;-1:-1:-1;3147:128:101;;;;;:::i;:::-;;:::i;:::-;;4708:129:31;;;;;;;;;;-1:-1:-1;4708:129:31;;;;;:::i;:::-;4782:7;4808:12;;;:6;:12;;;;;:22;;;;4708:129;1199:66:101;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1199:66:101;;5133:145:31;;;;;;;;;;-1:-1:-1;5133:145:31;;;;;:::i;:::-;;:::i;6242:214::-;;;;;;;;;;-1:-1:-1;6242:214:31;;;;;:::i;:::-;;:::i;3317:197:38:-;;;;;;;;;;-1:-1:-1;3317:197:38;;;;;:::i;:::-;;:::i;1291:37:103:-;;;;;;;;;;-1:-1:-1;1291:37:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;4866:1928:100;;;;;;;;;;-1:-1:-1;4866:1928:100;;;;;:::i;:::-;;:::i;1398:54:103:-;;;;;;;;;;-1:-1:-1;1398:54:103;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;434:26::-;;;;;;;;;;-1:-1:-1;434:26:103;;;;;;;;1876:109:100;;;;;;;;;;-1:-1:-1;1957:14:100;:21;1876:109;;3763:222:38;;;;;;:::i;:::-;;:::i;3006:131::-;;;;;;;;;;;;;:::i;1690:20:103:-;;;;;;;;;;-1:-1:-1;1690:20:103;;;;;;;;;;;7434:4:146;7422:17;;;7404:36;;7392:2;7377:18;1690:20:103;7262:184:146;1164:46:103;;;;;;;;;;-1:-1:-1;1164:46:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1164:46:103;;;;;;-1:-1:-1;;;;;7615:32:146;;;7597:51;;7585:2;7570:18;1164:46:103;7451:203:146;1118:958:102;;;;;;;;;;-1:-1:-1;1118:958:102;;;;;:::i;:::-;;:::i;3463:198:101:-;;;;;;;;;;;;;:::i;1864:488:99:-;;;;;;;;;;-1:-1:-1;1864:488:99;;;;;:::i;:::-;;:::i;2914:518::-;;;;;;;;;;-1:-1:-1;2914:518:99;;;;;:::i;:::-;;:::i;999:51:103:-;;;;;;;;;;-1:-1:-1;999:51:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:51:103;;;2394:1820:100;;;;;;;;;;-1:-1:-1;2394:1820:100;;;;;:::i;:::-;;:::i;1936:51:103:-;;;;;;;;;;-1:-1:-1;1936:51:103;;;;;:::i;:::-;;;;;;;;;;;;;;3987:684:101;;;;;;;;;;-1:-1:-1;3987:684:101;;;;;:::i;:::-;;:::i;3203:145:31:-;;;;;;;;;;-1:-1:-1;3203:145:31;;;;;:::i;:::-;;:::i;2432:193:101:-;;;;;;;;;;;;;:::i;2827:123::-;;;;;;;;;;-1:-1:-1;2827:123:101;;;;;:::i;:::-;;:::i;879:30:103:-;;;;;;;;;;-1:-1:-1;879:30:103;;;;;:::i;:::-;;:::i;:::-;;;13007:10:146;12995:23;;;12977:42;;12965:2;12950:18;879:30:103;12833:192:146;2324:49:31;;;;;;;;;;-1:-1:-1;2324:49:31;2369:4;2324:49;;1391:467:99;;;;;;;;;;-1:-1:-1;1391:467:99;;;;;:::i;:::-;;:::i;634:19:103:-;;;;;;;;;;-1:-1:-1;634:19:103;;;;-1:-1:-1;;;;;634:19:103;;;;;;-1:-1:-1;;;;;13192:31:146;;;13174:50;;13162:2;13147:18;634:19:103;13030:200:146;5558:147:31;;;;;;;;;;-1:-1:-1;5558:147:31;;;;;:::i;:::-;;:::i;924:58:100:-;;;;;;;;;;;;973:9;924:58;;2097:142:101;;;;;;;;;;-1:-1:-1;2097:142:101;;;;;:::i;:::-;;:::i;1370:66::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1370:66:101;;837:33:102;;;;;;;;;;;;869:1;837:33;;2903:213:31;2988:4;-1:-1:-1;;;;;;3011:58:31;;-1:-1:-1;;;3011:58:31;;:98;;-1:-1:-1;;;;;;;;;;1168:51:44;;;3073:36:31;3004:105;2903:213;-1:-1:-1;;2903:213:31:o;3438:539:99:-;3603:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3648:13:::1;3626:18;:35;;::::0;3622:71:::1;;3670:23;;-1:-1:-1::0;;;3670:23:99::1;;;;;;;;;;;3622:71;3704:20;::::0;3761:85:::1;3780:18:::0;-1:-1:-1;;;;;337:22:113;;3800:39:99::1;3841:4;;3761:18;:85::i;:::-;3865:5;::::0;;-1:-1:-1;;;;;3865:5:99;;::::1;3856:15;::::0;;;:8:::1;:15;::::0;;;;:29;;;3912:7;;3703:143;;-1:-1:-1;3703:143:99;;-1:-1:-1;3703:143:99;;3912:7:::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;-1:-1:-1::0;;;;;3912:7:99::1;;;;;;-1:-1:-1::0;;;;;3900:42:99::1;;3934:7;3900:42;;;;;;:::i;:::-;;;;;;;;3959:11:::0;3438:539;-1:-1:-1;;;;;;3438:539:99:o;3147:128:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;;;;;;;;;3213:15:::1;::::0;::::1;3231:5;3213:15:::0;;;:6:::1;:15;::::0;;;;;:23;;-1:-1:-1;;3213:23:101::1;::::0;;3251:17;::::1;::::0;3231:5;3251:17:::1;3147:128:::0;:::o;5133:145:31:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5246:25:::1;5257:4;5263:7;5246:10;:25::i;:::-;5133:145:::0;;;:::o;6242:214::-;-1:-1:-1;;;;;6337:23:31;;929:10:41;6337:23:31;6329:83;;;;-1:-1:-1;;;6329:83:31;;15203:2:146;6329:83:31;;;15185:21:146;15242:2;15222:18;;;15215:30;15281:34;15261:18;;;15254:62;-1:-1:-1;;;15332:18:146;;;15325:45;15387:19;;6329:83:31;15001:411:146;6329:83:31;6423:26;6435:4;6441:7;6423:11;:26::i;:::-;6242:214;;:::o;3317:197:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3400:36:::1;3418:17;3400;:36::i;:::-;3487:12;::::0;;3497:1:::1;3487:12:::0;;;::::1;::::0;::::1;::::0;;;3446:61:::1;::::0;3468:17;;3487:12;3446:21:::1;:61::i;:::-;3317:197:::0;:::o;4866:1928:100:-;2505:21:39;:19;:21::i;:::-;5260:22:100::1;5284:19:::0;5307:33:::1;5327:12;;5307:19;:33::i;:::-;5259:81;;;;5350:52;5380:7;:21;;;5350:29;:52::i;:::-;5412:39;5429:7;:21;;;5412:16;:39::i;:::-;5477:14;5493:13:::0;5521:17:::1;;5510:47;;;;;;;:::i;:::-;5476:81;;;;5571:55;5595:7;5604;:21;;;5571:23;:55::i;:::-;5674:21;::::0;;::::1;::::0;5661:35:::1;;5640:18;5661:35:::0;;;:12:::1;:35;::::0;;;;;;;:52;;-1:-1:-1;;;5661:52:100;;-1:-1:-1;;;;;13192:31:146;;5661:52:100;;::::1;13174:50:146::0;;;;5640:18:100;;-1:-1:-1;;;;;5661:35:100::1;::::0;:43:::1;::::0;13147:18:146;;5661:52:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:73:::0;-1:-1:-1;5640:73:100;5727:58:::1;;;::::0;-1:-1:-1;;;5727:58:100;;17101:2:146;5727:58:100::1;::::0;::::1;17083:21:146::0;17140:2;17120:18;;;17113:30;-1:-1:-1;;;17159:18:146;;;17152:51;17220:18;;5727:58:100::1;16899:345:146::0;5727:58:100::1;5799:12;5814:137;5854:12;5868:17;;5814:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;5916:21:100::1;::::0;::::1;::::0;5887:10;;-1:-1:-1;5899:7:100;;5908:6;;5814:22:::1;:137::i;:::-;5799:152;;5973:7;5965:47;;;::::0;-1:-1:-1;;;5965:47:100;;17451:2:146;5965:47:100::1;::::0;::::1;17433:21:146::0;17490:2;17470:18;;;17463:30;17529:29;17509:18;;;17502:57;17576:18;;5965:47:100::1;17249:351:146::0;5965:47:100::1;5462:561;;;;6246:26;6300:320;6346:12;;6300:320;;;;;:::i;:::-;6496:21;::::0;;::::1;::::0;6483:35:::1;;;::::0;;;:12:::1;:35;::::0;;;6380:12;;6414:17;;6453:8;;-1:-1:-1;;;;;6483:35:100::1;1151:46;1484:1;6300:24;:320::i;:::-;6246:388;;6678:11;6656:18;:33;6648:67;;;::::0;-1:-1:-1;;;6648:67:100;;18690:2:146;6648:67:100::1;::::0;::::1;18672:21:146::0;18729:2;18709:18;;;18702:30;-1:-1:-1;;;18748:18:146;;;18741:51;18809:18;;6648:67:100::1;18488:345:146::0;6648:67:100::1;6033:693;6736:51;6752:7;6761:11;6774:12;;6736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6736:15:100::1;::::0;-1:-1:-1;;;6736:51:100:i:1;:::-;5185:1609;;2547:20:39::0;1787:1;3053:7;:22;2873:209;2547:20;4866:1928:100;;;;;;;;;;;:::o;3763:222:38:-;-1:-1:-1;;;;;1898:6:38;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:38;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:38;:20;-1:-1:-1;;;;;;;;;;;1642:65:35;-1:-1:-1;;;;;1642:65:35;;1563:151;1971:20:38;-1:-1:-1;;;;;1971:30:38;;1963:87;;;;-1:-1:-1;;;1963:87:38;;;;;;;:::i;:::-;3880:36:::1;3898:17;3880;:36::i;:::-;3926:52;3948:17;3967:4;3973;3926:21;:52::i;3006:131::-:0;3084:7;2324:4;-1:-1:-1;;;;;2333:6:38;2316:23;;2308:92;;;;-1:-1:-1;;;2308:92:38;;19040:2:146;2308:92:38;;;19022:21:146;19079:2;19059:18;;;19052:30;19118:34;19098:18;;;19091:62;19189:26;19169:18;;;19162:54;19233:19;;2308:92:38;18838:420:146;2308:92:38;-1:-1:-1;;;;;;;;;;;;3006:131:38;:::o;1118:958:102:-;3291:13:37;;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:37;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:37;1476:19:40;:23;;;3376:66:37;;-1:-1:-1;3425:12:37;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:37;;19465:2:146;3314:201:37;;;19447:21:146;19504:2;19484:18;;;19477:30;19543:34;19523:18;;;19516:62;-1:-1:-1;;;19594:18:146;;;19587:44;19648:19;;3314:201:37;19263:410:146;3314:201:37;3525:12;:16;;-1:-1:-1;;3525:16:37;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:37;;;;;3551:65;1380:24:102::1;:22;:24::i;:::-;1414:22;:20;:22::i;:::-;1446:36;-1:-1:-1::0;;;;;;;;;;;1472:9:102::1;1446:10;:36::i;:::-;1492;-1:-1:-1::0;;;;;;;;;;;1518:9:102::1;1492:10;:36::i;:::-;1538:41;2369:4:31;1569:9:102::0;1538:10:::1;:41::i;:::-;1589:24;:22;:24::i;:::-;1658:13;:20;1632:15;:22;:46;1624:55;;;::::0;::::1;;1723:13;:20;1697:15;:22;:46;1689:55;;;::::0;::::1;;1755:32:::0;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1802:8;1797:204;1820:14;:21:::0;1816:25:::1;::::0;::::1;;1797:204;;;1909:13;1923:1;1909:16;;;;;;;;;;:::i;:::-;;;;;;;1862:12;:31;1875:14;1890:1;1875:17;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1862:31;;;;;;;;;;;;;;;;:64;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;-1:-1:-1::0;;;;;1862:64:102::1;;;;;;1974:13;1988:1;1974:16;;;;;;;;;;:::i;:::-;;;;;;;1940:12;:31;1953:14;1968:1;1953:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;1940:31:::0;;;::::1;::::0;;;;;;;;:50;;-1:-1:-1;;;;;;1940:50:102::1;-1:-1:-1::0;;;;;1940:50:102;;;::::1;::::0;;;::::1;::::0;;1843:3;::::1;::::0;::::1;:::i;:::-;;;;1797:204;;;-1:-1:-1::0;2010:14:102::1;:32:::0;;;::::1;;-1:-1:-1::0;;2010:32:102;;::::1;;::::0;;;2052:7:::1;:17:::0;;;;::::1;2010:32:::0;2052:17:::1;::::0;;3636:99:37;;;;3670:13;:21;;-1:-1:-1;;3670:21:37;;;3710:14;;-1:-1:-1;7404:36:146;;3710:14:37;;7392:2:146;7377:18;3710:14:37;;;;;;;3636:99;3258:483;1118:958:102;;;;;;:::o;3463:198:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;3523:8:::1;3518:109;3541:14;:21:::0;3537:25:::1;::::0;::::1;;3518:109;;;3611:5;3583:6;:25;3590:14;3605:1;3590:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;3583:25:::0;;;::::1;::::0;;;;;;;;:33;;-1:-1:-1;;3583:33:101::1;::::0;::::1;;::::0;;;::::1;::::0;;3564:3;::::1;::::0;::::1;:::i;:::-;;;;3518:109;;;-1:-1:-1::0;3641:13:101::1;::::0;::::1;::::0;;;::::1;3463:198::o:0;1864:488:99:-;2013:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;2062:13:::1;2040:18;:35;;::::0;2036:71:::1;;2084:23;;-1:-1:-1::0;;;2084:23:99::1;;;;;;;;;;;2036:71;2118:20;::::0;2175:85:::1;2194:18:::0;-1:-1:-1;;;;;337:22:113;;2214:39:99::1;245:122:113::0;2175:85:99::1;2287:5;:7:::0;;2117:143;;-1:-1:-1;2117:143:99;;-1:-1:-1;2117:143:99;;-1:-1:-1;;;;;2287:7:99::1;::::0;:5:::1;:7;::::0;::::1;:::i;2914:518::-:0;3079:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;3124:13:::1;3102:18;:35;;::::0;3098:71:::1;;3146:23;;-1:-1:-1::0;;;3146:23:99::1;;;;;;;;;;;3098:71;3180:20;3202:19:::0;3237:64:::1;3256:18;3276;3296:4;;3237:18;:64::i;2394:1820:100:-:0;2505:21:39;:19;:21::i;:::-;2593:22:100::1;2617:19:::0;2640:33:::1;2660:12;;2640:19;:33::i;:::-;2592:81;;;;2683:52;2713:7;:21;;;2683:29;:52::i;:::-;2745:39;2762:7;:21;;;2745:16;:39::i;:::-;2809:52;2833:4;2839:7;:21;;;2809:23;:52::i;:::-;2972:21;::::0;;::::1;::::0;3001:35:::1;::::0;::::1;2876:19;3001:35:::0;;;:12:::1;:35;::::0;;;;;;;2955:82;;20434:3:146;20412:16;;;;-1:-1:-1;;;;;;20408:43:146;2955:82:100;;::::1;20396:56:146::0;20507:3;20485:16;;;-1:-1:-1;;;;;;20481:51:146;20468:11;;;20461:72;20571:2;20567:15;-1:-1:-1;;;;;;20567:15:146;20549:12;;;20542:75;2955:82:100;;;;;;;;;20633:12:146;;;2955:82:100;;2928:123;;;;::::1;::::0;;;;3201:26;;;:16:::1;:26:::0;;;;;;;:31;;3197:570:::1;;3314:21;::::0;;::::1;::::0;3301:35:::1;;3252:26;3301:35:::0;;;:12:::1;:35;::::0;;;;;;;:61;;-1:-1:-1;;;3301:61:100;;-1:-1:-1;;;;;13192:31:146;;3301:61:100;;::::1;13174:50:146::0;;;;3252:26:100;;-1:-1:-1;;;;;3301:35:100::1;::::0;:55:::1;::::0;13147:18:146;;3301:61:100::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:110:::0;-1:-1:-1;3410:1:100::1;3388:23:::0;;;3380:67:::1;;;::::0;-1:-1:-1;;;3380:67:100;;20858:2:146;3380:67:100::1;::::0;::::1;20840:21:146::0;20897:2;20877:18;;;20870:30;20936:33;20916:18;;;20909:61;20987:18;;3380:67:100::1;20656:355:146::0;3380:67:100::1;3479:136;;3528:12:::0;;3479:136:::1;:::i;:::-;3555:21;::::0;;::::1;::::0;3542:35:::1;;;::::0;;;:12:::1;:35;::::0;;;-1:-1:-1;;;;;3542:35:100::1;3579:18:::0;3479:27:::1;:136::i;:::-;3633:26;::::0;;;:16:::1;:26;::::0;;;;:40;;;3465:150;-1:-1:-1;3197:570:100::1;::::0;-1:-1:-1;3197:570:100::1;;3726:26;::::0;;;:16:::1;:26;::::0;;;;;;-1:-1:-1;3197:570:100::1;3781:15;3858:7;:13;;;1751:1;3847:57;;;;;;;;-1:-1:-1::0;;;;;21206:31:146;;;;21188:50;;21269:2;21254:18;;21247:34;21176:2;21161:18;;21016:271;3847:57:100::1;;::::0;;;;::::1;-1:-1:-1::0;;3847:57:100;;;;;;3837:68;;3847:57:::1;3837:68:::0;;::::1;::::0;3826:80;;::::1;1103:25:146::0;3826:80:100;;;;;;;;;1076:18:146;;;3826:80:100;;;3799:121;;;::::1;::::0;;-1:-1:-1;3934:17:100::1;3954:64;3799:121:::0;3992:11;3954:64:::1;4005:12:::0;;3954:64:::1;:::i;:::-;:28;:64::i;:::-;3934:84:::0;-1:-1:-1;4037:33:100;;::::1;4033:103;;4090:31;::::0;-1:-1:-1;;;4090:31:100;;18690:2:146;4090:31:100::1;::::0;::::1;18672:21:146::0;18729:2;18709:18;;;18702:30;-1:-1:-1;;;18748:18:146;;;18741:51;18809:18;;4090:31:100::1;18488:345:146::0;4033:103:100::1;2795:1351;;;;4156:51;4172:7;4181:11;4194:12;;4156:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4156:15:100::1;::::0;-1:-1:-1;;;4156:51:100:i:1;:::-;2582:1632;;2547:20:39::0;1787:1;3053:7;:22;2873:209;3987:684:101;1689:34;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;:::-;4135:18:::1;4176:9:::0;4171:186:::1;4195:14;:21:::0;4191:25;::::1;4171:186;;;4262:7;4241:28;;:14;4256:1;4241:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;::::1;;;:28:::0;4237:110:::1;;4305:4;4289:20;;4327:5;;4237:110;4218:3:::0;::::1;::::0;::::1;:::i;:::-;;;;4171:186;;;;4371:13;4366:117;;4400:14;:28:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4400:28:101;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;;;;::::1;;;::::0;;::::1;::::0;::::1;;::::0;;::::1;;::::0;;4447:25:::1;::::0;4400:28;;4447:25:::1;::::0;::::1;4366:117;4492:21;::::0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;:49;;-1:-1:-1;;;;;4492:49:101;;::::1;-1:-1:-1::0;;;;;;4492:49:101;;::::1;::::0;::::1;::::0;;;4551:12:::1;:21:::0;;;;;;:35;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;4601:63;;22066:34:146;;;22116:18;;;22109:43;;;;4601:63:101::1;::::0;22001:18:146;4601:63:101::1;;;;;;;4125:546;3987:684:::0;;;:::o;3203:145:31:-;3289:4;3312:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3312:29:31;;;;;;;;;;;;;;;3203:145::o;2432:193:101:-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2490:8:::1;2485:108;2508:14;:21:::0;2504:25:::1;::::0;::::1;;2485:108;;;2578:4;2550:6;:25;2557:14;2572:1;2557:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;;::::1;;;2550:25:::0;;;::::1;::::0;;;;;;;;:32;;-1:-1:-1;;2550:32:101::1;::::0;::::1;;::::0;;;::::1;::::0;;2531:3;::::1;::::0;::::1;:::i;:::-;;;;2485:108;;;-1:-1:-1::0;2607:11:101::1;::::0;::::1;::::0;;;::::1;2432:193::o:0;2827:123::-;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2891:15:::1;::::0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:22;;-1:-1:-1;;2891:22:101::1;2909:4;2891:22;::::0;;2928:15;::::1;::::0;2891;2928::::1;2827:123:::0;:::o;879:30:103:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1391:467:99:-;1540:7;931:14;;;;926:70;;968:17;;-1:-1:-1;;;968:17:99;;;;;;;;;;;926:70;1589:13:::1;1567:18;:35;;::::0;1563:71:::1;;1611:23;;-1:-1:-1::0;;;1611:23:99::1;;;;;;;;;;;1563:71;1645:20;1667:19:::0;1702:64:::1;1721:18;1741;1761:4;;1702:18;:64::i;5558:147:31:-:0;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5672:26:::1;5684:4;5690:7;5672:11;:26::i;2097:142:101:-:0;1881:34;-1:-1:-1;;;;;;;;;;;1904:10:101;1881:7;:34::i;:::-;1860:134;;;;-1:-1:-1;;;1860:134:101;;;;;;;:::i;:::-;2170:14:::1;:24:::0;;-1:-1:-1;;2170:24:101::1;::::0;::::1;;::::0;;::::1;::::0;;;2209:23:::1;::::0;540:41:146;;;2209:23:101::1;::::0;528:2:146;513:18;2209:23:101::1;;;;;;;2097:142:::0;:::o;4535:497:99:-;4801:7;;4822:5;;4765:213;;;;;;;;;;;;;;;;;;;;;;4692:25;;4719:19;;4765:213;;4801:7;;;;;-1:-1:-1;;;;;4822:5:99;;;;4848:13;;4876:10;;4900:18;;4932;;4964:4;;;;;;4765:213;;4964:4;;;;4765:213;;;;;;;;;-1:-1:-1;4765:22:99;;-1:-1:-1;;;4765:213:99:i;:::-;5002:23;;;;;;4750:228;;5002:23;;-1:-1:-1;4535:497:99;-1:-1:-1;;;;;4535:497:99:o;3642:103:31:-;3708:30;3719:4;929:10:41;3708::31;:30::i;7791:233::-;7874:22;7882:4;7888:7;7874;:22::i;:::-;7869:149;;7912:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7912:29:31;;;;;;;;;:36;;-1:-1:-1;;7912:36:31;7944:4;7912:36;;;7994:12;929:10:41;;850:96;7994:12:31;-1:-1:-1;;;;;7967:40:31;7985:7;-1:-1:-1;;;;;7967:40:31;7979:4;7967:40;;;;;;;;;;7791:233;;:::o;8195:234::-;8278:22;8286:4;8292:7;8278;:22::i;:::-;8274:149;;;8348:5;8316:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8316:29:31;;;;;;;;;;:37;;-1:-1:-1;;8316:37:31;;;8372:40;929:10:41;;8316:12:31;;8372:40;;8348:5;8372:40;8195:234;;:::o;2153:87:102:-;1689:34:101;-1:-1:-1;;;;;;;;;;;1712:10:101;1689:7;:34::i;:::-;1668:134;;;;-1:-1:-1;;;1668:134:101;;;;;;;:::i;2938:974:35:-;951:66;3384:59;;;3380:526;;;3459:37;3478:17;3459:18;:37::i;3380:526::-;3560:17;-1:-1:-1;;;;;3531:61:35;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3531:63:35;;;;;;;;-1:-1:-1;;3531:63:35;;;;;;;;;;;;:::i;:::-;;;3527:302;;3758:56;;-1:-1:-1;;;3758:56:35;;22365:2:146;3758:56:35;;;22347:21:146;22404:2;22384:18;;;22377:30;22443:34;22423:18;;;22416:62;-1:-1:-1;;;22494:18:146;;;22487:44;22548:19;;3758:56:35;22163:410:146;3527:302:35;-1:-1:-1;;;;;;;;;;;3644:28:35;;3636:82;;;;-1:-1:-1;;;3636:82:35;;22780:2:146;3636:82:35;;;22762:21:146;22819:2;22799:18;;;22792:30;22858:34;22838:18;;;22831:62;-1:-1:-1;;;22909:18:146;;;22902:39;22958:19;;3636:82:35;22578:405:146;3636:82:35;3595:138;3842:53;3860:17;3879:4;3885:9;3842:17;:53::i;2580:287:39:-;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:39;;23190:2:146;2704:63:39;;;23172:21:146;23229:2;23209:18;;;23202:30;23268:33;23248:18;;;23241:61;23319:18;;2704:63:39;22988:355:146;2704:63:39;1830:1;2842:7;:18;2580:287::o;8022:878:100:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:7:100;8166:22;8191:36;8214:12;;8191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8191:22:100;;-1:-1:-1;;;8191:36:100:i;:::-;8166:61;;8237:19;8269:12;;8259:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;8327:26:100;8297;;;;:13;:26;;;;;;;;:56;;;;;;;;:::i;:::-;;8293:562;;8369:35;;-1:-1:-1;;;8369:35:100;;23826:2:146;8369:35:100;;;23808:21:146;23865:2;23845:18;;;23838:30;23904:27;23884:18;;;23877:55;23949:18;;8369:35:100;23624:349:146;8293:562:100;8455:13;8425:7;:26;;;:43;;;8421:434;;8484:22;;-1:-1:-1;;;8484:22:100;;24180:2:146;8484:22:100;;;24162:21:146;24219:2;24199:18;;;24192:30;-1:-1:-1;;;24238:18:146;;;24231:42;24290:18;;8484:22:100;23978:336:146;8421:434:100;8546:7;;8527:15;;8546:7;8527:26;;;8546:7;;8527:26;8523:332;;8569:24;;-1:-1:-1;;;8569:24:100;;24521:2:146;8569:24:100;;;24503:21:146;24560:2;24540:18;;;24533:30;-1:-1:-1;;;24579:18:146;;;24572:44;24633:18;;8569:24:100;24319:338:146;8523:332:100;8648:21;;;;;8635:35;;8683:1;8635:35;;;:12;:35;;;;-1:-1:-1;;;;;8635:35:100;8627:58;;:127;;-1:-1:-1;8718:21:100;;;;;8705:35;;8752:1;8705:35;;;:12;:35;;;;-1:-1:-1;;;;;8705:35:100;:49;8627:127;8610:245;;;8779:65;;-1:-1:-1;;;8779:65:100;;24864:2:146;8779:65:100;;;24846:21:146;24903:2;24883:18;;;24876:30;24942:34;24922:18;;;24915:62;25013:25;24993:18;;;24986:53;25056:19;;8779:65:100;24662:419:146;8610:245:100;8872:7;;-1:-1:-1;8881:11:100;-1:-1:-1;8022:878:100;;;;;;:::o;6880:253::-;6975:21;;;7009:1;6975:21;;;:12;:21;;;;;;-1:-1:-1;;;;;6975:21:100;6959:81;;;;-1:-1:-1;;;6959:81:100;;25288:2:146;6959:81:100;;;25270:21:146;25327:2;25307:18;;;25300:30;-1:-1:-1;;;25346:18:146;;;25339:54;25410:18;;6959:81:100;25086:348:146;6959:81:100;7058:21;;;;;;;:12;:21;;;;;;;;;;:34;;-1:-1:-1;;;7058:34:100;;;;-1:-1:-1;;;;;7058:21:100;;;;:32;;:34;;;;:21;:34;;;;;;:21;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:76;;;;-1:-1:-1;;;7050:76:100;;25891:2:146;7050:76:100;;;25873:21:146;25930:2;25910:18;;;25903:30;25969:31;25949:18;;;25942:59;26018:18;;7050:76:100;25689:353:146;7194:121:100;7269:15;;;;;;;:6;:15;;;;;;;;7268:16;7260:48;;;;-1:-1:-1;;;7260:48:100;;26249:2:146;7260:48:100;;;26231:21:146;26288:2;26268:18;;;26261:30;-1:-1:-1;;;26307:18:146;;;26300:49;26366:18;;7260:48:100;26047:343:146;7385:452:100;7487:21;;;7521:1;7487:21;;;:12;:21;;;;;;-1:-1:-1;;;;;7487:21:100;7471:81;;;;-1:-1:-1;;;7471:81:100;;25288:2:146;7471:81:100;;;25270:21:146;25327:2;25307:18;;;25300:30;-1:-1:-1;;;25346:18:146;;;25339:54;25410:18;;7471:81:100;25086:348:146;7471:81:100;7570:21;;;;;;;:12;:21;;;;;;;;;;:38;;-1:-1:-1;;;7570:38:100;;-1:-1:-1;;;;;13192:31:146;;7570:38:100;;;13174:50:146;;;;-1:-1:-1;;;;;7570:21:100;;;;:32;;13147:18:146;;7570:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7612:1;7570:43;7562:86;;;;-1:-1:-1;;;7562:86:100;;26786:2:146;7562:86:100;;;26768:21:146;26825:2;26805:18;;;26798:30;26864:32;26844:18;;;26837:60;26914:18;;7562:86:100;26584:354:146;7562:86:100;7698:21;;;7658:19;7698:21;;;:12;:21;;;;;;;;;:38;;-1:-1:-1;;;7698:38:100;;-1:-1:-1;;;;;13192:31:146;;7698:38:100;;;13174:50:146;;;;-1:-1:-1;;;;;7698:21:100;;:32;;13147:18:146;;7698:38:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:56;;:15;:56;:::i;:::-;7658:78;;973:9;7754:11;:37;;7746:84;;;;-1:-1:-1;;;7746:84:100;;27278:2:146;7746:84:100;;;27260:21:146;27317:2;27297:18;;;27290:30;27356:34;27336:18;;;27329:62;-1:-1:-1;;;27407:18:146;;;27400:32;27449:19;;7746:84:100;27076:398:146;3094:1947:110;3330:4;3346:23;3372:46;3404:13;3372:31;:46::i;:::-;3346:72;;3730:31;3773:15;3764:6;-1:-1:-1;;;;;3764:24:110;;:33;;3795:2;3764:33;;;3791:1;3764:33;3730:67;;;;3892:27;3931:15;3922:6;-1:-1:-1;;;;;3922:24:110;;:142;;374:4;4011:24;4020:15;-1:-1:-1;;;;;4011:24:110;;;:::i;:::-;4010:54;;;;:::i;:::-;3922:142;;;3961:34;374:4;-1:-1:-1;;;;;3961:34:110;;;:::i;:::-;3892:172;;4075:13;4113:6;-1:-1:-1;;;;;4102:17:110;:7;-1:-1:-1;;;;;4102:17:110;;4098:849;;-1:-1:-1;4143:5:110;4170:14;4143:5;4178:6;4170:14;:::i;:::-;:20;;4187:3;4170:20;:::i;:::-;4162:28;;4098:849;;;374:4;4211:16;4221:6;4211:7;:16;:::i;:::-;-1:-1:-1;;;;;4211:45:110;;4207:740;;-1:-1:-1;4280:5:110;4307:14;4280:5;4315:6;4307:14;:::i;:::-;:18;;4324:1;4307:18;:::i;:::-;4299:26;-1:-1:-1;4383:34:110;374:4;-1:-1:-1;;;;;4383:34:110;;;:::i;:::-;4347:33;374:4;4347:5;:33;:::i;:::-;:70;;;;:::i;:::-;4339:78;-1:-1:-1;4439:14:110;4339:78;4447:6;4439:14;:::i;4207:740::-;4489:7;-1:-1:-1;;;;;4480:16:110;:6;-1:-1:-1;;;;;4480:16:110;;4476:471;;;-1:-1:-1;4520:5:110;4564:23;4547:14;4520:5;4555:6;4547:14;:::i;:::-;:40;;;;:::i;:::-;4539:48;-1:-1:-1;4609:9:110;4539:48;4617:1;4609:9;:::i;:::-;:13;;4621:1;4609:13;:::i;:::-;4601:21;-1:-1:-1;4677:19:110;4644:30;306:8;4601:21;4644:30;:::i;:::-;:52;;;;:::i;:::-;4636:60;-1:-1:-1;4718:9:110;4636:60;4726:1;4718:9;:::i;:::-;:13;;4730:1;4718:13;:::i;4476:471::-;4896:40;;-1:-1:-1;;;4896:40:110;;28546:2:146;4896:40:110;;;28528:21:146;28585:2;28565:18;;;28558:30;28624:32;28604:18;;;28597:60;28674:18;;4896:40:110;28344:354:146;4476:471:110;4963:71;4983:12;4997:5;5004:17;5023:10;4963:19;:71::i;:::-;4956:78;3094:1947;-1:-1:-1;;;;;;;;;;;3094:1947:110:o;1420:2836:111:-;1675:7;1694:18;1715:39;1730:3;1735:5;1742:11;1715:14;:39::i;:::-;1694:60;;1764:24;1791:5;1797:1;1791:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;1791:8:111;;-1:-1:-1;2441:14:111;-1:-1:-1;;;2469:25:111;;;:54;;-1:-1:-1;;;;;;;;;;2498:25:111;;;2469:54;2465:236;;;-1:-1:-1;2548:1:111;2465:236;;;-1:-1:-1;;;;;;;;;2570:25:111;;;2566:135;;-1:-1:-1;2620:1:111;2566:135;;;2652:38;;-1:-1:-1;;;2652:38:111;;28905:2:146;2652:38:111;;;28887:21:146;28944:2;28924:18;;;28917:30;28983;28963:18;;;28956:58;29031:18;;2652:38:111;28703:352:146;2566:135:111;2797:11;2859:2;2852:5;2848:14;2841:21;;2881:36;2920:133;;;;;;;;2975:6;2960:5;:12;:21;;;;:::i;:::-;2920:133;;;;3029:12;3035:6;3029:3;:12;:::i;:::-;2920:133;;2881:172;-1:-1:-1;3160:38:111;3201:22;2881:172;3201:20;:22::i;:::-;3160:63;;3241:11;:18;3263:1;3241:23;3233:58;;;;-1:-1:-1;;;3233:58:111;;29262:2:146;3233:58:111;;;29244:21:146;29301:2;29281:18;;;29274:30;-1:-1:-1;;;29320:18:146;;;29313:52;29382:18;;3233:58:111;29060:346:146;3233:58:111;3381:31;3415:25;:11;3427:1;3415:14;;;;;;;;:::i;:::-;;;;;;;:23;:25::i;:::-;3381:59;;3469:4;:11;3458:8;:22;3450:58;;;;-1:-1:-1;;;3450:58:111;;29613:2:146;3450:58:111;;;29595:21:146;29652:2;29632:18;;;29625:30;29691:25;29671:18;;;29664:53;29734:18;;3450:58:111;29411:347:146;3450:58:111;3518:38;3559:25;:4;3564:8;3559:14;;;;;;;;:::i;:25::-;3518:66;;3602:11;:18;3624:1;3602:23;3594:70;;;;-1:-1:-1;;;3594:70:111;;29965:2:146;3594:70:111;;;29947:21:146;30004:2;29984:18;;;29977:30;30043:34;30023:18;;;30016:62;-1:-1:-1;;;30094:18:146;;;30087:32;30136:19;;3594:70:111;29763:398:146;3594:70:111;3739:23;3765:28;:11;3777:1;3765:14;;;;;;;;:::i;:::-;;;;;;;:26;:28::i;:::-;3739:54;;3830:14;-1:-1:-1;;;;;3811:33:111;:15;-1:-1:-1;;;;;3811:33:111;;3803:85;;;;-1:-1:-1;;;3803:85:111;;30368:2:146;3803:85:111;;;30350:21:146;30407:2;30387:18;;;30380:30;30446:34;30426:18;;;30419:62;-1:-1:-1;;;30497:18:146;;;30490:37;30544:19;;3803:85:111;30166:403:146;3803:85:111;3898:33;3934:25;:11;3946:1;3934:14;;;;;;;;:::i;:25::-;3898:61;;4114:14;4086:23;:6;4093:1;4086:9;;;;;;;;:::i;:::-;;;;;;;:21;:23::i;:::-;4078:50;4057:142;;;;-1:-1:-1;;;4057:142:111;;30776:2:146;4057:142:111;;;30758:21:146;30815:2;30795:18;;;30788:30;30854:34;30834:18;;;30827:62;-1:-1:-1;;;30905:18:146;;;30898:43;30958:19;;4057:142:111;30574:409:146;4057:142:111;4217:32;:6;4224:10;4217:18;;;;;;;;:::i;:::-;;;;;;;:30;:32::i;:::-;4210:39;;;;;;;;;;;;1420:2836;;;;;;;;;:::o;9382:1529:100:-;9510:11;9531:17;9572:24;9639:42;;;9699:7;:21;;;9738:7;:21;;;9777:7;:12;;;9599:204;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9599:204:100;;;;;;;;;;;;;;-1:-1:-1;;;;;9599:204:100;-1:-1:-1;;;;;;9599:204:100;;;;;;;;;;9859:26;;;;9599:204;;-1:-1:-1;9917:11:100;-1:-1:-1;;;;;9917:16:100;9934:11;9917:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10387:11:100;;9900:46;;-1:-1:-1;9900:46:100;-1:-1:-1;10343:22:100;;-1:-1:-1;10402:2:100;10387:17;;-1:-1:-1;10383:176:100;;10421:12;10448:4;10437:26;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;10497:51:100;-1:-1:-1;;;10497:51:100;;-1:-1:-1;;10383:176:100;10573:6;:27;;;;;10583:17;10573:27;10569:210;;;10616:26;;;;:13;:26;;;;;:62;;-1:-1:-1;;10616:62:100;10645:33;10616:62;;;10569:210;;;10709:26;;;;:13;:26;;;;;:59;;-1:-1:-1;;10709:59:100;10738:30;10709:59;;;10569:210;10861:11;10846:7;:13;;;-1:-1:-1;;;;;10794:110:100;10823:7;:21;;;10794:110;;;10874:12;10888:6;10794:110;;;;;;;:::i;:::-;;;;;;;;9500:1411;;;9382:1529;;;:::o;2873:209:39:-;1787:1;3053:7;:22;2873:209::o;1868:111::-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;:::-;1938:34:39::1;:32;:34::i;:::-;1868:111::o:0;2025:65:31:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;735:581:111:-;927:33;;-1:-1:-1;;;;;;32803:2:146;32799:15;;;32795:53;927:33:111;;;32783:66:146;872:7:111;;;;32865:12:146;;927:33:111;;;;;;;;;;;;917:44;;;;;;895:66;;971:25;999:63;1031:11;1014:29;;;;;;33017:19:146;;33061:2;33052:12;;32888:182;1014:29:111;;;;;;;;;;;;;1045:5;1052:9;999:14;:63::i;:::-;971:91;;1102:1;1080:12;:19;:23;1072:58;;;;-1:-1:-1;;;1072:58:111;;33277:2:146;1072:58:111;;;33259:21:146;33316:2;33296:18;;;33289:30;-1:-1:-1;;;33335:18:146;;;33328:52;33397:18;;1072:58:111;33075:346:146;1072:58:111;1140:37;1180:35;:24;:12;:22;:24::i;:::-;:33;:35::i;:::-;1140:75;;1233:10;:17;1254:1;1233:22;1225:31;;;;;;1281:27;:10;1292:1;1281:13;;;;;;;;:::i;:27::-;1273:36;-1:-1:-1;;;;735:581:111;;;;;;:::o;320:409::-;459:7;482:26;523:68;555:8;538:26;;;;;;33017:19:146;;33061:2;33052:12;;32888:182;538:26:111;;;;;;;;;;;;;566:11;579;523:14;:68::i;:::-;482:109;;632:1;609:13;:20;:24;601:65;;;;-1:-1:-1;;;601:65:111;;33628:2:146;601:65:111;;;33610:21:146;33667:2;33647:18;;;33640:30;33706;33686:18;;;33679:58;33754:18;;601:65:111;33426:352:146;601:65:111;683:39;:25;:13;:23;:25::i;:::-;:37;:39::i;:::-;676:46;320:409;-1:-1:-1;;;;;320:409:111:o;3800:489:108:-;4049:12;4110:7;4131:5;4150:13;4177;4204:18;4236;4268:4;4080:202;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4073:209;;3800:489;;;;;;;;;:::o;4026:501:31:-;4114:22;4122:4;4128:7;4114;:22::i;:::-;4109:412;;4297:39;4328:7;4297:30;:39::i;:::-;4407:49;4446:4;4453:2;4407:30;:49::i;:::-;4204:274;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4204:274:31;;;;;;;;;;-1:-1:-1;;;4152:358:31;;;;;;;:::i;1805:281:35:-;-1:-1:-1;;;;;1476:19:40;;;1878:106:35;;;;-1:-1:-1;;;1878:106:35;;35904:2:146;1878:106:35;;;35886:21:146;35943:2;35923:18;;;35916:30;35982:34;35962:18;;;35955:62;-1:-1:-1;;;36033:18:146;;;36026:43;36086:19;;1878:106:35;35702:409:146;1878:106:35;-1:-1:-1;;;;;;;;;;;1994:85:35;;-1:-1:-1;;;;;;1994:85:35;-1:-1:-1;;;;;1994:85:35;;;;;;;;;;1805:281::o;2478:288::-;2616:29;2627:17;2616:10;:29::i;:::-;2673:1;2659:4;:11;:15;:28;;;;2678:9;2659:28;2655:105;;;2703:46;2725:17;2744:4;2703:21;:46::i;:::-;;2478:288;;;:::o;4295:1028:108:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:1:108;4697:12;;4691:19;4749:1;4739:12;;4733:19;4799:2;4789:13;;4783:20;4850:2;4840:13;;4834:20;4906:2;4896:13;;4890:20;4962:2;4952:13;;;4946:20;4985:25;;;;;-1:-1:-1;;;;;5020:21:108;;:13;;;:21;5051:37;;;;:21;;;:37;-1:-1:-1;;;;;5098:37:108;;:21;;;:37;5145:47;;:26;;;:47;5202:26;;;:47;;;5299:11;;4946:20;;5274:42;;4701:4;;4962:2;5299:16;;4962:2;;5299:16;:::i;:::-;5274:14;:42::i;:::-;5259:12;;;:57;-1:-1:-1;5259:7:108;;4295:1028;-1:-1:-1;;;;;;4295:1028:108:o;56:776:107:-;125:7;240:13;:18;;257:1;240:18;236:590;;-1:-1:-1;383:7:107;;56:776;-1:-1:-1;56:776:107:o;236:590::-;411:13;:18;;428:1;411:18;407:419;;-1:-1:-1;619:7:107;;56:776;-1:-1:-1;56:776:107:o;407:419::-;-1:-1:-1;;;803:12:107;56:776;-1:-1:-1;56:776:107:o;407:419::-;56:776;;;:::o;1840:281:110:-;1984:4;2004:26;2033:38;2051:4;2057:5;2064:6;2033:17;:38::i;:::-;2088:26;;;;1840:281;-1:-1:-1;;;;;1840:281:110:o;2954:6741:77:-;3077:12;3123:1;3109:4;:11;:15;3101:49;;;;-1:-1:-1;;;3101:49:77;;36318:2:146;3101:49:77;;;36300:21:146;36357:2;36337:18;;;36330:30;-1:-1:-1;;;36376:18:146;;;36369:51;36437:18;;3101:49:77;36116:345:146;3101:49:77;3161:23;3187:19;3199:6;3187:11;:19::i;:::-;3161:45;;3216:16;3235:21;3251:4;3235:15;:21::i;:::-;3216:40;;3266:26;3312:5;3295:23;;;;;;33017:19:146;;33061:2;33052:12;;32888:182;3295:23:77;;;;;;;;;;;;;3266:52;;3328:23;3442:9;3437:6194;3461:5;:12;3457:1;:16;3437:6194;;;3494:27;3524:5;3530:1;3524:8;;;;;;;;:::i;:::-;;;;;;;3494:38;;3680:3;:10;3661:15;:29;;3636:134;;;;-1:-1:-1;;;3636:134:77;;36668:2:146;3636:134:77;;;36650:21:146;36707:2;36687:18;;;36680:30;36746:34;36726:18;;;36719:62;-1:-1:-1;;;36797:18:146;;;36790:44;36851:19;;3636:134:77;36466:410:146;3636:134:77;3789:15;3808:1;3789:20;3785:895;;3961:19;;3951:30;;;;;;;3934:48;;3922:76;;3934:48;;3951:30;3934:48;33017:19:146;;;33061:2;33052:12;;32888:182;3934:48:77;;;;;;;;;;;;;3984:13;5343:17:74;;;;;;;5322;;;;;;;;;;:38;;5219:148;3922:76:77;3893:176;;;;-1:-1:-1;;;3893:176:77;;37083:2:146;3893:176:77;;;37065:21:146;37122:2;37102:18;;;37095:30;37161:31;37141:18;;;37134:59;37210:18;;3893:176:77;36881:353:146;3893:176:77;3785:895;;;4094:19;;:26;4124:2;-1:-1:-1;4090:590:77;;4290:19;;4280:30;;;;;;;4263:48;;4251:76;;4263:48;;4280:30;4263:48;33017:19:146;;;33061:2;33052:12;;32888:182;4251:76:77;4222:186;;;;-1:-1:-1;;;4222:186:77;;37441:2:146;4222:186:77;;;37423:21:146;37480:2;37460:18;;;37453:30;37519:34;37499:18;;;37492:62;-1:-1:-1;;;37570:18:146;;;37563:37;37617:19;;4222:186:77;37239:403:146;4090:590:77;4550:19;;5343:17:74;;;;;;;;;;5322;;;;;;;:38;4509:156:77;;;;-1:-1:-1;;;4509:156:77;;37849:2:146;4509:156:77;;;37831:21:146;37888:2;37868:18;;;37861:30;37927:34;37907:18;;;37900:62;-1:-1:-1;;;37978:18:146;;;37971:36;38024:19;;4509:156:77;37647:402:146;4509:156:77;990:14;842:2;1003:1;990:14;:::i;:::-;4698:11;:19;;;:26;:48;4694:4927;;4789:3;:10;4770:15;:29;4766:1496;;5289:18;5310:52;5330:11;:19;;;842:2;5330:31;;;;;;;;:::i;:::-;;;;;;;5310:19;:52::i;:::-;5289:73;;5432:1;5417:5;:12;:16;5384:158;;;;-1:-1:-1;;;5384:158:77;;38256:2:146;5384:158:77;;;38238:21:146;38295:2;38275:18;;;38268:30;38334:34;38314:18;;;38307:62;38405:29;38385:18;;;38378:57;38452:19;;5384:158:77;38054:423:146;5384:158:77;5679:1;5664:5;:12;:16;;;;:::i;:::-;5659:1;:21;5626:162;;;;-1:-1:-1;;;5626:162:77;;38684:2:146;5626:162:77;;;38666:21:146;38723:2;38703:18;;;38696:30;38762:34;38742:18;;;38735:62;38833:28;38813:18;;;38806:56;38879:19;;5626:162:77;38482:422:146;5626:162:77;5818:5;-1:-1:-1;5811:12:77;;-1:-1:-1;;;;;;5811:12:77;4766:1496;6010:15;6034:3;6038:15;6034:20;;;;;;;;:::i;:::-;;;;;;;;;6028:27;;6010:45;;6077:33;6113:11;:19;;;6133:9;6113:30;;;;;;;;;;:::i;:::-;;;;;;;6077:66;;6181:20;6192:8;6181:10;:20::i;:::-;6165:36;-1:-1:-1;6223:20:77;6242:1;6223:20;;:::i;:::-;;;5848:414;;4694:4927;;;1174:1;6286:11;:19;;;:26;:59;6282:3339;;6365:17;6385:25;6398:11;6385:12;:25::i;:::-;6365:45;;6428:12;6449:4;6454:1;6449:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6475:12:77;6495:10;6504:1;6449:7;6495:10;:::i;:::-;6490:16;;:1;:16;:::i;:::-;6475:31;;6524:26;6553:25;6565:4;6571:6;6553:25;;:11;:25::i;:::-;6524:54;;6596:25;6624:33;6636:3;6641:15;6624:11;:33::i;:::-;6596:61;;6675:26;6704:51;6727:13;6742:12;6704:22;:51::i;:::-;6675:80;;7062:18;7038:13;:20;:42;7009:171;;;;-1:-1:-1;;;7009:171:77;;39429:2:146;7009:171:77;;;39411:21:146;39468:2;39448:18;;;39441:30;39507:34;39487:18;;;39480:62;39578:28;39558:18;;;39551:56;39624:19;;7009:171:77;39227:422:146;7009:171:77;7203:26;;;1561:1;7203:26;;:55;;-1:-1:-1;7233:25:77;;;1682:1;7233:25;7203:55;7199:2319;;;7899:18;7876:12;:19;:41;7843:185;;;;-1:-1:-1;;;7843:185:77;;39856:2:146;7843:185:77;;;39838:21:146;39895:2;39875:18;;;39868:30;39934:34;39914:18;;;39907:62;40005:31;39985:18;;;39978:59;40054:19;;7843:185:77;39654:425:146;7843:185:77;8377:18;8398:43;8418:11;:19;;;8438:1;8418:22;;;;;;;;:::i;8398:43::-;8377:64;;8511:1;8496:5;:12;:16;8463:156;;;;-1:-1:-1;;;8463:156:77;;40286:2:146;8463:156:77;;;40268:21:146;40325:2;40305:18;;;40298:30;40364:34;40344:18;;;40337:62;40435:27;40415:18;;;40408:55;40480:19;;8463:156:77;40084:421:146;8463:156:77;8756:1;8741:5;:12;:16;;;;:::i;:::-;8736:1;:21;8703:160;;;;-1:-1:-1;;;8703:160:77;;40712:2:146;8703:160:77;;;40694:21:146;40751:2;40731:18;;;40724:30;40790:34;40770:18;;;40763:62;40861:26;40841:18;;;40834:54;40905:19;;8703:160:77;40510:420:146;8703:160:77;8893:5;-1:-1:-1;8886:12:77;;-1:-1:-1;;;;;;;;;;;;8886:12:77;7199:2319;8927:31;;;;;:65;;-1:-1:-1;8962:30:77;;;1438:1;8962:30;8927:65;8923:595;;;9299:34;9310:11;:19;;;9330:1;9310:22;;;;;;;;:::i;:::-;;;;;;;9299:10;:34::i;:::-;9283:50;-1:-1:-1;9355:37:77;9374:18;9355:37;;:::i;:::-;;;8923:595;;;9439:60;;-1:-1:-1;;;9439:60:77;;41137:2:146;9439:60:77;;;41119:21:146;41176:2;41156:18;;;41149:30;41215:34;41195:18;;;41188:62;-1:-1:-1;;;41266:18:146;;;41259:48;41324:19;;9439:60:77;40935:414:146;8923:595:77;6347:3185;;;;;;6282:3339;;;9556:50;;-1:-1:-1;;;9556:50:77;;41556:2:146;9556:50:77;;;41538:21:146;41595:2;41575:18;;;41568:30;41634:34;41614:18;;;41607:62;-1:-1:-1;;;41685:18:146;;;41678:38;41733:19;;9556:50:77;41354:404:146;6282:3339:77;-1:-1:-1;3475:3:77;;;;:::i;:::-;;;;3437:6194;;;-1:-1:-1;9641:47:77;;-1:-1:-1;;;9641:47:77;;41965:2:146;9641:47:77;;;41947:21:146;42004:2;41984:18;;;41977:30;42043:34;42023:18;;;42016:62;-1:-1:-1;;;42094:18:146;;;42087:35;42139:19;;9641:47:77;41763:401:146;1978:1895:75;2039:16;2068:18;2088;2108:20;2132:18;2146:3;2132:13;:18::i;:::-;2067:83;;-1:-1:-1;2067:83:75;-1:-1:-1;2067:83:75;-1:-1:-1;2194:21:75;2182:8;:33;;;;;;;;:::i;:::-;;2161:136;;;;-1:-1:-1;;;2161:136:75;;42371:2:146;2161:136:75;;;42353:21:146;42410:2;42390:18;;;42383:30;42449:34;42429:18;;;42422:62;42520:26;42500:18;;;42493:54;42564:19;;2161:136:75;42169:420:146;2161:136:75;2356:10;;2329:23;2342:10;2329;:23;:::i;:::-;:37;2308:134;;;;-1:-1:-1;;;2308:134:75;;42796:2:146;2308:134:75;;;42778:21:146;42835:2;42815:18;;;42808:30;42874:34;42854:18;;;42847:62;-1:-1:-1;;;42925:18:146;;;42918:48;42983:19;;2308:134:75;42594:414:146;2308:134:75;2868:30;;;1188:2;2868:30;;;;;;;;;2845:20;;2868:30;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2868:30:75;;;;;;;;;;;;;;-1:-1:-1;2845:53:75;-1:-1:-1;2909:17:75;2957:10;2977:737;2993:10;;2984:19;;2977:737;;;3020:18;3040;3064:206;3095:161;;;;;;;;3146:6;3133:3;:10;;;:19;;;;:::i;:::-;3095:161;;;;3230:6;3219:3;:7;;;3198:38;;;;:::i;:::-;3095:161;;3064:13;:206::i;:::-;3019:251;;;;;3474:153;;;;;;;;3521:10;3508;:23;;;;:::i;:::-;3474:153;;;;3605:6;3594:3;:7;;;3573:38;;;;:::i;:::-;3474:153;;;3457:3;3461:9;3457:14;;;;;;;;:::i;:::-;;;;;;;;;;:170;3642:14;3655:1;3642:14;;:::i;:::-;;-1:-1:-1;3680:23:75;3693:10;3680;:23;:::i;:::-;3670:33;;;;:::i;:::-;;;3005:709;;2977:737;;;-1:-1:-1;3814:22:75;;3821:3;1978:1895;-1:-1:-1;;;;;1978:1895:75:o;12423:270::-;12510:10;;12487:7;;12524:1;12510:15;12506:63;;-1:-1:-1;12556:1:75;;12423:270;-1:-1:-1;12423:270:75:o;12506:63::-;12587:10;;12601:2;12587:16;12579:55;;;;-1:-1:-1;;;12579:55:75;;43215:2:146;12579:55:75;;;43197:21:146;43254:2;43234:18;;;43227:30;43293:28;43273:18;;;43266:56;43339:18;;12579:55:75;43013:350:146;12579:55:75;12668:16;12680:3;12160:122;12224:7;12258:16;12270:3;11355:664;11419:7;11460:2;11446:3;:10;;;:16;;11438:55;;;;-1:-1:-1;;;11438:55:75;;43570:2:146;11438:55:75;;;43552:21:146;43609:2;43589:18;;;43582:30;43648:28;43628:18;;;43621:56;43694:18;;11438:55:75;43368:350:146;11438:55:75;11505:18;11525;11545:20;11569:18;11583:3;11569:13;:18::i;:::-;11504:83;;-1:-1:-1;11504:83:75;-1:-1:-1;11504:83:75;-1:-1:-1;11618:21:75;11606:8;:33;;;;;;;;:::i;:::-;;11598:72;;;;-1:-1:-1;;;11598:72:75;;43570:2:146;11598:72:75;;;43552:21:146;43609:2;43589:18;;;43582:30;43648:28;43628:18;;;43621:56;43694:18;;11598:72:75;43368:350:146;11598:72:75;11681:11;11727:10;11716:3;:7;;;11695:42;;;;:::i;:::-;11798:10;;11681:56;;-1:-1:-1;11900:2:75;11885:18;;11882:100;;;11951:2;11947:19;;;11942:3;11938:29;11929:39;;11882:100;12009:3;11355:664;-1:-1:-1;;;;;;11355:664:75:o;1985:109:39:-;5363:13:37;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:37;;;;;;;:::i;1385:419:75:-;-1:-1:-1;;;;;;;;;;;;;;;;;1548:1:75;1535:3;:10;:14;1514:135;;;;-1:-1:-1;;;1514:135:75;;;;;;;:::i;:::-;-1:-1:-1;1756:41:75;;;;;;;;;1774:10;;1756:41;;1726:2;1717:12;;;1756:41;;;;;;;;1385:419::o;2146:149:43:-;2204:13;2236:52;-1:-1:-1;;;;;2248:22:43;;333:2;1557:437;1632:13;1657:19;1689:10;1693:6;1689:1;:10;:::i;:::-;:14;;1702:1;1689:14;:::i;:::-;-1:-1:-1;;;;;1679:25:43;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1679:25:43;;1657:47;;-1:-1:-1;;;1714:6:43;1721:1;1714:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1714:15:43;;;;;;;;;-1:-1:-1;;;1739:6:43;1746:1;1739:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1739:15:43;;;;;;;;-1:-1:-1;1769:9:43;1781:10;1785:6;1781:1;:10;:::i;:::-;:14;;1794:1;1781:14;:::i;:::-;1769:26;;1764:128;1801:1;1797;:5;1764:128;;;-1:-1:-1;;;1844:5:43;1852:3;1844:11;1835:21;;;;;;;:::i;:::-;;;;1823:6;1830:1;1823:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1823:33:43;;;;;;;;-1:-1:-1;1880:1:43;1870:11;;;;;1804:3;;;:::i;:::-;;;1764:128;;;-1:-1:-1;1909:10:43;;1901:55;;;;-1:-1:-1;;;1901:55:43;;44549:2:146;1901:55:43;;;44531:21:146;;;44568:18;;;44561:30;44627:34;44607:18;;;44600:62;44679:18;;1901:55:43;44347:356:146;2192:152:35;2258:37;2277:17;2258:18;:37::i;:::-;2310:27;;-1:-1:-1;;;;;2310:27:35;;;;;;;;2192:152;:::o;7088:455::-;7171:12;-1:-1:-1;;;;;1476:19:40;;;7195:88:35;;;;-1:-1:-1;;;7195:88:35;;44910:2:146;7195:88:35;;;44892:21:146;44949:2;44929:18;;;44922:30;44988:34;44968:18;;;44961:62;-1:-1:-1;;;45039:18:146;;;45032:36;45085:19;;7195:88:35;44708:402:146;7195:88:35;7354:12;7368:23;7395:6;-1:-1:-1;;;;;7395:19:35;7415:4;7395:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:67;;;;7437:99;7473:7;7482:10;7437:99;;;;;;;;;;;;;;;;;:35;:99::i;205:3191:108:-;321:12;373:7;357:12;373:7;367:2;357:12;:::i;:::-;:23;;349:50;;;;-1:-1:-1;;;349:50:108;;;;;;;:::i;:::-;434:16;443:7;434:6;:16;:::i;:::-;417:6;:13;:33;;409:63;;;;-1:-1:-1;;;409:63:108;;45660:2:146;409:63:108;;;45642:21:146;45699:2;45679:18;;;45672:30;-1:-1:-1;;;45718:18:146;;;45711:47;45775:18;;409:63:108;45458:341:146;409:63:108;483:22;624:15;;652:2170;;;;2964:4;2958:11;2945:24;;3152:1;3141:9;3134:20;3333:4;3322:9;3318:20;3312:4;3305:34;617:2736;;652:2170;834:4;828:11;815:24;;986:2;977:7;973:16;1560:9;1553:17;1547:4;1543:28;1531:9;1520;1516:25;1512:60;1608:7;1604:2;1600:16;1856:6;1842:9;1835:17;1829:4;1825:28;1813:9;1805:6;1801:22;1797:57;1793:70;1634:596;1889:3;1885:2;1882:11;1634:596;;;2202:9;;2191:21;;2010:4;2002:13;;;;2042;1634:596;;;-1:-1:-1;;2420:26:108;;;2803:2;2786:11;-1:-1:-1;;2782:25:108;2776:4;2769:39;-1:-1:-1;617:2736:108;-1:-1:-1;3380:9:108;205:3191;-1:-1:-1;;;;205:3191:108:o;1283:551:110:-;1411:7;1469:5;1448:6;:13;1464:1;1448:17;;;;:::i;:::-;1442:24;;:1;:24;:::i;:::-;:32;1434:41;;;;;;1501:4;1485:13;1538:268;1545:5;1554:1;1545:10;1538:268;;1575:9;1583:1;1575:5;:9;:::i;:::-;1588:1;1575:14;1571:184;;1617:38;1637:6;1644:1;1637:9;;;;;;;;:::i;:::-;;;;;;;1648:5;1624:30;;;;;;;;47335:19:146;;;47379:2;47370:12;;47363:28;47416:2;47407:12;;47178:247;1624:30:110;;;;-1:-1:-1;;1624:30:110;;;;;;;;;;1617:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1609:46;;1571:184;;;1702:38;1722:5;1729:6;1736:1;1729:9;;;;;;;;:::i;:::-;;;;;;;1709:30;;;;;;;;47335:19:146;;;47379:2;47370:12;;47363:28;47416:2;47407:12;;47178:247;1709:30:110;;;;-1:-1:-1;;1709:30:110;;;;;;;;;;1702:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1694:46;;1571:184;1768:10;1777:1;1768:10;;:::i;:::-;;-1:-1:-1;1792:3:110;;;;:::i;:::-;;;;1538:268;;10004:422:77;10116:13;;10070:17;;10099:14;10116:13;-1:-1:-1;;;;;10165:22:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10165:22:77;;;;;;;;;;;;;;;;10139:48;;10202:9;10197:201;10221:6;10217:1;:10;10197:201;;;10256:72;;;;;;;;10276:6;10283:1;10276:9;;;;;;;;:::i;:::-;;;;;;;10256:72;;;;10296:29;10315:6;10322:1;10315:9;;;;;;;;:::i;:::-;;;;;;;10296:18;:29::i;:::-;10256:72;;;10245:5;10251:1;10245:8;;;;;;;;:::i;:::-;;;;;;;;;;:83;10370:3;;10197:201;;;-1:-1:-1;10414:5:77;10004:422;-1:-1:-1;;;10004:422:77:o;4477:457:74:-;4586:13;;4540:12;;4564:19;4642:15;4586:13;4656:1;4642:15;:::i;:::-;-1:-1:-1;;;;;4632:26:74;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4632:26:74;-1:-1:-1;4609:49:74;-1:-1:-1;4668:8:74;;4687:216;4711:11;4707:1;:15;4687:216;;;4744:6;4751:1;4744:9;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;4744:9:74;;;-1:-1:-1;4789:1:74;4784:6;-1:-1:-1;;;4784:6:74;4767:7;4775:5;:1;4779;4775:5;:::i;:::-;4767:14;;;;;;;;:::i;:::-;;;;:23;-1:-1:-1;;;;;4767:23:74;;;;;;;;-1:-1:-1;;;;4825:8:74;;4804:7;4812:5;:1;4816;4812:5;:::i;:::-;:9;;4820:1;4812:9;:::i;:::-;4804:18;;;;;;;;:::i;:::-;;;;:29;-1:-1:-1;;;;;4804:29:74;;;;;;;;-1:-1:-1;4875:3:74;;4687:216;;;-1:-1:-1;4920:7:74;;4477:457;-1:-1:-1;;;;4477:457:74:o;4325:527:75:-;4387:12;4412:18;4432;4452:20;4476:18;4490:3;4476:13;:18::i;:::-;4411:83;;-1:-1:-1;4411:83:75;-1:-1:-1;4411:83:75;-1:-1:-1;4538:21:75;4526:8;:33;;;;;;;;:::i;:::-;;4505:137;;;;-1:-1:-1;;;4505:137:75;;47632:2:146;4505:137:75;;;47614:21:146;47671:2;47651:18;;;47644:30;47710:34;47690:18;;;47683:62;47781:27;47761:18;;;47754:55;47826:19;;4505:137:75;47430:421:146;4505:137:75;4688:23;4701:10;4688;:23;:::i;:::-;4674:10;;:37;4653:136;;;;-1:-1:-1;;;4653:136:75;;48058:2:146;4653:136:75;;;48040:21:146;48097:2;48077:18;;;48070:30;48136:34;48116:18;;;48109:62;-1:-1:-1;;;48187:18:146;;;48180:50;48247:19;;4653:136:75;47856:416:146;4653:136:75;4807:38;4813:3;:7;;;4822:10;4834;4807:5;:38::i;10745:190:77:-;10819:12;10865:2;10850:5;:12;;;:17;:78;;10902:26;10922:5;10902:19;:26::i;:::-;10850:78;;;10870:29;10893:5;10870:22;:29::i;11134:159::-;11201:12;11232:54;11248:37;11268:5;:13;;;11282:1;11268:16;;;;;;;;:::i;11248:37::-;11232:15;:54::i;3924:237:74:-;3999:12;4037:6;:13;4027:6;:23;4023:70;;-1:-1:-1;4073:9:74;;;;;;;;;-1:-1:-1;4073:9:74;;4066:16;;4023:70;4109:45;4115:6;4123;4147;4131;:13;:22;;;;:::i;:::-;4109:5;:45::i;11536:385:77:-;11648:7;11671:14;11695:11;11722:2;:9;11710:2;:9;:21;11709:47;;11747:2;:9;11709:47;;;11735:2;:9;11709:47;11695:61;;11766:126;11782:3;11773:6;:12;:40;;;;;11803:2;11806:6;11803:10;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11789:24:77;;:2;11792:6;11789:10;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11789:10:77;:24;11773:40;11766:126;;;11859:8;;;;;11766:126;;5678:4323:75;5780:7;5801;5822:11;6174:1;6161:3;:10;;;:14;6140:135;;;;-1:-1:-1;;;6140:135:75;;;;;;;:::i;:::-;6306:7;;;;6388:10;;6286:17;6380:19;6433:4;6423:14;;6419:3576;;6489:1;6492;6495:21;6481:36;;;;;;;;;;6419:3576;6548:4;6538:6;:14;6534:3461;;6654:14;6671:13;6680:4;6671:6;:13;:::i;:::-;6654:30;;6737:6;6724:3;:10;;;:19;6699:156;;;;-1:-1:-1;;;6699:156:75;;48479:2:146;6699:156:75;;;48461:21:146;48518:2;48498:18;;;48491:30;-1:-1:-1;;;;;;;;;;;48537:18:146;;;48530:62;48628:34;48608:18;;;48601:62;-1:-1:-1;;;48679:19:146;;;48672:45;48734:19;;6699:156:75;48277:482:146;6699:156:75;6977:1;6968:11;;;6962:18;-1:-1:-1;;;;;;6958:39:75;;7050:11;;;;:41;;-1:-1:-1;;;;;;;;;;7065:26:75;;;;7050:41;7025:177;;;;-1:-1:-1;;;7025:177:75;;48966:2:146;7025:177:75;;;48948:21:146;49005:2;48985:18;;;48978:30;49044:34;49024:18;;;49017:62;49115:34;49095:18;;;49088:62;-1:-1:-1;;;49166:19:146;;;49159:44;49220:19;;7025:177:75;48764:481:146;7025:177:75;-1:-1:-1;7225:1:75;;-1:-1:-1;7228:6:75;-1:-1:-1;7236:21:75;;-1:-1:-1;7217:41:75;;-1:-1:-1;;7217:41:75;6534:3461;7289:4;7279:6;:14;7275:2720;;7337:19;7359:13;7368:4;7359:6;:13;:::i;:::-;7337:35;;7425:11;7412:3;:10;;;:24;7387:164;;;;-1:-1:-1;;;7387:164:75;;49452:2:146;7387:164:75;;;49434:21:146;49491:2;49471:18;;;49464:30;-1:-1:-1;;;;;;;;;;;49510:18:146;;;49503:62;49601:34;49581:18;;;49574:62;-1:-1:-1;;;49652:19:146;;;49645:48;49710:19;;7387:164:75;49250:485:146;7387:164:75;7673:1;7664:11;;7658:18;-1:-1:-1;;;;;;7654:39:75;7566:25;7746:26;;;7721:159;;;;-1:-1:-1;;;7721:159:75;;49942:2:146;7721:159:75;;;49924:21:146;49981:2;49961:18;;;49954:30;-1:-1:-1;;;;;;;;;;;50000:18:146;;;49993:62;50091:34;50071:18;;;50064:62;-1:-1:-1;;;50142:19:146;;;50135:41;50193:19;;7721:159:75;49740:478:146;7721:159:75;8010:1;8001:11;;7995:18;7977:1;7973:19;;7968:3;7964:29;7960:54;8076:2;8067:11;;8042:142;;;;-1:-1:-1;;;8042:142:75;;50425:2:146;8042:142:75;;;50407:21:146;50464:2;50444:18;;;50437:30;-1:-1:-1;;;;;;;;;;;50483:18:146;;;50476:62;50574:34;50554:18;;;50547:62;-1:-1:-1;;;50625:19:146;;;50618:39;50674:19;;8042:142:75;50223:476:146;8042:142:75;8237:20;8251:6;8237:11;:20;:::i;:::-;8224:10;;:33;8199:168;;;;-1:-1:-1;;;8199:168:75;;50906:2:146;8199:168:75;;;50888:21:146;50945:2;50925:18;;;50918:30;-1:-1:-1;;;;;;;;;;;50964:18:146;;;50957:62;51055:34;51035:18;;;51028:62;-1:-1:-1;;;51106:19:146;;;51099:43;51159:19;;8199:168:75;50704:480:146;8199:168:75;8390:15;8394:11;8390:1;:15;:::i;:::-;8382:55;-1:-1:-1;8407:6:75;-1:-1:-1;8415:21:75;;-1:-1:-1;8382:55:75;;-1:-1:-1;;;;8382:55:75;7275:2720;8468:4;8458:6;:14;8454:1541;;8571:15;8589:13;8598:4;8589:6;:13;:::i;:::-;8571:31;;8655:7;8642:3;:10;;;:20;8617:153;;;;-1:-1:-1;;;8617:153:75;;51391:2:146;8617:153:75;;;51373:21:146;51430:2;51410:18;;;51403:30;-1:-1:-1;;;;;;;;;;;51449:18:146;;;51442:62;51540:34;51520:18;;;51513:62;-1:-1:-1;;;51591:19:146;;;51584:41;51642:19;;8617:153:75;51189:478:146;8617:153:75;8793:1;;-1:-1:-1;8796:7:75;-1:-1:-1;8793:1:75;;-1:-1:-1;8785:42:75;;-1:-1:-1;;8785:42:75;8454:1541;8884:20;8907:13;8916:4;8907:6;:13;:::i;:::-;8884:36;;8973:12;8960:3;:10;;;:25;8935:161;;;;-1:-1:-1;;;8935:161:75;;51874:2:146;8935:161:75;;;51856:21:146;51913:2;51893:18;;;51886:30;-1:-1:-1;;;;;;;;;;;51932:18:146;;;51925:62;52023:34;52003:18;;;51996:62;-1:-1:-1;;;52074:19:146;;;52067:44;52128:19;;8935:161:75;51672:481:146;8935:161:75;9218:1;9209:11;;9203:18;-1:-1:-1;;;;;;9199:39:75;9111:25;9291:26;;;9266:157;;;;-1:-1:-1;;;9266:157:75;;52360:2:146;9266:157:75;;;52342:21:146;52399:2;52379:18;;;52372:30;-1:-1:-1;;;;;;;;;;;52418:18:146;;;52411:62;52509:34;52489:18;;;52482:62;-1:-1:-1;;;52560:19:146;;;52553:39;52609:19;;9266:157:75;52158:476:146;9266:157:75;9556:1;9547:11;;9541:18;9522:1;9518:20;;9513:3;9509:30;9505:55;9623:2;9613:12;;9588:141;;;;-1:-1:-1;;;9588:141:75;;52841:2:146;9588:141:75;;;52823:21:146;52880:2;52860:18;;;52853:30;-1:-1:-1;;;;;;;;;;;52899:18:146;;;52892:62;52990:34;52970:18;;;52963:62;-1:-1:-1;;;53041:19:146;;;53034:37;53088:19;;9588:141:75;52639:474:146;9588:141:75;9782:22;9797:7;9782:12;:22;:::i;:::-;9769:10;;:35;9744:168;;;;-1:-1:-1;;;9744:168:75;;53320:2:146;9744:168:75;;;53302:21:146;53359:2;53339:18;;;53332:30;-1:-1:-1;;;;;;;;;;;53378:18:146;;;53371:62;53469:34;53449:18;;;53442:62;-1:-1:-1;;;53520:19:146;;;53513:41;53571:19;;9744:168:75;53118:478:146;9744:168:75;9935:16;9939:12;9935:1;:16;:::i;:::-;9927:57;-1:-1:-1;9953:7:75;-1:-1:-1;9962:21:75;;-1:-1:-1;9927:57:75;;-1:-1:-1;;;;9927:57:75;5678:4323;;;;;;:::o;7438:295:40:-;7584:12;7612:7;7608:119;;;-1:-1:-1;7642:10:40;7635:17;;7608:119;7683:33;7691:10;7703:12;7683:7;:33::i;4047:125:75:-;4106:16;4141:24;4150:14;4160:3;4150:9;:14::i;10281:933::-;10402:12;10426:16;10455:7;-1:-1:-1;;;;;10445:18:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:18:75;;10426:37;;10477:7;10488:1;10477:12;10473:53;;10512:3;-1:-1:-1;10505:10:75;;10473:53;10785:11;10799:36;10828:7;10820:4;10799:36;:::i;:::-;10785:50;;10889:2;10884:3;10880:12;10914:1;10928:156;10955:7;10952:1;10949:14;10928:156;;;11057:11;;;11051:18;11037:12;;;11030:40;10994:2;10987:10;10928:156;;;11107:7;11104:1;11101:14;11098:79;;;11161:1;11151:7;11145:4;11141:18;11134:29;11098:79;-1:-1:-1;11204:3:75;;10281:933;-1:-1:-1;;;;;;10281:933:75:o;5281:132::-;5346:12;5377:29;5383:3;:7;;;5392:1;5395:3;:10;;;5377:5;:29::i;688:2882:74:-;810:12;882:7;866;876:2;866:12;:23;;858:50;;;;-1:-1:-1;;;858:50:74;;;;;;;:::i;:::-;950:6;939:7;930:6;:16;:26;;922:53;;;;-1:-1:-1;;;922:53:74;;;;;;;:::i;:::-;1023:7;1014:6;:16;997:6;:13;:33;;989:63;;;;-1:-1:-1;;;989:63:74;;45660:2:146;989:63:74;;;45642:21:146;45699:2;45679:18;;;45672:30;-1:-1:-1;;;45718:18:146;;;45711:47;45775:18;;989:63:74;45458:341:146;7739:540:40;7898:17;;:21;7894:379;;8126:10;8120:17;8182:15;8169:10;8165:2;8161:19;8154:44;7894:379;8249:12;8242:20;;-1:-1:-1;;;8242:20:40;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:146;-1:-1:-1;;;;;;88:32:146;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:171::-;659:20;;-1:-1:-1;;;;;708:30:146;;698:41;;688:69;;753:1;750;743:12;768:184;826:6;879:2;867:9;858:7;854:23;850:32;847:52;;;895:1;892;885:12;847:52;918:28;936:9;918:28;:::i;1139:163::-;1206:20;;1266:10;1255:22;;1245:33;;1235:61;;1292:1;1289;1282:12;1307:173;1375:20;;-1:-1:-1;;;;;1424:31:146;;1414:42;;1404:70;;1470:1;1467;1460:12;1485:347;1536:8;1546:6;1600:3;1593:4;1585:6;1581:17;1577:27;1567:55;;1618:1;1615;1608:12;1567:55;-1:-1:-1;1641:20:146;;-1:-1:-1;;;;;1673:30:146;;1670:50;;;1716:1;1713;1706:12;1670:50;1753:4;1745:6;1741:17;1729:29;;1805:3;1798:4;1789:6;1781;1777:19;1773:30;1770:39;1767:59;;;1822:1;1819;1812:12;1837:555;1924:6;1932;1940;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2040:28;2058:9;2040:28;:::i;:::-;2030:38;;2087;2121:2;2110:9;2106:18;2087:38;:::i;:::-;2077:48;;2176:2;2165:9;2161:18;2148:32;-1:-1:-1;;;;;2195:6:146;2192:30;2189:50;;;2235:1;2232;2225:12;2189:50;2274:58;2324:7;2315:6;2304:9;2300:22;2274:58;:::i;:::-;1837:555;;;;-1:-1:-1;2351:8:146;-1:-1:-1;;;;1837:555:146:o;2397:184::-;2455:6;2508:2;2496:9;2487:7;2483:23;2479:32;2476:52;;;2524:1;2521;2514:12;2476:52;2547:28;2565:9;2547:28;:::i;2586:180::-;2645:6;2698:2;2686:9;2677:7;2673:23;2669:32;2666:52;;;2714:1;2711;2704:12;2666:52;-1:-1:-1;2737:23:146;;2586:180;-1:-1:-1;2586:180:146:o;2771:254::-;2839:6;2847;2900:2;2888:9;2879:7;2875:23;2871:32;2868:52;;;2916:1;2913;2906:12;2868:52;2952:9;2939:23;2929:33;;2981:38;3015:2;3004:9;3000:18;2981:38;:::i;:::-;2971:48;;2771:254;;;;;:::o;3030:186::-;3089:6;3142:2;3130:9;3121:7;3117:23;3113:32;3110:52;;;3158:1;3155;3148:12;3110:52;3181:29;3200:9;3181:29;:::i;3221:367::-;3284:8;3294:6;3348:3;3341:4;3333:6;3329:17;3325:27;3315:55;;3366:1;3363;3356:12;3315:55;-1:-1:-1;3389:20:146;;-1:-1:-1;;;;;3421:30:146;;3418:50;;;3464:1;3461;3454:12;3418:50;3501:4;3493:6;3489:17;3477:29;;3561:3;3554:4;3544:6;3541:1;3537:14;3529:6;3525:27;3521:38;3518:47;3515:67;;;3578:1;3575;3568:12;3593:127;3654:10;3649:3;3645:20;3642:1;3635:31;3685:4;3682:1;3675:15;3709:4;3706:1;3699:15;3725:275;3796:2;3790:9;3861:2;3842:13;;-1:-1:-1;;3838:27:146;3826:40;;-1:-1:-1;;;;;3881:34:146;;3917:22;;;3878:62;3875:88;;;3943:18;;:::i;:::-;3979:2;3972:22;3725:275;;-1:-1:-1;3725:275:146:o;4005:530::-;4047:5;4100:3;4093:4;4085:6;4081:17;4077:27;4067:55;;4118:1;4115;4108:12;4067:55;4154:6;4141:20;-1:-1:-1;;;;;4176:2:146;4173:26;4170:52;;;4202:18;;:::i;:::-;4246:55;4289:2;4270:13;;-1:-1:-1;;4266:27:146;4295:4;4262:38;4246:55;:::i;:::-;4326:2;4317:7;4310:19;4372:3;4365:4;4360:2;4352:6;4348:15;4344:26;4341:35;4338:55;;;4389:1;4386;4379:12;4338:55;4454:2;4447:4;4439:6;4435:17;4428:4;4419:7;4415:18;4402:55;4502:1;4477:16;;;4495:4;4473:27;4466:38;;;;4481:7;4005:530;-1:-1:-1;;;4005:530:146:o;4540:1652::-;4749:6;4757;4765;4773;4781;4789;4797;4805;4813;4821;4829:7;4883:3;4871:9;4862:7;4858:23;4854:33;4851:53;;;4900:1;4897;4890:12;4851:53;-1:-1:-1;;;;;4981:2:146;4969:9;4956:23;4953:31;4950:51;;;4997:1;4994;4987:12;4950:51;5036:75;5103:7;5090:9;5077:23;5066:9;5062:39;5036:75;:::i;:::-;5130:8;;-1:-1:-1;5157:8:146;-1:-1:-1;5208:2:146;5193:18;;5180:32;5177:40;-1:-1:-1;5174:60:146;;;5230:1;5227;5220:12;5174:60;5269:84;5345:7;5338:2;5327:9;5323:18;5310:32;5299:9;5295:48;5269:84;:::i;:::-;5372:8;;-1:-1:-1;5399:8:146;-1:-1:-1;5450:2:146;5435:18;;5422:32;5419:40;-1:-1:-1;5416:60:146;;;5472:1;5469;5462:12;5416:60;5511:96;5599:7;5592:2;5581:9;5577:18;5564:32;5553:9;5549:48;5511:96;:::i;:::-;5626:8;;-1:-1:-1;5653:8:146;-1:-1:-1;5708:2:146;5693:18;;5680:32;;-1:-1:-1;5755:3:146;5740:19;;5727:33;5724:41;-1:-1:-1;5721:61:146;;;5778:1;5775;5768:12;5721:61;5817:97;5906:7;5898:3;5887:9;5883:19;5870:33;5859:9;5855:49;5817:97;:::i;:::-;5933:8;;-1:-1:-1;5960:8:146;-1:-1:-1;6011:3:146;5996:19;;5983:33;5980:41;-1:-1:-1;5977:61:146;;;6034:1;6031;6024:12;5977:61;;6057:76;6125:7;6117:3;6106:9;6102:19;6089:33;6078:9;6074:49;6057:76;:::i;:::-;6047:86;;6181:3;6170:9;6166:19;6153:33;6142:44;;4540:1652;;;;;;;;;;;;;;:::o;6197:127::-;6258:10;6253:3;6249:20;6246:1;6239:31;6289:4;6286:1;6279:15;6313:4;6310:1;6303:15;6329:347;6480:2;6465:18;;6513:1;6502:13;;6492:144;;6558:10;6553:3;6549:20;6546:1;6539:31;6593:4;6590:1;6583:15;6621:4;6618:1;6611:15;6492:144;6645:25;;;6329:347;:::o;6863:394::-;6940:6;6948;7001:2;6989:9;6980:7;6976:23;6972:32;6969:52;;;7017:1;7014;7007:12;6969:52;7040:29;7059:9;7040:29;:::i;:::-;7030:39;;7120:2;7109:9;7105:18;7092:32;-1:-1:-1;;;;;7139:6:146;7136:30;7133:50;;;7179:1;7176;7169:12;7133:50;7202:49;7243:7;7234:6;7223:9;7219:22;7202:49;:::i;:::-;7192:59;;;6863:394;;;;;:::o;7659:182::-;7718:4;-1:-1:-1;;;;;7743:6:146;7740:30;7737:56;;;7773:18;;:::i;:::-;-1:-1:-1;7818:1:146;7814:14;7830:4;7810:25;;7659:182::o;7846:667::-;7900:5;7953:3;7946:4;7938:6;7934:17;7930:27;7920:55;;7971:1;7968;7961:12;7920:55;8007:6;7994:20;8033:4;8057:59;8073:42;8112:2;8073:42;:::i;:::-;8057:59;:::i;:::-;8150:15;;;8236:1;8232:10;;;;8220:23;;8216:32;;;8181:12;;;;8260:15;;;8257:35;;;8288:1;8285;8278:12;8257:35;8324:2;8316:6;8312:15;8336:148;8352:6;8347:3;8344:15;8336:148;;;8418:23;8437:3;8418:23;:::i;:::-;8406:36;;8462:12;;;;8369;;8336:148;;;-1:-1:-1;8502:5:146;7846:667;-1:-1:-1;;;;;;7846:667:146:o;8518:118::-;8604:5;8597:13;8590:21;8583:5;8580:32;8570:60;;8626:1;8623;8616:12;8641:128;8706:20;;8735:28;8706:20;8735:28;:::i;8774:1588::-;8949:6;8957;8965;8973;8981;8989;9042:3;9030:9;9021:7;9017:23;9013:33;9010:53;;;9059:1;9056;9049:12;9010:53;9099:9;9086:23;-1:-1:-1;;;;;9169:2:146;9161:6;9158:14;9155:34;;;9185:1;9182;9175:12;9155:34;9223:6;9212:9;9208:22;9198:32;;9268:7;9261:4;9257:2;9253:13;9249:27;9239:55;;9290:1;9287;9280:12;9239:55;9326:2;9313:16;9348:4;9372:59;9388:42;9427:2;9388:42;:::i;9372:59::-;9465:15;;;9547:1;9543:10;;;;9535:19;;9531:28;;;9496:12;;;;9571:19;;;9568:39;;;9603:1;9600;9593:12;9568:39;9627:11;;;;9647:147;9663:6;9658:3;9655:15;9647:147;;;9729:22;9747:3;9729:22;:::i;:::-;9717:35;;9680:12;;;;9772;;;;9647:147;;;9813:5;-1:-1:-1;;9856:18:146;;9843:32;;-1:-1:-1;;9887:16:146;;;9884:36;;;9916:1;9913;9906:12;9884:36;9939:63;9994:7;9983:8;9972:9;9968:24;9939:63;:::i;:::-;9929:73;;10055:2;10044:9;10040:18;10027:32;10011:48;;10084:2;10074:8;10071:16;10068:36;;;10100:1;10097;10090:12;10068:36;;10123:63;10178:7;10167:8;10156:9;10152:24;10123:63;:::i;:::-;10113:73;;;10205:38;10239:2;10228:9;10224:18;10205:38;:::i;:::-;10195:48;;10262:39;10296:3;10285:9;10281:19;10262:39;:::i;:::-;10252:49;;10320:36;10351:3;10340:9;10336:19;10320:36;:::i;:::-;10310:46;;8774:1588;;;;;;;;:::o;10367:549::-;10454:6;10462;10470;10478;10531:2;10519:9;10510:7;10506:23;10502:32;10499:52;;;10547:1;10544;10537:12;10499:52;10570:28;10588:9;10570:28;:::i;:::-;10560:38;;10645:2;10634:9;10630:18;10617:32;10607:42;;10700:2;10689:9;10685:18;10672:32;-1:-1:-1;;;;;10719:6:146;10716:30;10713:50;;;10759:1;10756;10749:12;11151:1155;11323:6;11331;11339;11347;11355;11363;11371;11424:3;11412:9;11403:7;11399:23;11395:33;11392:53;;;11441:1;11438;11431:12;11392:53;11464:28;11482:9;11464:28;:::i;:::-;11454:38;;11543:2;11532:9;11528:18;11515:32;-1:-1:-1;;;;;11607:2:146;11599:6;11596:14;11593:34;;;11623:1;11620;11613:12;11593:34;11662:58;11712:7;11703:6;11692:9;11688:22;11662:58;:::i;:::-;11739:8;;-1:-1:-1;11636:84:146;-1:-1:-1;11827:2:146;11812:18;;11799:32;;-1:-1:-1;11843:16:146;;;11840:36;;;11872:1;11869;11862:12;11840:36;11911:72;11975:7;11964:8;11953:9;11949:24;11911:72;:::i;:::-;12002:8;;-1:-1:-1;11885:98:146;-1:-1:-1;12090:2:146;12075:18;;12062:32;;-1:-1:-1;12106:16:146;;;12103:36;;;12135:1;12132;12125:12;12103:36;;12174:72;12238:7;12227:8;12216:9;12212:24;12174:72;:::i;:::-;11151:1155;;;;-1:-1:-1;11151:1155:146;;-1:-1:-1;11151:1155:146;;;;12148:98;;-1:-1:-1;;;11151:1155:146:o;12311:332::-;12387:6;12395;12403;12456:2;12444:9;12435:7;12431:23;12427:32;12424:52;;;12472:1;12469;12462:12;12424:52;12495:28;12513:9;12495:28;:::i;:::-;12485:38;;12542;12576:2;12565:9;12561:18;12542:38;:::i;:::-;12532:48;;12599:38;12633:2;12622:9;12618:18;12599:38;:::i;:::-;12589:48;;12311:332;;;;;:::o;13235:241::-;13291:6;13344:2;13332:9;13323:7;13319:23;13315:32;13312:52;;;13360:1;13357;13350:12;13312:52;13399:9;13386:23;13418:28;13440:5;13418:28;:::i;13481:127::-;13542:10;13537:3;13533:20;13530:1;13523:31;13573:4;13570:1;13563:15;13597:4;13594:1;13587:15;13613:209;13651:3;-1:-1:-1;;;;;13732:2:146;13725:5;13721:14;13759:2;13750:7;13747:15;13744:41;;13765:18;;:::i;:::-;13814:1;13801:15;;13613:209;-1:-1:-1;;;13613:209:146:o;13827:250::-;13912:1;13922:113;13936:6;13933:1;13930:13;13922:113;;;14012:11;;;14006:18;13993:11;;;13986:39;13958:2;13951:10;13922:113;;;-1:-1:-1;;14069:1:146;14051:16;;14044:27;13827:250::o;14082:270::-;14123:3;14161:5;14155:12;14188:6;14183:3;14176:19;14204:76;14273:6;14266:4;14261:3;14257:14;14250:4;14243:5;14239:16;14204:76;:::i;:::-;14334:2;14313:15;-1:-1:-1;;14309:29:146;14300:39;;;;14341:4;14296:50;;14082:270;-1:-1:-1;;14082:270:146:o;14357:217::-;14504:2;14493:9;14486:21;14467:4;14524:44;14564:2;14553:9;14549:18;14541:6;14524:44;:::i;14579:417::-;14781:2;14763:21;;;14820:2;14800:18;;;14793:30;14859:34;14854:2;14839:18;;14832:62;-1:-1:-1;;;14925:2:146;14910:18;;14903:51;14986:3;14971:19;;14579:417::o;15417:408::-;15619:2;15601:21;;;15658:2;15638:18;;;15631:30;15697:34;15692:2;15677:18;;15670:62;-1:-1:-1;;;15763:2:146;15748:18;;15741:42;15815:3;15800:19;;15417:408::o;15830:::-;16032:2;16014:21;;;16071:2;16051:18;;;16044:30;16110:34;16105:2;16090:18;;16083:62;-1:-1:-1;;;16176:2:146;16161:18;;16154:42;16228:3;16213:19;;15830:408::o;16243:256::-;16309:6;16317;16370:2;16358:9;16349:7;16345:23;16341:32;16338:52;;;16386:1;16383;16376:12;16338:52;16409:28;16427:9;16409:28;:::i;:::-;16399:38;;16456:37;16489:2;16478:9;16474:18;16456:37;:::i;16710:184::-;16780:6;16833:2;16821:9;16812:7;16808:23;16804:32;16801:52;;;16849:1;16846;16839:12;16801:52;-1:-1:-1;16872:16:146;;16710:184;-1:-1:-1;16710:184:146:o;17605:878::-;17741:9;17776:63;17792:46;17831:6;17792:46;:::i;17776:63::-;17861:3;17885:6;17880:3;17873:19;17911:4;17940:2;17935:3;17931:12;17924:19;;17984:6;17981:1;17977:14;17970:5;17966:26;18015:14;18007:6;18004:26;18001:46;;;18043:1;18040;18033:12;18001:46;18067:5;18081:369;18097:6;18092:3;18089:15;18081:369;;;18183:3;18170:17;-1:-1:-1;;;;;18206:11:146;18203:35;18200:125;;;18279:1;18308:2;18304;18297:14;18200:125;18350:57;18392:14;18378:11;18371:5;18367:23;18350:57;:::i;:::-;18338:70;;-1:-1:-1;18428:12:146;;;;18114;;18081:369;;19678:127;19739:10;19734:3;19730:20;19727:1;19720:31;19770:4;19767:1;19760:15;19794:4;19791:1;19784:15;19810:201;19848:3;19876:10;19921:2;19914:5;19910:14;19948:2;19939:7;19936:15;19933:41;;19954:18;;:::i;21292:417::-;21494:2;21476:21;;;21533:2;21513:18;;;21506:30;21572:34;21567:2;21552:18;;21545:62;-1:-1:-1;;;21638:2:146;21623:18;;21616:51;21699:3;21684:19;;21292:417::o;21714:135::-;21753:3;21774:17;;;21771:43;;21794:18;;:::i;:::-;-1:-1:-1;21841:1:146;21830:13;;21714:135::o;23348:271::-;23531:6;23523;23518:3;23505:33;23487:3;23557:16;;23582:13;;;23557:16;23348:271;-1:-1:-1;23348:271:146:o;25439:245::-;25506:6;25559:2;25547:9;25538:7;25534:23;25530:32;25527:52;;;25575:1;25572;25565:12;25527:52;25607:9;25601:16;25626:28;25648:5;25626:28;:::i;26943:128::-;27010:9;;;27031:11;;;27028:37;;;27045:18;;:::i;27479:127::-;27540:10;27535:3;27531:20;27528:1;27521:31;27571:4;27568:1;27561:15;27595:4;27592:1;27585:15;27611:120;27651:1;27677;27667:35;;27682:18;;:::i;:::-;-1:-1:-1;27716:9:146;;27611:120::o;27736:168::-;27776:7;27842:1;27838;27834:6;27830:14;27827:1;27824:21;27819:1;27812:9;27805:17;27801:45;27798:71;;;27849:18;;:::i;:::-;-1:-1:-1;27889:9:146;;27736:168::o;27909:125::-;27974:9;;;27995:10;;;27992:36;;;28008:18;;:::i;28039:183::-;-1:-1:-1;;;;;28158:10:146;;;28146;;;28142:27;;28181:12;;;28178:38;;;28196:18;;:::i;:::-;28178:38;28039:183;;;;:::o;28227:112::-;28259:1;28285;28275:35;;28290:18;;:::i;:::-;-1:-1:-1;28324:9:146;;28227:112::o;30988:400::-;31201:10;31189:23;;31171:42;;-1:-1:-1;;;;;31249:32:146;;31244:2;31229:18;;31222:60;31318:2;31313;31298:18;;31291:30;;;-1:-1:-1;;31338:44:146;;31363:18;;31355:6;31338:44;:::i;31393:287::-;31522:3;31560:6;31554:13;31576:66;31635:6;31630:3;31623:4;31615:6;31611:17;31576:66;:::i;:::-;31658:16;;;;;31393:287;-1:-1:-1;;31393:287:146:o;31685:249::-;31754:6;31807:2;31795:9;31786:7;31782:23;31778:32;31775:52;;;31823:1;31820;31813:12;31775:52;31855:9;31849:16;31874:30;31898:5;31874:30;:::i;31939:298::-;32108:2;32097:9;32090:21;32071:4;32128:44;32168:2;32157:9;32153:18;32145:6;32128:44;:::i;:::-;32120:52;;32222:6;32215:14;32208:22;32203:2;32192:9;32188:18;32181:50;31939:298;;;;;:::o;32242:407::-;32444:2;32426:21;;;32483:2;32463:18;;;32456:30;32522:34;32517:2;32502:18;;32495:62;-1:-1:-1;;;32588:2:146;32573:18;;32566:41;32639:3;32624:19;;32242:407::o;33783:873::-;-1:-1:-1;;;;;;34126:3:146;34104:16;;;34100:36;34088:49;;-1:-1:-1;;;;;;34192:3:146;34170:16;;;34166:51;34162:1;34153:11;;34146:72;-1:-1:-1;;;;;;34241:3:146;34290:16;;;34286:25;;34282:1;34273:11;;34266:46;-1:-1:-1;;;;;;34350:2:146;34346:15;;;34342:53;34337:2;34328:12;;34321:75;34430:16;;;34426:25;34421:2;34412:12;;34405:47;34477:2;34468:12;;34461:28;;;34512:13;;-1:-1:-1;;34534:75:146;34512:13;34597:2;34588:12;;34581:4;34569:17;;34534:75;:::i;:::-;34629:16;;;;34647:2;34625:25;;33783:873;-1:-1:-1;;;;;;;;33783:873:146:o;34661:812::-;35072:25;35067:3;35060:38;35042:3;35127:6;35121:13;35143:75;35211:6;35206:2;35201:3;35197:12;35190:4;35182:6;35178:17;35143:75;:::i;:::-;-1:-1:-1;;;35277:2:146;35237:16;;;35269:11;;;35262:40;35327:13;;35349:76;35327:13;35411:2;35403:11;;35396:4;35384:17;;35349:76;:::i;:::-;35445:17;35464:2;35441:26;;34661:812;-1:-1:-1;;;;34661:812:146:o;38909:157::-;38939:1;38973:4;38970:1;38966:12;38997:3;38987:37;;39004:18;;:::i;:::-;39056:3;39049:4;39046:1;39042:12;39038:22;39033:27;;;38909:157;;;;:::o;39071:151::-;39161:4;39154:12;;;39140;;;39136:31;;39179:14;;39176:40;;;39196:18;;:::i;43723:478::-;43925:2;43907:21;;;43964:2;43944:18;;;43937:30;44003:34;43998:2;43983:18;;43976:62;44074:34;44069:2;44054:18;;44047:62;-1:-1:-1;;;44140:3:146;44125:19;;44118:41;44191:3;44176:19;;43723:478::o;44206:136::-;44245:3;44273:5;44263:39;;44282:18;;:::i;:::-;-1:-1:-1;;;44318:18:146;;44206:136::o;45115:338::-;45317:2;45299:21;;;45356:2;45336:18;;;45329:30;-1:-1:-1;;;45390:2:146;45375:18;;45368:44;45444:2;45429:18;;45115:338::o;45804:422::-;45893:1;45936:5;45893:1;45950:270;45971:7;45961:8;45958:21;45950:270;;;46030:4;46026:1;46022:6;46018:17;46012:4;46009:27;46006:53;;;46039:18;;:::i;:::-;46089:7;46079:8;46075:22;46072:55;;;46109:16;;;;46072:55;46188:22;;;;46148:15;;;;45950:270;;;45954:3;45804:422;;;;;:::o;46231:806::-;46280:5;46310:8;46300:80;;-1:-1:-1;46351:1:146;46365:5;;46300:80;46399:4;46389:76;;-1:-1:-1;46436:1:146;46450:5;;46389:76;46481:4;46499:1;46494:59;;;;46567:1;46562:130;;;;46474:218;;46494:59;46524:1;46515:10;;46538:5;;;46562:130;46599:3;46589:8;46586:17;46583:43;;;46606:18;;:::i;:::-;-1:-1:-1;;46662:1:146;46648:16;;46677:5;;46474:218;;46776:2;46766:8;46763:16;46757:3;46751:4;46748:13;46744:36;46738:2;46728:8;46725:16;46720:2;46714:4;46711:12;46707:35;46704:77;46701:159;;;-1:-1:-1;46813:19:146;;;46845:5;;46701:159;46892:34;46917:8;46911:4;46892:34;:::i;:::-;46962:6;46958:1;46954:6;46950:19;46941:7;46938:32;46935:58;;;46973:18;;:::i;:::-;47011:20;;46231:806;-1:-1:-1;;;46231:806:146:o;47042:131::-;47102:5;47131:36;47158:8;47152:4;47131:36;:::i", - "linkReferences": {}, - "immutableReferences": { - "29435": [ - { - "start": 2553, - "length": 32 - }, - { - "start": 2617, - "length": 32 - }, - { - "start": 3494, - "length": 32 - }, - { - "start": 3558, - "length": 32 - }, - { - "start": 3701, - "length": 32 - } - ] - } - }, - "methodIdentifiers": { - "DEFAULT_ADMIN_ROLE()": "a217fddf", - "GUARDIAN_ROLE()": "24ea54f4", - "MIN_LIGHT_CLIENT_DELAY()": "e4407b15", - "TIMELOCK_ROLE()": "f288a2e2", - "VERSION()": "ffa1ad74", - "broadcasters(uint32)": "59f89787", - "executeMessage(uint64,bytes,bytes[],bytes[])": "7acc6754", - "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": "37d5af84", - "freeze(uint32)": "9a2ed203", - "freezeAll()": "99464c89", - "frozen(uint32)": "36ae7c18", - "getRoleAdmin(bytes32)": "248a9ca3", - "grantRole(bytes32,address)": "2f2ff15d", - "hasRole(bytes32,address)": "91d14854", - "initialize(uint32[],address[],address[],address,address,bool)": "5cb77819", - "lightClients(uint32)": "7599735c", - "messageStatus(bytes32)": "3c6cf473", - "messages(uint64)": "029d6713", - "nonce()": "affed0e0", - "proxiableUUID()": "52d1902d", - "renounceRole(bytes32,address)": "36568abe", - "revokeRole(bytes32,address)": "d547741f", - "send(uint32,address,bytes)": "68346a92", - "send(uint32,bytes32,bytes)": "a96a2e92", - "sendViaStorage(uint32,address,bytes)": "147bce49", - "sendViaStorage(uint32,bytes32,bytes)": "6fdbccbf", - "sendingEnabled()": "3e99e9ce", - "setLightClientAndBroadcaster(uint32,address,address)": "91cd8bfd", - "setSendingEnabled(bool)": "ed762d44", - "sourceChainIds(uint256)": "9efeff1c", - "sourceChainIdsLength()": "4552f563", - "storageRootCache(bytes32)": "8d080d1d", - "supportsInterface(bytes4)": "01ffc9a7", - "unfreeze(uint32)": "1f3d25a9", - "unfreezeAll()": "66c5c4a0", - "upgradeTo(address)": "3659cfe6", - "upgradeToAndCall(address,bytes)": "4f1ef286", - "version()": "54fd4d50" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotSendToSameChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SendingDisabled\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Freeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"SendingEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lightClient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"SetLightClientAndBroadcaster\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"SourceChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"Unfreeze\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UnfreezeAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GUARDIAN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LIGHT_CLIENT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMELOCK_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"broadcasters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"accountProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"storageProof\",\"type\":\"bytes[]\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"srcSlotTxSlotPack\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"messageBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"receiptsRootProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"receiptProof\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"txIndexRLPEncoded\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"}],\"name\":\"executeMessageFromLog\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"freeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"frozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"_sourceChainIds\",\"type\":\"uint32[]\"},{\"internalType\":\"address[]\",\"name\":\"_lightClients\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_broadcasters\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_timelock\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_sendingEnabled\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"lightClients\",\"outputs\":[{\"internalType\":\"contract ILightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"messages\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationChainId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendViaStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"lightclient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"broadcaster\",\"type\":\"address\"}],\"name\":\"setLightClientAndBroadcaster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setSendingEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sourceChainIds\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainIdsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"storageRootCache\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"}],\"name\":\"unfreeze\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unfreezeAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"params\":{\"accountProof\":\"Used to prove the broadcaster's state root.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"slot\":\"Specifies which execution state root should be read from the light client.\",\"storageProof\":\"Used to prove the existence of the message root inside the broadcaster.\"}},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"params\":{\"logIndex\":\"The index of the event in our transaction.\",\"messageBytes\":\"The message we want to execute provided as bytes.\",\"receiptsRoot\":\"The receipts root which contains our \\\"SentMessage\\\" event.\",\"receiptsRootProof\":\"A merkle proof proving the receiptsRoot in the block header.\",\"srcSlotTxSlotPack\":\"The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.\",\"txIndexRLPEncoded\":\"The index of our transaction inside the block RLP encoded.\"}},\"freeze(uint32)\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"freezeAll()\":{\"details\":\"This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"send(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"sendViaStorage(uint32,bytes32,bytes)\":{\"params\":{\"data\":\"The data passed to the contract on the other chain\",\"destinationAddress\":\"The contract address that will be called on the destination chain.\",\"destinationChainId\":\"The chain id that specifies the destination chain.\"},\"returns\":{\"_0\":\"bytes32 A unique identifier for a message.\"}},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"details\":\"This is controlled by the timelock as it is a potentially dangerous method since both the light client and broadcaster address are critical in verifying that only valid sent messages are executed.\"},\"sourceChainIdsLength()\":{\"returns\":{\"_0\":\"The length of the sourceChainIds array.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unfreeze(uint32)\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"unfreezeAll()\":{\"details\":\"This is a safety mechanism to continue usage of the contract after a security vulnerability is patched.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"Telepathy Router\",\"version\":1},\"userdoc\":{\"events\":{\"Freeze(uint32)\":{\"notice\":\"Emitted when freeze is called.\"},\"FreezeAll()\":{\"notice\":\"Emitted when freezeAll is called.\"},\"SendingEnabled(bool)\":{\"notice\":\"Emitted when the sendingEnabled flag is changed.\"},\"SetLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Emitted when setLightClientAndBroadcaster is called.\"},\"SourceChainAdded(uint32)\":{\"notice\":\"Emitted when a new source chain is added.\"},\"Unfreeze(uint32)\":{\"notice\":\"Emitted when unfreeze is called.\"},\"UnfreezeAll()\":{\"notice\":\"Emitted when unfreezeAll is called.\"}},\"kind\":\"user\",\"methods\":{\"GUARDIAN_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'guardian'.\"},\"MIN_LIGHT_CLIENT_DELAY()\":{\"notice\":\"The minimum delay for using any information from the light client.\"},\"TIMELOCK_ROLE()\":{\"notice\":\"A random constant used to identify addresses with the permission of a 'timelock'.\"},\"VERSION()\":{\"notice\":\"Returns current contract version.\"},\"broadcasters(uint32)\":{\"notice\":\"Mapping between source chainId and the address of the Telepathy broadcaster on that chain.\"},\"constructor\":{\"notice\":\"Prevents the implementation contract from being initialized outside of the upgradeable proxy.\"},\"executeMessage(uint64,bytes,bytes[],bytes[])\":{\"notice\":\"Executes a message given a storage proof.\"},\"executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)\":{\"notice\":\"Executes a message given an event proof.\"},\"freeze(uint32)\":{\"notice\":\"Freezes messages from the specified chain.\"},\"freezeAll()\":{\"notice\":\"Freezes messages from all chains.\"},\"frozen(uint32)\":{\"notice\":\"Mapping between a source chainId and whether it's frozen.\"},\"initialize(uint32[],address[],address[],address,address,bool)\":{\"notice\":\"Initializes the contract and the parent contracts once.\"},\"lightClients(uint32)\":{\"notice\":\"Mapping between source chainId and the corresponding light client.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping between a message root and its status.\"},\"messages(uint64)\":{\"notice\":\"Mapping between a nonce and a message root.\"},\"nonce()\":{\"notice\":\"Keeps track of the next nonce to be used.\"},\"send(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.\"},\"sendViaStorage(uint32,bytes32,bytes)\":{\"notice\":\"Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas.\"},\"sendingEnabled()\":{\"notice\":\"Whether sending is enabled or not.\"},\"setLightClientAndBroadcaster(uint32,address,address)\":{\"notice\":\"Sets the light client contract and broadcaster for a given chainId.\"},\"setSendingEnabled(bool)\":{\"notice\":\"Allows the owner to control whether sending is enabled or not.\"},\"sourceChainIds(uint256)\":{\"notice\":\"All sourceChainIds.\"},\"sourceChainIdsLength()\":{\"notice\":\"Gets the length of the sourceChainIds array.\"},\"storageRootCache(bytes32)\":{\"notice\":\"Storage root cache.\"},\"unfreeze(uint32)\":{\"notice\":\"Unfreezes messages from the specified chain.\"},\"unfreezeAll()\":{\"notice\":\"Unfreezes messages from all chains.\"},\"version()\":{\"notice\":\"Returns current contract version.\"}},\"notice\":\"Send and receive arbitrary messages from other chains.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/amb/TelepathyRouter.sol\":\"TelepathyRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "type": "error", - "name": "CannotSendToSameChain" - }, - { - "inputs": [], - "type": "error", - "name": "SendingDisabled" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "previousAdmin", - "type": "address", - "indexed": false - }, - { - "internalType": "address", - "name": "newAdmin", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "AdminChanged", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "beacon", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "BeaconUpgraded", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32", - "indexed": true - }, - { - "internalType": "uint64", - "name": "nonce", - "type": "uint64", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes", - "name": "message", - "type": "bytes", - "indexed": false - }, - { - "internalType": "bool", - "name": "status", - "type": "bool", - "indexed": false - } - ], - "type": "event", - "name": "ExecutedMessage", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "chainId", - "type": "uint32", - "indexed": true - } - ], - "type": "event", - "name": "Freeze", - "anonymous": false - }, - { - "inputs": [], - "type": "event", - "name": "FreezeAll", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "version", - "type": "uint8", - "indexed": false - } - ], - "type": "event", - "name": "Initialized", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32", - "indexed": true - } - ], - "type": "event", - "name": "RoleAdminChanged", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "sender", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "RoleGranted", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "sender", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "RoleRevoked", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "enabled", - "type": "bool", - "indexed": false - } - ], - "type": "event", - "name": "SendingEnabled", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "nonce", - "type": "uint64", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes", - "name": "message", - "type": "bytes", - "indexed": false - } - ], - "type": "event", - "name": "SentMessage", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "chainId", - "type": "uint32", - "indexed": true - }, - { - "internalType": "address", - "name": "lightClient", - "type": "address", - "indexed": false - }, - { - "internalType": "address", - "name": "broadcaster", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "SetLightClientAndBroadcaster", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "chainId", - "type": "uint32", - "indexed": true - } - ], - "type": "event", - "name": "SourceChainAdded", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "chainId", - "type": "uint32", - "indexed": true - } - ], - "type": "event", - "name": "Unfreeze", - "anonymous": false - }, - { - "inputs": [], - "type": "event", - "name": "UnfreezeAll", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "implementation", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "Upgraded", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "GUARDIAN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "MIN_LIGHT_CLIENT_DELAY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "TIMELOCK_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "VERSION", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "broadcasters", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "slot", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes[]", - "name": "accountProof", - "type": "bytes[]" - }, - { - "internalType": "bytes[]", - "name": "storageProof", - "type": "bytes[]" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "executeMessage" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "srcSlotTxSlotPack", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "messageBytes", - "type": "bytes" - }, - { - "internalType": "bytes32[]", - "name": "receiptsRootProof", - "type": "bytes32[]" - }, - { - "internalType": "bytes32", - "name": "receiptsRoot", - "type": "bytes32" - }, - { - "internalType": "bytes[]", - "name": "receiptProof", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "txIndexRLPEncoded", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "logIndex", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "executeMessageFromLog" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "chainId", - "type": "uint32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "freeze" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "freezeAll" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "frozen", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "grantRole" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32[]", - "name": "_sourceChainIds", - "type": "uint32[]" - }, - { - "internalType": "address[]", - "name": "_lightClients", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "_broadcasters", - "type": "address[]" - }, - { - "internalType": "address", - "name": "_timelock", - "type": "address" - }, - { - "internalType": "address", - "name": "_guardian", - "type": "address" - }, - { - "internalType": "bool", - "name": "_sendingEnabled", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "initialize" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "lightClients", - "outputs": [ - { - "internalType": "contract ILightClient", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "messageStatus", - "outputs": [ - { - "internalType": "enum MessageStatus", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function", - "name": "messages", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "nonce", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "renounceRole" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "revokeRole" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "destinationAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "send", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "destinationAddress", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "send", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "destinationAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "sendViaStorage", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "destinationChainId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "destinationAddress", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "sendViaStorage", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "sendingEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "chainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "lightclient", - "type": "address" - }, - { - "internalType": "address", - "name": "broadcaster", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setLightClientAndBroadcaster" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "enabled", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setSendingEnabled" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "sourceChainIds", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "sourceChainIdsLength", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "storageRootCache", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function", - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "chainId", - "type": "uint32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "unfreeze" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "unfreezeAll" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "upgradeTo" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "upgradeToAndCall" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "version", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "executeMessage(uint64,bytes,bytes[],bytes[])": { - "params": { - "accountProof": "Used to prove the broadcaster's state root.", - "messageBytes": "The message we want to execute provided as bytes.", - "slot": "Specifies which execution state root should be read from the light client.", - "storageProof": "Used to prove the existence of the message root inside the broadcaster." - } - }, - "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { - "params": { - "logIndex": "The index of the event in our transaction.", - "messageBytes": "The message we want to execute provided as bytes.", - "receiptsRoot": "The receipts root which contains our \"SentMessage\" event.", - "receiptsRootProof": "A merkle proof proving the receiptsRoot in the block header.", - "srcSlotTxSlotPack": "The slot where we want to read the header from and the slot where the tx executed, packed as two uint64s.", - "txIndexRLPEncoded": "The index of our transaction inside the block RLP encoded." - } - }, - "freeze(uint32)": { - "details": "This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected." - }, - "freezeAll()": { - "details": "This is a safety mechanism to prevent the contract from being used after a security vulnerability is detected." - }, - "getRoleAdmin(bytes32)": { - "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." - }, - "grantRole(bytes32,address)": { - "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." - }, - "hasRole(bytes32,address)": { - "details": "Returns `true` if `account` has been granted `role`." - }, - "proxiableUUID()": { - "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier." - }, - "renounceRole(bytes32,address)": { - "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event." - }, - "revokeRole(bytes32,address)": { - "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event." - }, - "send(uint32,bytes32,bytes)": { - "params": { - "data": "The data passed to the contract on the other chain", - "destinationAddress": "The contract address that will be called on the destination chain.", - "destinationChainId": "The chain id that specifies the destination chain." - }, - "returns": { - "_0": "bytes32 A unique identifier for a message." - } - }, - "sendViaStorage(uint32,bytes32,bytes)": { - "params": { - "data": "The data passed to the contract on the other chain", - "destinationAddress": "The contract address that will be called on the destination chain.", - "destinationChainId": "The chain id that specifies the destination chain." - }, - "returns": { - "_0": "bytes32 A unique identifier for a message." - } - }, - "setLightClientAndBroadcaster(uint32,address,address)": { - "details": "This is controlled by the timelock as it is a potentially dangerous method since both the light client and broadcaster address are critical in verifying that only valid sent messages are executed." - }, - "sourceChainIdsLength()": { - "returns": { - "_0": "The length of the sourceChainIds array." - } - }, - "supportsInterface(bytes4)": { - "details": "See {IERC165-supportsInterface}." - }, - "unfreeze(uint32)": { - "details": "This is a safety mechanism to continue usage of the contract after a security vulnerability is patched." - }, - "unfreezeAll()": { - "details": "This is a safety mechanism to continue usage of the contract after a security vulnerability is patched." - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "GUARDIAN_ROLE()": { - "notice": "A random constant used to identify addresses with the permission of a 'guardian'." - }, - "MIN_LIGHT_CLIENT_DELAY()": { - "notice": "The minimum delay for using any information from the light client." - }, - "TIMELOCK_ROLE()": { - "notice": "A random constant used to identify addresses with the permission of a 'timelock'." - }, - "VERSION()": { - "notice": "Returns current contract version." - }, - "broadcasters(uint32)": { - "notice": "Mapping between source chainId and the address of the Telepathy broadcaster on that chain." - }, - "constructor": { - "notice": "Prevents the implementation contract from being initialized outside of the upgradeable proxy." - }, - "executeMessage(uint64,bytes,bytes[],bytes[])": { - "notice": "Executes a message given a storage proof." - }, - "executeMessageFromLog(bytes,bytes,bytes32[],bytes32,bytes[],bytes,uint256)": { - "notice": "Executes a message given an event proof." - }, - "freeze(uint32)": { - "notice": "Freezes messages from the specified chain." - }, - "freezeAll()": { - "notice": "Freezes messages from all chains." - }, - "frozen(uint32)": { - "notice": "Mapping between a source chainId and whether it's frozen." - }, - "initialize(uint32[],address[],address[],address,address,bool)": { - "notice": "Initializes the contract and the parent contracts once." - }, - "lightClients(uint32)": { - "notice": "Mapping between source chainId and the corresponding light client." - }, - "messageStatus(bytes32)": { - "notice": "Mapping between a message root and its status." - }, - "messages(uint64)": { - "notice": "Mapping between a nonce and a message root." - }, - "nonce()": { - "notice": "Keeps track of the next nonce to be used." - }, - "send(uint32,bytes32,bytes)": { - "notice": "Sends a message to a destination chain." - }, - "sendViaStorage(uint32,bytes32,bytes)": { - "notice": "Sends a message to a destination chain.This method is more expensive than the `send` method as it requires adding to contract storage. Use `send` when interacting with Telepathy to save gas." - }, - "sendingEnabled()": { - "notice": "Whether sending is enabled or not." - }, - "setLightClientAndBroadcaster(uint32,address,address)": { - "notice": "Sets the light client contract and broadcaster for a given chainId." - }, - "setSendingEnabled(bool)": { - "notice": "Allows the owner to control whether sending is enabled or not." - }, - "sourceChainIds(uint256)": { - "notice": "All sourceChainIds." - }, - "sourceChainIdsLength()": { - "notice": "Gets the length of the sourceChainIds array." - }, - "storageRootCache(bytes32)": { - "notice": "Storage root cache." - }, - "unfreeze(uint32)": { - "notice": "Unfreezes messages from the specified chain." - }, - "unfreezeAll()": { - "notice": "Unfreezes messages from all chains." - }, - "version()": { - "notice": "Returns current contract version." - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/amb/TelepathyRouter.sol": "TelepathyRouter" - }, - "libraries": {} - }, - "sources": { - "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { - "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", - "urls": [ - "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", - "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { - "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", - "urls": [ - "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", - "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { - "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", - "urls": [ - "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", - "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { - "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", - "urls": [ - "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", - "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { - "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", - "urls": [ - "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", - "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { - "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", - "urls": [ - "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", - "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", - "urls": [ - "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", - "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { - "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", - "urls": [ - "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", - "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { - "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", - "urls": [ - "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", - "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { - "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", - "urls": [ - "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", - "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { - "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", - "urls": [ - "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", - "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { - "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", - "urls": [ - "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", - "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { - "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", - "urls": [ - "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", - "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { - "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", - "urls": [ - "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", - "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { - "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", - "urls": [ - "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", - "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { - "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", - "urls": [ - "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", - "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/Bytes.sol": { - "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", - "urls": [ - "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", - "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { - "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", - "urls": [ - "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", - "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { - "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", - "urls": [ - "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", - "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { - "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", - "urls": [ - "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", - "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" - ], - "license": "MIT" - }, - "src/amb/SourceAMB.sol": { - "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", - "urls": [ - "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", - "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" - ], - "license": null - }, - "src/amb/TargetAMB.sol": { - "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", - "urls": [ - "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", - "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" - ], - "license": null - }, - "src/amb/TelepathyAccess.sol": { - "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", - "urls": [ - "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", - "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" - ], - "license": null - }, - "src/amb/TelepathyRouter.sol": { - "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", - "urls": [ - "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", - "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" - ], - "license": null - }, - "src/amb/TelepathyStorage.sol": { - "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", - "urls": [ - "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", - "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" - ], - "license": null - }, - "src/amb/interfaces/ITelepathy.sol": { - "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", - "urls": [ - "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", - "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" - ], - "license": null - }, - "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", - "urls": [ - "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", - "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" - ], - "license": null - }, - "src/libraries/MessageEncoding.sol": { - "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", - "urls": [ - "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", - "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" - ], - "license": null - }, - "src/libraries/SimpleSerialize.sol": { - "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", - "urls": [ - "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", - "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" - ], - "license": null - }, - "src/libraries/StateProofHelper.sol": { - "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", - "urls": [ - "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", - "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" - ], - "license": null - }, - "src/libraries/Typecast.sol": { - "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", - "urls": [ - "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", - "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" - ], - "license": "MIT OR Apache-2.0" - }, - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/amb/TelepathyRouter.sol", - "id": 42577, - "exportedSymbols": { - "ILightClient": [ - 47936 - ], - "ITelepathyHandler": [ - 42764 - ], - "ITelepathyReceiver": [ - 42752 - ], - "ITelepathyRouter": [ - 42707 - ], - "Message": [ - 42654 - ], - "MessageStatus": [ - 42639 - ], - "SourceAMB": [ - 41479 - ], - "TargetAMB": [ - 42123 - ], - "TelepathyAccess": [ - 42415 - ], - "TelepathyRouter": [ - 42576 - ], - "TelepathyStorage": [ - 42633 - ], - "UUPSUpgradeable": [ - 29540 - ] - }, - "nodeType": "SourceUnit", - "src": "0:2243:102", - "nodes": [ - { - "id": 42417, - "nodeType": "PragmaDirective", - "src": "0:23:102", - "nodes": [], - "literals": [ - "solidity", - "0.8", - ".16" - ] - }, - { - "id": 42419, - "nodeType": "ImportDirective", - "src": "25:99:102", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "file": "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", - "nameLocation": "-1:-1:-1", - "scope": 42577, - "sourceUnit": 29541, - "symbolAliases": [ - { - "foreign": { - "id": 42418, - "name": "UUPSUpgradeable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 29540, - "src": "33:15:102", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 42421, - "nodeType": "ImportDirective", - "src": "126:73:102", - "nodes": [], - "absolutePath": "src/lightclient/interfaces/ILightClient.sol", - "file": "src/lightclient/interfaces/ILightClient.sol", - "nameLocation": "-1:-1:-1", - "scope": 42577, - "sourceUnit": 47937, - "symbolAliases": [ - { - "foreign": { - "id": 42420, - "name": "ILightClient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47936, - "src": "134:12:102", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 42423, - "nodeType": "ImportDirective", - "src": "201:62:102", - "nodes": [], - "absolutePath": "src/amb/TelepathyStorage.sol", - "file": "src/amb/TelepathyStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 42577, - "sourceUnit": 42634, - "symbolAliases": [ - { - "foreign": { - "id": 42422, - "name": "TelepathyStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42633, - "src": "209:16:102", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 42429, - "nodeType": "ImportDirective", - "src": "264:152:102", - "nodes": [], - "absolutePath": "src/amb/interfaces/ITelepathy.sol", - "file": "src/amb/interfaces/ITelepathy.sol", - "nameLocation": "-1:-1:-1", - "scope": 42577, - "sourceUnit": 42765, - "symbolAliases": [ - { - "foreign": { - "id": 42424, - "name": "ITelepathyReceiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42752, - "src": "277:18:102", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 42425, - "name": "Message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42654, - "src": "301:7:102", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 42426, - "name": "MessageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42639, - "src": "314:13:102", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 42427, - "name": "ITelepathyHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42764, - "src": "333:17:102", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 42428, - "name": "ITelepathyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42707, - "src": "356:16:102", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 42431, - "nodeType": "ImportDirective", - "src": "417:48:102", - "nodes": [], - "absolutePath": "src/amb/TargetAMB.sol", - "file": "src/amb/TargetAMB.sol", - "nameLocation": "-1:-1:-1", - "scope": 42577, - "sourceUnit": 42124, - "symbolAliases": [ - { - "foreign": { - "id": 42430, - "name": "TargetAMB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42123, - "src": "425:9:102", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 42433, - "nodeType": "ImportDirective", - "src": "466:48:102", - "nodes": [], - "absolutePath": "src/amb/SourceAMB.sol", - "file": "src/amb/SourceAMB.sol", - "nameLocation": "-1:-1:-1", - "scope": 42577, - "sourceUnit": 41480, - "symbolAliases": [ - { - "foreign": { - "id": 42432, - "name": "SourceAMB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41479, - "src": "474:9:102", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 42435, - "nodeType": "ImportDirective", - "src": "515:60:102", - "nodes": [], - "absolutePath": "src/amb/TelepathyAccess.sol", - "file": "src/amb/TelepathyAccess.sol", - "nameLocation": "-1:-1:-1", - "scope": 42577, - "sourceUnit": 42416, - "symbolAliases": [ - { - "foreign": { - "id": 42434, - "name": "TelepathyAccess", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42415, - "src": "523:15:102", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 42576, - "nodeType": "ContractDefinition", - "src": "698:1544:102", - "nodes": [ - { - "id": 42448, - "nodeType": "VariableDeclaration", - "src": "837:33:102", - "nodes": [], - "constant": true, - "documentation": { - "id": 42445, - "nodeType": "StructuredDocumentation", - "src": "787:45:102", - "text": "@notice Returns current contract version." - }, - "functionSelector": "ffa1ad74", - "mutability": "constant", - "name": "VERSION", - "nameLocation": "859:7:102", - "scope": 42576, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 42446, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "837:5:102", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": { - "hexValue": "31", - "id": 42447, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "869:1:102", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "visibility": "public" - }, - { - "id": 42456, - "nodeType": "FunctionDefinition", - "src": "987:53:102", - "nodes": [], - "body": { - "id": 42455, - "nodeType": "Block", - "src": "1001:39:102", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 42452, - "name": "_disableInitializers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 29385, - "src": "1011:20:102", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 42453, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1011:22:102", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42454, - "nodeType": "ExpressionStatement", - "src": "1011:22:102" - } - ] - }, - "documentation": { - "id": 42449, - "nodeType": "StructuredDocumentation", - "src": "877:105:102", - "text": "@notice Prevents the implementation contract from being initialized outside of the upgradeable proxy." - }, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 42450, - "nodeType": "ParameterList", - "parameters": [], - "src": "998:2:102" - }, - "returnParameters": { - "id": 42451, - "nodeType": "ParameterList", - "parameters": [], - "src": "1001:0:102" - }, - "scope": 42576, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 42565, - "nodeType": "FunctionDefinition", - "src": "1118:958:102", - "nodes": [], - "body": { - "id": 42564, - "nodeType": "Block", - "src": "1370:706:102", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 42477, - "name": "__ReentrancyGuard_init", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 29563, - "src": "1380:22:102", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 42478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1380:24:102", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42479, - "nodeType": "ExpressionStatement", - "src": "1380:24:102" - }, - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 42480, - "name": "__AccessControl_init", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28327, - "src": "1414:20:102", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 42481, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1414:22:102", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42482, - "nodeType": "ExpressionStatement", - "src": "1414:22:102" - }, - { - "expression": { - "arguments": [ - { - "id": 42484, - "name": "GUARDIAN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42176, - "src": "1457:13:102", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 42485, - "name": "_guardian", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42470, - "src": "1472:9:102", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 42483, - "name": "_grantRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28604, - "src": "1446:10:102", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 42486, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1446:36:102", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42487, - "nodeType": "ExpressionStatement", - "src": "1446:36:102" - }, - { - "expression": { - "arguments": [ - { - "id": 42489, - "name": "TIMELOCK_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42182, - "src": "1503:13:102", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 42490, - "name": "_timelock", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42468, - "src": "1518:9:102", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 42488, - "name": "_grantRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28604, - "src": "1492:10:102", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 42491, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1492:36:102", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42492, - "nodeType": "ExpressionStatement", - "src": "1492:36:102" - }, - { - "expression": { - "arguments": [ - { - "id": 42494, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28348, - "src": "1549:18:102", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 42495, - "name": "_timelock", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42468, - "src": "1569:9:102", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 42493, - "name": "_grantRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28604, - "src": "1538:10:102", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 42496, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1538:41:102", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42497, - "nodeType": "ExpressionStatement", - "src": "1538:41:102" - }, - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 42498, - "name": "__UUPSUpgradeable_init", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 29422, - "src": "1589:22:102", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 42499, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1589:24:102", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42500, - "nodeType": "ExpressionStatement", - "src": "1589:24:102" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 42506, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 42502, - "name": "_sourceChainIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42460, - "src": "1632:15:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - }, - "id": 42503, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1648:6:102", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1632:22:102", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 42504, - "name": "_lightClients", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42463, - "src": "1658:13:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 42505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1672:6:102", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1658:20:102", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1632:46:102", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 42501, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1624:7:102", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 42507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1624:55:102", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42508, - "nodeType": "ExpressionStatement", - "src": "1624:55:102" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 42514, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 42510, - "name": "_sourceChainIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42460, - "src": "1697:15:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - }, - "id": 42511, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1713:6:102", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1697:22:102", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 42512, - "name": "_broadcasters", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42466, - "src": "1723:13:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 42513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1737:6:102", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1723:20:102", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1697:46:102", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 42509, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1689:7:102", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 42515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1689:55:102", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 42516, - "nodeType": "ExpressionStatement", - "src": "1689:55:102" - }, - { - "expression": { - "id": 42519, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 42517, - "name": "sourceChainIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42597, - "src": "1755:14:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage", - "typeString": "uint32[] storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 42518, - "name": "_sourceChainIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42460, - "src": "1772:15:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - }, - "src": "1755:32:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage", - "typeString": "uint32[] storage ref" - } - }, - "id": 42520, - "nodeType": "ExpressionStatement", - "src": "1755:32:102" - }, - { - "body": { - "id": 42554, - "nodeType": "Block", - "src": "1848:153:102", - "statements": [ - { - "expression": { - "id": 42542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 42532, - "name": "lightClients", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42603, - "src": "1862:12:102", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_contract$_ILightClient_$47936_$", - "typeString": "mapping(uint32 => contract ILightClient)" - } - }, - "id": 42536, - "indexExpression": { - "baseExpression": { - "id": 42533, - "name": "sourceChainIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42597, - "src": "1875:14:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage", - "typeString": "uint32[] storage ref" - } - }, - "id": 42535, - "indexExpression": { - "id": 42534, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42522, - "src": "1890:1:102", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1875:17:102", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1862:31:102", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "baseExpression": { - "id": 42538, - "name": "_lightClients", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42463, - "src": "1909:13:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 42540, - "indexExpression": { - "id": 42539, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42522, - "src": "1923:1:102", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1909:16:102", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 42537, - "name": "ILightClient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47936, - "src": "1896:12:102", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ILightClient_$47936_$", - "typeString": "type(contract ILightClient)" - } - }, - "id": 42541, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1896:30:102", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "src": "1862:64:102", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILightClient_$47936", - "typeString": "contract ILightClient" - } - }, - "id": 42543, - "nodeType": "ExpressionStatement", - "src": "1862:64:102" - }, - { - "expression": { - "id": 42552, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 42544, - "name": "broadcasters", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42608, - "src": "1940:12:102", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_address_$", - "typeString": "mapping(uint32 => address)" - } - }, - "id": 42548, - "indexExpression": { - "baseExpression": { - "id": 42545, - "name": "sourceChainIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42597, - "src": "1953:14:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage", - "typeString": "uint32[] storage ref" - } - }, - "id": 42547, - "indexExpression": { - "id": 42546, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42522, - "src": "1968:1:102", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1953:17:102", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1940:31:102", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 42549, - "name": "_broadcasters", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42466, - "src": "1974:13:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 42551, - "indexExpression": { - "id": 42550, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42522, - "src": "1988:1:102", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1974:16:102", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1940:50:102", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 42553, - "nodeType": "ExpressionStatement", - "src": "1940:50:102" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 42528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 42525, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42522, - "src": "1816:1:102", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 42526, - "name": "sourceChainIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42597, - "src": "1820:14:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage", - "typeString": "uint32[] storage ref" - } - }, - "id": 42527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1835:6:102", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1820:21:102", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1816:25:102", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 42555, - "initializationExpression": { - "assignments": [ - 42522 - ], - "declarations": [ - { - "constant": false, - "id": 42522, - "mutability": "mutable", - "name": "i", - "nameLocation": "1809:1:102", - "nodeType": "VariableDeclaration", - "scope": 42555, - "src": "1802:8:102", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 42521, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1802:6:102", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "id": 42524, - "initialValue": { - "hexValue": "30", - "id": 42523, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1813:1:102", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1802:12:102" - }, - "loopExpression": { - "expression": { - "id": 42530, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1843:3:102", - "subExpression": { - "id": 42529, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42522, - "src": "1843:1:102", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 42531, - "nodeType": "ExpressionStatement", - "src": "1843:3:102" - }, - "nodeType": "ForStatement", - "src": "1797:204:102" - }, - { - "expression": { - "id": 42558, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 42556, - "name": "sendingEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42585, - "src": "2010:14:102", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 42557, - "name": "_sendingEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42472, - "src": "2027:15:102", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2010:32:102", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 42559, - "nodeType": "ExpressionStatement", - "src": "2010:32:102" - }, - { - "expression": { - "id": 42562, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 42560, - "name": "version", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42622, - "src": "2052:7:102", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 42561, - "name": "VERSION", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42448, - "src": "2062:7:102", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2052:17:102", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 42563, - "nodeType": "ExpressionStatement", - "src": "2052:17:102" - } - ] - }, - "documentation": { - "id": 42457, - "nodeType": "StructuredDocumentation", - "src": "1046:67:102", - "text": "@notice Initializes the contract and the parent contracts once." - }, - "functionSelector": "5cb77819", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 42475, - "kind": "modifierInvocation", - "modifierName": { - "id": 42474, - "name": "initializer", - "nameLocations": [ - "1358:11:102" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 29306, - "src": "1358:11:102" - }, - "nodeType": "ModifierInvocation", - "src": "1358:11:102" - } - ], - "name": "initialize", - "nameLocation": "1127:10:102", - "parameters": { - "id": 42473, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 42460, - "mutability": "mutable", - "name": "_sourceChainIds", - "nameLocation": "1163:15:102", - "nodeType": "VariableDeclaration", - "scope": 42565, - "src": "1147:31:102", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[]" - }, - "typeName": { - "baseType": { - "id": 42458, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1147:6:102", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 42459, - "nodeType": "ArrayTypeName", - "src": "1147:8:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr", - "typeString": "uint32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 42463, - "mutability": "mutable", - "name": "_lightClients", - "nameLocation": "1205:13:102", - "nodeType": "VariableDeclaration", - "scope": 42565, - "src": "1188:30:102", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 42461, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1188:7:102", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 42462, - "nodeType": "ArrayTypeName", - "src": "1188:9:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 42466, - "mutability": "mutable", - "name": "_broadcasters", - "nameLocation": "1245:13:102", - "nodeType": "VariableDeclaration", - "scope": 42565, - "src": "1228:30:102", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 42464, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1228:7:102", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 42465, - "nodeType": "ArrayTypeName", - "src": "1228:9:102", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 42468, - "mutability": "mutable", - "name": "_timelock", - "nameLocation": "1276:9:102", - "nodeType": "VariableDeclaration", - "scope": 42565, - "src": "1268:17:102", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 42467, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1268:7:102", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 42470, - "mutability": "mutable", - "name": "_guardian", - "nameLocation": "1303:9:102", - "nodeType": "VariableDeclaration", - "scope": 42565, - "src": "1295:17:102", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 42469, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1295:7:102", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 42472, - "mutability": "mutable", - "name": "_sendingEnabled", - "nameLocation": "1327:15:102", - "nodeType": "VariableDeclaration", - "scope": 42565, - "src": "1322:20:102", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 42471, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1322:4:102", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "1137:211:102" - }, - "returnParameters": { - "id": 42476, - "nodeType": "ParameterList", - "parameters": [], - "src": "1370:0:102" - }, - "scope": 42576, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 42575, - "nodeType": "FunctionDefinition", - "src": "2153:87:102", - "nodes": [], - "body": { - "id": 42574, - "nodeType": "Block", - "src": "2238:2:102", - "nodes": [], - "statements": [] - }, - "baseFunctions": [ - 29534 - ], - "documentation": { - "id": 42566, - "nodeType": "StructuredDocumentation", - "src": "2082:66:102", - "text": "@notice Authorizes an upgrade for the implementation contract." - }, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 42572, - "kind": "modifierInvocation", - "modifierName": { - "id": 42571, - "name": "onlyTimelock", - "nameLocations": [ - "2225:12:102" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42208, - "src": "2225:12:102" - }, - "nodeType": "ModifierInvocation", - "src": "2225:12:102" - } - ], - "name": "_authorizeUpgrade", - "nameLocation": "2162:17:102", - "overrides": { - "id": 42570, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2216:8:102" - }, - "parameters": { - "id": 42569, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 42568, - "mutability": "mutable", - "name": "newImplementation", - "nameLocation": "2188:17:102", - "nodeType": "VariableDeclaration", - "scope": 42575, - "src": "2180:25:102", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 42567, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2180:7:102", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2179:27:102" - }, - "returnParameters": { - "id": 42573, - "nodeType": "ParameterList", - "parameters": [], - "src": "2238:0:102" - }, - "scope": 42576, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 42437, - "name": "SourceAMB", - "nameLocations": [ - "726:9:102" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 41479, - "src": "726:9:102" - }, - "id": 42438, - "nodeType": "InheritanceSpecifier", - "src": "726:9:102" - }, - { - "baseName": { - "id": 42439, - "name": "TargetAMB", - "nameLocations": [ - "737:9:102" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42123, - "src": "737:9:102" - }, - "id": 42440, - "nodeType": "InheritanceSpecifier", - "src": "737:9:102" - }, - { - "baseName": { - "id": 42441, - "name": "TelepathyAccess", - "nameLocations": [ - "748:15:102" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 42415, - "src": "748:15:102" - }, - "id": 42442, - "nodeType": "InheritanceSpecifier", - "src": "748:15:102" - }, - { - "baseName": { - "id": 42443, - "name": "UUPSUpgradeable", - "nameLocations": [ - "765:15:102" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 29540, - "src": "765:15:102" - }, - "id": 42444, - "nodeType": "InheritanceSpecifier", - "src": "765:15:102" - } - ], - "canonicalName": "TelepathyRouter", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 42436, - "nodeType": "StructuredDocumentation", - "src": "577:121:102", - "text": "@title Telepathy Router\n @author Succinct Labs\n @notice Send and receive arbitrary messages from other chains." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 42576, - 29540, - 29225, - 28856, - 42415, - 28641, - 30218, - 30230, - 28714, - 29939, - 42123, - 42752, - 29613, - 29404, - 41479, - 42707, - 42633 - ], - "name": "TelepathyRouter", - "nameLocation": "707:15:102", - "scope": 42577, - "usedErrors": [ - 41241, - 41243 - ] - } - ] - }, - "id": 102 -} \ No newline at end of file diff --git a/out/TelepathySubscriber.sol/TelepathySubscriber.json b/out/TelepathySubscriber.sol/TelepathySubscriber.json deleted file mode 100644 index 0748acc..0000000 --- a/out/TelepathySubscriber.sol/TelepathySubscriber.json +++ /dev/null @@ -1,2947 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "internalType": "uint64", - "name": "startSlot", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "endSlot", - "type": "uint64" - } - ], - "name": "InvalidSlotRange", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - } - ], - "name": "SubscriptionAlreadyActive", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - } - ], - "name": "SubscriptionNotActive", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "startSlot", - "type": "uint64" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "endSlot", - "type": "uint64" - }, - { - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ], - "indexed": false, - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple" - } - ], - "name": "Subscribe", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ], - "indexed": false, - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple" - } - ], - "name": "Unsubscribe", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "eventsPublished", - "outputs": [ - { - "internalType": "enum PublishStatus", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_eventSig", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "_startSlot", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "_endSlot", - "type": "uint64" - } - ], - "name": "subscribe", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "subscriptions", - "outputs": [ - { - "internalType": "enum SubscriptionStatus", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_eventSig", - "type": "bytes32" - } - ], - "name": "unsubscribe", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b50610527806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea2646970667358221220ff63b886676e4141d48a9f114405d4ff012a2c54a5ba7cefc32582b6d12384b564736f6c63430008100033", - "sourceMap": "335:2199:125:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80633cca331c14610051578063651389591461008a57806394259c6c146100ab57806397229719146100db575b600080fd5b61007461005f366004610361565b60016020526000908152604090205460ff1681565b6040516100819190610390565b60405180910390f35b61009d6100983660046103f2565b6100ee565b604051908152602001610081565b6100ce6100b9366004610361565b60026020526000908152604090205460ff1681565b604051610081919061045f565b61009d6100e9366004610473565b610259565b60008060405180608001604052808963ffffffff168152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250905060008160405160200161013f91906104af565b60408051601f1981840301815291905280516020909101209050600160008281526002602052604090205460ff16600181111561017e5761017e61037a565b036101a457604051634702100760e11b8152600481018290526024015b60405180910390fd5b6000818152600260205260409020805460ff1916600117905567ffffffffffffffff80861690851610156101ff57604051633c04832160e21b815267ffffffffffffffff80871660048301528516602482015260440161019b565b8367ffffffffffffffff168567ffffffffffffffff16827f5c727204c662dd3d053e4f52d9c6872a50938b7af3f1497df385c3b5f4e5eb738560405161024591906104af565b60405180910390a498975050505050505050565b60008060405180608001604052808663ffffffff168152602001856001600160a01b03168152602001336001600160a01b031681526020018481525090506000816040516020016102aa91906104af565b60408051601f19818403018152919052805160209091012090506000808281526002602052604090205460ff1660018111156102e8576102e861037a565b036103085760405162191d2960e11b81526004810182905260240161019b565b60008181526002602052604090819020805460ff191690555181907f0a82aeeb867dc22c12ad75195fd9acfc1a0f838cd64348e4ed6a25e199def9c8906103509085906104af565b60405180910390a295945050505050565b60006020828403121561037357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106103a4576103a461037a565b91905290565b803563ffffffff811681146103be57600080fd5b919050565b80356001600160a01b03811681146103be57600080fd5b803567ffffffffffffffff811681146103be57600080fd5b60008060008060008060c0878903121561040b57600080fd5b610414876103aa565b9550610422602088016103c3565b9450610430604088016103c3565b935060608701359250610445608088016103da565b915061045360a088016103da565b90509295509295509295565b60208101600283106103a4576103a461037a565b60008060006060848603121561048857600080fd5b610491846103aa565b925061049f602085016103c3565b9150604084013590509250925092565b815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190911690820152606091820151918101919091526080019056fea2646970667358221220ff63b886676e4141d48a9f114405d4ff012a2c54a5ba7cefc32582b6d12384b564736f6c63430008100033", - "sourceMap": "335:2199:125:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:56:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;837:960:125;;;;;;:::i;:::-;;:::i;:::-;;;1806:25:146;;;1794:2;1779:18;837:960:125;1660:177:146;723:59:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1888:644:125:-;;;;;;:::i;:::-;;:::i;837:960::-;1056:7;1075:32;1122:73;;;;;;;;1135:14;1122:73;;;;;;1151:14;-1:-1:-1;;;;;1122:73:125;;;;;1167:16;-1:-1:-1;;;;;1122:73:125;;;;;1185:9;1122:73;;;1075:120;;1205:22;1251:12;1240:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1240:24:125;;;;;;;;;1230:35;;1240:24;1230:35;;;;;-1:-1:-1;1313:29:125;1280;;;;:13;:29;;;;;;;;;:62;;;;;;;:::i;:::-;;1276:141;;1365:41;;-1:-1:-1;;;1365:41:125;;;;;1806:25:146;;;1779:18;;1365:41:125;;;;;;;;1276:141;1426:29;;;;:13;:29;;;;;:61;;-1:-1:-1;;1426:61:125;1458:29;1426:61;;;1589:21;;;;;;;;1585:97;;;1633:38;;-1:-1:-1;;;1633:38:125;;3168:18:146;3213:15;;;1633:38:125;;;3195:34:146;3265:15;;3245:18;;;3238:43;3131:18;;1633:38:125;2988:299:146;1585:97:125;1735:8;1697:61;;1723:10;1697:61;;1707:14;1697:61;1745:12;1697:61;;;;;;:::i;:::-;;;;;;;;1776:14;837:960;-1:-1:-1;;;;;;;;837:960:125:o;1888:644::-;2009:7;2032:32;2079:67;;;;;;;;2092:14;2079:67;;;;;;2108:14;-1:-1:-1;;;;;2079:67:125;;;;;2124:10;-1:-1:-1;;;;;2079:67:125;;;;;2136:9;2079:67;;;2032:114;;2156:22;2202:12;2191:24;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2191:24:125;;;;;;;;;2181:35;;2191:24;2181:35;;;;;-1:-1:-1;2264:30:125;2231:29;;;;:13;:29;;;;;;;;;:63;;;;;;;:::i;:::-;;2227:138;;2317:37;;-1:-1:-1;;;2317:37:125;;;;;1806:25:146;;;1779:18;;2317:37:125;1660:177:146;2227:138:125;2406:30;2374:29;;;:13;:29;;;;;;;:62;;-1:-1:-1;;2374:62:125;;;2452:41;2374:29;;2452:41;;;;2480:12;;2452:41;:::i;:::-;;;;;;;;2511:14;1888:644;-1:-1:-1;;;;;1888:644:125:o;14:180:146:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:146;;14:180;-1:-1:-1;14:180:146:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:250;482:2;467:18;;515:1;504:13;;494:47;;521:18;;:::i;:::-;550:25;;;331:250;:::o;586:163::-;653:20;;713:10;702:22;;692:33;;682:61;;739:1;736;729:12;682:61;586:163;;;:::o;754:173::-;822:20;;-1:-1:-1;;;;;871:31:146;;861:42;;851:70;;917:1;914;907:12;932:171;999:20;;1059:18;1048:30;;1038:41;;1028:69;;1093:1;1090;1083:12;1108:547;1209:6;1217;1225;1233;1241;1249;1302:3;1290:9;1281:7;1277:23;1273:33;1270:53;;;1319:1;1316;1309:12;1270:53;1342:28;1360:9;1342:28;:::i;:::-;1332:38;;1389;1423:2;1412:9;1408:18;1389:38;:::i;:::-;1379:48;;1446:38;1480:2;1469:9;1465:18;1446:38;:::i;:::-;1436:48;;1531:2;1520:9;1516:18;1503:32;1493:42;;1554:38;1587:3;1576:9;1572:19;1554:38;:::i;:::-;1544:48;;1611:38;1644:3;1633:9;1629:19;1611:38;:::i;:::-;1601:48;;1108:547;;;;;;;;:::o;1842:255::-;1998:2;1983:18;;2031:1;2020:13;;2010:47;;2037:18;;:::i;2102:326::-;2178:6;2186;2194;2247:2;2235:9;2226:7;2222:23;2218:32;2215:52;;;2263:1;2260;2253:12;2215:52;2286:28;2304:9;2286:28;:::i;:::-;2276:38;;2333;2367:2;2356:9;2352:18;2333:38;:::i;:::-;2323:48;;2418:2;2407:9;2403:18;2390:32;2380:42;;2102:326;;;;;:::o;2433:550::-;2664:13;;2679:10;2660:30;2642:49;;2738:4;2726:17;;;2720:24;-1:-1:-1;;;;;2820:21:146;;;2798:20;;;2791:51;;;;2902:4;2890:17;;;2884:24;2880:33;;;2858:20;;;2851:63;2970:4;2958:17;;;2952:24;2930:20;;;2923:54;;;;2629:3;2614:19;;2433:550::o", - "linkReferences": {} - }, - "methodIdentifiers": { - "eventsPublished(bytes32)": "3cca331c", - "subscribe(uint32,address,address,bytes32,uint64,uint64)": "65138959", - "subscriptions(bytes32)": "94259c6c", - "unsubscribe(uint32,address,bytes32)": "97229719" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlotRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionAlreadyActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"SubscriptionNotActive\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startSlot\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endSlot\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"eventSig\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Subscription\",\"name\":\"subscription\",\"type\":\"tuple\"}],\"name\":\"Unsubscribe\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"eventsPublished\",\"outputs\":[{\"internalType\":\"enum PublishStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"}],\"name\":\"subscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"subscriptions\",\"outputs\":[{\"internalType\":\"enum SubscriptionStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_eventSig\",\"type\":\"bytes32\"}],\"name\":\"unsubscribe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"subscribe(uint32,address,address,bytes32,uint64,uint64)\":{\"details\":\"The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish.\"},\"unsubscribe(uint32,address,bytes32)\":{\"details\":\"Only the original callbackAddress contract will be able to unsubscribe.\"}},\"title\":\"TelepathySubscriber\",\"version\":1},\"userdoc\":{\"events\":{\"Subscribe(bytes32,uint64,uint64,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a new subscription is created.\"},\"Unsubscribe(bytes32,(uint32,address,address,bytes32))\":{\"notice\":\"Emitted when a subscription is cancelled.\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"This allows contracts to subscribe to cross-chain events from a source contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/pubsub/TelepathySubscriber.sol\":\"TelepathySubscriber\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint64", - "name": "startSlot", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "endSlot", - "type": "uint64" - } - ], - "type": "error", - "name": "InvalidSlotRange" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - } - ], - "type": "error", - "name": "SubscriptionAlreadyActive" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - } - ], - "type": "error", - "name": "SubscriptionNotActive" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "uint64", - "name": "startSlot", - "type": "uint64", - "indexed": true - }, - { - "internalType": "uint64", - "name": "endSlot", - "type": "uint64", - "indexed": true - }, - { - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple", - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ], - "indexed": false - } - ], - "type": "event", - "name": "Subscribe", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "struct Subscription", - "name": "subscription", - "type": "tuple", - "components": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "eventSig", - "type": "bytes32" - } - ], - "indexed": false - } - ], - "type": "event", - "name": "Unsubscribe", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "eventsPublished", - "outputs": [ - { - "internalType": "enum PublishStatus", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_callbackAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_eventSig", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "_startSlot", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "_endSlot", - "type": "uint64" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "subscribe", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "subscriptions", - "outputs": [ - { - "internalType": "enum SubscriptionStatus", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_eventSig", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "unsubscribe", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "subscribe(uint32,address,address,bytes32,uint64,uint64)": { - "details": "The block ranges use as a signal to off-chain, and are NOT enforced by the publisher. If events should only a certain range should be valid, the callbackAddress should do their own validation when handling the publish." - }, - "unsubscribe(uint32,address,bytes32)": { - "details": "Only the original callbackAddress contract will be able to unsubscribe." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/pubsub/TelepathySubscriber.sol": "TelepathySubscriber" - }, - "libraries": {} - }, - "sources": { - "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { - "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", - "urls": [ - "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", - "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { - "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", - "urls": [ - "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", - "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { - "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", - "urls": [ - "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", - "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { - "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", - "urls": [ - "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", - "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { - "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", - "urls": [ - "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", - "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { - "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", - "urls": [ - "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", - "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", - "urls": [ - "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", - "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { - "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", - "urls": [ - "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", - "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { - "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", - "urls": [ - "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", - "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { - "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", - "urls": [ - "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", - "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { - "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", - "urls": [ - "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", - "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { - "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", - "urls": [ - "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", - "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { - "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", - "urls": [ - "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", - "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { - "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", - "urls": [ - "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", - "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { - "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", - "urls": [ - "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", - "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { - "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", - "urls": [ - "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", - "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/Bytes.sol": { - "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", - "urls": [ - "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", - "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { - "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", - "urls": [ - "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", - "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { - "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", - "urls": [ - "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", - "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { - "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", - "urls": [ - "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", - "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" - ], - "license": "MIT" - }, - "src/amb/SourceAMB.sol": { - "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", - "urls": [ - "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", - "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" - ], - "license": null - }, - "src/amb/TargetAMB.sol": { - "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", - "urls": [ - "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", - "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" - ], - "license": null - }, - "src/amb/TelepathyAccess.sol": { - "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", - "urls": [ - "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", - "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" - ], - "license": null - }, - "src/amb/TelepathyRouter.sol": { - "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", - "urls": [ - "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", - "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" - ], - "license": null - }, - "src/amb/TelepathyStorage.sol": { - "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", - "urls": [ - "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", - "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" - ], - "license": null - }, - "src/amb/interfaces/ITelepathy.sol": { - "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", - "urls": [ - "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", - "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" - ], - "license": null - }, - "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", - "urls": [ - "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", - "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" - ], - "license": null - }, - "src/libraries/MessageEncoding.sol": { - "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", - "urls": [ - "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", - "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" - ], - "license": null - }, - "src/libraries/SimpleSerialize.sol": { - "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", - "urls": [ - "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", - "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" - ], - "license": null - }, - "src/libraries/StateProofHelper.sol": { - "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", - "urls": [ - "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", - "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" - ], - "license": null - }, - "src/libraries/Typecast.sol": { - "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", - "urls": [ - "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", - "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" - ], - "license": "MIT OR Apache-2.0" - }, - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - }, - "src/pubsub/PubSubStorage.sol": { - "keccak256": "0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b", - "urls": [ - "bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e", - "dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL" - ], - "license": null - }, - "src/pubsub/TelepathySubscriber.sol": { - "keccak256": "0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd", - "urls": [ - "bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4", - "dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3" - ], - "license": null - }, - "src/pubsub/interfaces/IPubSub.sol": { - "keccak256": "0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c", - "urls": [ - "bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a", - "dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/pubsub/TelepathySubscriber.sol", - "id": 49143, - "exportedSymbols": { - "ISubscriber": [ - 49205 - ], - "PubSubStorage": [ - 48552 - ], - "Subscription": [ - 49156 - ], - "SubscriptionStatus": [ - 49147 - ], - "TelepathySubscriber": [ - 49142 - ] - }, - "nodeType": "SourceUnit", - "src": "0:2535:125", - "nodes": [ - { - "id": 48981, - "nodeType": "PragmaDirective", - "src": "0:24:125", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".16" - ] - }, - { - "id": 48985, - "nodeType": "ImportDirective", - "src": "26:96:125", - "nodes": [], - "absolutePath": "src/pubsub/interfaces/IPubSub.sol", - "file": "src/pubsub/interfaces/IPubSub.sol", - "nameLocation": "-1:-1:-1", - "scope": 49143, - "sourceUnit": 49244, - "symbolAliases": [ - { - "foreign": { - "id": 48982, - "name": "Subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49156, - "src": "34:12:125", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 48983, - "name": "SubscriptionStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49147, - "src": "48:18:125", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 48984, - "name": "ISubscriber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49205, - "src": "68:11:125", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 48987, - "nodeType": "ImportDirective", - "src": "124:59:125", - "nodes": [], - "absolutePath": "src/pubsub/PubSubStorage.sol", - "file": "src/pubsub/PubSubStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 49143, - "sourceUnit": 48553, - "symbolAliases": [ - { - "foreign": { - "id": 48986, - "name": "PubSubStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48552, - "src": "132:13:125", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 49142, - "nodeType": "ContractDefinition", - "src": "335:2199:125", - "nodes": [ - { - "id": 48996, - "nodeType": "ErrorDefinition", - "src": "400:56:125", - "nodes": [], - "errorSelector": "8e04200e", - "name": "SubscriptionAlreadyActive", - "nameLocation": "406:25:125", - "parameters": { - "id": 48995, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 48994, - "mutability": "mutable", - "name": "subscriptionId", - "nameLocation": "440:14:125", - "nodeType": "VariableDeclaration", - "scope": 48996, - "src": "432:22:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 48993, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "432:7:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "431:24:125" - } - }, - { - "id": 49000, - "nodeType": "ErrorDefinition", - "src": "461:52:125", - "nodes": [], - "errorSelector": "00323a52", - "name": "SubscriptionNotActive", - "nameLocation": "467:21:125", - "parameters": { - "id": 48999, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 48998, - "mutability": "mutable", - "name": "subscriptionId", - "nameLocation": "497:14:125", - "nodeType": "VariableDeclaration", - "scope": 49000, - "src": "489:22:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 48997, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "489:7:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "488:24:125" - } - }, - { - "id": 49006, - "nodeType": "ErrorDefinition", - "src": "518:57:125", - "nodes": [], - "errorSelector": "f0120c84", - "name": "InvalidSlotRange", - "nameLocation": "524:16:125", - "parameters": { - "id": 49005, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 49002, - "mutability": "mutable", - "name": "startSlot", - "nameLocation": "548:9:125", - "nodeType": "VariableDeclaration", - "scope": 49006, - "src": "541:16:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 49001, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "541:6:125", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49004, - "mutability": "mutable", - "name": "endSlot", - "nameLocation": "566:7:125", - "nodeType": "VariableDeclaration", - "scope": 49006, - "src": "559:14:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 49003, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "559:6:125", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "540:34:125" - } - }, - { - "id": 49082, - "nodeType": "FunctionDefinition", - "src": "837:960:125", - "nodes": [], - "body": { - "id": 49081, - "nodeType": "Block", - "src": "1065:732:125", - "nodes": [], - "statements": [ - { - "assignments": [ - 49026 - ], - "declarations": [ - { - "constant": false, - "id": 49026, - "mutability": "mutable", - "name": "subscription", - "nameLocation": "1095:12:125", - "nodeType": "VariableDeclaration", - "scope": 49081, - "src": "1075:32:125", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription" - }, - "typeName": { - "id": 49025, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 49024, - "name": "Subscription", - "nameLocations": [ - "1075:12:125" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49156, - "src": "1075:12:125" - }, - "referencedDeclaration": 49156, - "src": "1075:12:125", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_storage_ptr", - "typeString": "struct Subscription" - } - }, - "visibility": "internal" - } - ], - "id": 49033, - "initialValue": { - "arguments": [ - { - "id": 49028, - "name": "_sourceChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49009, - "src": "1135:14:125", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 49029, - "name": "_sourceAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49011, - "src": "1151:14:125", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 49030, - "name": "_callbackAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49013, - "src": "1167:16:125", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 49031, - "name": "_eventSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49015, - "src": "1185:9:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 49027, - "name": "Subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49156, - "src": "1122:12:125", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Subscription_$49156_storage_ptr_$", - "typeString": "type(struct Subscription storage pointer)" - } - }, - "id": 49032, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1122:73:125", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1075:120:125" - }, - { - "assignments": [ - 49035 - ], - "declarations": [ - { - "constant": false, - "id": 49035, - "mutability": "mutable", - "name": "subscriptionId", - "nameLocation": "1213:14:125", - "nodeType": "VariableDeclaration", - "scope": 49081, - "src": "1205:22:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 49034, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1205:7:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 49042, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "id": 49039, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49026, - "src": "1251:12:125", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription memory" - } - ], - "expression": { - "id": 49037, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "1240:3:125", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 49038, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "1244:6:125", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "1240:10:125", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 49040, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1240:24:125", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 49036, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "1230:9:125", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 49041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1230:35:125", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1205:60:125" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - }, - "id": 49048, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 49043, - "name": "subscriptions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48546, - "src": "1280:13:125", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49147_$", - "typeString": "mapping(bytes32 => enum SubscriptionStatus)" - } - }, - "id": 49045, - "indexExpression": { - "id": 49044, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49035, - "src": "1294:14:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1280:29:125", - "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 49046, - "name": "SubscriptionStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49147, - "src": "1313:18:125", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49147_$", - "typeString": "type(enum SubscriptionStatus)" - } - }, - "id": 49047, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "1332:10:125", - "memberName": "SUBSCRIBED", - "nodeType": "MemberAccess", - "referencedDeclaration": 49146, - "src": "1313:29:125", - "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - } - }, - "src": "1280:62:125", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 49054, - "nodeType": "IfStatement", - "src": "1276:141:125", - "trueBody": { - "id": 49053, - "nodeType": "Block", - "src": "1344:73:125", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 49050, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49035, - "src": "1391:14:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 49049, - "name": "SubscriptionAlreadyActive", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48996, - "src": "1365:25:125", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", - "typeString": "function (bytes32) pure" - } - }, - "id": 49051, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1365:41:125", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 49052, - "nodeType": "RevertStatement", - "src": "1358:48:125" - } - ] - } - }, - { - "expression": { - "id": 49060, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 49055, - "name": "subscriptions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48546, - "src": "1426:13:125", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49147_$", - "typeString": "mapping(bytes32 => enum SubscriptionStatus)" - } - }, - "id": 49057, - "indexExpression": { - "id": 49056, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49035, - "src": "1440:14:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1426:29:125", - "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 49058, - "name": "SubscriptionStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49147, - "src": "1458:18:125", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49147_$", - "typeString": "type(enum SubscriptionStatus)" - } - }, - "id": 49059, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "1477:10:125", - "memberName": "SUBSCRIBED", - "nodeType": "MemberAccess", - "referencedDeclaration": 49146, - "src": "1458:29:125", - "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - } - }, - "src": "1426:61:125", - "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - } - }, - "id": 49061, - "nodeType": "ExpressionStatement", - "src": "1426:61:125" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 49064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 49062, - "name": "_endSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49019, - "src": "1589:8:125", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 49063, - "name": "_startSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49017, - "src": "1600:10:125", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "1589:21:125", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 49071, - "nodeType": "IfStatement", - "src": "1585:97:125", - "trueBody": { - "id": 49070, - "nodeType": "Block", - "src": "1612:70:125", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 49066, - "name": "_startSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49017, - "src": "1650:10:125", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 49067, - "name": "_endSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49019, - "src": "1662:8:125", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 49065, - "name": "InvalidSlotRange", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49006, - "src": "1633:16:125", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint64_$_t_uint64_$returns$__$", - "typeString": "function (uint64,uint64) pure" - } - }, - "id": 49068, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1633:38:125", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 49069, - "nodeType": "RevertStatement", - "src": "1626:45:125" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "id": 49073, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49035, - "src": "1707:14:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 49074, - "name": "_startSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49017, - "src": "1723:10:125", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 49075, - "name": "_endSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49019, - "src": "1735:8:125", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 49076, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49026, - "src": "1745:12:125", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription memory" - } - ], - "id": 49072, - "name": "Subscribe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49168, - "src": "1697:9:125", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$_t_uint64_$_t_struct$_Subscription_$49156_memory_ptr_$returns$__$", - "typeString": "function (bytes32,uint64,uint64,struct Subscription memory)" - } - }, - "id": 49077, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1697:61:125", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 49078, - "nodeType": "EmitStatement", - "src": "1692:66:125" - }, - { - "expression": { - "id": 49079, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49035, - "src": "1776:14:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 49023, - "id": 49080, - "nodeType": "Return", - "src": "1769:21:125" - } - ] - }, - "baseFunctions": [ - 49193 - ], - "documentation": { - "id": 49007, - "nodeType": "StructuredDocumentation", - "src": "581:251:125", - "text": "@dev The block ranges use as a signal to off-chain, and are NOT enforced by the publisher.\n If events should only a certain range should be valid, the callbackAddress should do their\n own validation when handling the publish." - }, - "functionSelector": "65138959", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "subscribe", - "nameLocation": "846:9:125", - "parameters": { - "id": 49020, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 49009, - "mutability": "mutable", - "name": "_sourceChainId", - "nameLocation": "872:14:125", - "nodeType": "VariableDeclaration", - "scope": 49082, - "src": "865:21:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 49008, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "865:6:125", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49011, - "mutability": "mutable", - "name": "_sourceAddress", - "nameLocation": "904:14:125", - "nodeType": "VariableDeclaration", - "scope": 49082, - "src": "896:22:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 49010, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "896:7:125", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49013, - "mutability": "mutable", - "name": "_callbackAddress", - "nameLocation": "936:16:125", - "nodeType": "VariableDeclaration", - "scope": 49082, - "src": "928:24:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 49012, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "928:7:125", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49015, - "mutability": "mutable", - "name": "_eventSig", - "nameLocation": "970:9:125", - "nodeType": "VariableDeclaration", - "scope": 49082, - "src": "962:17:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 49014, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "962:7:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49017, - "mutability": "mutable", - "name": "_startSlot", - "nameLocation": "996:10:125", - "nodeType": "VariableDeclaration", - "scope": 49082, - "src": "989:17:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 49016, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "989:6:125", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49019, - "mutability": "mutable", - "name": "_endSlot", - "nameLocation": "1023:8:125", - "nodeType": "VariableDeclaration", - "scope": 49082, - "src": "1016:15:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 49018, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1016:6:125", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "855:182:125" - }, - "returnParameters": { - "id": 49023, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 49022, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 49082, - "src": "1056:7:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 49021, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1056:7:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1055:9:125" - }, - "scope": 49142, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 49141, - "nodeType": "FunctionDefinition", - "src": "1888:644:125", - "nodes": [], - "body": { - "id": 49140, - "nodeType": "Block", - "src": "2022:510:125", - "nodes": [], - "statements": [ - { - "assignments": [ - 49096 - ], - "declarations": [ - { - "constant": false, - "id": 49096, - "mutability": "mutable", - "name": "subscription", - "nameLocation": "2052:12:125", - "nodeType": "VariableDeclaration", - "scope": 49140, - "src": "2032:32:125", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription" - }, - "typeName": { - "id": 49095, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 49094, - "name": "Subscription", - "nameLocations": [ - "2032:12:125" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49156, - "src": "2032:12:125" - }, - "referencedDeclaration": 49156, - "src": "2032:12:125", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_storage_ptr", - "typeString": "struct Subscription" - } - }, - "visibility": "internal" - } - ], - "id": 49104, - "initialValue": { - "arguments": [ - { - "id": 49098, - "name": "_sourceChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49085, - "src": "2092:14:125", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 49099, - "name": "_sourceAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49087, - "src": "2108:14:125", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "expression": { - "id": 49100, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2124:3:125", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 49101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2128:6:125", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2124:10:125", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 49102, - "name": "_eventSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49089, - "src": "2136:9:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 49097, - "name": "Subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49156, - "src": "2079:12:125", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Subscription_$49156_storage_ptr_$", - "typeString": "type(struct Subscription storage pointer)" - } - }, - "id": 49103, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2079:67:125", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2032:114:125" - }, - { - "assignments": [ - 49106 - ], - "declarations": [ - { - "constant": false, - "id": 49106, - "mutability": "mutable", - "name": "subscriptionId", - "nameLocation": "2164:14:125", - "nodeType": "VariableDeclaration", - "scope": 49140, - "src": "2156:22:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 49105, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2156:7:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 49113, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "id": 49110, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49096, - "src": "2202:12:125", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription memory" - } - ], - "expression": { - "id": 49108, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "2191:3:125", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 49109, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "2195:6:125", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "2191:10:125", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 49111, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2191:24:125", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 49107, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "2181:9:125", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 49112, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2181:35:125", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2156:60:125" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - }, - "id": 49119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 49114, - "name": "subscriptions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48546, - "src": "2231:13:125", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49147_$", - "typeString": "mapping(bytes32 => enum SubscriptionStatus)" - } - }, - "id": 49116, - "indexExpression": { - "id": 49115, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49106, - "src": "2245:14:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2231:29:125", - "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 49117, - "name": "SubscriptionStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49147, - "src": "2264:18:125", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49147_$", - "typeString": "type(enum SubscriptionStatus)" - } - }, - "id": 49118, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "2283:11:125", - "memberName": "UNSUBSCIBED", - "nodeType": "MemberAccess", - "referencedDeclaration": 49145, - "src": "2264:30:125", - "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - } - }, - "src": "2231:63:125", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 49125, - "nodeType": "IfStatement", - "src": "2227:138:125", - "trueBody": { - "id": 49124, - "nodeType": "Block", - "src": "2296:69:125", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 49121, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49106, - "src": "2339:14:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 49120, - "name": "SubscriptionNotActive", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49000, - "src": "2317:21:125", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", - "typeString": "function (bytes32) pure" - } - }, - "id": 49122, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2317:37:125", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 49123, - "nodeType": "RevertStatement", - "src": "2310:44:125" - } - ] - } - }, - { - "expression": { - "id": 49131, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 49126, - "name": "subscriptions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48546, - "src": "2374:13:125", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_SubscriptionStatus_$49147_$", - "typeString": "mapping(bytes32 => enum SubscriptionStatus)" - } - }, - "id": 49128, - "indexExpression": { - "id": 49127, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49106, - "src": "2388:14:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2374:29:125", - "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 49129, - "name": "SubscriptionStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49147, - "src": "2406:18:125", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SubscriptionStatus_$49147_$", - "typeString": "type(enum SubscriptionStatus)" - } - }, - "id": 49130, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "2425:11:125", - "memberName": "UNSUBSCIBED", - "nodeType": "MemberAccess", - "referencedDeclaration": 49145, - "src": "2406:30:125", - "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - } - }, - "src": "2374:62:125", - "typeDescriptions": { - "typeIdentifier": "t_enum$_SubscriptionStatus_$49147", - "typeString": "enum SubscriptionStatus" - } - }, - "id": 49132, - "nodeType": "ExpressionStatement", - "src": "2374:62:125" - }, - { - "eventCall": { - "arguments": [ - { - "id": 49134, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49106, - "src": "2464:14:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 49135, - "name": "subscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49096, - "src": "2480:12:125", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_struct$_Subscription_$49156_memory_ptr", - "typeString": "struct Subscription memory" - } - ], - "id": 49133, - "name": "Unsubscribe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49176, - "src": "2452:11:125", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_Subscription_$49156_memory_ptr_$returns$__$", - "typeString": "function (bytes32,struct Subscription memory)" - } - }, - "id": 49136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2452:41:125", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 49137, - "nodeType": "EmitStatement", - "src": "2447:46:125" - }, - { - "expression": { - "id": 49138, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49106, - "src": "2511:14:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 49093, - "id": 49139, - "nodeType": "Return", - "src": "2504:21:125" - } - ] - }, - "baseFunctions": [ - 49204 - ], - "documentation": { - "id": 49083, - "nodeType": "StructuredDocumentation", - "src": "1803:80:125", - "text": "@dev Only the original callbackAddress contract will be able to unsubscribe." - }, - "functionSelector": "97229719", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "unsubscribe", - "nameLocation": "1897:11:125", - "parameters": { - "id": 49090, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 49085, - "mutability": "mutable", - "name": "_sourceChainId", - "nameLocation": "1916:14:125", - "nodeType": "VariableDeclaration", - "scope": 49141, - "src": "1909:21:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 49084, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1909:6:125", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49087, - "mutability": "mutable", - "name": "_sourceAddress", - "nameLocation": "1940:14:125", - "nodeType": "VariableDeclaration", - "scope": 49141, - "src": "1932:22:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 49086, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1932:7:125", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49089, - "mutability": "mutable", - "name": "_eventSig", - "nameLocation": "1964:9:125", - "nodeType": "VariableDeclaration", - "scope": 49141, - "src": "1956:17:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 49088, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1956:7:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1908:66:125" - }, - "returnParameters": { - "id": 49093, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 49092, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 49141, - "src": "2009:7:125", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 49091, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2009:7:125", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2008:9:125" - }, - "scope": 49142, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 48989, - "name": "ISubscriber", - "nameLocations": [ - "367:11:125" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49205, - "src": "367:11:125" - }, - "id": 48990, - "nodeType": "InheritanceSpecifier", - "src": "367:11:125" - }, - { - "baseName": { - "id": 48991, - "name": "PubSubStorage", - "nameLocations": [ - "380:13:125" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48552, - "src": "380:13:125" - }, - "id": 48992, - "nodeType": "InheritanceSpecifier", - "src": "380:13:125" - } - ], - "canonicalName": "TelepathySubscriber", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 48988, - "nodeType": "StructuredDocumentation", - "src": "185:150:125", - "text": "@title TelepathySubscriber\n @author Succinct Labs\n @notice This allows contracts to subscribe to cross-chain events from a source contract." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 49142, - 48552, - 49205 - ], - "name": "TelepathySubscriber", - "nameLocation": "344:19:125", - "scope": 49143, - "usedErrors": [ - 48996, - 49000, - 49006 - ] - } - ] - }, - "id": 125 -} \ No newline at end of file diff --git a/out/TelepathyValidator.sol/IBasicHomeAMB.json b/out/TelepathyValidator.sol/IBasicHomeAMB.json deleted file mode 100644 index 2dddad1..0000000 --- a/out/TelepathyValidator.sol/IBasicHomeAMB.json +++ /dev/null @@ -1,3454 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "internalType": "bytes", - "name": "message", - "type": "bytes" - } - ], - "name": "executeAffirmation", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "methodIdentifiers": { - "executeAffirmation(bytes)": "e7a2c01f" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"executeAffirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"IBasicHomeAMB\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "bytes", - "name": "message", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "executeAffirmation" - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "examples/pubsub/gnosis/TelepathyValidator.sol": "IBasicHomeAMB" - }, - "libraries": {} - }, - "sources": { - "examples/pubsub/gnosis/TelepathyValidator.sol": { - "keccak256": "0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31", - "urls": [ - "bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42", - "dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk" - ], - "license": null - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { - "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", - "urls": [ - "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", - "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { - "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", - "urls": [ - "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", - "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { - "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", - "urls": [ - "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", - "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { - "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", - "urls": [ - "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", - "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { - "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", - "urls": [ - "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", - "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { - "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", - "urls": [ - "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", - "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", - "urls": [ - "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", - "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { - "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", - "urls": [ - "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", - "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { - "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", - "urls": [ - "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", - "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { - "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", - "urls": [ - "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", - "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { - "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", - "urls": [ - "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", - "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { - "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", - "urls": [ - "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", - "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { - "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", - "urls": [ - "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", - "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { - "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", - "urls": [ - "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", - "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { - "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", - "urls": [ - "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", - "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { - "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", - "urls": [ - "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", - "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { - "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", - "urls": [ - "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", - "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Context.sol": { - "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", - "urls": [ - "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", - "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/Bytes.sol": { - "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", - "urls": [ - "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", - "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { - "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", - "urls": [ - "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", - "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { - "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", - "urls": [ - "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", - "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { - "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", - "urls": [ - "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", - "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" - ], - "license": "MIT" - }, - "src/amb/SourceAMB.sol": { - "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", - "urls": [ - "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", - "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" - ], - "license": null - }, - "src/amb/TargetAMB.sol": { - "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", - "urls": [ - "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", - "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" - ], - "license": null - }, - "src/amb/TelepathyAccess.sol": { - "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", - "urls": [ - "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", - "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" - ], - "license": null - }, - "src/amb/TelepathyRouter.sol": { - "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", - "urls": [ - "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", - "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" - ], - "license": null - }, - "src/amb/TelepathyStorage.sol": { - "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", - "urls": [ - "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", - "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" - ], - "license": null - }, - "src/amb/interfaces/ITelepathy.sol": { - "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", - "urls": [ - "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", - "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" - ], - "license": null - }, - "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", - "urls": [ - "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", - "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" - ], - "license": null - }, - "src/libraries/MessageEncoding.sol": { - "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", - "urls": [ - "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", - "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" - ], - "license": null - }, - "src/libraries/SimpleSerialize.sol": { - "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", - "urls": [ - "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", - "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" - ], - "license": null - }, - "src/libraries/StateProofHelper.sol": { - "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", - "urls": [ - "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", - "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" - ], - "license": null - }, - "src/libraries/Typecast.sol": { - "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", - "urls": [ - "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", - "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" - ], - "license": "MIT OR Apache-2.0" - }, - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - }, - "src/pubsub/EventProof.sol": { - "keccak256": "0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e", - "urls": [ - "bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78", - "dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi" - ], - "license": null - }, - "src/pubsub/PubSubStorage.sol": { - "keccak256": "0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b", - "urls": [ - "bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e", - "dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL" - ], - "license": null - }, - "src/pubsub/TelepathyPubSub.sol": { - "keccak256": "0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61", - "urls": [ - "bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241", - "dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG" - ], - "license": null - }, - "src/pubsub/TelepathyPublisher.sol": { - "keccak256": "0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521", - "urls": [ - "bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f", - "dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe" - ], - "license": null - }, - "src/pubsub/TelepathySubscriber.sol": { - "keccak256": "0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd", - "urls": [ - "bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4", - "dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3" - ], - "license": null - }, - "src/pubsub/interfaces/IPubSub.sol": { - "keccak256": "0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c", - "urls": [ - "bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a", - "dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt" - ], - "license": null - }, - "src/pubsub/interfaces/ISubscriptionReceiver.sol": { - "keccak256": "0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c", - "urls": [ - "bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb", - "dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx" - ], - "license": null - }, - "src/pubsub/interfaces/SubscriptionReceiver.sol": { - "keccak256": "0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412", - "urls": [ - "bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9", - "dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "examples/pubsub/gnosis/TelepathyValidator.sol", - "id": 2860, - "exportedSymbols": { - "IBasicHomeAMB": [ - 2859 - ], - "Ownable": [ - 31597 - ], - "SubscriptionReceiver": [ - 49355 - ], - "TelepathyPubSub": [ - 48583 - ], - "TelepathyValidator": [ - 2853 - ] - }, - "nodeType": "SourceUnit", - "src": "0:3719:12", - "nodes": [ - { - "id": 2618, - "nodeType": "PragmaDirective", - "src": "0:24:12", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".16" - ] - }, - { - "id": 2620, - "nodeType": "ImportDirective", - "src": "26:63:12", - "nodes": [], - "absolutePath": "src/pubsub/TelepathyPubSub.sol", - "file": "src/pubsub/TelepathyPubSub.sol", - "nameLocation": "-1:-1:-1", - "scope": 2860, - "sourceUnit": 48584, - "symbolAliases": [ - { - "foreign": { - "id": 2619, - "name": "TelepathyPubSub", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48583, - "src": "34:15:12", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 2622, - "nodeType": "ImportDirective", - "src": "90:84:12", - "nodes": [], - "absolutePath": "src/pubsub/interfaces/SubscriptionReceiver.sol", - "file": "src/pubsub/interfaces/SubscriptionReceiver.sol", - "nameLocation": "-1:-1:-1", - "scope": 2860, - "sourceUnit": 49356, - "symbolAliases": [ - { - "foreign": { - "id": 2621, - "name": "SubscriptionReceiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49355, - "src": "98:20:12", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 2624, - "nodeType": "ImportDirective", - "src": "175:66:12", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", - "file": "openzeppelin-contracts/access/Ownable.sol", - "nameLocation": "-1:-1:-1", - "scope": 2860, - "sourceUnit": 31598, - "symbolAliases": [ - { - "foreign": { - "id": 2623, - "name": "Ownable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31597, - "src": "183:7:12", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 2853, - "nodeType": "ContractDefinition", - "src": "516:3107:12", - "nodes": [ - { - "id": 2637, - "nodeType": "EventDefinition", - "src": "583:78:12", - "nodes": [], - "anonymous": false, - "eventSelector": "1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa", - "name": "AffirmationHandled", - "nameLocation": "589:18:12", - "parameters": { - "id": 2636, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2631, - "indexed": true, - "mutability": "mutable", - "name": "messageId", - "nameLocation": "624:9:12", - "nodeType": "VariableDeclaration", - "scope": 2637, - "src": "608:25:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2630, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "608:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2633, - "indexed": false, - "mutability": "mutable", - "name": "header", - "nameLocation": "641:6:12", - "nodeType": "VariableDeclaration", - "scope": 2637, - "src": "635:12:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2632, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "635:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2635, - "indexed": false, - "mutability": "mutable", - "name": "data", - "nameLocation": "655:4:12", - "nodeType": "VariableDeclaration", - "scope": 2637, - "src": "649:10:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2634, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "649:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "607:53:12" - } - }, - { - "id": 2641, - "nodeType": "ErrorDefinition", - "src": "667:47:12", - "nodes": [], - "errorSelector": "950ae30c", - "name": "InvalidSourceChain", - "nameLocation": "673:18:12", - "parameters": { - "id": 2640, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2639, - "mutability": "mutable", - "name": "sourceChainId", - "nameLocation": "699:13:12", - "nodeType": "VariableDeclaration", - "scope": 2641, - "src": "692:20:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2638, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "692:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "691:22:12" - } - }, - { - "id": 2645, - "nodeType": "ErrorDefinition", - "src": "719:50:12", - "nodes": [], - "errorSelector": "98785edb", - "name": "InvalidSourceAddress", - "nameLocation": "725:20:12", - "parameters": { - "id": 2644, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2643, - "mutability": "mutable", - "name": "sourceAddress", - "nameLocation": "754:13:12", - "nodeType": "VariableDeclaration", - "scope": 2645, - "src": "746:21:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2642, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "746:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "745:23:12" - } - }, - { - "id": 2649, - "nodeType": "ErrorDefinition", - "src": "774:31:12", - "nodes": [], - "errorSelector": "fb77f7f2", - "name": "InvalidSlot", - "nameLocation": "780:11:12", - "parameters": { - "id": 2648, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2647, - "mutability": "mutable", - "name": "slot", - "nameLocation": "799:4:12", - "nodeType": "VariableDeclaration", - "scope": 2649, - "src": "792:11:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2646, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "792:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "791:13:12" - } - }, - { - "id": 2653, - "nodeType": "ErrorDefinition", - "src": "810:52:12", - "nodes": [], - "errorSelector": "adc1a22b", - "name": "InvalidSubscriptionId", - "nameLocation": "816:21:12", - "parameters": { - "id": 2652, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2651, - "mutability": "mutable", - "name": "subscriptionId", - "nameLocation": "846:14:12", - "nodeType": "VariableDeclaration", - "scope": 2653, - "src": "838:22:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2650, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "838:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "837:24:12" - } - }, - { - "id": 2659, - "nodeType": "VariableDeclaration", - "src": "1054:94:12", - "nodes": [], - "constant": true, - "documentation": { - "id": 2654, - "nodeType": "StructuredDocumentation", - "src": "868:181:12", - "text": "@dev Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData)\n where the encodedData is the ABI encoded message from the Foreign AMB." - }, - "mutability": "constant", - "name": "AFFIRMATION_EVENT_SIG", - "nameLocation": "1071:21:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2655, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1054:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "arguments": [ - { - "hexValue": "5573657252657175657374466f7241666669726d6174696f6e28627974657333322c627974657329", - "id": 2657, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1105:42:12", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58", - "typeString": "literal_string \"UserRequestForAffirmation(bytes32,bytes)\"" - }, - "value": "UserRequestForAffirmation(bytes32,bytes)" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58", - "typeString": "literal_string \"UserRequestForAffirmation(bytes32,bytes)\"" - } - ], - "id": 2656, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "1095:9:12", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 2658, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1095:53:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "id": 2661, - "nodeType": "VariableDeclaration", - "src": "1155:38:12", - "nodes": [], - "constant": false, - "mutability": "immutable", - "name": "EVENT_SOURCE_CHAIN_ID", - "nameLocation": "1172:21:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2660, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1155:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "id": 2663, - "nodeType": "VariableDeclaration", - "src": "1199:38:12", - "nodes": [], - "constant": false, - "mutability": "immutable", - "name": "EVENT_SOURCE_ADDRESS", - "nameLocation": "1217:20:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2662, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1199:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "id": 2665, - "nodeType": "VariableDeclaration", - "src": "1243:27:12", - "nodes": [], - "constant": false, - "mutability": "immutable", - "name": "START_SLOT", - "nameLocation": "1260:10:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2664, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1243:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "id": 2667, - "nodeType": "VariableDeclaration", - "src": "1276:25:12", - "nodes": [], - "constant": false, - "mutability": "immutable", - "name": "END_SLOT", - "nameLocation": "1293:8:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2666, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1276:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "id": 2670, - "nodeType": "VariableDeclaration", - "src": "1307:32:12", - "nodes": [], - "constant": false, - "mutability": "immutable", - "name": "HOME_AMB", - "nameLocation": "1331:8:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - }, - "typeName": { - "id": 2669, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2668, - "name": "IBasicHomeAMB", - "nameLocations": [ - "1307:13:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2859, - "src": "1307:13:12" - }, - "referencedDeclaration": 2859, - "src": "1307:13:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - } - }, - "visibility": "internal" - }, - { - "id": 2672, - "nodeType": "VariableDeclaration", - "src": "1346:29:12", - "nodes": [], - "constant": false, - "functionSelector": "09c1ba2e", - "mutability": "mutable", - "name": "subscriptionId", - "nameLocation": "1361:14:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2671, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1346:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "public" - }, - { - "id": 2674, - "nodeType": "VariableDeclaration", - "src": "1381:31:12", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "executeAffirmationsEnabled", - "nameLocation": "1386:26:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2673, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1381:4:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "id": 2721, - "nodeType": "FunctionDefinition", - "src": "1419:499:12", - "nodes": [], - "body": { - "id": 2720, - "nodeType": "Block", - "src": "1675:243:12", - "nodes": [], - "statements": [ - { - "expression": { - "id": 2696, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2694, - "name": "EVENT_SOURCE_CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2661, - "src": "1685:21:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2695, - "name": "_sourceChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2678, - "src": "1709:14:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "1685:38:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 2697, - "nodeType": "ExpressionStatement", - "src": "1685:38:12" - }, - { - "expression": { - "id": 2700, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2698, - "name": "EVENT_SOURCE_ADDRESS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2663, - "src": "1733:20:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2699, - "name": "_sourceAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2680, - "src": "1756:14:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1733:37:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 2701, - "nodeType": "ExpressionStatement", - "src": "1733:37:12" - }, - { - "expression": { - "id": 2704, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2702, - "name": "START_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2665, - "src": "1780:10:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2703, - "name": "_startSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2682, - "src": "1793:10:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "1780:23:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "id": 2705, - "nodeType": "ExpressionStatement", - "src": "1780:23:12" - }, - { - "expression": { - "id": 2708, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2706, - "name": "END_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2667, - "src": "1813:8:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2707, - "name": "_endSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2684, - "src": "1824:8:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "1813:19:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "id": 2709, - "nodeType": "ExpressionStatement", - "src": "1813:19:12" - }, - { - "expression": { - "id": 2714, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2710, - "name": "HOME_AMB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2670, - "src": "1842:8:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2712, - "name": "_homeAMB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2686, - "src": "1867:8:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 2711, - "name": "IBasicHomeAMB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2859, - "src": "1853:13:12", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IBasicHomeAMB_$2859_$", - "typeString": "type(contract IBasicHomeAMB)" - } - }, - "id": 2713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1853:23:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - } - }, - "src": "1842:34:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - } - }, - "id": 2715, - "nodeType": "ExpressionStatement", - "src": "1842:34:12" - }, - { - "expression": { - "arguments": [ - { - "id": 2717, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2688, - "src": "1904:6:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 2716, - "name": "transferOwnership", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31576, - "src": "1886:17:12", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 2718, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1886:25:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2719, - "nodeType": "ExpressionStatement", - "src": "1886:25:12" - } - ] - }, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "id": 2691, - "name": "_telepathyPubSub", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2676, - "src": "1657:16:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 2692, - "kind": "baseConstructorSpecifier", - "modifierName": { - "id": 2690, - "name": "SubscriptionReceiver", - "nameLocations": [ - "1636:20:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49355, - "src": "1636:20:12" - }, - "nodeType": "ModifierInvocation", - "src": "1636:38:12" - } - ], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 2689, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2676, - "mutability": "mutable", - "name": "_telepathyPubSub", - "nameLocation": "1448:16:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1440:24:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2675, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1440:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2678, - "mutability": "mutable", - "name": "_sourceChainId", - "nameLocation": "1481:14:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1474:21:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2677, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1474:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2680, - "mutability": "mutable", - "name": "_sourceAddress", - "nameLocation": "1513:14:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1505:22:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2679, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1505:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2682, - "mutability": "mutable", - "name": "_startSlot", - "nameLocation": "1544:10:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1537:17:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2681, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1537:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2684, - "mutability": "mutable", - "name": "_endSlot", - "nameLocation": "1571:8:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1564:15:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2683, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1564:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2686, - "mutability": "mutable", - "name": "_homeAMB", - "nameLocation": "1597:8:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1589:16:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2685, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1589:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2688, - "mutability": "mutable", - "name": "_owner", - "nameLocation": "1623:6:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1615:14:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2687, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1615:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1430:205:12" - }, - "returnParameters": { - "id": 2693, - "nodeType": "ParameterList", - "parameters": [], - "src": "1675:0:12" - }, - "scope": 2853, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 2732, - "nodeType": "FunctionDefinition", - "src": "1924:129:12", - "nodes": [], - "body": { - "id": 2731, - "nodeType": "Block", - "src": "1980:73:12", - "nodes": [], - "statements": [ - { - "expression": { - "id": 2729, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2726, - "name": "executeAffirmationsEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2674, - "src": "1990:26:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2728, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2019:27:12", - "subExpression": { - "id": 2727, - "name": "executeAffirmationsEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2674, - "src": "2020:26:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1990:56:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2730, - "nodeType": "ExpressionStatement", - "src": "1990:56:12" - } - ] - }, - "functionSelector": "a27c0863", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 2724, - "kind": "modifierInvocation", - "modifierName": { - "id": 2723, - "name": "onlyOwner", - "nameLocations": [ - "1970:9:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 31516, - "src": "1970:9:12" - }, - "nodeType": "ModifierInvocation", - "src": "1970:9:12" - } - ], - "name": "toggleExecuteAffirmations", - "nameLocation": "1933:25:12", - "parameters": { - "id": 2722, - "nodeType": "ParameterList", - "parameters": [], - "src": "1958:2:12" - }, - "returnParameters": { - "id": 2725, - "nodeType": "ParameterList", - "parameters": [], - "src": "1980:0:12" - }, - "scope": 2853, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 2757, - "nodeType": "FunctionDefinition", - "src": "2059:353:12", - "nodes": [], - "body": { - "id": 2756, - "nodeType": "Block", - "src": "2135:277:12", - "nodes": [], - "statements": [ - { - "expression": { - "id": 2752, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2739, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2672, - "src": "2145:14:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2742, - "name": "EVENT_SOURCE_CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2661, - "src": "2201:21:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 2743, - "name": "EVENT_SOURCE_ADDRESS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2663, - "src": "2236:20:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 2746, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "2278:4:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyValidator_$2853", - "typeString": "contract TelepathyValidator" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TelepathyValidator_$2853", - "typeString": "contract TelepathyValidator" - } - ], - "id": 2745, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2270:7:12", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 2744, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2270:7:12", - "typeDescriptions": {} - } - }, - "id": 2747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2270:13:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2748, - "name": "AFFIRMATION_EVENT_SIG", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2659, - "src": "2297:21:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2749, - "name": "START_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2665, - "src": "2332:10:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 2750, - "name": "END_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2667, - "src": "2356:8:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "id": 2740, - "name": "telepathyPubSub", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49279, - "src": "2162:15:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyPubSub_$48583", - "typeString": "contract TelepathyPubSub" - } - }, - "id": 2741, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2178:9:12", - "memberName": "subscribe", - "nodeType": "MemberAccess", - "referencedDeclaration": 49082, - "src": "2162:25:12", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_address_$_t_address_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bytes32_$", - "typeString": "function (uint32,address,address,bytes32,uint64,uint64) external returns (bytes32)" - } - }, - "id": 2751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2162:212:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "2145:229:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 2753, - "nodeType": "ExpressionStatement", - "src": "2145:229:12" - }, - { - "expression": { - "id": 2754, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2672, - "src": "2391:14:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 2738, - "id": 2755, - "nodeType": "Return", - "src": "2384:21:12" - } - ] - }, - "functionSelector": "0908a386", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 2735, - "kind": "modifierInvocation", - "modifierName": { - "id": 2734, - "name": "onlyOwner", - "nameLocations": [ - "2107:9:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 31516, - "src": "2107:9:12" - }, - "nodeType": "ModifierInvocation", - "src": "2107:9:12" - } - ], - "name": "subscribeToAffirmationEvent", - "nameLocation": "2068:27:12", - "parameters": { - "id": 2733, - "nodeType": "ParameterList", - "parameters": [], - "src": "2095:2:12" - }, - "returnParameters": { - "id": 2738, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2737, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 2757, - "src": "2126:7:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2736, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2126:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2125:9:12" - }, - "scope": 2853, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 2852, - "nodeType": "FunctionDefinition", - "src": "2636:985:12", - "nodes": [], - "body": { - "id": 2851, - "nodeType": "Block", - "src": "2875:746:12", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 2777, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2775, - "name": "_sourceChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2762, - "src": "2889:14:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 2776, - "name": "EVENT_SOURCE_CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2661, - "src": "2907:21:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "2889:39:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2783, - "nodeType": "IfStatement", - "src": "2885:111:12", - "trueBody": { - "id": 2782, - "nodeType": "Block", - "src": "2930:66:12", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2779, - "name": "_sourceChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2762, - "src": "2970:14:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 2778, - "name": "InvalidSourceChain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2641, - "src": "2951:18:12", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint32_$returns$__$", - "typeString": "function (uint32) pure" - } - }, - "id": 2780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2951:34:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2781, - "nodeType": "RevertStatement", - "src": "2944:41:12" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 2786, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2784, - "name": "_sourceAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2764, - "src": "3010:14:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 2785, - "name": "EVENT_SOURCE_ADDRESS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2663, - "src": "3028:20:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3010:38:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2792, - "nodeType": "IfStatement", - "src": "3006:112:12", - "trueBody": { - "id": 2791, - "nodeType": "Block", - "src": "3050:68:12", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2788, - "name": "_sourceAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2764, - "src": "3092:14:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 2787, - "name": "InvalidSourceAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2645, - "src": "3071:20:12", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" - } - }, - "id": 2789, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3071:36:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2790, - "nodeType": "RevertStatement", - "src": "3064:43:12" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 2795, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2793, - "name": "_slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2766, - "src": "3132:5:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 2794, - "name": "START_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2665, - "src": "3140:10:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "3132:18:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2802, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 2798, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2796, - "name": "END_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2667, - "src": "3155:8:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 2797, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3167:1:12", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3155:13:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 2801, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2799, - "name": "_slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2766, - "src": "3172:5:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 2800, - "name": "END_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2667, - "src": "3180:8:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "3172:16:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3155:33:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 2803, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3154:35:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3132:57:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2810, - "nodeType": "IfStatement", - "src": "3128:113:12", - "trueBody": { - "id": 2809, - "nodeType": "Block", - "src": "3191:50:12", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2806, - "name": "_slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2766, - "src": "3224:5:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 2805, - "name": "InvalidSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2649, - "src": "3212:11:12", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint64_$returns$__$", - "typeString": "function (uint64) pure" - } - }, - "id": 2807, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3212:18:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2808, - "nodeType": "RevertStatement", - "src": "3205:25:12" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 2813, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2811, - "name": "_subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2760, - "src": "3255:15:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 2812, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2672, - "src": "3274:14:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3255:33:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2819, - "nodeType": "IfStatement", - "src": "3251:109:12", - "trueBody": { - "id": 2818, - "nodeType": "Block", - "src": "3290:70:12", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2815, - "name": "_subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2760, - "src": "3333:15:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 2814, - "name": "InvalidSubscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2653, - "src": "3311:21:12", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", - "typeString": "function (bytes32) pure" - } - }, - "id": 2816, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3311:38:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2817, - "nodeType": "RevertStatement", - "src": "3304:45:12" - } - ] - } - }, - { - "assignments": [ - 2821, - 2823 - ], - "declarations": [ - { - "constant": false, - "id": 2821, - "mutability": "mutable", - "name": "header", - "nameLocation": "3384:6:12", - "nodeType": "VariableDeclaration", - "scope": 2851, - "src": "3371:19:12", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2820, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3371:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2823, - "mutability": "mutable", - "name": "data", - "nameLocation": "3405:4:12", - "nodeType": "VariableDeclaration", - "scope": 2851, - "src": "3392:17:12", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2822, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3392:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 2833, - "initialValue": { - "arguments": [ - { - "id": 2826, - "name": "eventdata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2771, - "src": "3424:9:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "components": [ - { - "id": 2828, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3436:5:12", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 2827, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3436:5:12", - "typeDescriptions": {} - } - }, - { - "id": 2830, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3443:5:12", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 2829, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3443:5:12", - "typeDescriptions": {} - } - } - ], - "id": 2831, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3435:14:12", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", - "typeString": "tuple(type(bytes storage pointer),type(bytes storage pointer))" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", - "typeString": "tuple(type(bytes storage pointer),type(bytes storage pointer))" - } - ], - "expression": { - "id": 2824, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3413:3:12", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 2825, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3417:6:12", - "memberName": "decode", - "nodeType": "MemberAccess", - "src": "3413:10:12", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 2832, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3413:37:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bytes memory,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3370:80:12" - }, - { - "condition": { - "id": 2834, - "name": "executeAffirmationsEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2674, - "src": "3465:26:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2842, - "nodeType": "IfStatement", - "src": "3461:90:12", - "trueBody": { - "id": 2841, - "nodeType": "Block", - "src": "3493:58:12", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 2838, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2823, - "src": "3535:4:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "id": 2835, - "name": "HOME_AMB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2670, - "src": "3507:8:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - } - }, - "id": 2837, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3516:18:12", - "memberName": "executeAffirmation", - "nodeType": "MemberAccess", - "referencedDeclaration": 2858, - "src": "3507:27:12", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes memory) external" - } - }, - "id": 2839, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3507:33:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2840, - "nodeType": "ExpressionStatement", - "src": "3507:33:12" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "baseExpression": { - "id": 2844, - "name": "eventTopics", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2769, - "src": "3585:11:12", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 2846, - "indexExpression": { - "hexValue": "31", - "id": 2845, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3597:1:12", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3585:14:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2847, - "name": "header", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2821, - "src": "3601:6:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "id": 2848, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2823, - "src": "3609:4:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 2843, - "name": "AffirmationHandled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2637, - "src": "3566:18:12", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes32,bytes memory,bytes memory)" - } - }, - "id": 2849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3566:48:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2850, - "nodeType": "EmitStatement", - "src": "3561:53:12" - } - ] - }, - "baseFunctions": [ - 49354 - ], - "documentation": { - "id": 2758, - "nodeType": "StructuredDocumentation", - "src": "2418:213:12", - "text": "@notice Handle the published affirmation event by executing the affirmation in the Home AMB.\n @dev We decode 'abi.encodePacked(header, _data)' to extract just the encoded message '_data' from the event." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "handlePublishImpl", - "nameLocation": "2645:17:12", - "overrides": { - "id": 2773, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2866:8:12" - }, - "parameters": { - "id": 2772, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2760, - "mutability": "mutable", - "name": "_subscriptionId", - "nameLocation": "2680:15:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2672:23:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2759, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2672:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2762, - "mutability": "mutable", - "name": "_sourceChainId", - "nameLocation": "2712:14:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2705:21:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2761, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2705:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2764, - "mutability": "mutable", - "name": "_sourceAddress", - "nameLocation": "2744:14:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2736:22:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2763, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2736:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2766, - "mutability": "mutable", - "name": "_slot", - "nameLocation": "2775:5:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2768:12:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2765, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2768:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2769, - "mutability": "mutable", - "name": "eventTopics", - "nameLocation": "2807:11:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2790:28:12", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 2767, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2790:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 2768, - "nodeType": "ArrayTypeName", - "src": "2790:9:12", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2771, - "mutability": "mutable", - "name": "eventdata", - "nameLocation": "2841:9:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2828:22:12", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2770, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2828:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "2662:194:12" - }, - "returnParameters": { - "id": 2774, - "nodeType": "ParameterList", - "parameters": [], - "src": "2875:0:12" - }, - "scope": 2853, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 2626, - "name": "SubscriptionReceiver", - "nameLocations": [ - "547:20:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49355, - "src": "547:20:12" - }, - "id": 2627, - "nodeType": "InheritanceSpecifier", - "src": "547:20:12" - }, - { - "baseName": { - "id": 2628, - "name": "Ownable", - "nameLocations": [ - "569:7:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 31597, - "src": "569:7:12" - }, - "id": 2629, - "nodeType": "InheritanceSpecifier", - "src": "569:7:12" - } - ], - "canonicalName": "TelepathyValidator", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 2625, - "nodeType": "StructuredDocumentation", - "src": "243:273:12", - "text": "@title TelepathyValidator\n @author Succinct Labs\n @notice A validator for the ETH (Foreign) -> Gnosis (Home) bridge that relies on the Telepathy Protocol\n for proof of consensus in verifying the UserRequestForAffirmation event was emitted on Ethereum." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 2853, - 31597, - 35292, - 49355, - 49264 - ], - "name": "TelepathyValidator", - "nameLocation": "525:18:12", - "scope": 2860, - "usedErrors": [ - 2641, - 2645, - 2649, - 2653, - 49276 - ] - }, - { - "id": 2859, - "nodeType": "ContractDefinition", - "src": "3625:93:12", - "nodes": [ - { - "id": 2858, - "nodeType": "FunctionDefinition", - "src": "3655:61:12", - "nodes": [], - "functionSelector": "e7a2c01f", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "executeAffirmation", - "nameLocation": "3664:18:12", - "parameters": { - "id": 2856, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2855, - "mutability": "mutable", - "name": "message", - "nameLocation": "3698:7:12", - "nodeType": "VariableDeclaration", - "scope": 2858, - "src": "3683:22:12", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2854, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3683:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "3682:24:12" - }, - "returnParameters": { - "id": 2857, - "nodeType": "ParameterList", - "parameters": [], - "src": "3715:0:12" - }, - "scope": 2859, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "IBasicHomeAMB", - "contractDependencies": [], - "contractKind": "interface", - "fullyImplemented": false, - "linearizedBaseContracts": [ - 2859 - ], - "name": "IBasicHomeAMB", - "nameLocation": "3635:13:12", - "scope": 2860, - "usedErrors": [] - } - ] - }, - "id": 12 -} \ No newline at end of file diff --git a/out/TelepathyValidator.sol/TelepathyValidator.json b/out/TelepathyValidator.sol/TelepathyValidator.json deleted file mode 100644 index aab1847..0000000 --- a/out/TelepathyValidator.sol/TelepathyValidator.json +++ /dev/null @@ -1,4021 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_telepathyPubSub", - "type": "address" - }, - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "uint64", - "name": "_startSlot", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "_endSlot", - "type": "uint64" - }, - { - "internalType": "address", - "name": "_homeAMB", - "type": "address" - }, - { - "internalType": "address", - "name": "_owner", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "slot", - "type": "uint64" - } - ], - "name": "InvalidSlot", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - } - ], - "name": "InvalidSourceAddress", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - } - ], - "name": "InvalidSourceChain", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - } - ], - "name": "InvalidSubscriptionId", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "NotFromTelepathyPubSub", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "messageId", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "header", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "AffirmationHandled", - "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" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_subscriptionId", - "type": "bytes32" - }, - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "uint64", - "name": "_slot", - "type": "uint64" - }, - { - "internalType": "bytes32[]", - "name": "_eventTopics", - "type": "bytes32[]" - }, - { - "internalType": "bytes", - "name": "_eventdata", - "type": "bytes" - } - ], - "name": "handlePublish", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "subscribeToAffirmationEvent", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "subscriptionId", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "telepathyPubSub", - "outputs": [ - { - "internalType": "contract TelepathyPubSub", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "toggleExecuteAffirmations", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x6101206040523480156200001257600080fd5b5060405162000ddf38038062000ddf833981016040819052620000359162000213565b600080546001600160a01b0319166001600160a01b038916179055620000626200005c3390565b620000ab565b63ffffffff86166080526001600160a01b0380861660a0526001600160401b0380861660c052841660e0528216610100526200009e81620000fd565b50505050505050620002b2565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200010762000180565b6001600160a01b038116620001725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200017d81620000ab565b50565b6001546001600160a01b03163314620001dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000169565b565b80516001600160a01b0381168114620001f657600080fd5b919050565b80516001600160401b0381168114620001f657600080fd5b600080600080600080600060e0888a0312156200022f57600080fd5b6200023a88620001de565b9650602088015163ffffffff811681146200025457600080fd5b95506200026460408901620001de565b94506200027460608901620001fb565b93506200028460808901620001fb565b92506200029460a08901620001de565b9150620002a460c08901620001de565b905092959891949750929550565b60805160a05160c05160e05161010051610ac56200031a60003960006106230152600081816102140152818161053501526105600152600081816101ec01526104ef015260008181610186015261049201526000818161015f015261043e0152610ac56000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea264697066735822122039024801fa5fd5c08053dea7f1c0ad819675317d9ec4ec486697dda62975415164736f6c63430008100033", - "sourceMap": "516:3107:12:-:0;;;1419:499;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;392:15:128;:51;;-1:-1:-1;;;;;;392:51:128;-1:-1:-1;;;;;392:51:128;;;;;936:32:49;955:12;719:10:68;;640:96;955:12:49;936:18;:32::i;:::-;1685:38:12::1;::::0;::::1;;::::0;-1:-1:-1;;;;;1733:37:12;;::::1;;::::0;-1:-1:-1;;;;;1780:23:12;;::::1;;::::0;1813:19;::::1;;::::0;1842:34;::::1;;::::0;1886:25:::1;1904:6:::0;1886:17:::1;:25::i;:::-;1419:499:::0;;;;;;;516:3107;;2433:187:49;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;1373:2:146;2161:73:49::1;::::0;::::1;1355:21:146::0;1412:2;1392:18;;;1385:30;1451:34;1431:18;;;1424:62;-1:-1:-1;;;1502:18:146;;;1495:36;1548:19;;2161:73:49::1;;;;;;;;;2244:28;2263:8:::0;2244:18:::1;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;1780:2:146;1414:68:49;;;1762:21:146;;;1799:18;;;1792:30;1858:34;1838:18;;;1831:62;1910:18;;1414:68:49;1578:356:146;1414:68:49;1359:130::o;14:177:146:-;93:13;;-1:-1:-1;;;;;135:31:146;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:175::-;274:13;;-1:-1:-1;;;;;316:30:146;;306:41;;296:69;;361:1;358;351:12;376:790;497:6;505;513;521;529;537;545;598:3;586:9;577:7;573:23;569:33;566:53;;;615:1;612;605:12;566:53;638:40;668:9;638:40;:::i;:::-;628:50;;721:2;710:9;706:18;700:25;765:10;758:5;754:22;747:5;744:33;734:61;;791:1;788;781:12;734:61;814:5;-1:-1:-1;838:49:146;883:2;868:18;;838:49;:::i;:::-;828:59;;906:48;950:2;939:9;935:18;906:48;:::i;:::-;896:58;;973:49;1017:3;1006:9;1002:19;973:49;:::i;:::-;963:59;;1041:50;1086:3;1075:9;1071:19;1041:50;:::i;:::-;1031:60;;1110:50;1155:3;1144:9;1140:19;1110:50;:::i;:::-;1100:60;;376:790;;;;;;;;;;:::o;1578:356::-;516:3107:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100e6578063a27c0863146100f7578063a2c12a3a146100ff578063f2fde38b1461012b57600080fd5b80630908a3861461008d57806309c1ba2e146100a857806335cb25c3146100b1578063715018a6146100dc575b600080fd5b61009561013e565b6040519081526020015b60405180910390f35b61009560025481565b6000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100e4610293565b005b6001546001600160a01b03166100c4565b6100e46102a7565b61011261010d36600461084a565b6102c3565b6040516001600160e01b0319909116815260200161009f565b6100e46101393660046108fc565b610317565b6000610148610390565b600054604051636513895960e01b815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660248301523060448301527f482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58606483015267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660848401527f00000000000000000000000000000000000000000000000000000000000000001660a48301529091169063651389599060c4016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610289919061091e565b6002819055905090565b61029b610390565b6102a560006103ea565b565b6102af610390565b6003805460ff19811660ff90911615179055565b600080546001600160a01b031633146102f65760405163d664887b60e01b81523360048201526024015b60405180910390fd5b61030487878787878761043c565b50635160951d60e11b9695505050505050565b61031f610390565b6001600160a01b0381166103845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ed565b61038d816103ea565b50565b6001546001600160a01b031633146102a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ed565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff161461049057604051632542b8c360e21b815263ffffffff861660048201526024016102ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146104ed576040516398785edb60e01b81526001600160a01b03851660048201526024016102ed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff161080610596575067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061059657507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16115b156105c057604051637dbbfbf960e11b815267ffffffffffffffff841660048201526024016102ed565b60025486146105e55760405163adc1a22b60e01b8152600481018790526024016102ed565b600080828060200190518101906105fc91906109a8565b600354919350915060ff161561068b5760405163e7a2c01f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7a2c01f90610658908490600401610a38565b600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050505b8360018151811061069e5761069e610a4b565b60200260200101517f1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa83836040516106d7929190610a61565b60405180910390a25050505050505050565b80356001600160a01b038116811461070057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561074457610744610705565b604052919050565b600082601f83011261075d57600080fd5b8135602067ffffffffffffffff82111561077957610779610705565b8160051b61078882820161071b565b92835284810182019282810190878511156107a257600080fd5b83870192505b848310156107c1578235825291830191908301906107a8565b979650505050505050565b600067ffffffffffffffff8211156107e6576107e6610705565b50601f01601f191660200190565b600082601f83011261080557600080fd5b8135610818610813826107cc565b61071b565b81815284602083860101111561082d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561086357600080fd5b86359550602087013563ffffffff8116811461087e57600080fd5b945061088c604088016106e9565b9350606087013567ffffffffffffffff80821682146108aa57600080fd5b909350608088013590808211156108c057600080fd5b6108cc8a838b0161074c565b935060a08901359150808211156108e257600080fd5b506108ef89828a016107f4565b9150509295509295509295565b60006020828403121561090e57600080fd5b610917826106e9565b9392505050565b60006020828403121561093057600080fd5b5051919050565b60005b8381101561095257818101518382015260200161093a565b50506000910152565b600082601f83011261096c57600080fd5b815161097a610813826107cc565b81815284602083860101111561098f57600080fd5b6109a0826020830160208701610937565b949350505050565b600080604083850312156109bb57600080fd5b825167ffffffffffffffff808211156109d357600080fd5b6109df8683870161095b565b935060208501519150808211156109f557600080fd5b50610a028582860161095b565b9150509250929050565b60008151808452610a24816020860160208601610937565b601f01601f19169290920160200192915050565b6020815260006109176020830184610a0c565b634e487b7160e01b600052603260045260246000fd5b604081526000610a746040830185610a0c565b8281036020840152610a868185610a0c565b9594505050505056fea264697066735822122039024801fa5fd5c08053dea7f1c0ad819675317d9ec4ec486697dda62975415164736f6c63430008100033", - "sourceMap": "516:3107:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2059:353;;;:::i;:::-;;;160:25:146;;;148:2;133:18;2059:353:12;;;;;;;;1346:29;;;;;;299:38:128;;;;;-1:-1:-1;;;;;299:38:128;;;;;;-1:-1:-1;;;;;385:32:146;;;367:51;;355:2;340:18;299:38:128;196:228:146;1831:101:49;;;:::i;:::-;;1201:85;1273:6;;-1:-1:-1;;;;;1273:6:49;1201:85;;1924:129:12;;;:::i;456:572:128:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3809:33:146;;;3791:52;;3779:2;3764:18;456:572:128;3647:202:146;2081:198:49;;;;;;:::i;:::-;;:::i;2059:353:12:-;2126:7;1094:13:49;:11;:13::i;:::-;2162:15:12::1;::::0;:212:::1;::::0;-1:-1:-1;;;2162:212:12;;4356:10:146;2201:21:12::1;4344:23:146::0;2162:212:12::1;::::0;::::1;4326:42:146::0;2236:20:12::1;-1:-1:-1::0;;;;;4442:15:146;;;4422:18;;;4415:43;2278:4:12::1;4474:18:146::0;;;4467:43;1095:53:12::1;4526:18:146::0;;;4519:34;4572:18;2332:10:12::1;4627:15:146::0;;4606:19;;;4599:44;2356:8:12::1;4680:15:146::0;4659:19;;;4652:44;2162:15:12;;::::1;::::0;:25:::1;::::0;4298:19:146;;2162:212:12::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2145:14;:229:::0;;;;-1:-1:-1;2059:353:12;:::o;1831:101:49:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1924:129:12:-;1094:13:49;:11;:13::i;:::-;2020:26:12::1;::::0;;-1:-1:-1;;1990:56:12;::::1;2020:26;::::0;;::::1;2019:27;1990:56;::::0;;1924:129::o;456:572:128:-;702:6;746:15;;-1:-1:-1;;;;;746:15:128;724:10;:38;720:110;;785:34;;-1:-1:-1;;;785:34:128;;808:10;785:34;;;367:51:146;340:18;;785:34:128;;;;;;;;720:110;839:121;870:15;887:14;903;919:5;926:12;940:10;839:17;:121::i;:::-;-1:-1:-1;;;;456:572:128;;;;;;;;:::o;2081:198:49:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:49;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:49;;5098:2:146;2161:73:49::1;::::0;::::1;5080:21:146::0;5137:2;5117:18;;;5110:30;5176:34;5156:18;;;5149:62;-1:-1:-1;;;5227:18:146;;;5220:36;5273:19;;2161:73:49::1;4896:402:146::0;2161:73:49::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:49;719:10:68;1422:23:49;1414:68;;;;-1:-1:-1;;;1414:68:49;;5505:2:146;1414:68:49;;;5487:21:146;;;5524:18;;;5517:30;5583:34;5563:18;;;5556:62;5635:18;;1414:68:49;5303:356:146;2433:187:49;2525:6;;;-1:-1:-1;;;;;2541:17:49;;;-1:-1:-1;;;;;;2541:17:49;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;2636:985:12:-;2907:21;2889:39;;:14;:39;;;2885:111;;2951:34;;-1:-1:-1;;;2951:34:12;;5838:10:146;5826:23;;2951:34:12;;;5808:42:146;5781:18;;2951:34:12;5664:192:146;2885:111:12;3028:20;-1:-1:-1;;;;;3010:38:12;:14;-1:-1:-1;;;;;3010:38:12;;3006:112;;3071:36;;-1:-1:-1;;;3071:36:12;;-1:-1:-1;;;;;385:32:146;;3071:36:12;;;367:51:146;340:18;;3071:36:12;196:228:146;3006:112:12;3140:10;3132:18;;:5;:18;;;:57;;;-1:-1:-1;3155:13:12;:8;:13;;;;;:33;;;3180:8;3172:16;;:5;:16;;;3155:33;3128:113;;;3212:18;;-1:-1:-1;;;3212:18:12;;6035::146;6023:31;;3212:18:12;;;6005:50:146;5978:18;;3212::12;5861:200:146;3128:113:12;3274:14;;3255:15;:33;3251:109;;3311:38;;-1:-1:-1;;;3311:38:12;;;;;160:25:146;;;133:18;;3311:38:12;14:177:146;3251:109:12;3371:19;3392:17;3424:9;3413:37;;;;;;;;;;;;:::i;:::-;3465:26;;3370:80;;-1:-1:-1;3370:80:12;-1:-1:-1;3465:26:12;;3461:90;;;3507:33;;-1:-1:-1;;;3507:33:12;;-1:-1:-1;;;;;3507:8:12;:27;;;;:33;;3535:4;;3507:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3461:90;3585:11;3597:1;3585:14;;;;;;;;:::i;:::-;;;;;;;3566:48;3601:6;3609:4;3566:48;;;;;;;:::i;:::-;;;;;;;;2875:746;;2636:985;;;;;;:::o;637:173:146:-;705:20;;-1:-1:-1;;;;;754:31:146;;744:42;;734:70;;800:1;797;790:12;734:70;637:173;;;:::o;815:127::-;876:10;871:3;867:20;864:1;857:31;907:4;904:1;897:15;931:4;928:1;921:15;947:275;1018:2;1012:9;1083:2;1064:13;;-1:-1:-1;;1060:27:146;1048:40;;1118:18;1103:34;;1139:22;;;1100:62;1097:88;;;1165:18;;:::i;:::-;1201:2;1194:22;947:275;;-1:-1:-1;947:275:146:o;1227:712::-;1281:5;1334:3;1327:4;1319:6;1315:17;1311:27;1301:55;;1352:1;1349;1342:12;1301:55;1388:6;1375:20;1414:4;1437:18;1433:2;1430:26;1427:52;;;1459:18;;:::i;:::-;1505:2;1502:1;1498:10;1528:28;1552:2;1548;1544:11;1528:28;:::i;:::-;1590:15;;;1660;;;1656:24;;;1621:12;;;;1692:15;;;1689:35;;;1720:1;1717;1710:12;1689:35;1756:2;1748:6;1744:15;1733:26;;1768:142;1784:6;1779:3;1776:15;1768:142;;;1850:17;;1838:30;;1801:12;;;;1888;;;;1768:142;;;1928:5;1227:712;-1:-1:-1;;;;;;;1227:712:146:o;1944:186::-;1992:4;2025:18;2017:6;2014:30;2011:56;;;2047:18;;:::i;:::-;-1:-1:-1;2113:2:146;2092:15;-1:-1:-1;;2088:29:146;2119:4;2084:40;;1944:186::o;2135:462::-;2177:5;2230:3;2223:4;2215:6;2211:17;2207:27;2197:55;;2248:1;2245;2238:12;2197:55;2284:6;2271:20;2315:48;2331:31;2359:2;2331:31;:::i;:::-;2315:48;:::i;:::-;2388:2;2379:7;2372:19;2434:3;2427:4;2422:2;2414:6;2410:15;2406:26;2403:35;2400:55;;;2451:1;2448;2441:12;2400:55;2516:2;2509:4;2501:6;2497:17;2490:4;2481:7;2477:18;2464:55;2564:1;2539:16;;;2557:4;2535:27;2528:38;;;;2543:7;2135:462;-1:-1:-1;;;2135:462:146:o;2602:1040::-;2738:6;2746;2754;2762;2770;2778;2831:3;2819:9;2810:7;2806:23;2802:33;2799:53;;;2848:1;2845;2838:12;2799:53;2884:9;2871:23;2861:33;;2944:2;2933:9;2929:18;2916:32;2988:10;2981:5;2977:22;2970:5;2967:33;2957:61;;3014:1;3011;3004:12;2957:61;3037:5;-1:-1:-1;3061:38:146;3095:2;3080:18;;3061:38;:::i;:::-;3051:48;;3151:2;3140:9;3136:18;3123:32;3174:18;3236:2;3227:7;3223:16;3214:7;3211:29;3201:57;;3254:1;3251;3244:12;3201:57;3277:7;;-1:-1:-1;3335:3:146;3320:19;;3307:33;;3352:14;;;3349:34;;;3379:1;3376;3369:12;3349:34;3402:61;3455:7;3446:6;3435:9;3431:22;3402:61;:::i;:::-;3392:71;;3516:3;3505:9;3501:19;3488:33;3472:49;;3546:2;3536:8;3533:16;3530:36;;;3562:1;3559;3552:12;3530:36;;3585:51;3628:7;3617:8;3606:9;3602:24;3585:51;:::i;:::-;3575:61;;;2602:1040;;;;;;;;:::o;3854:186::-;3913:6;3966:2;3954:9;3945:7;3941:23;3937:32;3934:52;;;3982:1;3979;3972:12;3934:52;4005:29;4024:9;4005:29;:::i;:::-;3995:39;3854:186;-1:-1:-1;;;3854:186:146:o;4707:184::-;4777:6;4830:2;4818:9;4809:7;4805:23;4801:32;4798:52;;;4846:1;4843;4836:12;4798:52;-1:-1:-1;4869:16:146;;4707:184;-1:-1:-1;4707:184:146:o;6066:250::-;6151:1;6161:113;6175:6;6172:1;6169:13;6161:113;;;6251:11;;;6245:18;6232:11;;;6225:39;6197:2;6190:10;6161:113;;;-1:-1:-1;;6308:1:146;6290:16;;6283:27;6066:250::o;6321:441::-;6374:5;6427:3;6420:4;6412:6;6408:17;6404:27;6394:55;;6445:1;6442;6435:12;6394:55;6474:6;6468:13;6505:48;6521:31;6549:2;6521:31;:::i;6505:48::-;6578:2;6569:7;6562:19;6624:3;6617:4;6612:2;6604:6;6600:15;6596:26;6593:35;6590:55;;;6641:1;6638;6631:12;6590:55;6654:77;6728:2;6721:4;6712:7;6708:18;6701:4;6693:6;6689:17;6654:77;:::i;:::-;6749:7;6321:441;-1:-1:-1;;;;6321:441:146:o;6767:558::-;6864:6;6872;6925:2;6913:9;6904:7;6900:23;6896:32;6893:52;;;6941:1;6938;6931:12;6893:52;6974:9;6968:16;7003:18;7044:2;7036:6;7033:14;7030:34;;;7060:1;7057;7050:12;7030:34;7083:60;7135:7;7126:6;7115:9;7111:22;7083:60;:::i;:::-;7073:70;;7189:2;7178:9;7174:18;7168:25;7152:41;;7218:2;7208:8;7205:16;7202:36;;;7234:1;7231;7224:12;7202:36;;7257:62;7311:7;7300:8;7289:9;7285:24;7257:62;:::i;:::-;7247:72;;;6767:558;;;;;:::o;7330:270::-;7371:3;7409:5;7403:12;7436:6;7431:3;7424:19;7452:76;7521:6;7514:4;7509:3;7505:14;7498:4;7491:5;7487:16;7452:76;:::i;:::-;7582:2;7561:15;-1:-1:-1;;7557:29:146;7548:39;;;;7589:4;7544:50;;7330:270;-1:-1:-1;;7330:270:146:o;7605:217::-;7752:2;7741:9;7734:21;7715:4;7772:44;7812:2;7801:9;7797:18;7789:6;7772:44;:::i;7827:127::-;7888:10;7883:3;7879:20;7876:1;7869:31;7919:4;7916:1;7909:15;7943:4;7940:1;7933:15;7959:377;8152:2;8141:9;8134:21;8115:4;8178:44;8218:2;8207:9;8203:18;8195:6;8178:44;:::i;:::-;8270:9;8262:6;8258:22;8253:2;8242:9;8238:18;8231:50;8298:32;8323:6;8315;8298:32;:::i;:::-;8290:40;7959:377;-1:-1:-1;;;;;7959:377:146:o", - "linkReferences": {}, - "immutableReferences": { - "2661": [ - { - "start": 351, - "length": 32 - }, - { - "start": 1086, - "length": 32 - } - ], - "2663": [ - { - "start": 390, - "length": 32 - }, - { - "start": 1170, - "length": 32 - } - ], - "2665": [ - { - "start": 492, - "length": 32 - }, - { - "start": 1263, - "length": 32 - } - ], - "2667": [ - { - "start": 532, - "length": 32 - }, - { - "start": 1333, - "length": 32 - }, - { - "start": 1376, - "length": 32 - } - ], - "2670": [ - { - "start": 1571, - "length": 32 - } - ] - } - }, - "methodIdentifiers": { - "handlePublish(bytes32,uint32,address,uint64,bytes32[],bytes)": "a2c12a3a", - "owner()": "8da5cb5b", - "renounceOwnership()": "715018a6", - "subscribeToAffirmationEvent()": "0908a386", - "subscriptionId()": "09c1ba2e", - "telepathyPubSub()": "35cb25c3", - "toggleExecuteAffirmations()": "a27c0863", - "transferOwnership(address)": "f2fde38b" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_telepathyPubSub\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_startSlot\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endSlot\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_homeAMB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"}],\"name\":\"InvalidSlot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sourceAddress\",\"type\":\"address\"}],\"name\":\"InvalidSourceAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"sourceChainId\",\"type\":\"uint32\"}],\"name\":\"InvalidSourceChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subscriptionId\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubscriptionId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"NotFromTelepathyPubSub\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"AffirmationHandled\",\"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\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_subscriptionId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"_sourceChainId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_sourceAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_slot\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[]\",\"name\":\"_eventTopics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"_eventdata\",\"type\":\"bytes\"}],\"name\":\"handlePublish\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscribeToAffirmationEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subscriptionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"telepathyPubSub\",\"outputs\":[{\"internalType\":\"contract TelepathyPubSub\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleExecuteAffirmations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Succinct Labs\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"AFFIRMATION_EVENT_SIG\":{\"details\":\"Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData) where the encodedData is the ABI encoded message from the Foreign AMB.\"}},\"title\":\"TelepathyValidator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A validator for the ETH (Foreign) -> Gnosis (Home) bridge that relies on the Telepathy Protocol for proof of consensus in verifying the UserRequestForAffirmation event was emitted on Ethereum.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":\"TelepathyValidator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"examples/pubsub/gnosis/TelepathyValidator.sol\":{\"keccak256\":\"0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31\",\"urls\":[\"bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42\",\"dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1\",\"dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/optimism-bedrock-contracts/Bytes.sol\":{\"keccak256\":\"0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1\",\"dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw\"]},\"lib/optimism-bedrock-contracts/rlp/RLPReader.sol\":{\"keccak256\":\"0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95\",\"dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW\"]},\"lib/optimism-bedrock-contracts/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"lib/optimism-bedrock-contracts/trie/MerkleTrie.sol\":{\"keccak256\":\"0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209\",\"dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7\"]},\"src/amb/SourceAMB.sol\":{\"keccak256\":\"0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a\",\"urls\":[\"bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6\",\"dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P\"]},\"src/amb/TargetAMB.sol\":{\"keccak256\":\"0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e\",\"urls\":[\"bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b\",\"dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a\"]},\"src/amb/TelepathyAccess.sol\":{\"keccak256\":\"0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6\",\"urls\":[\"bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609\",\"dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3\"]},\"src/amb/TelepathyRouter.sol\":{\"keccak256\":\"0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f\",\"urls\":[\"bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40\",\"dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu\"]},\"src/amb/TelepathyStorage.sol\":{\"keccak256\":\"0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c\",\"urls\":[\"bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05\",\"dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY\"]},\"src/amb/interfaces/ITelepathy.sol\":{\"keccak256\":\"0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a\",\"urls\":[\"bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189\",\"dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V\"]},\"src/libraries/BeaconChainForks.sol\":{\"keccak256\":\"0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd\",\"urls\":[\"bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568\",\"dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W\"]},\"src/libraries/MessageEncoding.sol\":{\"keccak256\":\"0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7\",\"urls\":[\"bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc\",\"dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk\"]},\"src/libraries/SimpleSerialize.sol\":{\"keccak256\":\"0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054\",\"urls\":[\"bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a\",\"dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY\"]},\"src/libraries/StateProofHelper.sol\":{\"keccak256\":\"0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47\",\"urls\":[\"bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6\",\"dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk\"]},\"src/libraries/Typecast.sol\":{\"keccak256\":\"0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d\",\"dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr\"]},\"src/lightclient/interfaces/ILightClient.sol\":{\"keccak256\":\"0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051\",\"urls\":[\"bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070\",\"dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo\"]},\"src/pubsub/EventProof.sol\":{\"keccak256\":\"0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e\",\"urls\":[\"bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78\",\"dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi\"]},\"src/pubsub/PubSubStorage.sol\":{\"keccak256\":\"0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b\",\"urls\":[\"bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e\",\"dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL\"]},\"src/pubsub/TelepathyPubSub.sol\":{\"keccak256\":\"0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61\",\"urls\":[\"bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241\",\"dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG\"]},\"src/pubsub/TelepathyPublisher.sol\":{\"keccak256\":\"0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521\",\"urls\":[\"bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f\",\"dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe\"]},\"src/pubsub/TelepathySubscriber.sol\":{\"keccak256\":\"0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd\",\"urls\":[\"bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4\",\"dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3\"]},\"src/pubsub/interfaces/IPubSub.sol\":{\"keccak256\":\"0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c\",\"urls\":[\"bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a\",\"dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt\"]},\"src/pubsub/interfaces/ISubscriptionReceiver.sol\":{\"keccak256\":\"0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c\",\"urls\":[\"bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb\",\"dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx\"]},\"src/pubsub/interfaces/SubscriptionReceiver.sol\":{\"keccak256\":\"0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412\",\"urls\":[\"bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9\",\"dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_telepathyPubSub", - "type": "address" - }, - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "uint64", - "name": "_startSlot", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "_endSlot", - "type": "uint64" - }, - { - "internalType": "address", - "name": "_homeAMB", - "type": "address" - }, - { - "internalType": "address", - "name": "_owner", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "slot", - "type": "uint64" - } - ], - "type": "error", - "name": "InvalidSlot" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - } - ], - "type": "error", - "name": "InvalidSourceAddress" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "sourceChainId", - "type": "uint32" - } - ], - "type": "error", - "name": "InvalidSourceChain" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "subscriptionId", - "type": "bytes32" - } - ], - "type": "error", - "name": "InvalidSubscriptionId" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "type": "error", - "name": "NotFromTelepathyPubSub" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "messageId", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes", - "name": "header", - "type": "bytes", - "indexed": false - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes", - "indexed": false - } - ], - "type": "event", - "name": "AffirmationHandled", - "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": "bytes32", - "name": "_subscriptionId", - "type": "bytes32" - }, - { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "uint64", - "name": "_slot", - "type": "uint64" - }, - { - "internalType": "bytes32[]", - "name": "_eventTopics", - "type": "bytes32[]" - }, - { - "internalType": "bytes", - "name": "_eventdata", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "handlePublish", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "renounceOwnership" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "subscribeToAffirmationEvent", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "subscriptionId", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "telepathyPubSub", - "outputs": [ - { - "internalType": "contract TelepathyPubSub", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "toggleExecuteAffirmations" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "transferOwnership" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "owner()": { - "details": "Returns the address of the current owner." - }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." - }, - "transferOwnership(address)": { - "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "examples/pubsub/gnosis/TelepathyValidator.sol": "TelepathyValidator" - }, - "libraries": {} - }, - "sources": { - "examples/pubsub/gnosis/TelepathyValidator.sol": { - "keccak256": "0x49d14136c91e80ae60f2f2de32b24b707ed363e56c8ae3fd675d0136cf091f31", - "urls": [ - "bzz-raw://add953343d2588bc3c79e42aa857912f03bc1c8afbd9e0c10c62d2c2873f7c42", - "dweb:/ipfs/QmWNGSX8FcairCV2Cr2H4TBUcgP4QYyJRvpfVy8fCvaHSk" - ], - "license": null - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { - "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a", - "urls": [ - "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626", - "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": { - "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa", - "urls": [ - "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c", - "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { - "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", - "urls": [ - "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", - "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol": { - "keccak256": "0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f", - "urls": [ - "bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053", - "dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": { - "keccak256": "0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823", - "urls": [ - "bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2", - "dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol": { - "keccak256": "0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908", - "urls": [ - "bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1", - "dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", - "urls": [ - "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", - "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { - "keccak256": "0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778", - "urls": [ - "bzz-raw://40e60cbf0e2efede4d9c169e66336a64615af7b719a896ef1f37ae8cd4614ec1", - "dweb:/ipfs/QmYNiwY22ifhfa8yK6mLCEKfj39caYUHLqe2VBtzDnvdsV" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": { - "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790", - "urls": [ - "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a", - "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { - "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", - "urls": [ - "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", - "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { - "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", - "urls": [ - "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", - "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol": { - "keccak256": "0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a", - "urls": [ - "bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3", - "dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": { - "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da", - "urls": [ - "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8", - "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { - "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a", - "urls": [ - "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7", - "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": { - "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09", - "urls": [ - "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758", - "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": { - "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a", - "urls": [ - "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4", - "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { - "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", - "urls": [ - "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", - "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Context.sol": { - "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", - "urls": [ - "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", - "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/Bytes.sol": { - "keccak256": "0x7aca6593fadf438ee9cd090d8fdc8f94a5202a2eb7f764c9a86f207712d87a48", - "urls": [ - "bzz-raw://aac32157885c5a08bd0bc7dcd5511f66db12bb20d0c263dd7be9f58b91538fc1", - "dweb:/ipfs/Qmb1iG11Z53yt9wNbGsuTvoydJXFosDDpWwRSADKyqiCjw" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPReader.sol": { - "keccak256": "0x7fec14965f928924f6299a51c4220d2daf1ed46185d1e5706b6bd3d2e0340a56", - "urls": [ - "bzz-raw://ae3b6784b641557bc6757c8dea8c8c459343d408f9a18f962763dba341e64e95", - "dweb:/ipfs/QmbqSmwkzrYbtc4ov9fEfReA4RYUgMBd12dPCm2KGXdRQW" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/rlp/RLPWriter.sol": { - "keccak256": "0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78", - "urls": [ - "bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0", - "dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio" - ], - "license": "MIT" - }, - "lib/optimism-bedrock-contracts/trie/MerkleTrie.sol": { - "keccak256": "0xd27fc945d6dd2821636d840f3766f817823c8e9fbfdb87c2da7c73e4292d2f7f", - "urls": [ - "bzz-raw://497cec37d09ebcdc8d1cccac608a4a0b9b9d83eac6cc7c9e8b73c4c6644e2209", - "dweb:/ipfs/QmUYMsCcgU6epspvKV9Y6anHyyMb4hd1xVzUZheBY9mfG7" - ], - "license": "MIT" - }, - "src/amb/SourceAMB.sol": { - "keccak256": "0x2a0b191f2bef18df309cf375692236ce126252d2c36ec706bc5256a8fe15854a", - "urls": [ - "bzz-raw://4f19ed3248465b97cde5740a4b6e2e4db62896ba0cfc1f66c30c8f7207b98ca6", - "dweb:/ipfs/QmRCnF5CEoWRszZP1nCrnh7fvBADPRrqiQu6o9tpcr4K5P" - ], - "license": null - }, - "src/amb/TargetAMB.sol": { - "keccak256": "0x19b30cec0b4065eecd47f9c6055a4c7399428e28617512ce1ecd9700d27e0e3e", - "urls": [ - "bzz-raw://2c034edcf6e2e9e581731189bc15e15d8654cf2db6a97ca47ebcc7dfb230a64b", - "dweb:/ipfs/QmUKijg36jXx6hYv85u7EkDAdAqrX1m5YMwDuWoxa3ez2a" - ], - "license": null - }, - "src/amb/TelepathyAccess.sol": { - "keccak256": "0x75161809fd00088b823b901fc1c9de3b55462333d343a93600ce25b3919990b6", - "urls": [ - "bzz-raw://3c21ef4fa0e757c77960aa601e0e2954e7803bfa3778b34a45dc257369757609", - "dweb:/ipfs/QmY234B6N5Y9ndu7VHwXwjpg9v4vCmDfjYsubQXxvkmDQ3" - ], - "license": null - }, - "src/amb/TelepathyRouter.sol": { - "keccak256": "0x7f7dbf6d6920e8dd60394f49ed4d71c885a7bbdd77260ca44888408332e1de3f", - "urls": [ - "bzz-raw://ba08ade28a866dd6a66fb849a2dedcd18d08af201930908a841ea39f80a01f40", - "dweb:/ipfs/QmSTRSgvtvQnKM8bBPGWBkZ3AbEkrzjaaLiVnBedMrTeNu" - ], - "license": null - }, - "src/amb/TelepathyStorage.sol": { - "keccak256": "0xc2e4978e759d283457b02b90a77b9a4ea359eeade41b8937c57d6dc3026ff04c", - "urls": [ - "bzz-raw://9d2aa0835f096d4d7dcf3100e05d45a1b7b838d469bd78ba5c6eaf0dcebceb05", - "dweb:/ipfs/QmXyt6ZcHWkSsyREC6fhvsD1z6EVzuMcJadjXDcds6smJY" - ], - "license": null - }, - "src/amb/interfaces/ITelepathy.sol": { - "keccak256": "0x8e0f1c5f335402c1581387491da7571cb1cb3a07e622db9fa15c6c2a06b2546a", - "urls": [ - "bzz-raw://85900c5ae744016f22d1452446e9cc580721a3e8264c09605390a8decd7b8189", - "dweb:/ipfs/QmRZh5L18VxGeQ1niPzRFL9J4iigiFbp2knxQjRP3LmH9V" - ], - "license": null - }, - "src/libraries/BeaconChainForks.sol": { - "keccak256": "0xac10b289ae140dda8b44f9d2b33109c6a2f4212884a155eb862b026eb061f1bd", - "urls": [ - "bzz-raw://edfe1507302253777b33979cb725287a458908f1588d3553c41dba3c9e50d568", - "dweb:/ipfs/QmbAjerSWceYpYz3s9mNLhcMin7F1z46A5s47umsfW137W" - ], - "license": null - }, - "src/libraries/MessageEncoding.sol": { - "keccak256": "0xa7d014c247a34bbfcfa9175ad175483cf6cc1c0a0d8277dc30e0f7e47f1707a7", - "urls": [ - "bzz-raw://8ccfb15112c94523fed2ecb6a87ca4a6f891f09b9831a58c05c70ff04b8082dc", - "dweb:/ipfs/Qma9zqMUS5ygBKaRAZeqLr4twtyTqBZTbSHu8uRDdLmojk" - ], - "license": null - }, - "src/libraries/SimpleSerialize.sol": { - "keccak256": "0xd19fff646b44f7406dd6aeb45abd38c8c0de4bb15ee524569c3a3d89aa6e7054", - "urls": [ - "bzz-raw://2b88dd0c6d895dd013ea7a1896ee1a4012cfa07eb391e610f90602fd0f8a3e5a", - "dweb:/ipfs/QmUHD3dCxg8TZBX5RgHyKMBSZgLikqw1XZgZLdfGCLHqhY" - ], - "license": null - }, - "src/libraries/StateProofHelper.sol": { - "keccak256": "0x70e27315c29cb4c7d48a94f42190ffdc6eb01563b21e69a53313cae0dfc64c47", - "urls": [ - "bzz-raw://1282d7634bf116983291805d99dda36a2304dbe6ebebc8d488d218d948f3b4a6", - "dweb:/ipfs/QmdZreFEWMABoZLwq1J91BF5ja5ZbXe9EQkAd28R1VxJkk" - ], - "license": null - }, - "src/libraries/Typecast.sol": { - "keccak256": "0x3d94eaa60f2d48c5f21e443c23f1c140b2a2ace09c0e1350810dd2b09faf7c1a", - "urls": [ - "bzz-raw://adeaa9e8df8cfed643c6b25c1726da69658358eca52c0f5fc2972a2abc92e65d", - "dweb:/ipfs/QmT3UKsZUzzRFg1H6yXfhGn4jEaVkKHJx2PuneebcqKgAr" - ], - "license": "MIT OR Apache-2.0" - }, - "src/lightclient/interfaces/ILightClient.sol": { - "keccak256": "0x17f71ba0004a4af61cae3499a05decfe0cb2a4479f372eab3e1e946b7e03a051", - "urls": [ - "bzz-raw://a3d5c74269ab86e0c99c5caedc7c4cd4819c2f1a57bb8217b0dc380b10e14070", - "dweb:/ipfs/QmPk5DsfMAF535JmB4rB5hxFFTr6EmD1AXCvK7zNUu3EEo" - ], - "license": null - }, - "src/pubsub/EventProof.sol": { - "keccak256": "0x358449aa5957464e3eba86dd46c7a17ad1873815711ee340f384f08eb305c17e", - "urls": [ - "bzz-raw://7a99716d00743f39487b0271ca2eb55f11d74196afac8506f5078c8ae5590c78", - "dweb:/ipfs/QmbVyiEJ8iTvGvEow6gttaApezXEys2mxtGS13G71aoLwi" - ], - "license": null - }, - "src/pubsub/PubSubStorage.sol": { - "keccak256": "0xb48749438ffb733c688167748b15c8969e8101e3135798a48c1c37d6f5df8a6b", - "urls": [ - "bzz-raw://121c53ba9e7d0186a4440ce2f8c9106d0c5e16ff5028efb1c36cd029d3e57f6e", - "dweb:/ipfs/QmSSBhEX3QJBmE2Rof99cwmFJAesGdLuSRBoYfHNSWJXQL" - ], - "license": null - }, - "src/pubsub/TelepathyPubSub.sol": { - "keccak256": "0x4de6e5891578c1fb3e1e4280e462073ee79c58cab853288faaef53a8f3c74d61", - "urls": [ - "bzz-raw://0aaae987006b4c141fc6f1909ff991dbaaa675043748c741ac3902c60511e241", - "dweb:/ipfs/QmQK12mjbbQpNGUyMW76PqjsjEgmYN7Lkhj9GgxUVVMBnG" - ], - "license": null - }, - "src/pubsub/TelepathyPublisher.sol": { - "keccak256": "0xf57923e6b5d1e8bb0be3e5204263b5cc188f1af4496a26191ff33c940f37f521", - "urls": [ - "bzz-raw://3d2e3b9af2a08c3b27e364109c7c2cdbed2f0e207a22a5ddb291c3a19a0bee1f", - "dweb:/ipfs/QmTPFMQkjB8xz6vXmfbiS2qJyU1wz3ZxcJzd2dAsVTywZe" - ], - "license": null - }, - "src/pubsub/TelepathySubscriber.sol": { - "keccak256": "0xc2821363e4a6379a8d879954726e91881b011c5ca573ddc09aa927737b233bfd", - "urls": [ - "bzz-raw://9922a70f814a7caac3f4c5119bee155d9dc1ac0a4d6090fc4753ac9ad485eec4", - "dweb:/ipfs/Qma4cKKo2d7pkMmzKXVudtr43VSmQaRpH2HaDvWVR8PPj3" - ], - "license": null - }, - "src/pubsub/interfaces/IPubSub.sol": { - "keccak256": "0xbf3fbeb90e44355f0d18502908551df018a68e89942527cd1102b33b24a4cd8c", - "urls": [ - "bzz-raw://d8f40b30a82557e93093614445463bfc149e01035c69f61cf2fe1a465bce0a2a", - "dweb:/ipfs/QmQh4GAtaDCKTCBLUxPmDgWaDt2GeFUjcSki3s4n26Uswt" - ], - "license": null - }, - "src/pubsub/interfaces/ISubscriptionReceiver.sol": { - "keccak256": "0xc6c299e0beca231b1f20494e441dac3b21db203c0ab8ba47a09f0e8fda17268c", - "urls": [ - "bzz-raw://9c7b80a0a6653a4953f1f79397aeabffb1dc8c46cf7e86dc57123a8a6aa67dcb", - "dweb:/ipfs/QmdYLfKLywbHoXNfeku1cnrxLoshubEp92iHqjb8U4iTnx" - ], - "license": null - }, - "src/pubsub/interfaces/SubscriptionReceiver.sol": { - "keccak256": "0x567c445fe940be5ec5b8cad10ec32c7eda6a47a28c48a42b36b4969ac367f412", - "urls": [ - "bzz-raw://5b71a5959f19e352bec7d7b321c13da5de5b6da0e2a9b05f8aee52c1a4817cd9", - "dweb:/ipfs/QmSzVHz9otiXs3ZxVLA43JSsre1ZdSwSXaQzm9QamEAjUc" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "examples/pubsub/gnosis/TelepathyValidator.sol", - "id": 2860, - "exportedSymbols": { - "IBasicHomeAMB": [ - 2859 - ], - "Ownable": [ - 31597 - ], - "SubscriptionReceiver": [ - 49355 - ], - "TelepathyPubSub": [ - 48583 - ], - "TelepathyValidator": [ - 2853 - ] - }, - "nodeType": "SourceUnit", - "src": "0:3719:12", - "nodes": [ - { - "id": 2618, - "nodeType": "PragmaDirective", - "src": "0:24:12", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".16" - ] - }, - { - "id": 2620, - "nodeType": "ImportDirective", - "src": "26:63:12", - "nodes": [], - "absolutePath": "src/pubsub/TelepathyPubSub.sol", - "file": "src/pubsub/TelepathyPubSub.sol", - "nameLocation": "-1:-1:-1", - "scope": 2860, - "sourceUnit": 48584, - "symbolAliases": [ - { - "foreign": { - "id": 2619, - "name": "TelepathyPubSub", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48583, - "src": "34:15:12", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 2622, - "nodeType": "ImportDirective", - "src": "90:84:12", - "nodes": [], - "absolutePath": "src/pubsub/interfaces/SubscriptionReceiver.sol", - "file": "src/pubsub/interfaces/SubscriptionReceiver.sol", - "nameLocation": "-1:-1:-1", - "scope": 2860, - "sourceUnit": 49356, - "symbolAliases": [ - { - "foreign": { - "id": 2621, - "name": "SubscriptionReceiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49355, - "src": "98:20:12", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 2624, - "nodeType": "ImportDirective", - "src": "175:66:12", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", - "file": "openzeppelin-contracts/access/Ownable.sol", - "nameLocation": "-1:-1:-1", - "scope": 2860, - "sourceUnit": 31598, - "symbolAliases": [ - { - "foreign": { - "id": 2623, - "name": "Ownable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31597, - "src": "183:7:12", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 2853, - "nodeType": "ContractDefinition", - "src": "516:3107:12", - "nodes": [ - { - "id": 2637, - "nodeType": "EventDefinition", - "src": "583:78:12", - "nodes": [], - "anonymous": false, - "eventSelector": "1349f9d18880da727492fb01e16c8e4c37fef7ee9f8e1ac2cd9805c22b5844fa", - "name": "AffirmationHandled", - "nameLocation": "589:18:12", - "parameters": { - "id": 2636, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2631, - "indexed": true, - "mutability": "mutable", - "name": "messageId", - "nameLocation": "624:9:12", - "nodeType": "VariableDeclaration", - "scope": 2637, - "src": "608:25:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2630, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "608:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2633, - "indexed": false, - "mutability": "mutable", - "name": "header", - "nameLocation": "641:6:12", - "nodeType": "VariableDeclaration", - "scope": 2637, - "src": "635:12:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2632, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "635:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2635, - "indexed": false, - "mutability": "mutable", - "name": "data", - "nameLocation": "655:4:12", - "nodeType": "VariableDeclaration", - "scope": 2637, - "src": "649:10:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2634, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "649:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "607:53:12" - } - }, - { - "id": 2641, - "nodeType": "ErrorDefinition", - "src": "667:47:12", - "nodes": [], - "errorSelector": "950ae30c", - "name": "InvalidSourceChain", - "nameLocation": "673:18:12", - "parameters": { - "id": 2640, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2639, - "mutability": "mutable", - "name": "sourceChainId", - "nameLocation": "699:13:12", - "nodeType": "VariableDeclaration", - "scope": 2641, - "src": "692:20:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2638, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "692:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "691:22:12" - } - }, - { - "id": 2645, - "nodeType": "ErrorDefinition", - "src": "719:50:12", - "nodes": [], - "errorSelector": "98785edb", - "name": "InvalidSourceAddress", - "nameLocation": "725:20:12", - "parameters": { - "id": 2644, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2643, - "mutability": "mutable", - "name": "sourceAddress", - "nameLocation": "754:13:12", - "nodeType": "VariableDeclaration", - "scope": 2645, - "src": "746:21:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2642, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "746:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "745:23:12" - } - }, - { - "id": 2649, - "nodeType": "ErrorDefinition", - "src": "774:31:12", - "nodes": [], - "errorSelector": "fb77f7f2", - "name": "InvalidSlot", - "nameLocation": "780:11:12", - "parameters": { - "id": 2648, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2647, - "mutability": "mutable", - "name": "slot", - "nameLocation": "799:4:12", - "nodeType": "VariableDeclaration", - "scope": 2649, - "src": "792:11:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2646, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "792:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "791:13:12" - } - }, - { - "id": 2653, - "nodeType": "ErrorDefinition", - "src": "810:52:12", - "nodes": [], - "errorSelector": "adc1a22b", - "name": "InvalidSubscriptionId", - "nameLocation": "816:21:12", - "parameters": { - "id": 2652, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2651, - "mutability": "mutable", - "name": "subscriptionId", - "nameLocation": "846:14:12", - "nodeType": "VariableDeclaration", - "scope": 2653, - "src": "838:22:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2650, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "838:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "837:24:12" - } - }, - { - "id": 2659, - "nodeType": "VariableDeclaration", - "src": "1054:94:12", - "nodes": [], - "constant": true, - "documentation": { - "id": 2654, - "nodeType": "StructuredDocumentation", - "src": "868:181:12", - "text": "@dev Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData)\n where the encodedData is the ABI encoded message from the Foreign AMB." - }, - "mutability": "constant", - "name": "AFFIRMATION_EVENT_SIG", - "nameLocation": "1071:21:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2655, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1054:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "arguments": [ - { - "hexValue": "5573657252657175657374466f7241666669726d6174696f6e28627974657333322c627974657329", - "id": 2657, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1105:42:12", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58", - "typeString": "literal_string \"UserRequestForAffirmation(bytes32,bytes)\"" - }, - "value": "UserRequestForAffirmation(bytes32,bytes)" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_482515ce3d9494a37ce83f18b72b363449458435fafdd7a53ddea7460fe01b58", - "typeString": "literal_string \"UserRequestForAffirmation(bytes32,bytes)\"" - } - ], - "id": 2656, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "1095:9:12", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 2658, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1095:53:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "id": 2661, - "nodeType": "VariableDeclaration", - "src": "1155:38:12", - "nodes": [], - "constant": false, - "mutability": "immutable", - "name": "EVENT_SOURCE_CHAIN_ID", - "nameLocation": "1172:21:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2660, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1155:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "id": 2663, - "nodeType": "VariableDeclaration", - "src": "1199:38:12", - "nodes": [], - "constant": false, - "mutability": "immutable", - "name": "EVENT_SOURCE_ADDRESS", - "nameLocation": "1217:20:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2662, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1199:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "id": 2665, - "nodeType": "VariableDeclaration", - "src": "1243:27:12", - "nodes": [], - "constant": false, - "mutability": "immutable", - "name": "START_SLOT", - "nameLocation": "1260:10:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2664, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1243:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "id": 2667, - "nodeType": "VariableDeclaration", - "src": "1276:25:12", - "nodes": [], - "constant": false, - "mutability": "immutable", - "name": "END_SLOT", - "nameLocation": "1293:8:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2666, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1276:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "id": 2670, - "nodeType": "VariableDeclaration", - "src": "1307:32:12", - "nodes": [], - "constant": false, - "mutability": "immutable", - "name": "HOME_AMB", - "nameLocation": "1331:8:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - }, - "typeName": { - "id": 2669, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2668, - "name": "IBasicHomeAMB", - "nameLocations": [ - "1307:13:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2859, - "src": "1307:13:12" - }, - "referencedDeclaration": 2859, - "src": "1307:13:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - } - }, - "visibility": "internal" - }, - { - "id": 2672, - "nodeType": "VariableDeclaration", - "src": "1346:29:12", - "nodes": [], - "constant": false, - "functionSelector": "09c1ba2e", - "mutability": "mutable", - "name": "subscriptionId", - "nameLocation": "1361:14:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2671, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1346:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "public" - }, - { - "id": 2674, - "nodeType": "VariableDeclaration", - "src": "1381:31:12", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "executeAffirmationsEnabled", - "nameLocation": "1386:26:12", - "scope": 2853, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2673, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1381:4:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "id": 2721, - "nodeType": "FunctionDefinition", - "src": "1419:499:12", - "nodes": [], - "body": { - "id": 2720, - "nodeType": "Block", - "src": "1675:243:12", - "nodes": [], - "statements": [ - { - "expression": { - "id": 2696, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2694, - "name": "EVENT_SOURCE_CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2661, - "src": "1685:21:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2695, - "name": "_sourceChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2678, - "src": "1709:14:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "1685:38:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 2697, - "nodeType": "ExpressionStatement", - "src": "1685:38:12" - }, - { - "expression": { - "id": 2700, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2698, - "name": "EVENT_SOURCE_ADDRESS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2663, - "src": "1733:20:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2699, - "name": "_sourceAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2680, - "src": "1756:14:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1733:37:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 2701, - "nodeType": "ExpressionStatement", - "src": "1733:37:12" - }, - { - "expression": { - "id": 2704, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2702, - "name": "START_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2665, - "src": "1780:10:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2703, - "name": "_startSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2682, - "src": "1793:10:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "1780:23:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "id": 2705, - "nodeType": "ExpressionStatement", - "src": "1780:23:12" - }, - { - "expression": { - "id": 2708, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2706, - "name": "END_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2667, - "src": "1813:8:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2707, - "name": "_endSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2684, - "src": "1824:8:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "1813:19:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "id": 2709, - "nodeType": "ExpressionStatement", - "src": "1813:19:12" - }, - { - "expression": { - "id": 2714, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2710, - "name": "HOME_AMB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2670, - "src": "1842:8:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2712, - "name": "_homeAMB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2686, - "src": "1867:8:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 2711, - "name": "IBasicHomeAMB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2859, - "src": "1853:13:12", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IBasicHomeAMB_$2859_$", - "typeString": "type(contract IBasicHomeAMB)" - } - }, - "id": 2713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1853:23:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - } - }, - "src": "1842:34:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - } - }, - "id": 2715, - "nodeType": "ExpressionStatement", - "src": "1842:34:12" - }, - { - "expression": { - "arguments": [ - { - "id": 2717, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2688, - "src": "1904:6:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 2716, - "name": "transferOwnership", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31576, - "src": "1886:17:12", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 2718, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1886:25:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2719, - "nodeType": "ExpressionStatement", - "src": "1886:25:12" - } - ] - }, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "id": 2691, - "name": "_telepathyPubSub", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2676, - "src": "1657:16:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 2692, - "kind": "baseConstructorSpecifier", - "modifierName": { - "id": 2690, - "name": "SubscriptionReceiver", - "nameLocations": [ - "1636:20:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49355, - "src": "1636:20:12" - }, - "nodeType": "ModifierInvocation", - "src": "1636:38:12" - } - ], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 2689, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2676, - "mutability": "mutable", - "name": "_telepathyPubSub", - "nameLocation": "1448:16:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1440:24:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2675, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1440:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2678, - "mutability": "mutable", - "name": "_sourceChainId", - "nameLocation": "1481:14:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1474:21:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2677, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1474:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2680, - "mutability": "mutable", - "name": "_sourceAddress", - "nameLocation": "1513:14:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1505:22:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2679, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1505:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2682, - "mutability": "mutable", - "name": "_startSlot", - "nameLocation": "1544:10:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1537:17:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2681, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1537:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2684, - "mutability": "mutable", - "name": "_endSlot", - "nameLocation": "1571:8:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1564:15:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2683, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1564:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2686, - "mutability": "mutable", - "name": "_homeAMB", - "nameLocation": "1597:8:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1589:16:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2685, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1589:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2688, - "mutability": "mutable", - "name": "_owner", - "nameLocation": "1623:6:12", - "nodeType": "VariableDeclaration", - "scope": 2721, - "src": "1615:14:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2687, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1615:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1430:205:12" - }, - "returnParameters": { - "id": 2693, - "nodeType": "ParameterList", - "parameters": [], - "src": "1675:0:12" - }, - "scope": 2853, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 2732, - "nodeType": "FunctionDefinition", - "src": "1924:129:12", - "nodes": [], - "body": { - "id": 2731, - "nodeType": "Block", - "src": "1980:73:12", - "nodes": [], - "statements": [ - { - "expression": { - "id": 2729, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2726, - "name": "executeAffirmationsEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2674, - "src": "1990:26:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2728, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2019:27:12", - "subExpression": { - "id": 2727, - "name": "executeAffirmationsEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2674, - "src": "2020:26:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1990:56:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2730, - "nodeType": "ExpressionStatement", - "src": "1990:56:12" - } - ] - }, - "functionSelector": "a27c0863", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 2724, - "kind": "modifierInvocation", - "modifierName": { - "id": 2723, - "name": "onlyOwner", - "nameLocations": [ - "1970:9:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 31516, - "src": "1970:9:12" - }, - "nodeType": "ModifierInvocation", - "src": "1970:9:12" - } - ], - "name": "toggleExecuteAffirmations", - "nameLocation": "1933:25:12", - "parameters": { - "id": 2722, - "nodeType": "ParameterList", - "parameters": [], - "src": "1958:2:12" - }, - "returnParameters": { - "id": 2725, - "nodeType": "ParameterList", - "parameters": [], - "src": "1980:0:12" - }, - "scope": 2853, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 2757, - "nodeType": "FunctionDefinition", - "src": "2059:353:12", - "nodes": [], - "body": { - "id": 2756, - "nodeType": "Block", - "src": "2135:277:12", - "nodes": [], - "statements": [ - { - "expression": { - "id": 2752, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2739, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2672, - "src": "2145:14:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2742, - "name": "EVENT_SOURCE_CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2661, - "src": "2201:21:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 2743, - "name": "EVENT_SOURCE_ADDRESS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2663, - "src": "2236:20:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 2746, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "2278:4:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyValidator_$2853", - "typeString": "contract TelepathyValidator" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TelepathyValidator_$2853", - "typeString": "contract TelepathyValidator" - } - ], - "id": 2745, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2270:7:12", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 2744, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2270:7:12", - "typeDescriptions": {} - } - }, - "id": 2747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2270:13:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2748, - "name": "AFFIRMATION_EVENT_SIG", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2659, - "src": "2297:21:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2749, - "name": "START_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2665, - "src": "2332:10:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 2750, - "name": "END_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2667, - "src": "2356:8:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "id": 2740, - "name": "telepathyPubSub", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49279, - "src": "2162:15:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TelepathyPubSub_$48583", - "typeString": "contract TelepathyPubSub" - } - }, - "id": 2741, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2178:9:12", - "memberName": "subscribe", - "nodeType": "MemberAccess", - "referencedDeclaration": 49082, - "src": "2162:25:12", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_address_$_t_address_$_t_bytes32_$_t_uint64_$_t_uint64_$returns$_t_bytes32_$", - "typeString": "function (uint32,address,address,bytes32,uint64,uint64) external returns (bytes32)" - } - }, - "id": 2751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2162:212:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "2145:229:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 2753, - "nodeType": "ExpressionStatement", - "src": "2145:229:12" - }, - { - "expression": { - "id": 2754, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2672, - "src": "2391:14:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 2738, - "id": 2755, - "nodeType": "Return", - "src": "2384:21:12" - } - ] - }, - "functionSelector": "0908a386", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 2735, - "kind": "modifierInvocation", - "modifierName": { - "id": 2734, - "name": "onlyOwner", - "nameLocations": [ - "2107:9:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 31516, - "src": "2107:9:12" - }, - "nodeType": "ModifierInvocation", - "src": "2107:9:12" - } - ], - "name": "subscribeToAffirmationEvent", - "nameLocation": "2068:27:12", - "parameters": { - "id": 2733, - "nodeType": "ParameterList", - "parameters": [], - "src": "2095:2:12" - }, - "returnParameters": { - "id": 2738, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2737, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 2757, - "src": "2126:7:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2736, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2126:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2125:9:12" - }, - "scope": 2853, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 2852, - "nodeType": "FunctionDefinition", - "src": "2636:985:12", - "nodes": [], - "body": { - "id": 2851, - "nodeType": "Block", - "src": "2875:746:12", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 2777, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2775, - "name": "_sourceChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2762, - "src": "2889:14:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 2776, - "name": "EVENT_SOURCE_CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2661, - "src": "2907:21:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "2889:39:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2783, - "nodeType": "IfStatement", - "src": "2885:111:12", - "trueBody": { - "id": 2782, - "nodeType": "Block", - "src": "2930:66:12", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2779, - "name": "_sourceChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2762, - "src": "2970:14:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 2778, - "name": "InvalidSourceChain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2641, - "src": "2951:18:12", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint32_$returns$__$", - "typeString": "function (uint32) pure" - } - }, - "id": 2780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2951:34:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2781, - "nodeType": "RevertStatement", - "src": "2944:41:12" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 2786, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2784, - "name": "_sourceAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2764, - "src": "3010:14:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 2785, - "name": "EVENT_SOURCE_ADDRESS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2663, - "src": "3028:20:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3010:38:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2792, - "nodeType": "IfStatement", - "src": "3006:112:12", - "trueBody": { - "id": 2791, - "nodeType": "Block", - "src": "3050:68:12", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2788, - "name": "_sourceAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2764, - "src": "3092:14:12", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 2787, - "name": "InvalidSourceAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2645, - "src": "3071:20:12", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" - } - }, - "id": 2789, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3071:36:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2790, - "nodeType": "RevertStatement", - "src": "3064:43:12" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 2795, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2793, - "name": "_slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2766, - "src": "3132:5:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 2794, - "name": "START_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2665, - "src": "3140:10:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "3132:18:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2802, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 2798, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2796, - "name": "END_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2667, - "src": "3155:8:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 2797, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3167:1:12", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3155:13:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 2801, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2799, - "name": "_slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2766, - "src": "3172:5:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 2800, - "name": "END_SLOT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2667, - "src": "3180:8:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "3172:16:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3155:33:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 2803, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3154:35:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3132:57:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2810, - "nodeType": "IfStatement", - "src": "3128:113:12", - "trueBody": { - "id": 2809, - "nodeType": "Block", - "src": "3191:50:12", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2806, - "name": "_slot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2766, - "src": "3224:5:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 2805, - "name": "InvalidSlot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2649, - "src": "3212:11:12", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint64_$returns$__$", - "typeString": "function (uint64) pure" - } - }, - "id": 2807, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3212:18:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2808, - "nodeType": "RevertStatement", - "src": "3205:25:12" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 2813, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2811, - "name": "_subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2760, - "src": "3255:15:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 2812, - "name": "subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2672, - "src": "3274:14:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3255:33:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2819, - "nodeType": "IfStatement", - "src": "3251:109:12", - "trueBody": { - "id": 2818, - "nodeType": "Block", - "src": "3290:70:12", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2815, - "name": "_subscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2760, - "src": "3333:15:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 2814, - "name": "InvalidSubscriptionId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2653, - "src": "3311:21:12", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", - "typeString": "function (bytes32) pure" - } - }, - "id": 2816, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3311:38:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2817, - "nodeType": "RevertStatement", - "src": "3304:45:12" - } - ] - } - }, - { - "assignments": [ - 2821, - 2823 - ], - "declarations": [ - { - "constant": false, - "id": 2821, - "mutability": "mutable", - "name": "header", - "nameLocation": "3384:6:12", - "nodeType": "VariableDeclaration", - "scope": 2851, - "src": "3371:19:12", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2820, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3371:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2823, - "mutability": "mutable", - "name": "data", - "nameLocation": "3405:4:12", - "nodeType": "VariableDeclaration", - "scope": 2851, - "src": "3392:17:12", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2822, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3392:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 2833, - "initialValue": { - "arguments": [ - { - "id": 2826, - "name": "eventdata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2771, - "src": "3424:9:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "components": [ - { - "id": 2828, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3436:5:12", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 2827, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3436:5:12", - "typeDescriptions": {} - } - }, - { - "id": 2830, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3443:5:12", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 2829, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3443:5:12", - "typeDescriptions": {} - } - } - ], - "id": 2831, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3435:14:12", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", - "typeString": "tuple(type(bytes storage pointer),type(bytes storage pointer))" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", - "typeString": "tuple(type(bytes storage pointer),type(bytes storage pointer))" - } - ], - "expression": { - "id": 2824, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3413:3:12", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 2825, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3417:6:12", - "memberName": "decode", - "nodeType": "MemberAccess", - "src": "3413:10:12", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 2832, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3413:37:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bytes memory,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3370:80:12" - }, - { - "condition": { - "id": 2834, - "name": "executeAffirmationsEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2674, - "src": "3465:26:12", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2842, - "nodeType": "IfStatement", - "src": "3461:90:12", - "trueBody": { - "id": 2841, - "nodeType": "Block", - "src": "3493:58:12", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 2838, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2823, - "src": "3535:4:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "id": 2835, - "name": "HOME_AMB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2670, - "src": "3507:8:12", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IBasicHomeAMB_$2859", - "typeString": "contract IBasicHomeAMB" - } - }, - "id": 2837, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3516:18:12", - "memberName": "executeAffirmation", - "nodeType": "MemberAccess", - "referencedDeclaration": 2858, - "src": "3507:27:12", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes memory) external" - } - }, - "id": 2839, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3507:33:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2840, - "nodeType": "ExpressionStatement", - "src": "3507:33:12" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "baseExpression": { - "id": 2844, - "name": "eventTopics", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2769, - "src": "3585:11:12", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 2846, - "indexExpression": { - "hexValue": "31", - "id": 2845, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3597:1:12", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3585:14:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2847, - "name": "header", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2821, - "src": "3601:6:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "id": 2848, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2823, - "src": "3609:4:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 2843, - "name": "AffirmationHandled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2637, - "src": "3566:18:12", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes32,bytes memory,bytes memory)" - } - }, - "id": 2849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3566:48:12", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2850, - "nodeType": "EmitStatement", - "src": "3561:53:12" - } - ] - }, - "baseFunctions": [ - 49354 - ], - "documentation": { - "id": 2758, - "nodeType": "StructuredDocumentation", - "src": "2418:213:12", - "text": "@notice Handle the published affirmation event by executing the affirmation in the Home AMB.\n @dev We decode 'abi.encodePacked(header, _data)' to extract just the encoded message '_data' from the event." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "handlePublishImpl", - "nameLocation": "2645:17:12", - "overrides": { - "id": 2773, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2866:8:12" - }, - "parameters": { - "id": 2772, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2760, - "mutability": "mutable", - "name": "_subscriptionId", - "nameLocation": "2680:15:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2672:23:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2759, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2672:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2762, - "mutability": "mutable", - "name": "_sourceChainId", - "nameLocation": "2712:14:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2705:21:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2761, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2705:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2764, - "mutability": "mutable", - "name": "_sourceAddress", - "nameLocation": "2744:14:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2736:22:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2763, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2736:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2766, - "mutability": "mutable", - "name": "_slot", - "nameLocation": "2775:5:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2768:12:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2765, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2768:6:12", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2769, - "mutability": "mutable", - "name": "eventTopics", - "nameLocation": "2807:11:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2790:28:12", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 2767, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2790:7:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 2768, - "nodeType": "ArrayTypeName", - "src": "2790:9:12", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2771, - "mutability": "mutable", - "name": "eventdata", - "nameLocation": "2841:9:12", - "nodeType": "VariableDeclaration", - "scope": 2852, - "src": "2828:22:12", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2770, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2828:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "2662:194:12" - }, - "returnParameters": { - "id": 2774, - "nodeType": "ParameterList", - "parameters": [], - "src": "2875:0:12" - }, - "scope": 2853, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 2626, - "name": "SubscriptionReceiver", - "nameLocations": [ - "547:20:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49355, - "src": "547:20:12" - }, - "id": 2627, - "nodeType": "InheritanceSpecifier", - "src": "547:20:12" - }, - { - "baseName": { - "id": 2628, - "name": "Ownable", - "nameLocations": [ - "569:7:12" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 31597, - "src": "569:7:12" - }, - "id": 2629, - "nodeType": "InheritanceSpecifier", - "src": "569:7:12" - } - ], - "canonicalName": "TelepathyValidator", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 2625, - "nodeType": "StructuredDocumentation", - "src": "243:273:12", - "text": "@title TelepathyValidator\n @author Succinct Labs\n @notice A validator for the ETH (Foreign) -> Gnosis (Home) bridge that relies on the Telepathy Protocol\n for proof of consensus in verifying the UserRequestForAffirmation event was emitted on Ethereum." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 2853, - 31597, - 35292, - 49355, - 49264 - ], - "name": "TelepathyValidator", - "nameLocation": "525:18:12", - "scope": 2860, - "usedErrors": [ - 2641, - 2645, - 2649, - 2653, - 49276 - ] - }, - { - "id": 2859, - "nodeType": "ContractDefinition", - "src": "3625:93:12", - "nodes": [ - { - "id": 2858, - "nodeType": "FunctionDefinition", - "src": "3655:61:12", - "nodes": [], - "functionSelector": "e7a2c01f", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "executeAffirmation", - "nameLocation": "3664:18:12", - "parameters": { - "id": 2856, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2855, - "mutability": "mutable", - "name": "message", - "nameLocation": "3698:7:12", - "nodeType": "VariableDeclaration", - "scope": 2858, - "src": "3683:22:12", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2854, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3683:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "3682:24:12" - }, - "returnParameters": { - "id": 2857, - "nodeType": "ParameterList", - "parameters": [], - "src": "3715:0:12" - }, - "scope": 2859, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "IBasicHomeAMB", - "contractDependencies": [], - "contractKind": "interface", - "fullyImplemented": false, - "linearizedBaseContracts": [ - 2859 - ], - "name": "IBasicHomeAMB", - "nameLocation": "3635:13:12", - "scope": 2860, - "usedErrors": [] - } - ] - }, - "id": 12 -} \ No newline at end of file diff --git a/out/Timelock.sol/Timelock.json b/out/Timelock.sol/Timelock.json deleted file mode 100644 index bd28277..0000000 --- a/out/Timelock.sol/Timelock.json +++ /dev/null @@ -1,2330 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "minDelay", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "proposers", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "executors", - "type": "address[]" - }, - { - "internalType": "address", - "name": "admin", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "CallExecuted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "delay", - "type": "uint256" - } - ], - "name": "CallScheduled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "Cancelled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "oldDuration", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newDuration", - "type": "uint256" - } - ], - "name": "MinDelayChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "inputs": [], - "name": "CANCELLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "EXECUTOR_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PROPOSER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "TIMELOCK_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "cancel", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "payload", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "name": "execute", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "payloads", - "type": "bytes[]" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "name": "executeBatch", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "getMinDelay", - "outputs": [ - { - "internalType": "uint256", - "name": "duration", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "getTimestamp", - "outputs": [ - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "name": "hashOperation", - "outputs": [ - { - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "payloads", - "type": "bytes[]" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "name": "hashOperationBatch", - "outputs": [ - { - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "isOperation", - "outputs": [ - { - "internalType": "bool", - "name": "registered", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "isOperationDone", - "outputs": [ - { - "internalType": "bool", - "name": "done", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "isOperationPending", - "outputs": [ - { - "internalType": "bool", - "name": "pending", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "isOperationReady", - "outputs": [ - { - "internalType": "bool", - "name": "ready", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "onERC1155BatchReceived", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "onERC1155Received", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "onERC721Received", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "delay", - "type": "uint256" - } - ], - "name": "schedule", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "payloads", - "type": "bytes[]" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "delay", - "type": "uint256" - } - ], - "name": "scheduleBatch", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newDelay", - "type": "uint256" - } - ], - "name": "updateDelay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "bytecode": { - "object": "0x60806040523480156200001157600080fd5b506040516200231038038062002310833981016040819052620000349162000410565b8383838362000053600080516020620022908339815191528062000235565b6200007d600080516020620022b08339815191526000805160206200229083398151915262000235565b620000a7600080516020620022d08339815191526000805160206200229083398151915262000235565b620000d1600080516020620022f08339815191526000805160206200229083398151915262000235565b620000ec600080516020620022908339815191523062000280565b6001600160a01b03811615620001175762000117600080516020620022908339815191528262000280565b60005b83518110156200019d5762000161600080516020620022b08339815191528583815181106200014d576200014d62000497565b60200260200101516200028060201b60201c565b6200018a600080516020620022f08339815191528583815181106200014d576200014d62000497565b6200019581620004ad565b90506200011a565b5060005b8251811015620001e757620001d4600080516020620022d08339815191528483815181106200014d576200014d62000497565b620001df81620004ad565b9050620001a1565b5060028490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15050505050505050620004d5565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6200028c828262000290565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200028c576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002ec3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200035e57600080fd5b919050565b600082601f8301126200037557600080fd5b815160206001600160401b038083111562000394576200039462000330565b8260051b604051601f19603f83011681018181108482111715620003bc57620003bc62000330565b604052938452858101830193838101925087851115620003db57600080fd5b83870191505b848210156200040557620003f58262000346565b83529183019190830190620003e1565b979650505050505050565b600080600080608085870312156200042757600080fd5b845160208601519094506001600160401b03808211156200044757600080fd5b620004558883890162000363565b945060408701519150808211156200046c57600080fd5b506200047b8782880162000363565b9250506200048c6060860162000346565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b600060018201620004ce57634e487b7160e01b600052601160045260246000fd5b5060010190565b611dab80620004e56000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113c0565b6105f6565b005b3480156101f557600080fd5b50610209610204366004611434565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a236600461145e565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c9565b61076b565b3480156102d357600080fd5b506102f26102e2366004611597565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c9565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c9565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115fe565b610791565b34801561039857600080fd5b506102096103a73660046114c9565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115fe565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c9565b610857565b3480156103f857600080fd5b506101e76104073660046114c9565b61086d565b34801561041857600080fd5b5061025261042736600461145e565b610911565b34801561043857600080fd5b506101e761044736600461166e565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115fe565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b5061025261050436600461171f565b610acb565b34801561051557600080fd5b506102f2610524366004611846565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c9565b610b10565b34801561056157600080fd5b506102526105703660046114c9565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115fe565b610be5565b6101e76105b036600461171f565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118ef565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106789695949392919061197c565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f1e565b61071888888888610fba565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b9565b60405180910390a36107618161108d565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110c6565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610853828261114a565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e9695949392919061197c565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119eb565b8885146109b85760405162461bcd60e51b8152600401610840906119eb565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a2e565b9050602002016020810190610a2b9190611a44565b8d8d86818110610a3d57610a3d611a2e565b905060200201358c8c87818110610a5657610a56611a2e565b9050602002810190610a689190611a5f565b8c8b604051610a7c9695949392919061197c565b60405180910390a3610a8d81611abb565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b65565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b6838361114a565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119eb565b878414610c825760405162461bcd60e51b8152600401610840906119eb565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f1e565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a2e565b9050602002016020810190610cd49190611a44565b905060008a8a84818110610cea57610cea611a2e565b9050602002013590503660008a8a86818110610d0857610d08611a2e565b9050602002810190610d1a9190611a5f565b91509150610d2a84848484610fba565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b9565b60405180910390a35050505080610d7790611abb565b9050610ca3565b50610d888161108d565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c06565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610edc816111af565b610ee78360206111c1565b604051602001610ef8929190611c3d565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cb2565b610f278261076b565b610f435760405162461bcd60e51b815260040161084090611ce5565b801580610f5f5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fd7929190611d2f565b60006040518083038185875af1925050503d8060008114611014576040519150601f19603f3d011682016040523d82523d6000602084013e611019565b606091505b50509050806110865760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110968161076b565b6110b25760405162461bcd60e51b815260040161084090611ce5565b600090815260016020819052604090912055565b6110d08282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111063390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6111548282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606106b06001600160a01b03831660145b606060006111d0836002611d3f565b6111db906002611c06565b6001600160401b038111156111f2576111f26114e2565b6040519080825280601f01601f19166020018201604052801561121c576020820181803683370190505b509050600360fc1b8160008151811061123757611237611a2e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061126657611266611a2e565b60200101906001600160f81b031916908160001a905350600061128a846002611d3f565b611295906001611c06565b90505b600181111561130d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c9576112c9611a2e565b1a60f81b8282815181106112df576112df611a2e565b60200101906001600160f81b031916908160001a90535060049490941c9361130681611d5e565b9050611298565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461137357600080fd5b919050565b60008083601f84011261138a57600080fd5b5081356001600160401b038111156113a157600080fd5b6020830191508360208285010111156113b957600080fd5b9250929050565b600080600080600080600060c0888a0312156113db57600080fd5b6113e48861135c565b96506020880135955060408801356001600160401b0381111561140657600080fd5b6114128a828b01611378565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561144657600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147757600080fd5b6114808761135c565b95506020870135945060408701356001600160401b038111156114a257600080fd5b6114ae89828a01611378565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114db57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611520576115206114e2565b604052919050565b600082601f83011261153957600080fd5b81356001600160401b03811115611552576115526114e2565b611565601f8201601f19166020016114f8565b81815284602083860101111561157a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115ad57600080fd5b6115b68561135c565b93506115c46020860161135c565b92506040850135915060608501356001600160401b038111156115e657600080fd5b6115f287828801611528565b91505092959194509250565b6000806040838503121561161157600080fd5b823591506116216020840161135c565b90509250929050565b60008083601f84011261163c57600080fd5b5081356001600160401b0381111561165357600080fd5b6020830191508360208260051b85010111156113b957600080fd5b600080600080600080600080600060c08a8c03121561168c57600080fd5b89356001600160401b03808211156116a357600080fd5b6116af8d838e0161162a565b909b50995060208c01359150808211156116c857600080fd5b6116d48d838e0161162a565b909950975060408c01359150808211156116ed57600080fd5b506116fa8c828d0161162a565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173b57600080fd5b88356001600160401b038082111561175257600080fd5b61175e8c838d0161162a565b909a50985060208b013591508082111561177757600080fd5b6117838c838d0161162a565b909850965060408b013591508082111561179c57600080fd5b506117a98b828c0161162a565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d857600080fd5b813560206001600160401b038211156117f3576117f36114e2565b8160051b6118028282016114f8565b928352848101820192828101908785111561181c57600080fd5b83870192505b8483101561183b57823582529183019190830190611822565b979650505050505050565b600080600080600060a0868803121561185e57600080fd5b6118678661135c565b94506118756020870161135c565b935060408601356001600160401b038082111561189157600080fd5b61189d89838a016117c7565b945060608801359150808211156118b357600080fd5b6118bf89838a016117c7565b935060808801359150808211156118d557600080fd5b506118e288828901611528565b9150509295509295909350565b600080600080600060a0868803121561190757600080fd5b6119108661135c565b945061191e6020870161135c565b9350604086013592506060860135915060808601356001600160401b0381111561194757600080fd5b6118e288828901611528565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006119a460a083018688611953565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119e1606083018486611953565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a5657600080fd5b61078a8261135c565b6000808335601e19843603018112611a7657600080fd5b8301803591506001600160401b03821115611a9057600080fd5b6020019150368190038213156113b957600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611acd57611acd611aa5565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b585782840389528135601e19883603018112611b0f57600080fd5b870185810190356001600160401b03811115611b2a57600080fd5b803603821315611b3957600080fd5b611b44868284611953565b9a87019a9550505090840190600101611aee565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba6576001600160a01b03611b918461135c565b16825260209283019290910190600101611b78565b5083810360208501528881526001600160fb1b03891115611bc657600080fd5b8860051b9150818a60208301370182810360209081016040850152611bee9082018789611ad4565b60608401959095525050608001529695505050505050565b808201808211156106b0576106b0611aa5565b60005b83811015611c34578181015183820152602001611c1c565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c75816017850160208801611c19565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611ca6816028840160208801611c19565b01602801949350505050565b6020815260008251806020840152611cd1816040850160208701611c19565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d5957611d59611aa5565b500290565b600081611d6d57611d6d611aa5565b50600019019056fea2646970667358221220b844616ba7755911759550aa7ec2f72326fc02dcbea65f7b104671736ad141d464736f6c634300081000335f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783", - "sourceMap": "119:616:112:-:0;;;534:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;692:8;702:9;713;724:5;3238:55:50;-1:-1:-1;;;;;;;;;;;1162:32:50;3238:13;:55::i;:::-;3303:49;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3303:13:50;:49::i;:::-;3362;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3362:13:50;:49::i;:::-;3421:50;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3421:13:50;:50::i;:::-;3513:46;-1:-1:-1;;;;;;;;;;;3553:4:50;3513:10;:46::i;:::-;-1:-1:-1;;;;;3600:19:50;;;3596:88;;3635:38;-1:-1:-1;;;;;;;;;;;3667:5:50;3635:10;:38::i;:::-;3744:9;3739:165;3763:9;:16;3759:1;:20;3739:165;;;3800:39;-1:-1:-1;;;;;;;;;;;3826:9:50;3836:1;3826:12;;;;;;;;:::i;:::-;;;;;;;3800:10;;;:39;;:::i;:::-;3853:40;-1:-1:-1;;;;;;;;;;;3880:9:50;3890:1;3880:12;;;;;;;;:::i;3853:40::-;3781:3;;;:::i;:::-;;;3739:165;;;;3949:9;3944:111;3968:9;:16;3964:1;:20;3944:111;;;4005:39;-1:-1:-1;;;;;;;;;;;4031:9:50;4041:1;4031:12;;;;;;;;:::i;4005:39::-;3986:3;;;:::i;:::-;;;3944:111;;;-1:-1:-1;4065:9:50;:20;;;4100:27;;;4115:1;2573:25:146;;2629:2;2614:18;;2607:34;;;4100:27:50;;2546:18:146;4100:27:50;;;;;;;3089:1045;;;;534:199:112;;;;119:616;;7046:247:47;7129:25;4478:12;;;;;;;;;;;:22;;;;7185:34;;;;7234:52;;4478:22;;7185:34;;4478:22;;:12;;7234:52;;7129:25;7234:52;7119:174;7046:247;;:::o;6811:110::-;6889:25;6900:4;6906:7;6889:10;:25::i;:::-;6811:110;;:::o;7461:233::-;2981:4;3004:12;;;;;;;;;;;-1:-1:-1;;;;;3004:29:47;;;;;;;;;;;;7539:149;;7582:6;:12;;;;;;;;;;;-1:-1:-1;;;;;7582:29:47;;;;;;;;;:36;;-1:-1:-1;;7582:36:47;7614:4;7582:36;;;7664:12;719:10:68;;640:96;7664:12:47;-1:-1:-1;;;;;7637:40:47;7655:7;-1:-1:-1;;;;;7637:40:47;7649:4;7637:40;;;;;;;;;;7461:233;;:::o;14:127:146:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:177;225:13;;-1:-1:-1;;;;;267:31:146;;257:42;;247:70;;313:1;310;303:12;247:70;146:177;;;:::o;328:923::-;393:5;446:3;439:4;431:6;427:17;423:27;413:55;;464:1;461;454:12;413:55;487:13;;519:4;-1:-1:-1;;;;;572:10:146;;;569:36;;;585:18;;:::i;:::-;631:2;628:1;624:10;663:2;657:9;726:2;722:7;717:2;713;709:11;705:25;697:6;693:38;781:6;769:10;766:22;761:2;749:10;746:18;743:46;740:72;;;792:18;;:::i;:::-;828:2;821:22;878:18;;;954:15;;;950:24;;;912:15;;;;-1:-1:-1;986:15:146;;;983:35;;;1014:1;1011;1004:12;983:35;1050:2;1042:6;1038:15;1027:26;;1062:159;1078:6;1073:3;1070:15;1062:159;;;1144:34;1174:3;1144:34;:::i;:::-;1132:47;;1199:12;;;;1095;;;;1062:159;;;1239:6;328:923;-1:-1:-1;;;;;;;328:923:146:o;1256:761::-;1403:6;1411;1419;1427;1480:3;1468:9;1459:7;1455:23;1451:33;1448:53;;;1497:1;1494;1487:12;1448:53;1520:16;;1580:2;1565:18;;1559:25;1520:16;;-1:-1:-1;;;;;;1633:14:146;;;1630:34;;;1660:1;1657;1650:12;1630:34;1683:72;1747:7;1738:6;1727:9;1723:22;1683:72;:::i;:::-;1673:82;;1801:2;1790:9;1786:18;1780:25;1764:41;;1830:2;1820:8;1817:16;1814:36;;;1846:1;1843;1836:12;1814:36;;1869:74;1935:7;1924:8;1913:9;1909:24;1869:74;:::i;:::-;1859:84;;;1962:49;2007:2;1996:9;1992:18;1962:49;:::i;:::-;1952:59;;1256:761;;;;;;;:::o;2022:127::-;2083:10;2078:3;2074:20;2071:1;2064:31;2114:4;2111:1;2104:15;2138:4;2135:1;2128:15;2154:232;2193:3;2214:17;;;2211:140;;2273:10;2268:3;2264:20;2261:1;2254:31;2308:4;2305:1;2298:15;2336:4;2333:1;2326:15;2211:140;-1:-1:-1;2378:1:146;2367:13;;2154:232::o;2391:256::-;119:616:112;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113c0565b6105f6565b005b3480156101f557600080fd5b50610209610204366004611434565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a236600461145e565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c9565b61076b565b3480156102d357600080fd5b506102f26102e2366004611597565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c9565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c9565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115fe565b610791565b34801561039857600080fd5b506102096103a73660046114c9565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115fe565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c9565b610857565b3480156103f857600080fd5b506101e76104073660046114c9565b61086d565b34801561041857600080fd5b5061025261042736600461145e565b610911565b34801561043857600080fd5b506101e761044736600461166e565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115fe565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b5061025261050436600461171f565b610acb565b34801561051557600080fd5b506102f2610524366004611846565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c9565b610b10565b34801561056157600080fd5b506102526105703660046114c9565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115fe565b610be5565b6101e76105b036600461171f565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118ef565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106789695949392919061197c565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f1e565b61071888888888610fba565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b9565b60405180910390a36107618161108d565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110c6565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610853828261114a565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e9695949392919061197c565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119eb565b8885146109b85760405162461bcd60e51b8152600401610840906119eb565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a2e565b9050602002016020810190610a2b9190611a44565b8d8d86818110610a3d57610a3d611a2e565b905060200201358c8c87818110610a5657610a56611a2e565b9050602002810190610a689190611a5f565b8c8b604051610a7c9695949392919061197c565b60405180910390a3610a8d81611abb565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b65565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b6838361114a565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119eb565b878414610c825760405162461bcd60e51b8152600401610840906119eb565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f1e565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a2e565b9050602002016020810190610cd49190611a44565b905060008a8a84818110610cea57610cea611a2e565b9050602002013590503660008a8a86818110610d0857610d08611a2e565b9050602002810190610d1a9190611a5f565b91509150610d2a84848484610fba565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b9565b60405180910390a35050505080610d7790611abb565b9050610ca3565b50610d888161108d565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c06565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610edc816111af565b610ee78360206111c1565b604051602001610ef8929190611c3d565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cb2565b610f278261076b565b610f435760405162461bcd60e51b815260040161084090611ce5565b801580610f5f5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fd7929190611d2f565b60006040518083038185875af1925050503d8060008114611014576040519150601f19603f3d011682016040523d82523d6000602084013e611019565b606091505b50509050806110865760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110968161076b565b6110b25760405162461bcd60e51b815260040161084090611ce5565b600090815260016020819052604090912055565b6110d08282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111063390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6111548282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606106b06001600160a01b03831660145b606060006111d0836002611d3f565b6111db906002611c06565b6001600160401b038111156111f2576111f26114e2565b6040519080825280601f01601f19166020018201604052801561121c576020820181803683370190505b509050600360fc1b8160008151811061123757611237611a2e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061126657611266611a2e565b60200101906001600160f81b031916908160001a905350600061128a846002611d3f565b611295906001611c06565b90505b600181111561130d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c9576112c9611a2e565b1a60f81b8282815181106112df576112df611a2e565b60200101906001600160f81b031916908160001a90535060049490941c9361130681611d5e565b9050611298565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461137357600080fd5b919050565b60008083601f84011261138a57600080fd5b5081356001600160401b038111156113a157600080fd5b6020830191508360208285010111156113b957600080fd5b9250929050565b600080600080600080600060c0888a0312156113db57600080fd5b6113e48861135c565b96506020880135955060408801356001600160401b0381111561140657600080fd5b6114128a828b01611378565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561144657600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147757600080fd5b6114808761135c565b95506020870135945060408701356001600160401b038111156114a257600080fd5b6114ae89828a01611378565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114db57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611520576115206114e2565b604052919050565b600082601f83011261153957600080fd5b81356001600160401b03811115611552576115526114e2565b611565601f8201601f19166020016114f8565b81815284602083860101111561157a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115ad57600080fd5b6115b68561135c565b93506115c46020860161135c565b92506040850135915060608501356001600160401b038111156115e657600080fd5b6115f287828801611528565b91505092959194509250565b6000806040838503121561161157600080fd5b823591506116216020840161135c565b90509250929050565b60008083601f84011261163c57600080fd5b5081356001600160401b0381111561165357600080fd5b6020830191508360208260051b85010111156113b957600080fd5b600080600080600080600080600060c08a8c03121561168c57600080fd5b89356001600160401b03808211156116a357600080fd5b6116af8d838e0161162a565b909b50995060208c01359150808211156116c857600080fd5b6116d48d838e0161162a565b909950975060408c01359150808211156116ed57600080fd5b506116fa8c828d0161162a565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173b57600080fd5b88356001600160401b038082111561175257600080fd5b61175e8c838d0161162a565b909a50985060208b013591508082111561177757600080fd5b6117838c838d0161162a565b909850965060408b013591508082111561179c57600080fd5b506117a98b828c0161162a565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d857600080fd5b813560206001600160401b038211156117f3576117f36114e2565b8160051b6118028282016114f8565b928352848101820192828101908785111561181c57600080fd5b83870192505b8483101561183b57823582529183019190830190611822565b979650505050505050565b600080600080600060a0868803121561185e57600080fd5b6118678661135c565b94506118756020870161135c565b935060408601356001600160401b038082111561189157600080fd5b61189d89838a016117c7565b945060608801359150808211156118b357600080fd5b6118bf89838a016117c7565b935060808801359150808211156118d557600080fd5b506118e288828901611528565b9150509295509295909350565b600080600080600060a0868803121561190757600080fd5b6119108661135c565b945061191e6020870161135c565b9350604086013592506060860135915060808601356001600160401b0381111561194757600080fd5b6118e288828901611528565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006119a460a083018688611953565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119e1606083018486611953565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a5657600080fd5b61078a8261135c565b6000808335601e19843603018112611a7657600080fd5b8301803591506001600160401b03821115611a9057600080fd5b6020019150368190038213156113b957600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611acd57611acd611aa5565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b585782840389528135601e19883603018112611b0f57600080fd5b870185810190356001600160401b03811115611b2a57600080fd5b803603821315611b3957600080fd5b611b44868284611953565b9a87019a9550505090840190600101611aee565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba6576001600160a01b03611b918461135c565b16825260209283019290910190600101611b78565b5083810360208501528881526001600160fb1b03891115611bc657600080fd5b8860051b9150818a60208301370182810360209081016040850152611bee9082018789611ad4565b60608401959095525050608001529695505050505050565b808201808211156106b0576106b0611aa5565b60005b83811015611c34578181015183820152602001611c1c565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c75816017850160208801611c19565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611ca6816028840160208801611c19565b01602801949350505050565b6020815260008251806020840152611cd1816040850160208701611c19565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d5957611d59611aa5565b500290565b600081611d6d57611d6d611aa5565b50600019019056fea2646970667358221220b844616ba7755911759550aa7ec2f72326fc02dcbea65f7b104671736ad141d464736f6c63430008100033", - "sourceMap": "119:616:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7619:402:50;;;;;;;;;;-1:-1:-1;7619:402:50;;;;;:::i;:::-;;:::i;:::-;;4770:228;;;;;;;;;;-1:-1:-1;4770:228:50;;;;;:::i;:::-;;:::i;:::-;;;1763:14:146;;1756:22;1738:41;;1726:2;1711:18;4770:228:50;;;;;;;;1272:66;;;;;;;;;;;;1312:26;1272:66;;;;;1936:25:146;;;1924:2;1909:18;1272:66:50;1790:177:146;1116:78:50;;;;;;;;;;;;1162:32;1116:78;;10216:459;;;;;;:::i;:::-;;:::i;5580:208::-;;;;;;;;;;-1:-1:-1;5580:208:50;;;;;:::i;:::-;;:::i;13466:200::-;;;;;;;;;;-1:-1:-1;13466:200:50;;;;;:::i;:::-;-1:-1:-1;;;13466:200:50;;;;;;;;;;-1:-1:-1;;;;;;4502:33:146;;;4484:52;;4472:2;4457:18;13466:200:50;4340:202:146;4378:129:47;;;;;;;;;;-1:-1:-1;4378:129:47;;;;;:::i;:::-;4452:7;4478:12;;;;;;;;;;:22;;;;4378:129;5867:136:50;;;;;;;;;;-1:-1:-1;5867:136:50;;;;;:::i;:::-;5933:9;6250:15;;;1470:1;6250:15;;;;;;;;;5961:35;;5867:136;4803:145:47;;;;;;;;;;-1:-1:-1;4803:145:47;;;;;:::i;:::-;;:::i;5154:123:50:-;;;;;;;;;;-1:-1:-1;5154:123:50;;;;;:::i;:::-;;:::i;5912:214:47:-;;;;;;;;;;-1:-1:-1;5912:214:47;;;;;:::i;:::-;;:::i;5359:141:50:-;;;;;;;;;;-1:-1:-1;5359:141:50;;;;;:::i;:::-;;:::i;13156:236::-;;;;;;;;;;-1:-1:-1;13156:236:50;;;;;:::i;:::-;;:::i;6674:284::-;;;;;;;;;;-1:-1:-1;6674:284:50;;;;;:::i;:::-;;:::i;8275:713::-;;;;;;;;;;-1:-1:-1;8275:713:50;;;;;:::i;:::-;;:::i;1200:66::-;;;;;;;;;;;;1240:26;1200:66;;2895:145:47;;;;;;;;;;-1:-1:-1;2895:145:47;;;;;:::i;:::-;;:::i;2027:49::-;;;;;;;;;;-1:-1:-1;2027:49:47;2072:4;2027:49;;1344:68:50;;;;;;;;;;;;1385:27;1344:68;;7074:325;;;;;;;;;;-1:-1:-1;7074:325:50;;;;;:::i;:::-;;:::i;14042:247::-;;;;;;;;;;-1:-1:-1;14042:247:50;;;;;:::i;:::-;-1:-1:-1;;;14042:247:50;;;;;;;;9512:230;;;;;;;;;;-1:-1:-1;9512:230:50;;;;;:::i;:::-;;:::i;6151:121::-;;;;;;;;;;-1:-1:-1;6151:121:50;;;;;:::i;:::-;6214:17;6250:15;;;:11;:15;;;;;;;6151:121;5228:147:47;;;;;;;;;;-1:-1:-1;5228:147:47;;;;;:::i;:::-;;:::i;10935:883:50:-;;;;;;:::i;:::-;;:::i;13742:219::-;;;;;;;;;;-1:-1:-1;13742:219:50;;;;;:::i;:::-;-1:-1:-1;;;13742:219:50;;;;;;;;6458:103;;;;;;;;;;-1:-1:-1;6545:9:50;;6458:103;;7619:402;1240:26;2505:16:47;2516:4;2505:10;:16::i;:::-;7842:10:50::1;7855:53;7869:6;7877:5;7884:4;;7890:11;7903:4;7855:13;:53::i;:::-;7842:66;;7918:20;7928:2;7932:5;7918:9;:20::i;:::-;7971:1;7967:2;7953:61;7974:6;7982:5;7989:4;;7995:11;8008:5;7953:61;;;;;;;;;;;:::i;:::-;;;;;;;;7832:189;7619:402:::0;;;;;;;;:::o;4770:228::-;4879:4;-1:-1:-1;;;;;;4902:49:50;;-1:-1:-1;;;4902:49:50;;:89;;;4955:36;4979:11;4955:23;:36::i;:::-;4895:96;4770:228;-1:-1:-1;;4770:228:50:o;10216:459::-;1312:26;4473:25;4481:4;4495:1;4473:7;:25::i;:::-;4468:87;;4514:30;4525:4;719:10:68;4514::50;:30::i;:::-;10436:10:::1;10449:56;10463:6;10471:5;10478:7;;10487:11;10500:4;10449:13;:56::i;:::-;10436:69;;10516:28;10528:2;10532:11;10516;:28::i;:::-;10554:32;10563:6;10571:5;10578:7;;10554:8;:32::i;:::-;10618:1;10614:2;10601:43;10621:6;10629:5;10636:7;;10601:43;;;;;;;;;:::i;:::-;;;;;;;;10654:14;10665:2;10654:10;:14::i;:::-;10426:249;10216:459:::0;;;;;;;:::o;5580:208::-;5647:10;6250:15;;;:11;:15;;;;;;1470:1;5722:9;:27;:59;;;;;5766:15;5753:9;:28;;5722:59;5715:66;5580:208;-1:-1:-1;;;5580:208:50:o;4803:145:47:-;4452:7;4478:12;;;;;;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;4916:25:::1;4927:4;4933:7;4916:10;:25::i;:::-;4803:145:::0;;;:::o;5154:123:50:-;5216:15;6250;;;:11;:15;;;;;;5216;;5250:16;:20;;5154:123;-1:-1:-1;;5154:123:50:o;5912:214:47:-;-1:-1:-1;;;;;6007:23:47;;719:10:68;6007:23:47;5999:83;;;;-1:-1:-1;;;5999:83:47;;11826:2:146;5999:83:47;;;11808:21:146;11865:2;11845:18;;;11838:30;11904:34;11884:18;;;11877:62;-1:-1:-1;;;11955:18:146;;;11948:45;12010:19;;5999:83:47;;;;;;;;;6093:26;6105:4;6111:7;6093:11;:26::i;:::-;5912:214;;:::o;5359:141:50:-;5428:12;6250:15;;;1470:1;6250:15;;;;;;;;5459:16;6151:121;13156:236;13230:10;13252:4;13230:27;13222:83;;;;-1:-1:-1;;;13222:83:50;;12242:2:146;13222:83:50;;;12224:21:146;12281:2;12261:18;;;12254:30;12320:34;12300:18;;;12293:62;-1:-1:-1;;;12371:18:146;;;12364:41;12422:19;;13222:83:50;12040:407:146;13222:83:50;13335:9;;13320:35;;;12626:25:146;;;12682:2;12667:18;;12660:34;;;13320:35:50;;12599:18:146;13320:35:50;;;;;;;13365:9;:20;13156:236::o;6674:284::-;6859:12;6911:6;6919:5;6926:4;;6932:11;6945:4;6900:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6890:61;;;;;;6883:68;;6674:284;;;;;;;;:::o;8275:713::-;1240:26;2505:16:47;2516:4;2505:10;:16::i;:::-;8541:31:50;;::::1;8533:79;;;;-1:-1:-1::0;;;8533:79:50::1;;;;;;;:::i;:::-;8630:33:::0;;::::1;8622:81;;;;-1:-1:-1::0;;;8622:81:50::1;;;;;;;:::i;:::-;8714:10;8727:64;8746:7;;8755:6;;8763:8;;8773:11;8786:4;8727:18;:64::i;:::-;8714:77;;8801:20;8811:2;8815:5;8801:9;:20::i;:::-;8836:9;8831:151;8851:18:::0;;::::1;8831:151;;;8913:1;8909:2;8895:76;8916:7;;8924:1;8916:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8928:6;;8935:1;8928:9;;;;;;;:::i;:::-;;;;;;;8939:8;;8948:1;8939:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;8952;8965:5;8895:76;;;;;;;;;;;:::i;:::-;;;;;;;;8871:3;::::0;::::1;:::i;:::-;;;8831:151;;;;8523:465;8275:713:::0;;;;;;;;;;:::o;2895:145:47:-;2981:4;3004:12;;;;;;;;;;;-1:-1:-1;;;;;3004:29:47;;;;;;;;;;;;;;;2895:145::o;7074:325:50:-;7294:12;7346:7;;7355:6;;7363:8;;7373:11;7386:4;7335:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7325:67;;;;;;7318:74;;7074:325;;;;;;;;;;:::o;9512:230::-;1385:27;2505:16:47;2516:4;2505:10;:16::i;:::-;9598:22:50::1;9617:2;9598:18;:22::i;:::-;9590:84;;;::::0;-1:-1:-1;;;9590:84:50;;17464:2:146;9590:84:50::1;::::0;::::1;17446:21:146::0;17503:2;17483:18;;;17476:30;17542:34;17522:18;;;17515:62;-1:-1:-1;;;17593:18:146;;;17586:47;17650:19;;9590:84:50::1;17262:413:146::0;9590:84:50::1;9691:15;::::0;;;:11:::1;:15;::::0;;;;;9684:22;;;9722:13;9703:2;;9722:13:::1;::::0;::::1;9512:230:::0;;:::o;5228:147:47:-;4452:7;4478:12;;;;;;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;5342:26:::1;5354:4;5360:7;5342:11;:26::i;10935:883:50:-:0;1312:26;4473:25;4481:4;4495:1;4473:7;:25::i;:::-;4468:87;;4514:30;4525:4;719:10:68;4514::50;:30::i;:::-;11195:31;;::::1;11187:79;;;;-1:-1:-1::0;;;11187:79:50::1;;;;;;;:::i;:::-;11284:33:::0;;::::1;11276:81;;;;-1:-1:-1::0;;;11276:81:50::1;;;;;;;:::i;:::-;11368:10;11381:64;11400:7;;11409:6;;11417:8;;11427:11;11440:4;11381:18;:64::i;:::-;11368:77;;11456:28;11468:2;11472:11;11456;:28::i;:::-;11499:9;11494:294;11514:18:::0;;::::1;11494:294;;;11553:14;11570:7;;11578:1;11570:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11553:27;;11594:13;11610:6;;11617:1;11610:9;;;;;;;:::i;:::-;;;;;;;11594:25;;11633:22;;11658:8;;11667:1;11658:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;11633:36;;;;11683:32;11692:6;11700:5;11707:7;;11683:8;:32::i;:::-;11751:1;11747:2;11734:43;11754:6;11762:5;11769:7;;11734:43;;;;;;;;;:::i;:::-;;;;;;;;11539:249;;;;11534:3;;;;:::i;:::-;;;11494:294;;;;11797:14;11808:2;11797:10;:14::i;:::-;11177:641;10935:883:::0;;;;;;;;;:::o;3334:103:47:-;3400:30;3411:4;719:10:68;4514::50;:30::i;3400::47:-;3334:103;:::o;9089:281:50:-;9162:15;9174:2;9162:11;:15::i;:::-;9161:16;9153:76;;;;-1:-1:-1;;;9153:76:50;;17882:2:146;9153:76:50;;;17864:21:146;17921:2;17901:18;;;17894:30;17960:34;17940:18;;;17933:62;-1:-1:-1;;;18011:18:146;;;18004:45;18066:19;;9153:76:50;17680:411:146;9153:76:50;6545:9;;9247:5;:22;;9239:73;;;;-1:-1:-1;;;9239:73:50;;18298:2:146;9239:73:50;;;18280:21:146;18337:2;18317:18;;;18310:30;18376:34;18356:18;;;18349:62;-1:-1:-1;;;18427:18:146;;;18420:36;18473:19;;9239:73:50;18096:402:146;9239:73:50;9340:23;9358:5;9340:15;:23;:::i;:::-;9322:15;;;;:11;:15;;;;;;:41;;;;-1:-1:-1;9089:281:50:o;2606:202:47:-;2691:4;-1:-1:-1;;;;;;2714:47:47;;-1:-1:-1;;;2714:47:47;;:87;;-1:-1:-1;;;;;;;;;;937:40:71;;;2765:36:47;829:155:71;3718:479:47;3806:22;3814:4;3820:7;3806;:22::i;:::-;3801:390;;3989:28;4009:7;3989:19;:28::i;:::-;4088:38;4116:4;4123:2;4088:19;:38::i;:::-;3896:252;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3896:252:47;;;;;;;;;;-1:-1:-1;;;3844:336:47;;;;;;;:::i;12229:277:50:-;12314:20;12331:2;12314:16;:20::i;:::-;12306:75;;;;-1:-1:-1;;;12306:75:50;;;;;;;:::i;:::-;12399:25;;;:57;;-1:-1:-1;5933:9:50;6250:15;;;1470:1;6250:15;;;;;;;;;5961:35;12428:28;12391:108;;;;-1:-1:-1;;;12391:108:50;;20719:2:146;12391:108:50;;;20701:21:146;20758:2;20738:18;;;20731:30;20797:34;20777:18;;;20770:62;-1:-1:-1;;;20848:18:146;;;20841:36;20894:19;;12391:108:50;20517:402:146;11881:265:50;12009:12;12027:6;-1:-1:-1;;;;;12027:11:50;12046:5;12053:4;;12027:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12008:50;;;12076:7;12068:71;;;;-1:-1:-1;;;12068:71:50;;21402:2:146;12068:71:50;;;21384:21:146;21441:2;21421:18;;;21414:30;21480:34;21460:18;;;21453:62;-1:-1:-1;;;21531:18:146;;;21524:49;21590:19;;12068:71:50;21200:415:146;12068:71:50;11998:148;11881:265;;;;:::o;12588:175::-;12646:20;12663:2;12646:16;:20::i;:::-;12638:75;;;;-1:-1:-1;;;12638:75:50;;;;;;;:::i;:::-;12723:15;;;;1470:1;12723:15;;;;;;;;:33;12588:175::o;7461:233:47:-;7544:22;7552:4;7558:7;7544;:22::i;:::-;7539:149;;7582:6;:12;;;;;;;;;;;-1:-1:-1;;;;;7582:29:47;;;;;;;;;:36;;-1:-1:-1;;7582:36:47;7614:4;7582:36;;;7664:12;719:10:68;;640:96;7664:12:47;-1:-1:-1;;;;;7637:40:47;7655:7;-1:-1:-1;;;;;7637:40:47;7649:4;7637:40;;;;;;;;;;7461:233;;:::o;7865:234::-;7948:22;7956:4;7962:7;7948;:22::i;:::-;7944:149;;;8018:5;7986:12;;;;;;;;;;;-1:-1:-1;;;;;7986:29:47;;;;;;;;;;:37;;-1:-1:-1;;7986:37:47;;;8042:40;719:10:68;;7986:12:47;;8042:40;;8018:5;8042:40;7865:234;;:::o;2102:149:70:-;2160:13;2192:52;-1:-1:-1;;;;;2204:22:70;;311:2;1513:437;1588:13;1613:19;1645:10;1649:6;1645:1;:10;:::i;:::-;:14;;1658:1;1645:14;:::i;:::-;-1:-1:-1;;;;;1635:25:70;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1635:25:70;;1613:47;;-1:-1:-1;;;1670:6:70;1677:1;1670:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1670:15:70;;;;;;;;;-1:-1:-1;;;1695:6:70;1702:1;1695:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1695:15:70;;;;;;;;-1:-1:-1;1725:9:70;1737:10;1741:6;1737:1;:10;:::i;:::-;:14;;1750:1;1737:14;:::i;:::-;1725:26;;1720:128;1757:1;1753;:5;1720:128;;;-1:-1:-1;;;1800:5:70;1808:3;1800:11;1791:21;;;;;;;:::i;:::-;;;;1779:6;1786:1;1779:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1779:33:70;;;;;;;;-1:-1:-1;1836:1:70;1826:11;;;;;1760:3;;;:::i;:::-;;;1720:128;;;-1:-1:-1;1865:10:70;;1857:55;;;;-1:-1:-1;;;1857:55:70;;22136:2:146;1857:55:70;;;22118:21:146;;;22155:18;;;22148:30;22214:34;22194:18;;;22187:62;22266:18;;1857:55:70;21934:356:146;14:173;82:20;;-1:-1:-1;;;;;131:31:146;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:347::-;243:8;253:6;307:3;300:4;292:6;288:17;284:27;274:55;;325:1;322;315:12;274:55;-1:-1:-1;348:20:146;;-1:-1:-1;;;;;380:30:146;;377:50;;;423:1;420;413:12;377:50;460:4;452:6;448:17;436:29;;512:3;505:4;496:6;488;484:19;480:30;477:39;474:59;;;529:1;526;519:12;474:59;192:347;;;;;:::o;544:758::-;659:6;667;675;683;691;699;707;760:3;748:9;739:7;735:23;731:33;728:53;;;777:1;774;767:12;728:53;800:29;819:9;800:29;:::i;:::-;790:39;;876:2;865:9;861:18;848:32;838:42;;931:2;920:9;916:18;903:32;-1:-1:-1;;;;;950:6:146;947:30;944:50;;;990:1;987;980:12;944:50;1029:58;1079:7;1070:6;1059:9;1055:22;1029:58;:::i;:::-;544:758;;;;-1:-1:-1;1106:8:146;1188:2;1173:18;;1160:32;;1239:3;1224:19;;1211:33;;-1:-1:-1;1291:3:146;1276:19;;;1263:33;;-1:-1:-1;544:758:146;-1:-1:-1;;;;544:758:146:o;1307:286::-;1365:6;1418:2;1406:9;1397:7;1393:23;1389:32;1386:52;;;1434:1;1431;1424:12;1386:52;1460:23;;-1:-1:-1;;;;;;1512:32:146;;1502:43;;1492:71;;1559:1;1556;1549:12;1972:689;2078:6;2086;2094;2102;2110;2118;2171:3;2159:9;2150:7;2146:23;2142:33;2139:53;;;2188:1;2185;2178:12;2139:53;2211:29;2230:9;2211:29;:::i;:::-;2201:39;;2287:2;2276:9;2272:18;2259:32;2249:42;;2342:2;2331:9;2327:18;2314:32;-1:-1:-1;;;;;2361:6:146;2358:30;2355:50;;;2401:1;2398;2391:12;2355:50;2440:58;2490:7;2481:6;2470:9;2466:22;2440:58;:::i;:::-;1972:689;;;;-1:-1:-1;2517:8:146;2599:2;2584:18;;2571:32;;2650:3;2635:19;;;2622:33;;-1:-1:-1;1972:689:146;-1:-1:-1;;;;1972:689:146:o;2666:180::-;2725:6;2778:2;2766:9;2757:7;2753:23;2749:32;2746:52;;;2794:1;2791;2784:12;2746:52;-1:-1:-1;2817:23:146;;2666:180;-1:-1:-1;2666:180:146:o;2851:127::-;2912:10;2907:3;2903:20;2900:1;2893:31;2943:4;2940:1;2933:15;2967:4;2964:1;2957:15;2983:275;3054:2;3048:9;3119:2;3100:13;;-1:-1:-1;;3096:27:146;3084:40;;-1:-1:-1;;;;;3139:34:146;;3175:22;;;3136:62;3133:88;;;3201:18;;:::i;:::-;3237:2;3230:22;2983:275;;-1:-1:-1;2983:275:146:o;3263:530::-;3305:5;3358:3;3351:4;3343:6;3339:17;3335:27;3325:55;;3376:1;3373;3366:12;3325:55;3412:6;3399:20;-1:-1:-1;;;;;3434:2:146;3431:26;3428:52;;;3460:18;;:::i;:::-;3504:55;3547:2;3528:13;;-1:-1:-1;;3524:27:146;3553:4;3520:38;3504:55;:::i;:::-;3584:2;3575:7;3568:19;3630:3;3623:4;3618:2;3610:6;3606:15;3602:26;3599:35;3596:55;;;3647:1;3644;3637:12;3596:55;3712:2;3705:4;3697:6;3693:17;3686:4;3677:7;3673:18;3660:55;3760:1;3735:16;;;3753:4;3731:27;3724:38;;;;3739:7;3263:530;-1:-1:-1;;;3263:530:146:o;3798:537::-;3893:6;3901;3909;3917;3970:3;3958:9;3949:7;3945:23;3941:33;3938:53;;;3987:1;3984;3977:12;3938:53;4010:29;4029:9;4010:29;:::i;:::-;4000:39;;4058:38;4092:2;4081:9;4077:18;4058:38;:::i;:::-;4048:48;;4143:2;4132:9;4128:18;4115:32;4105:42;;4198:2;4187:9;4183:18;4170:32;-1:-1:-1;;;;;4217:6:146;4214:30;4211:50;;;4257:1;4254;4247:12;4211:50;4280:49;4321:7;4312:6;4301:9;4297:22;4280:49;:::i;:::-;4270:59;;;3798:537;;;;;;;:::o;4547:254::-;4615:6;4623;4676:2;4664:9;4655:7;4651:23;4647:32;4644:52;;;4692:1;4689;4682:12;4644:52;4728:9;4715:23;4705:33;;4757:38;4791:2;4780:9;4776:18;4757:38;:::i;:::-;4747:48;;4547:254;;;;;:::o;4991:367::-;5054:8;5064:6;5118:3;5111:4;5103:6;5099:17;5095:27;5085:55;;5136:1;5133;5126:12;5085:55;-1:-1:-1;5159:20:146;;-1:-1:-1;;;;;5191:30:146;;5188:50;;;5234:1;5231;5224:12;5188:50;5271:4;5263:6;5259:17;5247:29;;5331:3;5324:4;5314:6;5311:1;5307:14;5299:6;5295:27;5291:38;5288:47;5285:67;;;5348:1;5345;5338:12;5363:1306;5559:6;5567;5575;5583;5591;5599;5607;5615;5623;5676:3;5664:9;5655:7;5651:23;5647:33;5644:53;;;5693:1;5690;5683:12;5644:53;5733:9;5720:23;-1:-1:-1;;;;;5803:2:146;5795:6;5792:14;5789:34;;;5819:1;5816;5809:12;5789:34;5858:70;5920:7;5911:6;5900:9;5896:22;5858:70;:::i;:::-;5947:8;;-1:-1:-1;5832:96:146;-1:-1:-1;6035:2:146;6020:18;;6007:32;;-1:-1:-1;6051:16:146;;;6048:36;;;6080:1;6077;6070:12;6048:36;6119:72;6183:7;6172:8;6161:9;6157:24;6119:72;:::i;:::-;6210:8;;-1:-1:-1;6093:98:146;-1:-1:-1;6298:2:146;6283:18;;6270:32;;-1:-1:-1;6314:16:146;;;6311:36;;;6343:1;6340;6333:12;6311:36;;6382:72;6446:7;6435:8;6424:9;6420:24;6382:72;:::i;:::-;5363:1306;;;;-1:-1:-1;5363:1306:146;;;;6473:8;;6555:2;6540:18;;6527:32;;6606:3;6591:19;;6578:33;;-1:-1:-1;6658:3:146;6643:19;6630:33;;-1:-1:-1;5363:1306:146;-1:-1:-1;;;;5363:1306:146:o;6674:1237::-;6861:6;6869;6877;6885;6893;6901;6909;6917;6970:3;6958:9;6949:7;6945:23;6941:33;6938:53;;;6987:1;6984;6977:12;6938:53;7027:9;7014:23;-1:-1:-1;;;;;7097:2:146;7089:6;7086:14;7083:34;;;7113:1;7110;7103:12;7083:34;7152:70;7214:7;7205:6;7194:9;7190:22;7152:70;:::i;:::-;7241:8;;-1:-1:-1;7126:96:146;-1:-1:-1;7329:2:146;7314:18;;7301:32;;-1:-1:-1;7345:16:146;;;7342:36;;;7374:1;7371;7364:12;7342:36;7413:72;7477:7;7466:8;7455:9;7451:24;7413:72;:::i;:::-;7504:8;;-1:-1:-1;7387:98:146;-1:-1:-1;7592:2:146;7577:18;;7564:32;;-1:-1:-1;7608:16:146;;;7605:36;;;7637:1;7634;7627:12;7605:36;;7676:72;7740:7;7729:8;7718:9;7714:24;7676:72;:::i;:::-;6674:1237;;;;-1:-1:-1;6674:1237:146;;;;7767:8;;7849:2;7834:18;;7821:32;;7900:3;7885:19;7872:33;;-1:-1:-1;6674:1237:146;-1:-1:-1;;;;6674:1237:146:o;7916:712::-;7970:5;8023:3;8016:4;8008:6;8004:17;8000:27;7990:55;;8041:1;8038;8031:12;7990:55;8077:6;8064:20;8103:4;-1:-1:-1;;;;;8122:2:146;8119:26;8116:52;;;8148:18;;:::i;:::-;8194:2;8191:1;8187:10;8217:28;8241:2;8237;8233:11;8217:28;:::i;:::-;8279:15;;;8349;;;8345:24;;;8310:12;;;;8381:15;;;8378:35;;;8409:1;8406;8399:12;8378:35;8445:2;8437:6;8433:15;8422:26;;8457:142;8473:6;8468:3;8465:15;8457:142;;;8539:17;;8527:30;;8490:12;;;;8577;;;;8457:142;;;8617:5;7916:712;-1:-1:-1;;;;;;;7916:712:146:o;8633:943::-;8787:6;8795;8803;8811;8819;8872:3;8860:9;8851:7;8847:23;8843:33;8840:53;;;8889:1;8886;8879:12;8840:53;8912:29;8931:9;8912:29;:::i;:::-;8902:39;;8960:38;8994:2;8983:9;8979:18;8960:38;:::i;:::-;8950:48;;9049:2;9038:9;9034:18;9021:32;-1:-1:-1;;;;;9113:2:146;9105:6;9102:14;9099:34;;;9129:1;9126;9119:12;9099:34;9152:61;9205:7;9196:6;9185:9;9181:22;9152:61;:::i;:::-;9142:71;;9266:2;9255:9;9251:18;9238:32;9222:48;;9295:2;9285:8;9282:16;9279:36;;;9311:1;9308;9301:12;9279:36;9334:63;9389:7;9378:8;9367:9;9363:24;9334:63;:::i;:::-;9324:73;;9450:3;9439:9;9435:19;9422:33;9406:49;;9480:2;9470:8;9467:16;9464:36;;;9496:1;9493;9486:12;9464:36;;9519:51;9562:7;9551:8;9540:9;9536:24;9519:51;:::i;:::-;9509:61;;;8633:943;;;;;;;;:::o;9763:606::-;9867:6;9875;9883;9891;9899;9952:3;9940:9;9931:7;9927:23;9923:33;9920:53;;;9969:1;9966;9959:12;9920:53;9992:29;10011:9;9992:29;:::i;:::-;9982:39;;10040:38;10074:2;10063:9;10059:18;10040:38;:::i;:::-;10030:48;;10125:2;10114:9;10110:18;10097:32;10087:42;;10176:2;10165:9;10161:18;10148:32;10138:42;;10231:3;10220:9;10216:19;10203:33;-1:-1:-1;;;;;10251:6:146;10248:30;10245:50;;;10291:1;10288;10281:12;10245:50;10314:49;10355:7;10346:6;10335:9;10331:22;10314:49;:::i;10374:266::-;10462:6;10457:3;10450:19;10514:6;10507:5;10500:4;10495:3;10491:14;10478:43;-1:-1:-1;10566:1:146;10541:16;;;10559:4;10537:27;;;10530:38;;;;10622:2;10601:15;;;-1:-1:-1;;10597:29:146;10588:39;;;10584:50;;10374:266::o;10645:557::-;10943:1;10939;10934:3;10930:11;10926:19;10918:6;10914:32;10903:9;10896:51;10983:6;10978:2;10967:9;10963:18;10956:34;11026:3;11021:2;11010:9;11006:18;10999:31;10877:4;11047:62;11104:3;11093:9;11089:19;11081:6;11073;11047:62;:::i;:::-;11140:2;11125:18;;11118:34;;;;-1:-1:-1;11183:3:146;11168:19;11161:35;11039:70;10645:557;-1:-1:-1;;;;10645:557:146:o;11207:412::-;11449:1;11445;11440:3;11436:11;11432:19;11424:6;11420:32;11409:9;11402:51;11489:6;11484:2;11473:9;11469:18;11462:34;11532:2;11527;11516:9;11512:18;11505:30;11383:4;11552:61;11609:2;11598:9;11594:18;11586:6;11578;11552:61;:::i;:::-;11544:69;11207:412;-1:-1:-1;;;;;;11207:412:146:o;13267:399::-;13469:2;13451:21;;;13508:2;13488:18;;;13481:30;13547:34;13542:2;13527:18;;13520:62;-1:-1:-1;;;13613:2:146;13598:18;;13591:33;13656:3;13641:19;;13267:399::o;13671:127::-;13732:10;13727:3;13723:20;13720:1;13713:31;13763:4;13760:1;13753:15;13787:4;13784:1;13777:15;13803:186;13862:6;13915:2;13903:9;13894:7;13890:23;13886:32;13883:52;;;13931:1;13928;13921:12;13883:52;13954:29;13973:9;13954:29;:::i;13994:521::-;14071:4;14077:6;14137:11;14124:25;14231:2;14227:7;14216:8;14200:14;14196:29;14192:43;14172:18;14168:68;14158:96;;14250:1;14247;14240:12;14158:96;14277:33;;14329:20;;;-1:-1:-1;;;;;;14361:30:146;;14358:50;;;14404:1;14401;14394:12;14358:50;14437:4;14425:17;;-1:-1:-1;14468:14:146;14464:27;;;14454:38;;14451:58;;;14505:1;14502;14495:12;14520:127;14581:10;14576:3;14572:20;14569:1;14562:31;14612:4;14609:1;14602:15;14636:4;14633:1;14626:15;14652:135;14691:3;14712:17;;;14709:43;;14732:18;;:::i;:::-;-1:-1:-1;14779:1:146;14768:13;;14652:135::o;14792:1067::-;14899:6;14894:3;14887:19;14869:3;14925:4;14966:2;14961:3;14957:12;14991:11;15018;15011:18;;15068:6;15065:1;15061:14;15054:5;15050:26;15038:38;;15099:5;15122:1;15132:701;15146:6;15143:1;15140:13;15132:701;;;15217:5;15211:4;15207:16;15202:3;15195:29;15276:6;15263:20;15366:2;15362:7;15354:5;15338:14;15334:26;15330:40;15310:18;15306:65;15296:93;;15385:1;15382;15375:12;15296:93;15417:30;;15525:16;;;;15476:21;-1:-1:-1;;;;;15557:32:146;;15554:52;;;15602:1;15599;15592:12;15554:52;15655:8;15639:14;15635:29;15626:7;15622:43;15619:63;;;15678:1;15675;15668:12;15619:63;15703:50;15748:4;15738:8;15729:7;15703:50;:::i;:::-;15811:12;;;;15695:58;-1:-1:-1;;;15776:15:146;;;;15168:1;15161:9;15132:701;;;-1:-1:-1;15849:4:146;;14792:1067;-1:-1:-1;;;;;;;14792:1067:146:o;15864:1393::-;16316:3;16329:22;;;16301:19;;16386:22;;;16268:4;16466:6;16439:3;16424:19;;16268:4;16500:235;16514:6;16511:1;16508:13;16500:235;;;-1:-1:-1;;;;;16579:26:146;16598:6;16579:26;:::i;:::-;16575:52;16563:65;;16651:4;16710:15;;;;16675:12;;;;16536:1;16529:9;16500:235;;;-1:-1:-1;16773:19:146;;;16766:4;16751:20;;16744:49;16802:19;;;-1:-1:-1;;;;;16833:31:146;;16830:51;;;16877:1;16874;16867:12;16830:51;16911:6;16908:1;16904:14;16890:28;;16964:6;16956;16949:4;16944:3;16940:14;16927:44;16990:16;17046:18;;;17066:4;17042:29;;;17037:2;17022:18;;17015:57;17089:75;;17150:13;;17142:6;17134;17089:75;:::i;:::-;17195:2;17180:18;;17173:34;;;;-1:-1:-1;;17238:3:146;17223:19;17216:35;17081:83;15864:1393;-1:-1:-1;;;;;;15864:1393:146:o;18503:125::-;18568:9;;;18589:10;;;18586:36;;;18602:18;;:::i;18633:250::-;18718:1;18728:113;18742:6;18739:1;18736:13;18728:113;;;18818:11;;;18812:18;18799:11;;;18792:39;18764:2;18757:10;18728:113;;;-1:-1:-1;;18875:1:146;18857:16;;18850:27;18633:250::o;18888:812::-;19299:25;19294:3;19287:38;19269:3;19354:6;19348:13;19370:75;19438:6;19433:2;19428:3;19424:12;19417:4;19409:6;19405:17;19370:75;:::i;:::-;-1:-1:-1;;;19504:2:146;19464:16;;;19496:11;;;19489:40;19554:13;;19576:76;19554:13;19638:2;19630:11;;19623:4;19611:17;;19576:76;:::i;:::-;19672:17;19691:2;19668:26;;18888:812;-1:-1:-1;;;;18888:812:146:o;19705:396::-;19854:2;19843:9;19836:21;19817:4;19886:6;19880:13;19929:6;19924:2;19913:9;19909:18;19902:34;19945:79;20017:6;20012:2;20001:9;19997:18;19992:2;19984:6;19980:15;19945:79;:::i;:::-;20085:2;20064:15;-1:-1:-1;;20060:29:146;20045:45;;;;20092:2;20041:54;;19705:396;-1:-1:-1;;19705:396:146:o;20106:406::-;20308:2;20290:21;;;20347:2;20327:18;;;20320:30;20386:34;20381:2;20366:18;;20359:62;-1:-1:-1;;;20452:2:146;20437:18;;20430:40;20502:3;20487:19;;20106:406::o;20924:271::-;21107:6;21099;21094:3;21081:33;21063:3;21133:16;;21158:13;;;21133:16;20924:271;-1:-1:-1;20924:271:146:o;21620:168::-;21660:7;21726:1;21722;21718:6;21714:14;21711:1;21708:21;21703:1;21696:9;21689:17;21685:45;21682:71;;;21733:18;;:::i;:::-;-1:-1:-1;21773:9:146;;21620:168::o;21793:136::-;21832:3;21860:5;21850:39;;21869:18;;:::i;:::-;-1:-1:-1;;;21905:18:146;;21793:136::o", - "linkReferences": {} - }, - "methodIdentifiers": { - "CANCELLER_ROLE()": "b08e51c0", - "DEFAULT_ADMIN_ROLE()": "a217fddf", - "EXECUTOR_ROLE()": "07bd0265", - "PROPOSER_ROLE()": "8f61f4f5", - "TIMELOCK_ADMIN_ROLE()": "0d3cf6fc", - "cancel(bytes32)": "c4d252f5", - "execute(address,uint256,bytes,bytes32,bytes32)": "134008d3", - "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)": "e38335e5", - "getMinDelay()": "f27a0c92", - "getRoleAdmin(bytes32)": "248a9ca3", - "getTimestamp(bytes32)": "d45c4435", - "grantRole(bytes32,address)": "2f2ff15d", - "hasRole(bytes32,address)": "91d14854", - "hashOperation(address,uint256,bytes,bytes32,bytes32)": "8065657f", - "hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)": "b1c5f427", - "isOperation(bytes32)": "31d50750", - "isOperationDone(bytes32)": "2ab0f529", - "isOperationPending(bytes32)": "584b153e", - "isOperationReady(bytes32)": "13bc9f20", - "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81", - "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61", - "onERC721Received(address,address,uint256,bytes)": "150b7a02", - "renounceRole(bytes32,address)": "36568abe", - "revokeRole(bytes32,address)": "d547741f", - "schedule(address,uint256,bytes,bytes32,bytes32,uint256)": "01d5062a", - "scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)": "8f2a0bb0", - "supportsInterface(bytes4)": "01ffc9a7", - "updateDelay(uint256)": "64d62353" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minDelay\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"proposers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"executors\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"CallExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"CallScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"Cancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldDuration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"MinDelayChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CANCELLER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXECUTOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROPOSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMELOCK_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"payloads\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"hashOperation\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"payloads\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"hashOperationBatch\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationDone\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"done\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationPending\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationReady\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ready\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"schedule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"payloads\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"scheduleBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDelay\",\"type\":\"uint256\"}],\"name\":\"updateDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"cancel(bytes32)\":{\"details\":\"Cancel an operation. Requirements: - the caller must have the 'canceller' role.\"},\"constructor\":{\"details\":\"Initializes the contract with the following parameters: - `minDelay`: initial minimum delay for operations - `proposers`: accounts to be granted proposer and canceller roles - `executors`: accounts to be granted executor role - `admin`: optional account to be granted admin role; disable with zero address\"},\"execute(address,uint256,bytes,bytes32,bytes32)\":{\"details\":\"Execute an (ready) operation containing a single transaction. Emits a {CallExecuted} event. Requirements: - the caller must have the 'executor' role.\"},\"executeBatch(address[],uint256[],bytes[],bytes32,bytes32)\":{\"details\":\"Execute an (ready) operation containing a batch of transactions. Emits one {CallExecuted} event per transaction in the batch. Requirements: - the caller must have the 'executor' role.\"},\"getMinDelay()\":{\"details\":\"Returns the minimum delay for an operation to become valid. This value can be changed by executing an operation that calls `updateDelay`.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getTimestamp(bytes32)\":{\"details\":\"Returns the timestamp at which an operation becomes ready (0 for unset operations, 1 for done operations).\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"hashOperation(address,uint256,bytes,bytes32,bytes32)\":{\"details\":\"Returns the identifier of an operation containing a single transaction.\"},\"hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)\":{\"details\":\"Returns the identifier of an operation containing a batch of transactions.\"},\"isOperation(bytes32)\":{\"details\":\"Returns whether an id correspond to a registered operation. This includes both Pending, Ready and Done operations.\"},\"isOperationDone(bytes32)\":{\"details\":\"Returns whether an operation is done or not.\"},\"isOperationPending(bytes32)\":{\"details\":\"Returns whether an operation is pending or not.\"},\"isOperationReady(bytes32)\":{\"details\":\"Returns whether an operation is ready or not.\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155Receiver-onERC1155BatchReceived}.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155Receiver-onERC1155Received}.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"schedule(address,uint256,bytes,bytes32,bytes32,uint256)\":{\"details\":\"Schedule an operation containing a single transaction. Emits a {CallScheduled} event. Requirements: - the caller must have the 'proposer' role.\"},\"scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)\":{\"details\":\"Schedule an operation containing a batch of transactions. Emits one {CallScheduled} event per transaction in the batch. Requirements: - the caller must have the 'proposer' role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"updateDelay(uint256)\":{\"details\":\"Changes the minimum timelock duration for future operations. Emits a {MinDelayChange} event. Requirements: - the caller must be the timelock itself. This can only be achieved by scheduling and later executing an operation where the timelock is the target and the data is the ABI-encoded call to this function.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Timelock.sol\":\"Timelock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@optimism-bedrock/=lib/optimism-bedrock-contracts/\",\":@uniswap/=lib/\",\":Solidity-RLP/=lib/Solidity-RLP/contracts/\",\":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/\",\":v3-core/=lib/v3-core/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x67e3daf189111d6d5b0464ed09cf9f0605a22c4b965a7fcecd707101faff008a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbbb1a75e4064d564bf69e74970eef35064e51fcc09cbf3589aee7faa60d6afe\",\"dweb:/ipfs/QmYfAtQwFSGmxomnyAV3tpBDbfDwiFXV61osWW2zzQVg5Q\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"lib/openzeppelin-contracts/contracts/governance/TimelockController.sol\":{\"keccak256\":\"0xabd9b960dc296e735a752cad0adc1369b9142d1a5e320e9283a1f3aec5783465\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8f371184d206df6767785273ba00a3536f8f7b3874346fdc4160e5692223608\",\"dweb:/ipfs/QmNmYEqB4nygLsguAefVVVCYxVGmwR3MiAub3QXkg69Nyi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x68404b57d114b893554b0e54334b32f578f5d1abf61830025c83fb71dc1944ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3d0a94b3c8afd92c2a9f03f3325e9ac22cec56e995b94ff212670ff3653f0d3\",\"dweb:/ipfs/QmPqKWUysbo8QqKcqH5Lp7SQiL1LfjeoGCSa7iFWmAP8Mw\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x50d8442df21e003cffe241feead16ae1f817afb016e9caab96235d7017816fd8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d079afcda8d243ca111f3471d5bb351b90d64806eb5e9704c414a2808ff02d44\",\"dweb:/ipfs/QmeUcosk8rKGvV9yghc58fd2Te66D943JFBS5jD4mbUZaC\"]},\"src/libraries/Timelock.sol\":{\"keccak256\":\"0x33d33f6ed1049a73c3f75d3e2a97876be0c778caf74a572be0f65c224e0cafe8\",\"urls\":[\"bzz-raw://44f11a42d86e565efbbd40ce3cd49a1842652f89278625dc692caa9ee22df3e3\",\"dweb:/ipfs/QmUsdx2sq9n8QNTUZkQsfqjFHPNwqTW4SDNea9F2bxZnYR\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.16+commit.07a7930e" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "minDelay", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "proposers", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "executors", - "type": "address[]" - }, - { - "internalType": "address", - "name": "admin", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "uint256", - "name": "index", - "type": "uint256", - "indexed": true - }, - { - "internalType": "address", - "name": "target", - "type": "address", - "indexed": false - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256", - "indexed": false - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes", - "indexed": false - } - ], - "type": "event", - "name": "CallExecuted", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "uint256", - "name": "index", - "type": "uint256", - "indexed": true - }, - { - "internalType": "address", - "name": "target", - "type": "address", - "indexed": false - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256", - "indexed": false - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes", - "indexed": false - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32", - "indexed": false - }, - { - "internalType": "uint256", - "name": "delay", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "CallScheduled", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32", - "indexed": true - } - ], - "type": "event", - "name": "Cancelled", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "oldDuration", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "newDuration", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "MinDelayChange", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32", - "indexed": true - } - ], - "type": "event", - "name": "RoleAdminChanged", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "sender", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "RoleGranted", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "sender", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "RoleRevoked", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "CANCELLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "EXECUTOR_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "PROPOSER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "TIMELOCK_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "cancel" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "payload", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "execute" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "payloads", - "type": "bytes[]" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "executeBatch" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "getMinDelay", - "outputs": [ - { - "internalType": "uint256", - "name": "duration", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getTimestamp", - "outputs": [ - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "grantRole" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function", - "name": "hashOperation", - "outputs": [ - { - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "payloads", - "type": "bytes[]" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function", - "name": "hashOperationBatch", - "outputs": [ - { - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "isOperation", - "outputs": [ - { - "internalType": "bool", - "name": "registered", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "isOperationDone", - "outputs": [ - { - "internalType": "bool", - "name": "done", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "isOperationPending", - "outputs": [ - { - "internalType": "bool", - "name": "pending", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "isOperationReady", - "outputs": [ - { - "internalType": "bool", - "name": "ready", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "onERC1155BatchReceived", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "onERC1155Received", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "onERC721Received", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "renounceRole" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "revokeRole" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "delay", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "schedule" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "payloads", - "type": "bytes[]" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "delay", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "scheduleBatch" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function", - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newDelay", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "updateDelay" - }, - { - "inputs": [], - "stateMutability": "payable", - "type": "receive" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "cancel(bytes32)": { - "details": "Cancel an operation. Requirements: - the caller must have the 'canceller' role." - }, - "constructor": { - "details": "Initializes the contract with the following parameters: - `minDelay`: initial minimum delay for operations - `proposers`: accounts to be granted proposer and canceller roles - `executors`: accounts to be granted executor role - `admin`: optional account to be granted admin role; disable with zero address" - }, - "execute(address,uint256,bytes,bytes32,bytes32)": { - "details": "Execute an (ready) operation containing a single transaction. Emits a {CallExecuted} event. Requirements: - the caller must have the 'executor' role." - }, - "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)": { - "details": "Execute an (ready) operation containing a batch of transactions. Emits one {CallExecuted} event per transaction in the batch. Requirements: - the caller must have the 'executor' role." - }, - "getMinDelay()": { - "details": "Returns the minimum delay for an operation to become valid. This value can be changed by executing an operation that calls `updateDelay`." - }, - "getRoleAdmin(bytes32)": { - "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." - }, - "getTimestamp(bytes32)": { - "details": "Returns the timestamp at which an operation becomes ready (0 for unset operations, 1 for done operations)." - }, - "grantRole(bytes32,address)": { - "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." - }, - "hasRole(bytes32,address)": { - "details": "Returns `true` if `account` has been granted `role`." - }, - "hashOperation(address,uint256,bytes,bytes32,bytes32)": { - "details": "Returns the identifier of an operation containing a single transaction." - }, - "hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)": { - "details": "Returns the identifier of an operation containing a batch of transactions." - }, - "isOperation(bytes32)": { - "details": "Returns whether an id correspond to a registered operation. This includes both Pending, Ready and Done operations." - }, - "isOperationDone(bytes32)": { - "details": "Returns whether an operation is done or not." - }, - "isOperationPending(bytes32)": { - "details": "Returns whether an operation is pending or not." - }, - "isOperationReady(bytes32)": { - "details": "Returns whether an operation is ready or not." - }, - "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": { - "details": "See {IERC1155Receiver-onERC1155BatchReceived}." - }, - "onERC1155Received(address,address,uint256,uint256,bytes)": { - "details": "See {IERC1155Receiver-onERC1155Received}." - }, - "onERC721Received(address,address,uint256,bytes)": { - "details": "See {IERC721Receiver-onERC721Received}." - }, - "renounceRole(bytes32,address)": { - "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event." - }, - "revokeRole(bytes32,address)": { - "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event." - }, - "schedule(address,uint256,bytes,bytes32,bytes32,uint256)": { - "details": "Schedule an operation containing a single transaction. Emits a {CallScheduled} event. Requirements: - the caller must have the 'proposer' role." - }, - "scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)": { - "details": "Schedule an operation containing a batch of transactions. Emits one {CallScheduled} event per transaction in the batch. Requirements: - the caller must have the 'proposer' role." - }, - "supportsInterface(bytes4)": { - "details": "See {IERC165-supportsInterface}." - }, - "updateDelay(uint256)": { - "details": "Changes the minimum timelock duration for future operations. Emits a {MinDelayChange} event. Requirements: - the caller must be the timelock itself. This can only be achieved by scheduling and later executing an operation where the timelock is the target and the data is the ABI-encoded call to this function." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@optimism-bedrock/=lib/optimism-bedrock-contracts/", - ":@uniswap/=lib/", - ":Solidity-RLP/=lib/Solidity-RLP/contracts/", - ":curve-merkle-oracle/=lib/curve-merkle-oracle/contracts/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - ":optimism-bedrock-contracts/=lib/optimism-bedrock-contracts/", - ":v3-core/=lib/v3-core/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/libraries/Timelock.sol": "Timelock" - }, - "libraries": {} - }, - "sources": { - "lib/openzeppelin-contracts/contracts/access/AccessControl.sol": { - "keccak256": "0x67e3daf189111d6d5b0464ed09cf9f0605a22c4b965a7fcecd707101faff008a", - "urls": [ - "bzz-raw://cbbb1a75e4064d564bf69e74970eef35064e51fcc09cbf3589aee7faa60d6afe", - "dweb:/ipfs/QmYfAtQwFSGmxomnyAV3tpBDbfDwiFXV61osWW2zzQVg5Q" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol": { - "keccak256": "0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57", - "urls": [ - "bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a", - "dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol": { - "keccak256": "0xabd9b960dc296e735a752cad0adc1369b9142d1a5e320e9283a1f3aec5783465", - "urls": [ - "bzz-raw://d8f371184d206df6767785273ba00a3536f8f7b3874346fdc4160e5692223608", - "dweb:/ipfs/QmNmYEqB4nygLsguAefVVVCYxVGmwR3MiAub3QXkg69Nyi" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol": { - "keccak256": "0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b", - "urls": [ - "bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec", - "dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": { - "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da", - "urls": [ - "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708", - "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Address.sol": { - "keccak256": "0x68404b57d114b893554b0e54334b32f578f5d1abf61830025c83fb71dc1944ce", - "urls": [ - "bzz-raw://d3d0a94b3c8afd92c2a9f03f3325e9ac22cec56e995b94ff212670ff3653f0d3", - "dweb:/ipfs/QmPqKWUysbo8QqKcqH5Lp7SQiL1LfjeoGCSa7iFWmAP8Mw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Context.sol": { - "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", - "urls": [ - "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", - "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Strings.sol": { - "keccak256": "0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a", - "urls": [ - "bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634", - "dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": { - "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b", - "urls": [ - "bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d", - "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { - "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", - "urls": [ - "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", - "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { - "keccak256": "0x50d8442df21e003cffe241feead16ae1f817afb016e9caab96235d7017816fd8", - "urls": [ - "bzz-raw://d079afcda8d243ca111f3471d5bb351b90d64806eb5e9704c414a2808ff02d44", - "dweb:/ipfs/QmeUcosk8rKGvV9yghc58fd2Te66D943JFBS5jD4mbUZaC" - ], - "license": "MIT" - }, - "src/libraries/Timelock.sol": { - "keccak256": "0x33d33f6ed1049a73c3f75d3e2a97876be0c778caf74a572be0f65c224e0cafe8", - "urls": [ - "bzz-raw://44f11a42d86e565efbbd40ce3cd49a1842652f89278625dc692caa9ee22df3e3", - "dweb:/ipfs/QmUsdx2sq9n8QNTUZkQsfqjFHPNwqTW4SDNea9F2bxZnYR" - ], - "license": null - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/libraries/Timelock.sol", - "id": 44298, - "exportedSymbols": { - "Timelock": [ - 44297 - ], - "TimelockController": [ - 32511 - ] - }, - "nodeType": "SourceUnit", - "src": "0:736:112", - "nodes": [ - { - "id": 44271, - "nodeType": "PragmaDirective", - "src": "0:23:112", - "nodes": [], - "literals": [ - "solidity", - "0.8", - ".16" - ] - }, - { - "id": 44273, - "nodeType": "ImportDirective", - "src": "25:92:112", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol", - "file": "openzeppelin-contracts/governance/TimelockController.sol", - "nameLocation": "-1:-1:-1", - "scope": 44298, - "sourceUnit": 32512, - "symbolAliases": [ - { - "foreign": { - "id": 44272, - "name": "TimelockController", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32511, - "src": "33:18:112", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 44297, - "nodeType": "ContractDefinition", - "src": "119:616:112", - "nodes": [ - { - "id": 44296, - "nodeType": "FunctionDefinition", - "src": "534:199:112", - "nodes": [], - "body": { - "id": 44295, - "nodeType": "Block", - "src": "731:2:112", - "nodes": [], - "statements": [] - }, - "documentation": { - "id": 44276, - "nodeType": "StructuredDocumentation", - "src": "165:364:112", - "text": " @dev Initializes the contract with the following parameters:\n - `minDelay`: initial minimum delay for operations\n - `proposers`: accounts to be granted proposer and canceller roles\n - `executors`: accounts to be granted executor role\n - `admin`: optional account to be granted admin role; disable with zero address" - }, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "id": 44289, - "name": "minDelay", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44278, - "src": "692:8:112", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 44290, - "name": "proposers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44281, - "src": "702:9:112", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "id": 44291, - "name": "executors", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44284, - "src": "713:9:112", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "id": 44292, - "name": "admin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44286, - "src": "724:5:112", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 44293, - "kind": "baseConstructorSpecifier", - "modifierName": { - "id": 44288, - "name": "TimelockController", - "nameLocations": [ - "673:18:112" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 32511, - "src": "673:18:112" - }, - "nodeType": "ModifierInvocation", - "src": "673:57:112" - } - ], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 44287, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 44278, - "mutability": "mutable", - "name": "minDelay", - "nameLocation": "563:8:112", - "nodeType": "VariableDeclaration", - "scope": 44296, - "src": "555:16:112", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 44277, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "555:7:112", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44281, - "mutability": "mutable", - "name": "proposers", - "nameLocation": "598:9:112", - "nodeType": "VariableDeclaration", - "scope": 44296, - "src": "581:26:112", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 44279, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "581:7:112", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 44280, - "nodeType": "ArrayTypeName", - "src": "581:9:112", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44284, - "mutability": "mutable", - "name": "executors", - "nameLocation": "634:9:112", - "nodeType": "VariableDeclaration", - "scope": 44296, - "src": "617:26:112", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 44282, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "617:7:112", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 44283, - "nodeType": "ArrayTypeName", - "src": "617:9:112", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 44286, - "mutability": "mutable", - "name": "admin", - "nameLocation": "661:5:112", - "nodeType": "VariableDeclaration", - "scope": 44296, - "src": "653:13:112", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 44285, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "653:7:112", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "545:127:112" - }, - "returnParameters": { - "id": 44294, - "nodeType": "ParameterList", - "parameters": [], - "src": "731:0:112" - }, - "scope": 44297, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 44274, - "name": "TimelockController", - "nameLocations": [ - "140:18:112" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 32511, - "src": "140:18:112" - }, - "id": 44275, - "nodeType": "InheritanceSpecifier", - "src": "140:18:112" - } - ], - "canonicalName": "Timelock", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 44297, - 32511, - 33071, - 34913, - 31411, - 35551, - 35563, - 31484, - 35292 - ], - "name": "Timelock", - "nameLocation": "128:8:112", - "scope": 44298, - "usedErrors": [] - } - ] - }, - "id": 112 -} \ No newline at end of file diff --git a/package.json b/package.json index 18b9e43..5760881 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "scripts": { "lint": "forge fmt --check src test script examples", "test": "forge test", - "build": "FOUNDRY_IGNORED_ERROR_CODES='[5740,1878]' forge build --force" + "build": "./build_with_abi.sh", + "dev": "FOUNDRY_IGNORED_ERROR_CODES='[5740,1878]' forge build" } -} +} \ No newline at end of file From 253c375e9978fbfdeaed70535de61cb92c241ecf Mon Sep 17 00:00:00 2001 From: Chris T Date: Thu, 6 Apr 2023 20:02:25 -0700 Subject: [PATCH 10/18] Use source maps for stack traces (#308) GitOrigin-RevId: 7b40b9baff2558cd02064337dca45ca80b1258a5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5760881..1af50b7 100644 --- a/package.json +++ b/package.json @@ -11,4 +11,4 @@ "build": "./build_with_abi.sh", "dev": "FOUNDRY_IGNORED_ERROR_CODES='[5740,1878]' forge build" } -} \ No newline at end of file +} From 764277288a8e9ecda351483ad2c7ba4c43f58f05 Mon Sep 17 00:00:00 2001 From: Matt Stam Date: Fri, 14 Apr 2023 11:20:14 -0700 Subject: [PATCH 11/18] merge dev-v2 into main (#334) GitOrigin-RevId: 14b4c1748f831b4767ead7f2f820a8139cc9a7a8 --- .gitmodules | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index f88e34c..933e276 100644 --- a/.gitmodules +++ b/.gitmodules @@ -15,4 +15,22 @@ [submodule "lib/optimism-bedrock-contracts"] path = lib/optimism-bedrock-contracts url = https://github.com/succinctlabs/optimism-bedrock-contracts - branch = main \ No newline at end of file + branch = main +[submodule "contracts-v2/lib/forge-std"] + path = contracts-v2/lib/forge-std + url = https://github.com/foundry-rs/forge-std +[submodule "contracts-v2/lib/openzeppelin-contracts"] + path = contracts-v2/lib/openzeppelin-contracts + url = https://github.com/openzeppelin/openzeppelin-contracts +[submodule "contracts-v2/lib/v3-core"] + path = contracts-v2/lib/v3-core + url = https://github.com/succinctlabs/v3-core + branch = main +[submodule "contracts-v2/lib/openzeppelin-contracts-upgradeable"] + path = contracts-v2/lib/openzeppelin-contracts-upgradeable + url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable + branch = v4.8.1 +[submodule "contracts-v2/lib/optimism-bedrock-contracts"] + path = contracts-v2/lib/optimism-bedrock-contracts + url = https://github.com/succinctlabs/optimism-bedrock-contracts + branch = main From c416202c0e2bc32418fdcd23b4db3913a54301ca Mon Sep 17 00:00:00 2001 From: Matt Stam Date: Thu, 20 Apr 2023 17:00:36 -0700 Subject: [PATCH 12/18] Telepathy <> EigenLayer prototype (#355) GitOrigin-RevId: 8b42dd9c27a567105c82b66e627c7efb1e58dfb4 --- .gitmodules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitmodules b/.gitmodules index 933e276..79f3f38 100644 --- a/.gitmodules +++ b/.gitmodules @@ -34,3 +34,6 @@ path = contracts-v2/lib/optimism-bedrock-contracts url = https://github.com/succinctlabs/optimism-bedrock-contracts branch = main +[submodule "contracts-v2/lib/eigenlayer-contracts"] + path = contracts-v2/lib/eigenlayer-contracts + url = https://github.com/succinctlabs/eigenlayer-contracts From c3d8cf0f61f7ca3d3452f177184452b86a98fb40 Mon Sep 17 00:00:00 2001 From: Chris T Date: Mon, 24 Apr 2023 11:10:52 -0700 Subject: [PATCH 13/18] Expose git ref of running code (#363) * Fix turbo build * Stamp git commit into file * Tag commit hash in datadog GitOrigin-RevId: b5da822f224bf67900a50442b025593eee7c6841 --- abi/LightClientMock.json | 140 --------------------------------------- 1 file changed, 140 deletions(-) delete mode 100644 abi/LightClientMock.json diff --git a/abi/LightClientMock.json b/abi/LightClientMock.json deleted file mode 100644 index 2834cde..0000000 --- a/abi/LightClientMock.json +++ /dev/null @@ -1,140 +0,0 @@ -[ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "slot", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - } - ], - "name": "HeadUpdate", - "type": "event" - }, - { - "inputs": [], - "name": "consistent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "executionStateRoots", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "head", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "headers", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "slot", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "executionRoot", - "type": "bytes32" - } - ], - "name": "setExecutionRoot", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "slot", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "headerRoot", - "type": "bytes32" - } - ], - "name": "setHeader", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "timestamps", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } -] \ No newline at end of file From 7849f1788f50e6f65011dafb3b88ff3cfd130ac9 Mon Sep 17 00:00:00 2001 From: Ratan Kaliani Date: Wed, 26 Apr 2023 14:17:37 -0700 Subject: [PATCH 14/18] integration: eigenlayer (#348) * base contract * test proofs on worker * test proofs on worker * fixes * debugging input * testing contract, getting beaconstate * testing contract, getting beaconstate * need to submit proofs for bodyRoot (header) and blockNumber, confirm that root is the same for both * debugging * debugging * src Header View * Passing forge tests * working demo for eigenlayer * weird typechain issues * fix generation issues, move lightclientmock * clean * minor fixes * store the beacon state root inside of eigenlayer beacon oracle contract * fix contracts * Re-org script * implement ILightClientUpdater * rm unnecessary structs * base upgradeable contract * update naming convention for updater * test with proxy * remove guardian role * fix test file * update slots for storage, rm guardian, update desc * rm version from contracts * lint * rm reentrancy, add guardian, start fixture * use fixture for testing * use fixture for testing * clean up comments for contracts * add integration tasks folder * lint * feat: add whitelist * use gaslimit from extraoptions * working through comments * working through comments * expect event emit * nits, refactor * test all revert msgs * test all revert msgs * fix build cache issues * refactor integration, clean up test * migrate to eigenlayer folder * migrate to eigenlayer folder * refactor * simplify ILightClientUpdater interface, only return beaconStateRoot * lint * refactor: clean up variable ordering * refactor * refactor * rm oracleUpdater from constructor * change pointer to head * add revert * add revert GitOrigin-RevId: a07ddd46d4f307b87246ad844215dd68d36f24ba --- abi/LightClientMock.json | 140 ++++++++++++++ .../eigenlayer/EigenLayerBeaconOracle.sol | 87 +++++++++ .../EigenLayerBeaconOracleProxy.sol | 69 +++++++ .../EigenLayerBeaconOracleStorage.sol | 22 +++ .../eigenlayer/ILightClientUpdater.sol | 14 ++ .../lightclient}/LightClientMock.sol | 0 test/amb/TargetAMB.t.sol | 2 +- test/amb/TargetAMBLog.t.sol | 2 +- .../EigenLayerBeaconOracleTest.t.sol | 178 ++++++++++++++++++ test/integrations/fixtures/valid_6211232.json | 24 +++ test/integrations/fixtures/valid_6250752.json | 24 +++ 11 files changed, 560 insertions(+), 2 deletions(-) create mode 100644 abi/LightClientMock.json create mode 100644 src/integrations/eigenlayer/EigenLayerBeaconOracle.sol create mode 100644 src/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol create mode 100644 src/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol create mode 100644 src/integrations/eigenlayer/ILightClientUpdater.sol rename {test/amb => src/lightclient}/LightClientMock.sol (100%) create mode 100644 test/integrations/EigenLayerBeaconOracleTest.t.sol create mode 100644 test/integrations/fixtures/valid_6211232.json create mode 100644 test/integrations/fixtures/valid_6250752.json diff --git a/abi/LightClientMock.json b/abi/LightClientMock.json new file mode 100644 index 0000000..2834cde --- /dev/null +++ b/abi/LightClientMock.json @@ -0,0 +1,140 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "HeadUpdate", + "type": "event" + }, + { + "inputs": [], + "name": "consistent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "executionStateRoots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "head", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "headers", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "executionRoot", + "type": "bytes32" + } + ], + "name": "setExecutionRoot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "headerRoot", + "type": "bytes32" + } + ], + "name": "setHeader", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "timestamps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/src/integrations/eigenlayer/EigenLayerBeaconOracle.sol b/src/integrations/eigenlayer/EigenLayerBeaconOracle.sol new file mode 100644 index 0000000..5a71941 --- /dev/null +++ b/src/integrations/eigenlayer/EigenLayerBeaconOracle.sol @@ -0,0 +1,87 @@ +pragma solidity 0.8.16; + +import {ILightClient} from "src/lightclient/interfaces/ILightClient.sol"; +import {SSZ} from "src/libraries/SimpleSerialize.sol"; +import {ILightClientUpdater} from "src/integrations/eigenlayer/ILightClientUpdater.sol"; +import {EigenLayerBeaconOracleStorage} from + "src/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol"; +import {ReentrancyGuardUpgradeable} from + "openzeppelin-contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; + +contract EigenLayerBeaconOracle is ILightClientUpdater, EigenLayerBeaconOracleStorage { + uint256 internal constant EXECUTION_PAYLOAD_BLOCK_NUMBER_INDEX = 3222; + uint256 internal constant BEACON_STATE_ROOT_INDEX = 11; + + event BeaconStateOracleUpdate(uint256 slot, uint256 blockNumber, bytes32 stateRoot); + + error InvalidBlockNumberProof(); + error InvalidBeaconStateRootProof(); + error InvalidUpdater(address updater); + error SlotNumberTooLow(); + + modifier onlyWhitelistedUpdater() { + if (!whitelistedOracleUpdaters[msg.sender]) { + revert InvalidUpdater(msg.sender); + } + _; + } + + function getBeaconStateRoot(uint256 _blockNumber) external view returns (bytes32) { + return blockNumberToStateRoot[_blockNumber]; + } + + function fulfillRequest( + uint256 _slot, + uint256 _blockNumber, + bytes32[] calldata _blockNumberProof, + bytes32 _beaconStateRoot, + bytes32[] calldata _beaconStateRootProof + ) external onlyWhitelistedUpdater { + if (_slot <= head) { + revert SlotNumberTooLow(); + } + + bytes32 blockHeaderRoot = ILightClient(lightclient).headers(_slot); + + // Verify block number against block header root + if (!verifyBlockNumber(_blockNumber, _blockNumberProof, blockHeaderRoot)) { + revert InvalidBlockNumberProof(); + } + + // Verify beacon state root against block header root + if (!verifyBeaconStateRoot(_beaconStateRoot, _beaconStateRootProof, blockHeaderRoot)) { + revert InvalidBeaconStateRootProof(); + } + + // Store the header root + blockNumberToStateRoot[_blockNumber] = _beaconStateRoot; + + // Require that the slot number is greater than the previous slot number + head = _slot; + + emit BeaconStateOracleUpdate(_slot, _blockNumber, _beaconStateRoot); + } + + function verifyBlockNumber( + uint256 _blockNumber, + bytes32[] memory _blockNumberProof, + bytes32 _blockHeaderRoot + ) internal pure returns (bool) { + return SSZ.isValidMerkleBranch( + SSZ.toLittleEndian(_blockNumber), + EXECUTION_PAYLOAD_BLOCK_NUMBER_INDEX, + _blockNumberProof, + _blockHeaderRoot + ); + } + + function verifyBeaconStateRoot( + bytes32 _beaconStateRoot, + bytes32[] memory _beaconStateRootProof, + bytes32 _blockHeaderRoot + ) internal pure returns (bool) { + return SSZ.isValidMerkleBranch( + _beaconStateRoot, BEACON_STATE_ROOT_INDEX, _beaconStateRootProof, _blockHeaderRoot + ); + } +} diff --git a/src/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol b/src/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol new file mode 100644 index 0000000..d73f4dc --- /dev/null +++ b/src/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol @@ -0,0 +1,69 @@ +pragma solidity 0.8.16; + +import {UUPSUpgradeable} from "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; + +import {AccessControlUpgradeable} from + "openzeppelin-contracts-upgradeable/access/AccessControlUpgradeable.sol"; + +import {ILightClient} from "src/lightclient/interfaces/ILightClient.sol"; + +import {EigenLayerBeaconOracle} from "src/integrations/eigenlayer/EigenLayerBeaconOracle.sol"; + +/// @title EigenLayer Beacon Oracle Proxy +/// @author Succinct Labs +/// @notice Store a mapping of block numbers to beacon state roots. +contract EigenLayerBeaconOracleProxy is + EigenLayerBeaconOracle, + UUPSUpgradeable, + AccessControlUpgradeable +{ + /// @notice Prevents the implementation contract from being initialized outside of the upgradeable proxy. + constructor() { + _disableInitializers(); + } + + /// @notice A random constant used to identify addresses with the permission of a 'timelock'. + bytes32 public constant TIMELOCK_ROLE = keccak256("TIMELOCK_ROLE"); + + /// @notice A random constant used to identify addresses with the permission of a 'guardian'. + bytes32 public constant GUARDIAN_ROLE = keccak256("GUARDIAN_ROLE"); + + /// @notice Invalid light client address error. + error InvalidLightClientAddress(); + + modifier onlyTimelock() { + require(hasRole(TIMELOCK_ROLE, msg.sender), "EigenLayerBeaconOracleProxy: not timelock"); + _; + } + + modifier onlyGuardian() { + require(hasRole(GUARDIAN_ROLE, msg.sender), "EigenLayerBeaconOracleProxy: not guardian"); + _; + } + + /// @notice Initializes the contract and the parent contracts once. + function initialize(address _lightClient, address _timelock, address _guardian) + external + initializer + { + __AccessControl_init(); + _grantRole(TIMELOCK_ROLE, _timelock); + _grantRole(DEFAULT_ADMIN_ROLE, _timelock); + _grantRole(GUARDIAN_ROLE, _guardian); + __UUPSUpgradeable_init(); + + if (_lightClient == address(0)) { + revert InvalidLightClientAddress(); + } + + lightclient = ILightClient(_lightClient); + } + + /// @notice Updates the whitelist of addresses that can update the beacon state root. + function updateWhitelist(address _oracleUpdater, bool _isWhitelisted) external onlyGuardian { + whitelistedOracleUpdaters[_oracleUpdater] = _isWhitelisted; + } + + /// @notice Authorizes an upgrade for the implementation contract. + function _authorizeUpgrade(address newImplementation) internal override onlyTimelock {} +} diff --git a/src/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol b/src/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol new file mode 100644 index 0000000..279c45f --- /dev/null +++ b/src/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol @@ -0,0 +1,22 @@ +pragma solidity 0.8.16; + +import {ILightClient} from "src/lightclient/interfaces/ILightClient.sol"; + +contract EigenLayerBeaconOracleStorage { + /// @notice The light client contract. + ILightClient public lightclient; + + /// @notice The whitelist for the oracle updaters. + mapping(address => bool) public whitelistedOracleUpdaters; + + /// @notice The block number to state root mapping. + mapping(uint256 => bytes32) public blockNumberToStateRoot; + + /// @notice The most recent update's slot number. + uint256 public head; + + /// @dev This empty reserved space is put in place to allow future versions to add new variables + /// without shifting down storage in the inheritance chain. + /// See: https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable#storage-gaps + uint256[50] private __gap; +} diff --git a/src/integrations/eigenlayer/ILightClientUpdater.sol b/src/integrations/eigenlayer/ILightClientUpdater.sol new file mode 100644 index 0000000..5bbeb6d --- /dev/null +++ b/src/integrations/eigenlayer/ILightClientUpdater.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity =0.8.16; + +/** + * @title Interface for a contract that updates the telepathy light client. + */ +interface ILightClientUpdater { + /** + * @notice Fetches the beacon state root and prover address for the given block number from the Telepathy Light Client contract. + * @param blockNumber The block number to update the light client with. + * @return The beacon state root. + */ + function getBeaconStateRoot(uint256 blockNumber) external view returns (bytes32); +} diff --git a/test/amb/LightClientMock.sol b/src/lightclient/LightClientMock.sol similarity index 100% rename from test/amb/LightClientMock.sol rename to src/lightclient/LightClientMock.sol diff --git a/test/amb/TargetAMB.t.sol b/test/amb/TargetAMB.t.sol index 38eeb07..968cc33 100644 --- a/test/amb/TargetAMB.t.sol +++ b/test/amb/TargetAMB.t.sol @@ -8,7 +8,7 @@ import {MessageStatus, ITelepathyHandler} from "src/amb/interfaces/ITelepathy.so import {TelepathyRouter} from "src/amb/TelepathyRouter.sol"; import {UUPSProxy} from "src/libraries/Proxy.sol"; import {SSZ} from "src/libraries/SimpleSerialize.sol"; -import {LightClientMock} from "./LightClientMock.sol"; +import {LightClientMock} from "src/lightclient/LightClientMock.sol"; // The weird ordering here is because vm.parseJSON requires // alphabetaical ordering of the fields in the struct diff --git a/test/amb/TargetAMBLog.t.sol b/test/amb/TargetAMBLog.t.sol index dc60aed..3797d51 100644 --- a/test/amb/TargetAMBLog.t.sol +++ b/test/amb/TargetAMBLog.t.sol @@ -9,7 +9,7 @@ import {MessageStatus, ITelepathyHandler, Message} from "src/amb/interfaces/ITel import {TelepathyRouter} from "src/amb/TelepathyRouter.sol"; import {SSZ} from "src/libraries/SimpleSerialize.sol"; import {UUPSProxy} from "src/libraries/Proxy.sol"; -import {LightClientMock} from "./LightClientMock.sol"; +import {LightClientMock} from "src/lightclient/LightClientMock.sol"; import {SimpleHandler} from "./TargetAMB.t.sol"; import {WrappedInitialize} from "./TargetAMB.t.sol"; import {BeaconChainForks} from "src/libraries/BeaconChainForks.sol"; diff --git a/test/integrations/EigenLayerBeaconOracleTest.t.sol b/test/integrations/EigenLayerBeaconOracleTest.t.sol new file mode 100644 index 0000000..9bab1c4 --- /dev/null +++ b/test/integrations/EigenLayerBeaconOracleTest.t.sol @@ -0,0 +1,178 @@ +pragma solidity 0.8.16; + +import "forge-std/Vm.sol"; +import "forge-std/console.sol"; +import "forge-std/Test.sol"; + +import {SSZ} from "src/libraries/SimpleSerialize.sol"; +import {LightClient, LightClientStep, LightClientRotate} from "src/lightclient/LightClient.sol"; +import {LightClientFixture} from "test/lightclient/LightClientFixture.sol"; +import {Strings} from "openzeppelin-contracts/utils/Strings.sol"; +import {EigenLayerBeaconOracle} from "src/integrations/eigenlayer/EigenLayerBeaconOracle.sol"; +import {EigenLayerBeaconOracleProxy} from + "src/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol"; +import {UUPSProxy} from "src/libraries/Proxy.sol"; + +import {LightClientMock} from "src/lightclient/LightClientMock.sol"; + +struct BeaconOracleUpdateFixture { + bytes32 beaconStateRoot; + bytes32[] beaconStateRootProof; + uint256 blockNumber; + bytes32[] blockNumberProof; + bytes32 headerRoot; + uint256 slot; +} + +contract TestErrors { + error InvalidBlockNumberProof(); + error InvalidBeaconStateRootProof(); + error InvalidUpdater(address updater); + error SlotNumberTooLow(); +} + +contract TestEvents { + event BeaconStateOracleUpdate(uint256 slot, uint256 blockNumber, bytes32 stateRoot); +} + +contract EigenLayerBeaconOracleTest is Test, TestEvents, TestErrors { + uint32 constant SOURCE_CHAIN_ID = 1; + uint16 constant FINALITY_THRESHOLD = 350; + + EigenLayerBeaconOracle oracle; + address public oracleOperator; + address public guardian; + BeaconOracleUpdateFixture fixture; + BeaconOracleUpdateFixture fixture2; + + function isWhitelisted(address _oracleUpdater) public view returns (bool) { + return oracle.whitelistedOracleUpdaters(_oracleUpdater); + } + + function setUp() public { + // read all fixtures from entire directory + + LightClientMock lightClient = new LightClientMock(); + + oracleOperator = makeAddr("operator"); + guardian = makeAddr("guardian"); + + EigenLayerBeaconOracleProxy EigenLayerBeaconOracleImplementation = + new EigenLayerBeaconOracleProxy(); + + UUPSProxy proxy = new UUPSProxy(address(EigenLayerBeaconOracleImplementation), ""); + + oracle = EigenLayerBeaconOracleProxy(address(proxy)); + EigenLayerBeaconOracleProxy(address(proxy)).initialize( + address(lightClient), guardian, guardian + ); + + vm.prank(guardian); + EigenLayerBeaconOracleProxy(address(proxy)).updateWhitelist(oracleOperator, true); + + string memory root = vm.projectRoot(); + string memory filename = "valid_6211232"; + string memory path = string.concat(root, "/test/integrations/fixtures/", filename, ".json"); + string memory file = vm.readFile(path); + bytes memory parsed = vm.parseJson(file); + fixture = abi.decode(parsed, (BeaconOracleUpdateFixture)); + + lightClient.setHeader(fixture.slot, fixture.headerRoot); + + string memory filename2 = "valid_6250752"; + string memory path2 = + string.concat(root, "/test/integrations/fixtures/", filename2, ".json"); + string memory file2 = vm.readFile(path2); + bytes memory parsed2 = vm.parseJson(file2); + fixture2 = abi.decode(parsed2, (BeaconOracleUpdateFixture)); + + lightClient.setHeader(fixture2.slot, fixture2.headerRoot); + + vm.warp(9999999999999); + } + + function test_FulfillRequest() public { + vm.prank(oracleOperator); + // Check that event is emitted + vm.expectEmit(true, true, true, true); + emit BeaconStateOracleUpdate(fixture.slot, fixture.blockNumber, fixture.beaconStateRoot); + + oracle.fulfillRequest( + fixture.slot, + fixture.blockNumber, + fixture.blockNumberProof, + fixture.beaconStateRoot, + fixture.beaconStateRootProof + ); + + bytes32 beaconStateRoot = oracle.blockNumberToStateRoot(fixture.blockNumber); + + assertTrue(beaconStateRoot == fixture.beaconStateRoot, "beacon state roots should be equal"); + } + + function test_RevertFulfillRequestWhenNotWhitelisted() public { + // Sender is not whitelisted + address notOperator = makeAddr("0x456"); + + bool value = isWhitelisted(notOperator); + assertTrue(!value); + + vm.prank(notOperator); + vm.expectRevert(abi.encodeWithSelector(InvalidUpdater.selector, notOperator)); + oracle.fulfillRequest( + fixture.slot, + fixture.blockNumber, + fixture.blockNumberProof, + fixture.beaconStateRoot, + fixture.beaconStateRootProof + ); + } + + function test_RevertSlotTooLow() public { + vm.prank(oracleOperator); + oracle.fulfillRequest( + fixture2.slot, + fixture2.blockNumber, + fixture2.blockNumberProof, + fixture2.beaconStateRoot, + fixture2.beaconStateRootProof + ); + + vm.prank(oracleOperator); + // Slot number is lower than previous slot + vm.expectRevert(abi.encodeWithSelector(SlotNumberTooLow.selector)); + oracle.fulfillRequest( + fixture.slot, + fixture.blockNumber, + fixture.blockNumberProof, + fixture.beaconStateRoot, + fixture.beaconStateRootProof + ); + } + + function test_RevertInvalidBlockNumberProof() public { + vm.prank(oracleOperator); + vm.expectRevert(abi.encodeWithSelector(InvalidBlockNumberProof.selector)); + oracle.fulfillRequest( + fixture.slot, + fixture.blockNumber, + // Invalid blockNumberProof + fixture2.blockNumberProof, + fixture.beaconStateRoot, + fixture.beaconStateRootProof + ); + } + + function test_RevertInvalidBeaconStateRootProof() public { + vm.prank(oracleOperator); + vm.expectRevert(abi.encodeWithSelector(InvalidBeaconStateRootProof.selector)); + oracle.fulfillRequest( + fixture.slot, + fixture.blockNumber, + fixture.blockNumberProof, + fixture.beaconStateRoot, + // Invalid beaconStateRootProof + fixture2.beaconStateRootProof + ); + } +} diff --git a/test/integrations/fixtures/valid_6211232.json b/test/integrations/fixtures/valid_6211232.json new file mode 100644 index 0000000..d288027 --- /dev/null +++ b/test/integrations/fixtures/valid_6211232.json @@ -0,0 +1,24 @@ +{ + "beaconStateRoot": "0xb2555370a77751def10e057b6b04d0ea844b068ae4918a324f51379831291a5a", + "beaconStateRootProof": [ + "0x80df5bfe74c280233167f6f17a5c99707c0fe1476e6431cb44d9b3108212ada4", + "0x31587670bbcdfcdee404aac424f9e78735fa59e591f5fa74b4614af6bd0c501f", + "0x4ca7b9f8ae9e17668e908725a970d2e17688b5e758105262d5ad8d54e76fc53a" + ], + "blockNumber": 17036319, + "blockNumberProof": [ + "0x80c3c90100000000000000000000000000000000000000000000000000000000", + "0x3dbed56d5a1cc289350adcde3becc83f578c5f8319fc9c4b8116501b3d02e889", + "0x4e797446eeae7792ddc77106c6ec94fc47018603bd657d324753c5f33cd3d1c3", + "0x6dfd6beef59b985f3c769b2f0d65a5e3ab7b9714bb7307861f490a65b30cdc56", + "0xe7131ba4f798d293459cbd95f891970b200a8966bd7383759c237c972b1b4a45", + "0x5bc7deace6c8a7c13078e3512822760a8b9c44762c1269141d2f680b7a734e5a", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x1cb2f262e5277f3bcee1f5745f87ae8ed21efe0c1330a0a878e6c2b408e59173", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0xbb0deb61796c45f2f591853c01cba0a0072b5625055fe75e0bbb9b9564c88fa4" + ], + "slot": 6211232, + "headerRoot": "0x54972bea0f6c314a86194167aa71ed99ca1c7f4a872c14d74ed5dbbfa13227bc" +} \ No newline at end of file diff --git a/test/integrations/fixtures/valid_6250752.json b/test/integrations/fixtures/valid_6250752.json new file mode 100644 index 0000000..4ff0252 --- /dev/null +++ b/test/integrations/fixtures/valid_6250752.json @@ -0,0 +1,24 @@ +{ + "beaconStateRoot": "0x85dba4ad816adaede3fc4747743a27962d864b3dcb384796ca61380356ccea8d", + "beaconStateRootProof": [ + "0x05b9d8071c8ef680565c0b816bc812ec7bb5f6f69077b0851cf9062729c6a187", + "0x99f1e326d3c33fbe8edbad00a217a349e2732b4e80facbbfb5743d47c0e095ae", + "0x15f66e9071eaf727cd17c395c479d10d86bfd014e049e8f826d5368799115652" + ], + "blockNumber": 17074556, + "blockNumberProof": [ + "0x80c3c90100000000000000000000000000000000000000000000000000000000", + "0xdb7f0bb12025e0539d1a076fd1b2056e542e4a8ae7b4501003f7065a3a984292", + "0xd5dad501106485bbdfb3a55a3cbf934375326e7a82fa4f46ae29b7beb59b77b3", + "0x0db785bac4fe445e96d216a795708b38e03fce69052fddf6f0a672563aafb146", + "0xf58f0404ceddeaef2d91a81dbc5faf0cf1dd92aa5498616d6a8a973dc430de23", + "0x336488033fe5f3ef4ccc12af07b9370b92e553e35ecb4a337a1b1c0e4afe1e0e", + "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x128c0cbf7c43912efdd8fa44a87ee4e5d2557d1077599f9c3ab29b9472a3c0db", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0x6317fe64dd73184e44c1ac5bfff637c894ecdda6632b26087a369203ebe733a6" + ], + "slot": 6250752, + "headerRoot": "0x289d7c5c0b00bbdec82351c0f98f445ccfd36edeac607f3653bd2b9afc8d54df" +} \ No newline at end of file From 717deb6a5da6543023d1e210752334523d1de199 Mon Sep 17 00:00:00 2001 From: Matt Stam Date: Thu, 27 Apr 2023 15:44:34 -0700 Subject: [PATCH 15/18] Gnosis Validator handling token events + pubsub relayer improvements (#285) GitOrigin-RevId: 126fd53a18c71b293c1324d1f4e4ee8739577c2a --- abi/TelepathyValidator.json | 368 ++++++++++++++++-- examples/pubsub/counter/CounterSubscriber.sol | 7 +- examples/pubsub/gnosis/TelepathyValidator.sol | 173 ++++++-- .../pubsub/gnosis/TelepathyValidator.t.sol | 106 ++++- src/pubsub/TelepathyPublisher.sol | 27 +- .../interfaces/ISubscriptionReceiver.sol | 3 +- .../interfaces/SubscriptionReceiver.sol | 18 +- .../SubscriptionReceiverUpgradeable.sol | 49 +++ 8 files changed, 637 insertions(+), 114 deletions(-) create mode 100644 src/pubsub/interfaces/SubscriptionReceiverUpgradeable.sol diff --git a/abi/TelepathyValidator.json b/abi/TelepathyValidator.json index 9233bd3..3200452 100644 --- a/abi/TelepathyValidator.json +++ b/abi/TelepathyValidator.json @@ -3,42 +3,33 @@ "inputs": [ { "internalType": "address", - "name": "_telepathyPubSub", + "name": "recipient", "type": "address" }, { - "internalType": "uint32", - "name": "_sourceChainId", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_sourceAddress", - "type": "address" - }, - { - "internalType": "uint64", - "name": "_startSlot", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "_endSlot", - "type": "uint64" - }, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "AffirmationNotNew", + "type": "error" + }, + { + "inputs": [ { "internalType": "address", - "name": "_homeAMB", + "name": "recipient", "type": "address" }, { - "internalType": "address", - "name": "_owner", - "type": "address" + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], - "stateMutability": "nonpayable", - "type": "constructor" + "name": "AffirmationNotPending", + "type": "error" }, { "inputs": [ @@ -98,6 +89,12 @@ { "anonymous": false, "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "publishKey", + "type": "bytes32" + }, { "indexed": true, "internalType": "bytes32", @@ -107,17 +104,49 @@ { "indexed": false, "internalType": "bytes", - "name": "header", + "name": "eventData", "type": "bytes" + } + ], + "name": "AMBAffirmationHandled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "publishKey", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" }, { "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "BridgeAffirmationHandled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" } ], - "name": "AffirmationHandled", + "name": "Initialized", "type": "event" }, { @@ -139,6 +168,217 @@ "name": "OwnershipTransferred", "type": "event" }, + { + "inputs": [], + "name": "AMB_AFFIRMATION_EVENT_SIG", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "AMB_AFFIRMATION_SOURCE_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BRIDGE_AFFIRMATION_EVENT_SIG", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BRIDGE_AFFIRMATION_SOURCE_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "END_SLOT", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "HOME_AMB", + "outputs": [ + { + "internalType": "contract IBasicHomeAMB", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "HOME_BRIDGE", + "outputs": [ + { + "internalType": "contract IBasicHomeBridge", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SOURCE_CHAIN_ID", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "START_SLOT", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_telepathyPubSub", + "type": "address" + } + ], + "name": "__SubscriptionReceiver_init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "ambAffirmationSubscriptionId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "bridgeAffirmationStatuses", + "outputs": [ + { + "internalType": "enum TelepathyValidator.ExecutionStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bridgeAffirmationSubscriptionId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_transactionHash", + "type": "bytes32" + } + ], + "name": "executeAffirmationForBridge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executeAffirmationsEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -161,6 +401,11 @@ "name": "_slot", "type": "uint64" }, + { + "internalType": "bytes32", + "name": "_publishKey", + "type": "bytes32" + }, { "internalType": "bytes32[]", "name": "_eventTopics", @@ -168,7 +413,7 @@ }, { "internalType": "bytes", - "name": "_eventdata", + "name": "_eventData", "type": "bytes" } ], @@ -183,6 +428,59 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_telepathyPubSub", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_sourceChainId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_ambAffirmationSourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_bridgeAffirmationSourceAddress", + "type": "address" + }, + { + "internalType": "uint64", + "name": "_startSlot", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "_endSlot", + "type": "uint64" + }, + { + "internalType": "address", + "name": "_homeAMB", + "type": "address" + }, + { + "internalType": "address", + "name": "_homeBridge", + "type": "address" + }, + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "owner", @@ -205,7 +503,7 @@ }, { "inputs": [], - "name": "subscribeToAffirmationEvent", + "name": "subscribeToAMBAffirmationEvent", "outputs": [ { "internalType": "bytes32", @@ -218,7 +516,7 @@ }, { "inputs": [], - "name": "subscriptionId", + "name": "subscribeToBridgeAffirmationEvent", "outputs": [ { "internalType": "bytes32", @@ -226,7 +524,7 @@ "type": "bytes32" } ], - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { diff --git a/examples/pubsub/counter/CounterSubscriber.sol b/examples/pubsub/counter/CounterSubscriber.sol index ad302f9..2c1efcf 100644 --- a/examples/pubsub/counter/CounterSubscriber.sol +++ b/examples/pubsub/counter/CounterSubscriber.sol @@ -89,8 +89,9 @@ contract CounterSubscriber is SubscriptionReceiver { uint32 _sourceChainId, address _sourceAddress, uint64 _slot, + bytes32, bytes32[] memory eventTopics, - bytes memory eventdata + bytes memory eventData ) internal override { if (_sourceChainId != EVENT_SOURCE_CHAIN_ID) { revert InvalidSourceChain(_sourceChainId); @@ -114,9 +115,9 @@ contract CounterSubscriber is SubscriptionReceiver { bytes32 eventSig = eventTopics[0]; uint256 count = uint256(eventTopics[1]); if (eventSig == INCREMENT_EVENT_SIG) { - emit CrossChainIncremented(count, abi.decode(eventdata, (address))); + emit CrossChainIncremented(count, abi.decode(eventData, (address))); } else if (eventSig == DECREMENT_EVENT_SIG) { - emit CrossChainDecremented(count, abi.decode(eventdata, (address))); + emit CrossChainDecremented(count, abi.decode(eventData, (address))); } } } diff --git a/examples/pubsub/gnosis/TelepathyValidator.sol b/examples/pubsub/gnosis/TelepathyValidator.sol index 3ffdac1..fbd0de0 100644 --- a/examples/pubsub/gnosis/TelepathyValidator.sol +++ b/examples/pubsub/gnosis/TelepathyValidator.sol @@ -1,48 +1,86 @@ pragma solidity ^0.8.16; import {TelepathyPubSub} from "src/pubsub/TelepathyPubSub.sol"; -import {SubscriptionReceiver} from "src/pubsub/interfaces/SubscriptionReceiver.sol"; -import {Ownable} from "openzeppelin-contracts/access/Ownable.sol"; +import {SubscriptionReceiverUpgradeable} from + "src/pubsub/interfaces/SubscriptionReceiverUpgradeable.sol"; +import {Initializable} from "openzeppelin-contracts-upgradeable/proxy/utils/Initializable.sol"; +import {OwnableUpgradeable} from "openzeppelin-contracts-upgradeable/access/OwnableUpgradeable.sol"; /// @title TelepathyValidator /// @author Succinct Labs /// @notice A validator for the ETH (Foreign) -> Gnosis (Home) bridge that relies on the Telepathy Protocol -/// for proof of consensus in verifying the UserRequestForAffirmation event was emitted on Ethereum. -contract TelepathyValidator is SubscriptionReceiver, Ownable { - event AffirmationHandled(bytes32 indexed messageId, bytes header, bytes data); +/// for proof of consensus in verifying the UserRequestForAffirmation events was emitted on Ethereum. +/// @dev "AMB" refers to the contract for general message passing, where as "Bridge" refers to token transfers. +contract TelepathyValidator is SubscriptionReceiverUpgradeable, OwnableUpgradeable { + /// @dev Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData) + /// where the encodedData is the ABI encoded message from the Foreign AMB. + /// Source: https://github.com/omni/tokenbridge-contracts/blob/908a48107919d4ab127f9af07d44d47eac91547e/contracts/upgradeable_contracts/arbitrary_message/ForeignAMB.sol#L6 + bytes32 public constant AMB_AFFIRMATION_EVENT_SIG = + keccak256("UserRequestForAffirmation(bytes32,bytes)"); + + /// @dev Listen for event UserRequestForAffirmation(address recipient, uint256 value) + /// from the ERC20-to-Native bridge contract. + /// Source: https://github.com/omni/tokenbridge-contracts/blob/908a48107919d4ab127f9af07d44d47eac91547e/contracts/upgradeable_contracts/erc20_to_native/ForeignBridgeErcToNative.sol#LL74C12-L74C12 + bytes32 public constant BRIDGE_AFFIRMATION_EVENT_SIG = + keccak256("UserRequestForAffirmation(address,uint256)"); + + enum ExecutionStatus { + NONE, + PENDING, + EXECUTED + } + + // The below variables are only settable at initalization time. + address public AMB_AFFIRMATION_SOURCE_ADDRESS; + address public BRIDGE_AFFIRMATION_SOURCE_ADDRESS; + uint32 public SOURCE_CHAIN_ID; + uint64 public START_SLOT; + uint64 public END_SLOT; + IBasicHomeAMB public HOME_AMB; + IBasicHomeBridge public HOME_BRIDGE; + + bytes32 public ambAffirmationSubscriptionId; + bytes32 public bridgeAffirmationSubscriptionId; + bool public executeAffirmationsEnabled; + /// @dev Because Bridge affirmations require the 'transactionHash' field and that is not known + /// from PubSub, we need to put the affirmations in a pending state first and then execute + /// a second call with the transactionHash. + mapping(bytes32 => ExecutionStatus) public bridgeAffirmationStatuses; + + event AMBAffirmationHandled( + bytes32 indexed publishKey, bytes32 indexed messageId, bytes eventData + ); + event BridgeAffirmationHandled( + bytes32 indexed publishKey, address indexed recipient, uint256 value + ); error InvalidSourceChain(uint32 sourceChainId); error InvalidSourceAddress(address sourceAddress); error InvalidSlot(uint64 slot); error InvalidSubscriptionId(bytes32 subscriptionId); + error AffirmationNotNew(address recipient, uint256 value); + error AffirmationNotPending(address recipient, uint256 value); - /// @dev Listen for event UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData) - /// where the encodedData is the ABI encoded message from the Foreign AMB. - bytes32 constant AFFIRMATION_EVENT_SIG = keccak256("UserRequestForAffirmation(bytes32,bytes)"); - - uint32 immutable EVENT_SOURCE_CHAIN_ID; - address immutable EVENT_SOURCE_ADDRESS; - uint64 immutable START_SLOT; - uint64 immutable END_SLOT; - IBasicHomeAMB immutable HOME_AMB; - - bytes32 public subscriptionId; - bool executeAffirmationsEnabled; - - constructor( + function initialize( address _telepathyPubSub, uint32 _sourceChainId, - address _sourceAddress, + address _ambAffirmationSourceAddress, + address _bridgeAffirmationSourceAddress, uint64 _startSlot, uint64 _endSlot, address _homeAMB, + address _homeBridge, address _owner - ) SubscriptionReceiver(_telepathyPubSub) { - EVENT_SOURCE_CHAIN_ID = _sourceChainId; - EVENT_SOURCE_ADDRESS = _sourceAddress; + ) external initializer { + __SubscriptionReceiver_init(_telepathyPubSub); + __Ownable_init(); + SOURCE_CHAIN_ID = _sourceChainId; + AMB_AFFIRMATION_SOURCE_ADDRESS = _ambAffirmationSourceAddress; + BRIDGE_AFFIRMATION_SOURCE_ADDRESS = _bridgeAffirmationSourceAddress; START_SLOT = _startSlot; END_SLOT = _endSlot; HOME_AMB = IBasicHomeAMB(_homeAMB); + HOME_BRIDGE = IBasicHomeBridge(_homeBridge); transferOwnership(_owner); } @@ -50,54 +88,107 @@ contract TelepathyValidator is SubscriptionReceiver, Ownable { executeAffirmationsEnabled = !executeAffirmationsEnabled; } - function subscribeToAffirmationEvent() external onlyOwner returns (bytes32) { - subscriptionId = telepathyPubSub.subscribe( - EVENT_SOURCE_CHAIN_ID, - EVENT_SOURCE_ADDRESS, + function subscribeToAMBAffirmationEvent() external onlyOwner returns (bytes32) { + ambAffirmationSubscriptionId = telepathyPubSub.subscribe( + SOURCE_CHAIN_ID, + AMB_AFFIRMATION_SOURCE_ADDRESS, address(this), - AFFIRMATION_EVENT_SIG, + AMB_AFFIRMATION_EVENT_SIG, START_SLOT, END_SLOT ); - return subscriptionId; + return ambAffirmationSubscriptionId; } - /// @notice Handle the published affirmation event by executing the affirmation in the Home AMB. - /// @dev We decode 'abi.encodePacked(header, _data)' to extract just the encoded message '_data' from the event. + function subscribeToBridgeAffirmationEvent() external onlyOwner returns (bytes32) { + bridgeAffirmationSubscriptionId = telepathyPubSub.subscribe( + SOURCE_CHAIN_ID, + BRIDGE_AFFIRMATION_SOURCE_ADDRESS, + address(this), + BRIDGE_AFFIRMATION_EVENT_SIG, + START_SLOT, + END_SLOT + ); + return bridgeAffirmationSubscriptionId; + } + + /// @notice Handle the published AMBAffirmation or BridgeAffirmation event by executing the + /// affirmation in the HomeAMB or HomeBridge. function handlePublishImpl( bytes32 _subscriptionId, uint32 _sourceChainId, address _sourceAddress, uint64 _slot, - bytes32[] memory eventTopics, - bytes memory eventdata + bytes32 _publishKey, + bytes32[] memory _eventTopics, + bytes memory _eventData ) internal override { - if (_sourceChainId != EVENT_SOURCE_CHAIN_ID) { + if (_sourceChainId != SOURCE_CHAIN_ID) { revert InvalidSourceChain(_sourceChainId); } - if (_sourceAddress != EVENT_SOURCE_ADDRESS) { + if ( + _sourceAddress != AMB_AFFIRMATION_SOURCE_ADDRESS + && _sourceAddress != BRIDGE_AFFIRMATION_SOURCE_ADDRESS + ) { revert InvalidSourceAddress(_sourceAddress); } + if ( + _subscriptionId != ambAffirmationSubscriptionId + && _subscriptionId != bridgeAffirmationSubscriptionId + ) { + revert InvalidSubscriptionId(_subscriptionId); + } + if (_slot < START_SLOT || (END_SLOT != 0 && _slot > END_SLOT)) { revert InvalidSlot(_slot); } - if (_subscriptionId != subscriptionId) { - revert InvalidSubscriptionId(_subscriptionId); + bytes32 eventSig = _eventTopics[0]; + if (eventSig == AMB_AFFIRMATION_EVENT_SIG) { + bytes32 messageId = _eventTopics[1]; + + if (executeAffirmationsEnabled) { + HOME_AMB.executeAffirmation(_eventData); + } + + emit AMBAffirmationHandled(_publishKey, messageId, _eventData); + } else if (eventSig == BRIDGE_AFFIRMATION_EVENT_SIG) { + (address recipient, uint256 value) = abi.decode(_eventData, (address, uint256)); + + bytes32 affirmationKey = keccak256(abi.encode(recipient, value)); + if (bridgeAffirmationStatuses[affirmationKey] != ExecutionStatus.NONE) { + revert AffirmationNotNew(recipient, value); + } + bridgeAffirmationStatuses[affirmationKey] = ExecutionStatus.PENDING; + + emit BridgeAffirmationHandled(_publishKey, recipient, value); } + } - (bytes memory header, bytes memory data) = abi.decode(eventdata, (bytes, bytes)); + function executeAffirmationForBridge( + address _recipient, + uint256 _value, + bytes32 _transactionHash + ) public onlyOwner { + bytes32 affirmationKey = keccak256(abi.encode(_recipient, _value)); + if (bridgeAffirmationStatuses[affirmationKey] != ExecutionStatus.PENDING) { + revert AffirmationNotPending(_recipient, _value); + } + bridgeAffirmationStatuses[affirmationKey] = ExecutionStatus.EXECUTED; if (executeAffirmationsEnabled) { - HOME_AMB.executeAffirmation(data); + HOME_BRIDGE.executeAffirmation(_recipient, _value, _transactionHash); } - - emit AffirmationHandled(eventTopics[1], header, data); } } interface IBasicHomeAMB { function executeAffirmation(bytes calldata message) external; } + +interface IBasicHomeBridge { + function executeAffirmation(address recipient, uint256 value, bytes32 transactionHash) + external; +} diff --git a/examples/pubsub/gnosis/TelepathyValidator.t.sol b/examples/pubsub/gnosis/TelepathyValidator.t.sol index 0f2c946..f4aff6f 100644 --- a/examples/pubsub/gnosis/TelepathyValidator.t.sol +++ b/examples/pubsub/gnosis/TelepathyValidator.t.sol @@ -7,13 +7,21 @@ import {TelepathyPubSub} from "src/pubsub/TelepathyPubSub.sol"; import {Subscription} from "src/pubsub/interfaces/IPubSub.sol"; import {TelepathyHandler} from "src/amb/interfaces/TelepathyHandler.sol"; import {TelepathyValidator} from "examples/pubsub/gnosis/TelepathyValidator.sol"; +import {UUPSProxy} from "src/libraries/Proxy.sol"; interface IForeignAMB {} +interface IForeignBridge {} + interface IBasicHomeAMB { function executeAffirmation(bytes calldata message) external; } +interface IBasicHomeBridge { + function executeAffirmation(address recipient, uint256 value, bytes32 transactionHash) + external; +} + contract TelepathyValidatorTest is Test { event Subscribe( bytes32 indexed subscriptionId, @@ -25,52 +33,136 @@ contract TelepathyValidatorTest is Test { MockTelepathy mockTelepathy; TelepathyPubSub telepathyPubSub; IBasicHomeAMB basicHomeAMB; + IBasicHomeBridge basicHomeBridge; IForeignAMB foreignAMB; + IForeignBridge foreignBridge; TelepathyValidator telepathyValidator; address owner = makeAddr("owner"); uint32 DESTINATION_CHAIN = 100; uint32 SOURCE_CHAIN = 1; - bytes32 EVENT_SIG = keccak256("UserRequestForAffirmation(bytes32,bytes)"); + bytes32 public constant AMB_AFFIRMATION_EVENT_SIG = + keccak256("UserRequestForAffirmation(bytes32,bytes)"); + + /// @dev Listen for event Bridge(address indexed from, address indexed to, uint256 value) + /// from the token contract in the ERC20-to-Native bridge. + /// Source: https://github.com/omni/tokenbridge-contracts/blob/908a48107919d4ab127f9af07d44d47eac91547e/contracts/upgradeable_contracts/erc20_to_native/ForeignBridgeErcToNative.sol#LL74C12-L74C12 + bytes32 public constant BRIDGE_AFFIRMATION_EVENT_SIG = + keccak256("UserRequestForAffirmation(address,uint256)"); function setUp() public { mockTelepathy = new MockTelepathy(DESTINATION_CHAIN); telepathyPubSub = new TelepathyPubSub(address(mockTelepathy)); basicHomeAMB = IBasicHomeAMB(makeAddr("BasicHomeAMB")); + basicHomeBridge = IBasicHomeBridge(makeAddr("BasicHomeBridge")); foreignAMB = IForeignAMB(makeAddr("ForeignAMB")); + foreignBridge = IForeignBridge(makeAddr("ForeignBridge")); + + TelepathyValidator implementation = new TelepathyValidator(); + UUPSProxy proxy = new UUPSProxy(address(implementation), ""); - telepathyValidator = new TelepathyValidator( + telepathyValidator = TelepathyValidator(address(proxy)); + telepathyValidator.initialize( address(telepathyPubSub), SOURCE_CHAIN, address(foreignAMB), + address(foreignBridge), 0, 0, address(basicHomeAMB), + address(basicHomeBridge), owner ); } - function test_SubscribeToAffirmationEvent() public { + function test_SubscribeToAMBAffirmationEvent() public { vm.expectEmit(true, true, true, true); emit Subscribe( keccak256( abi.encode( Subscription( - SOURCE_CHAIN, address(foreignAMB), address(telepathyValidator), EVENT_SIG + SOURCE_CHAIN, + address(foreignAMB), + address(telepathyValidator), + telepathyValidator.AMB_AFFIRMATION_EVENT_SIG() ) ) ), uint64(0), uint64(0), - Subscription(SOURCE_CHAIN, address(foreignAMB), address(telepathyValidator), EVENT_SIG) + Subscription( + SOURCE_CHAIN, + address(foreignAMB), + address(telepathyValidator), + telepathyValidator.AMB_AFFIRMATION_EVENT_SIG() + ) ); vm.prank(owner); - telepathyValidator.subscribeToAffirmationEvent(); + telepathyValidator.subscribeToAMBAffirmationEvent(); + + assertEq( + telepathyValidator.ambAffirmationSubscriptionId(), + keccak256( + abi.encode( + Subscription( + SOURCE_CHAIN, + address(foreignAMB), + address(telepathyValidator), + telepathyValidator.AMB_AFFIRMATION_EVENT_SIG() + ) + ) + ) + ); } - function test_toggleExecuteAffirmations() public { + function test_SubscribeToBridgeAffirmationEvent() public { + vm.expectEmit(true, true, true, true); + emit Subscribe( + keccak256( + abi.encode( + Subscription( + SOURCE_CHAIN, + address(foreignBridge), + address(telepathyValidator), + telepathyValidator.BRIDGE_AFFIRMATION_EVENT_SIG() + ) + ) + ), + uint64(0), + uint64(0), + Subscription( + SOURCE_CHAIN, + address(foreignBridge), + address(telepathyValidator), + telepathyValidator.BRIDGE_AFFIRMATION_EVENT_SIG() + ) + ); + vm.prank(owner); + telepathyValidator.subscribeToBridgeAffirmationEvent(); + + assertEq( + telepathyValidator.bridgeAffirmationSubscriptionId(), + keccak256( + abi.encode( + Subscription( + SOURCE_CHAIN, + address(foreignBridge), + address(telepathyValidator), + telepathyValidator.BRIDGE_AFFIRMATION_EVENT_SIG() + ) + ) + ) + ); + } + + function test_ToggleExecuteAffirmations() public { + assertEq(telepathyValidator.executeAffirmationsEnabled(), false); + vm.prank(owner); + telepathyValidator.toggleExecuteAffirmations(); + assertEq(telepathyValidator.executeAffirmationsEnabled(), true); vm.prank(owner); telepathyValidator.toggleExecuteAffirmations(); + assertEq(telepathyValidator.executeAffirmationsEnabled(), false); } } diff --git a/src/pubsub/TelepathyPublisher.sol b/src/pubsub/TelepathyPublisher.sol index e8410d1..7f4dc6b 100644 --- a/src/pubsub/TelepathyPublisher.sol +++ b/src/pubsub/TelepathyPublisher.sol @@ -35,16 +35,15 @@ contract TelepathyPublisher is IPublisher, PubSubStorage { requireLightClientConsistency(subscription.sourceChainId); requireNotFrozen(subscription.sourceChainId); + (uint64 srcSlot, uint64 txSlot) = abi.decode(srcSlotTxSlotPack, (uint64, uint64)); // Ensure the event emit may only be published to a subscriber once bytes32 subscriptionId = keccak256(abi.encode(subscription)); bytes32 publishKey = - keccak256(abi.encode(srcSlotTxSlotPack, txIndexRLPEncoded, logIndex, subscriptionId)); + keccak256(abi.encode(txSlot, txIndexRLPEncoded, logIndex, subscriptionId)); require( eventsPublished[publishKey] == PublishStatus.NOT_EXECUTED, "Event already published" ); - (uint64 srcSlot, uint64 txSlot) = abi.decode(srcSlotTxSlotPack, (uint64, uint64)); - requireLightClientDelay(srcSlot, subscription.sourceChainId); bytes32 headerRoot = telepathyRouter.lightClients(subscription.sourceChainId).headers(srcSlot); require(headerRoot != bytes32(0), "HeaderRoot is missing"); @@ -62,7 +61,7 @@ contract TelepathyPublisher is IPublisher, PubSubStorage { subscription.eventSig ); - _publish(subscriptionId, subscription, publishKey, txSlot, eventTopics, eventData); + _publish(subscriptionId, subscription, txSlot, publishKey, eventTopics, eventData); } /// @notice Checks that the light client for a given chainId is consistent. @@ -78,29 +77,12 @@ contract TelepathyPublisher is IPublisher, PubSubStorage { require(!telepathyRouter.frozen(chainId), "Contract is frozen."); } - /// @notice Checks that the light client delay is adequate. - function requireLightClientDelay(uint64 slot, uint32 chainId) internal view { - require( - address(telepathyRouter.lightClients(chainId)) != address(0), "Light client is not set." - ); - require( - telepathyRouter.lightClients(chainId).timestamps(slot) != 0, - "Timestamp is not set for slot." - ); - uint256 elapsedTime = - block.timestamp - telepathyRouter.lightClients(chainId).timestamps(slot); - require( - elapsedTime >= telepathyRouter.MIN_LIGHT_CLIENT_DELAY(), - "Must wait longer to use this slot." - ); - } - /// @notice Executes the callback function on the subscriber, and marks the event publish as successful or failed. function _publish( bytes32 _subscriptionId, Subscription calldata _subscription, - bytes32 _publishKey, uint64 _txSlot, + bytes32 _publishKey, bytes32[] memory _eventTopics, bytes memory _eventData ) internal { @@ -113,6 +95,7 @@ contract TelepathyPublisher is IPublisher, PubSubStorage { _subscription.sourceChainId, _subscription.sourceAddress, _txSlot, + _publishKey, _eventTopics, _eventData ); diff --git a/src/pubsub/interfaces/ISubscriptionReceiver.sol b/src/pubsub/interfaces/ISubscriptionReceiver.sol index 812c164..0ad2979 100644 --- a/src/pubsub/interfaces/ISubscriptionReceiver.sol +++ b/src/pubsub/interfaces/ISubscriptionReceiver.sol @@ -6,7 +6,8 @@ interface ISubscriptionReceiver { uint32 sourceChainId, address sourceAddress, uint64 slot, + bytes32 publishKey, bytes32[] memory eventTopics, - bytes memory eventdata + bytes memory eventData ) external returns (bytes4); } diff --git a/src/pubsub/interfaces/SubscriptionReceiver.sol b/src/pubsub/interfaces/SubscriptionReceiver.sol index f1d3abf..aaa0615 100644 --- a/src/pubsub/interfaces/SubscriptionReceiver.sol +++ b/src/pubsub/interfaces/SubscriptionReceiver.sol @@ -4,10 +4,10 @@ import {TelepathyPubSub} from "src/pubsub/TelepathyPubSub.sol"; import {ISubscriptionReceiver} from "src/pubsub/interfaces/ISubscriptionReceiver.sol"; abstract contract SubscriptionReceiver is ISubscriptionReceiver { - error NotFromTelepathyPubSub(address sender); - TelepathyPubSub public telepathyPubSub; + error NotFromTelepathyPubSub(address sender); + constructor(address _telepathyPubSub) { telepathyPubSub = TelepathyPubSub(_telepathyPubSub); } @@ -17,14 +17,21 @@ abstract contract SubscriptionReceiver is ISubscriptionReceiver { uint32 _sourceChainId, address _sourceAddress, uint64 _slot, + bytes32 _publishKey, bytes32[] memory _eventTopics, - bytes memory _eventdata + bytes memory _eventData ) external override returns (bytes4) { if (msg.sender != address(telepathyPubSub)) { revert NotFromTelepathyPubSub(msg.sender); } handlePublishImpl( - _subscriptionId, _sourceChainId, _sourceAddress, _slot, _eventTopics, _eventdata + _subscriptionId, + _sourceChainId, + _sourceAddress, + _slot, + _publishKey, + _eventTopics, + _eventData ); return ISubscriptionReceiver.handlePublish.selector; } @@ -34,7 +41,8 @@ abstract contract SubscriptionReceiver is ISubscriptionReceiver { uint32 _sourceChainId, address _sourceAddress, uint64 _slot, + bytes32 _publishKey, bytes32[] memory _eventTopics, - bytes memory _eventdata + bytes memory _eventData ) internal virtual; } diff --git a/src/pubsub/interfaces/SubscriptionReceiverUpgradeable.sol b/src/pubsub/interfaces/SubscriptionReceiverUpgradeable.sol new file mode 100644 index 0000000..afa1fe8 --- /dev/null +++ b/src/pubsub/interfaces/SubscriptionReceiverUpgradeable.sol @@ -0,0 +1,49 @@ +pragma solidity ^0.8.16; + +import {TelepathyPubSub} from "src/pubsub/TelepathyPubSub.sol"; +import {ISubscriptionReceiver} from "src/pubsub/interfaces/ISubscriptionReceiver.sol"; +import {Initializable} from "openzeppelin-contracts-upgradeable/proxy/utils/Initializable.sol"; + +abstract contract SubscriptionReceiverUpgradeable is ISubscriptionReceiver, Initializable { + TelepathyPubSub public telepathyPubSub; + + error NotFromTelepathyPubSub(address sender); + + function __SubscriptionReceiver_init(address _telepathyPubSub) public onlyInitializing { + telepathyPubSub = TelepathyPubSub(_telepathyPubSub); + } + + function handlePublish( + bytes32 _subscriptionId, + uint32 _sourceChainId, + address _sourceAddress, + uint64 _slot, + bytes32 _publishKey, + bytes32[] memory _eventTopics, + bytes memory _eventData + ) external override returns (bytes4) { + if (msg.sender != address(telepathyPubSub)) { + revert NotFromTelepathyPubSub(msg.sender); + } + handlePublishImpl( + _subscriptionId, + _sourceChainId, + _sourceAddress, + _slot, + _publishKey, + _eventTopics, + _eventData + ); + return ISubscriptionReceiver.handlePublish.selector; + } + + function handlePublishImpl( + bytes32 _subscriptionId, + uint32 _sourceChainId, + address _sourceAddress, + uint64 _slot, + bytes32 _publishKey, + bytes32[] memory _eventTopics, + bytes memory _eventData + ) internal virtual; +} From 93fd733e36759c09d09ed64bffcd7b02cae0cc9f Mon Sep 17 00:00:00 2001 From: puma314 Date: Thu, 27 Apr 2023 17:26:18 -0700 Subject: [PATCH 16/18] Uma/core 276 simple relayer implementation (#322) GitOrigin-RevId: 9c0579333cc55de0f14d0fe4969e310321a4e95f --- .example.env => .env.example | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .example.env => .env.example (100%) diff --git a/.example.env b/.env.example similarity index 100% rename from .example.env rename to .env.example From 5b8eefe405a263448e1e6eac96a578f38942dad6 Mon Sep 17 00:00:00 2001 From: Matt Stam Date: Mon, 1 May 2023 13:43:31 -0700 Subject: [PATCH 17/18] strip executeAffirmation data with abi.decode (#371) GitOrigin-RevId: 2a910e16c632b96ee7fcb5ea0d464ea50b6cd0bb --- examples/pubsub/gnosis/TelepathyValidator.sol | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/pubsub/gnosis/TelepathyValidator.sol b/examples/pubsub/gnosis/TelepathyValidator.sol index fbd0de0..fd751ef 100644 --- a/examples/pubsub/gnosis/TelepathyValidator.sol +++ b/examples/pubsub/gnosis/TelepathyValidator.sol @@ -150,7 +150,10 @@ contract TelepathyValidator is SubscriptionReceiverUpgradeable, OwnableUpgradeab bytes32 messageId = _eventTopics[1]; if (executeAffirmationsEnabled) { - HOME_AMB.executeAffirmation(_eventData); + // abi.decode strips away the added offset+length prefix, which is added + // by Solidity for all dynamic types. + bytes memory eventData = abi.decode(_eventData, (bytes)); + HOME_AMB.executeAffirmation(eventData); } emit AMBAffirmationHandled(_publishKey, messageId, _eventData); From ff6106cb8b780267ac3e7b136d642ad881e1f84f Mon Sep 17 00:00:00 2001 From: Matt Stam Date: Mon, 1 May 2023 14:21:14 -0700 Subject: [PATCH 18/18] move gnosis + eigenlayer into external/integrations (#374) GitOrigin-RevId: 2f2f29b623be47ef4ada6958426e015bd8dfb6ad --- .../examples}/bridge/Bridge.sol | 0 .../examples}/bridge/Bridge.t.sol | 0 .../examples}/bridge/Tokens.sol | 0 .../examples}/bridge/Tokens.t.sol | 0 .../examples}/counter/Counter.sol | 0 external/examples/drills/DrillLightClient.sol | 20 +++++++++++ .../examples/drills/DrillTelepathyRouter.sol | 33 +++++++++++++++++++ .../example-counter/ExampleCounter.sol | 0 .../example-counter/ExampleCounter.t.sol | 0 .../examples}/oracle/NFTAirdrop.sol | 0 .../examples}/oracle/NFTAirdrop.t.sol | 0 .../pubsub/counter/CounterSubscriber.sol | 0 .../examples}/uniswap/UniswapExample.sol | 0 .../examples}/uniswap/UniswapExample.t.sol | 0 .../eigenlayer/EigenLayerBeaconOracle.sol | 4 +-- .../EigenLayerBeaconOracleProxy.sol | 2 +- .../EigenLayerBeaconOracleStorage.sol | 0 .../eigenlayer/ILightClientUpdater.sol | 0 .../gnosis/TelepathyValidator.sol | 0 .../gnosis/TelepathyValidator.t.sol | 0 foundry.toml | 25 +++++++++----- .../EigenLayerBeaconOracleTest.t.sol | 4 +-- 22 files changed, 75 insertions(+), 13 deletions(-) rename {examples => external/examples}/bridge/Bridge.sol (100%) rename {examples => external/examples}/bridge/Bridge.t.sol (100%) rename {examples => external/examples}/bridge/Tokens.sol (100%) rename {examples => external/examples}/bridge/Tokens.t.sol (100%) rename {examples => external/examples}/counter/Counter.sol (100%) create mode 100644 external/examples/drills/DrillLightClient.sol create mode 100644 external/examples/drills/DrillTelepathyRouter.sol rename {examples => external/examples}/example-counter/ExampleCounter.sol (100%) rename {examples => external/examples}/example-counter/ExampleCounter.t.sol (100%) rename {examples => external/examples}/oracle/NFTAirdrop.sol (100%) rename {examples => external/examples}/oracle/NFTAirdrop.t.sol (100%) rename {examples => external/examples}/pubsub/counter/CounterSubscriber.sol (100%) rename {examples => external/examples}/uniswap/UniswapExample.sol (100%) rename {examples => external/examples}/uniswap/UniswapExample.t.sol (100%) rename {src => external}/integrations/eigenlayer/EigenLayerBeaconOracle.sol (94%) rename {src => external}/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol (96%) rename {src => external}/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol (100%) rename {src => external}/integrations/eigenlayer/ILightClientUpdater.sol (100%) rename {examples/pubsub => external/integrations}/gnosis/TelepathyValidator.sol (100%) rename {examples/pubsub => external/integrations}/gnosis/TelepathyValidator.t.sol (100%) diff --git a/examples/bridge/Bridge.sol b/external/examples/bridge/Bridge.sol similarity index 100% rename from examples/bridge/Bridge.sol rename to external/examples/bridge/Bridge.sol diff --git a/examples/bridge/Bridge.t.sol b/external/examples/bridge/Bridge.t.sol similarity index 100% rename from examples/bridge/Bridge.t.sol rename to external/examples/bridge/Bridge.t.sol diff --git a/examples/bridge/Tokens.sol b/external/examples/bridge/Tokens.sol similarity index 100% rename from examples/bridge/Tokens.sol rename to external/examples/bridge/Tokens.sol diff --git a/examples/bridge/Tokens.t.sol b/external/examples/bridge/Tokens.t.sol similarity index 100% rename from examples/bridge/Tokens.t.sol rename to external/examples/bridge/Tokens.t.sol diff --git a/examples/counter/Counter.sol b/external/examples/counter/Counter.sol similarity index 100% rename from examples/counter/Counter.sol rename to external/examples/counter/Counter.sol diff --git a/external/examples/drills/DrillLightClient.sol b/external/examples/drills/DrillLightClient.sol new file mode 100644 index 0000000..511e9d8 --- /dev/null +++ b/external/examples/drills/DrillLightClient.sol @@ -0,0 +1,20 @@ +pragma solidity 0.8.16; + +import {LightClient} from "src/lightclient/LightClient.sol"; +import {Ownable} from "openzeppelin-contracts/access/Ownable.sol"; + +/// @title DrillLightClient +/// @dev This contract is used solely for testing purposes and should not be used by production contracts. +contract DrillLightClient is LightClient, Ownable { + constructor(address emitter) LightClient(0, 0, 0, 0, 0, 0, 0, 0) Ownable() { + transferOwnership(emitter); + } + + function emitFakeHeadUpdateEvent(uint256 _slot, bytes32 _root) external onlyOwner { + emit HeadUpdate(_slot, _root); + } + + function emitFakeSyncCommitteeUpdateEvent(uint256 _period, bytes32 _root) external onlyOwner { + emit SyncCommitteeUpdate(_period, _root); + } +} diff --git a/external/examples/drills/DrillTelepathyRouter.sol b/external/examples/drills/DrillTelepathyRouter.sol new file mode 100644 index 0000000..0635b37 --- /dev/null +++ b/external/examples/drills/DrillTelepathyRouter.sol @@ -0,0 +1,33 @@ +pragma solidity 0.8.16; + +import {TargetAMB} from "src/amb/TargetAMB.sol"; +import {TelepathyStorage} from "src/amb/TelepathyStorage.sol"; +import {TelepathyAccess} from "src/amb/TelepathyAccess.sol"; +import {Ownable} from "openzeppelin-contracts/access/Ownable.sol"; + +/// @title DrillTelepathy +/// @dev This contract is used solely for testing purposes and should not be used by production contracts. +contract DrillTelepathyRouter is TelepathyStorage, TargetAMB { + address guardian; + address emitter; + + constructor(address _guardian, address _emitter) { + guardian = _guardian; + emitter = _emitter; + } + + function freezeAll() external view { + require(msg.sender == guardian); + } + + function emitFakeExecutedMessageEvent( + uint16 _chainId, + uint64 _nonce, + bytes32 _msgHash, + bytes memory _message, + bool _status + ) external { + require(msg.sender == emitter); + emit ExecutedMessage(_chainId, _nonce, _msgHash, _message, _status); + } +} diff --git a/examples/example-counter/ExampleCounter.sol b/external/examples/example-counter/ExampleCounter.sol similarity index 100% rename from examples/example-counter/ExampleCounter.sol rename to external/examples/example-counter/ExampleCounter.sol diff --git a/examples/example-counter/ExampleCounter.t.sol b/external/examples/example-counter/ExampleCounter.t.sol similarity index 100% rename from examples/example-counter/ExampleCounter.t.sol rename to external/examples/example-counter/ExampleCounter.t.sol diff --git a/examples/oracle/NFTAirdrop.sol b/external/examples/oracle/NFTAirdrop.sol similarity index 100% rename from examples/oracle/NFTAirdrop.sol rename to external/examples/oracle/NFTAirdrop.sol diff --git a/examples/oracle/NFTAirdrop.t.sol b/external/examples/oracle/NFTAirdrop.t.sol similarity index 100% rename from examples/oracle/NFTAirdrop.t.sol rename to external/examples/oracle/NFTAirdrop.t.sol diff --git a/examples/pubsub/counter/CounterSubscriber.sol b/external/examples/pubsub/counter/CounterSubscriber.sol similarity index 100% rename from examples/pubsub/counter/CounterSubscriber.sol rename to external/examples/pubsub/counter/CounterSubscriber.sol diff --git a/examples/uniswap/UniswapExample.sol b/external/examples/uniswap/UniswapExample.sol similarity index 100% rename from examples/uniswap/UniswapExample.sol rename to external/examples/uniswap/UniswapExample.sol diff --git a/examples/uniswap/UniswapExample.t.sol b/external/examples/uniswap/UniswapExample.t.sol similarity index 100% rename from examples/uniswap/UniswapExample.t.sol rename to external/examples/uniswap/UniswapExample.t.sol diff --git a/src/integrations/eigenlayer/EigenLayerBeaconOracle.sol b/external/integrations/eigenlayer/EigenLayerBeaconOracle.sol similarity index 94% rename from src/integrations/eigenlayer/EigenLayerBeaconOracle.sol rename to external/integrations/eigenlayer/EigenLayerBeaconOracle.sol index 5a71941..b4021d5 100644 --- a/src/integrations/eigenlayer/EigenLayerBeaconOracle.sol +++ b/external/integrations/eigenlayer/EigenLayerBeaconOracle.sol @@ -2,9 +2,9 @@ pragma solidity 0.8.16; import {ILightClient} from "src/lightclient/interfaces/ILightClient.sol"; import {SSZ} from "src/libraries/SimpleSerialize.sol"; -import {ILightClientUpdater} from "src/integrations/eigenlayer/ILightClientUpdater.sol"; +import {ILightClientUpdater} from "external/integrations/eigenlayer/ILightClientUpdater.sol"; import {EigenLayerBeaconOracleStorage} from - "src/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol"; + "external/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol"; import {ReentrancyGuardUpgradeable} from "openzeppelin-contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; diff --git a/src/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol b/external/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol similarity index 96% rename from src/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol rename to external/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol index d73f4dc..8db0843 100644 --- a/src/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol +++ b/external/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol @@ -7,7 +7,7 @@ import {AccessControlUpgradeable} from import {ILightClient} from "src/lightclient/interfaces/ILightClient.sol"; -import {EigenLayerBeaconOracle} from "src/integrations/eigenlayer/EigenLayerBeaconOracle.sol"; +import {EigenLayerBeaconOracle} from "external/integrations/eigenlayer/EigenLayerBeaconOracle.sol"; /// @title EigenLayer Beacon Oracle Proxy /// @author Succinct Labs diff --git a/src/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol b/external/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol similarity index 100% rename from src/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol rename to external/integrations/eigenlayer/EigenLayerBeaconOracleStorage.sol diff --git a/src/integrations/eigenlayer/ILightClientUpdater.sol b/external/integrations/eigenlayer/ILightClientUpdater.sol similarity index 100% rename from src/integrations/eigenlayer/ILightClientUpdater.sol rename to external/integrations/eigenlayer/ILightClientUpdater.sol diff --git a/examples/pubsub/gnosis/TelepathyValidator.sol b/external/integrations/gnosis/TelepathyValidator.sol similarity index 100% rename from examples/pubsub/gnosis/TelepathyValidator.sol rename to external/integrations/gnosis/TelepathyValidator.sol diff --git a/examples/pubsub/gnosis/TelepathyValidator.t.sol b/external/integrations/gnosis/TelepathyValidator.t.sol similarity index 100% rename from examples/pubsub/gnosis/TelepathyValidator.t.sol rename to external/integrations/gnosis/TelepathyValidator.t.sol diff --git a/foundry.toml b/foundry.toml index c7f5e68..50f77fa 100644 --- a/foundry.toml +++ b/foundry.toml @@ -1,18 +1,18 @@ [profile.default] -src = 'examples' +src = 'src' out = 'out' libs = ['lib'] solc_version = "0.8.16" verbosity = 3 fs_permissions = [{ access = "read-write", path = "./"}] -# https://book.getfoundry.sh/reference/config/formatter#line_length -[fmt] -line_length = 100 -tab_width = 4 -func_attrs_with_params_multiline = true -ignore = ["lib/**"] -# See more config options https://github.com/foundry-rs/foundry/tree/master/config +[profile.external] +src = 'external' +out = 'out' +libs = ['lib'] +solc_version = "0.8.16" +verbosity = 3 +fs_permissions = [{ access = "read-write", path = "./"}] [profile.misc] src = 'misc' @@ -21,3 +21,12 @@ libs = ['lib'] solc_version = "0.8.16" verbosity = 3 fs_permissions = [{ access = "read-write", path = "./"}] + +# https://book.getfoundry.sh/reference/config/formatter#line_length +[fmt] +line_length = 100 +tab_width = 4 +func_attrs_with_params_multiline = true +ignore = ["lib/**"] + +# See more config options https://github.com/foundry-rs/foundry/tree/master/config \ No newline at end of file diff --git a/test/integrations/EigenLayerBeaconOracleTest.t.sol b/test/integrations/EigenLayerBeaconOracleTest.t.sol index 9bab1c4..2b81889 100644 --- a/test/integrations/EigenLayerBeaconOracleTest.t.sol +++ b/test/integrations/EigenLayerBeaconOracleTest.t.sol @@ -8,9 +8,9 @@ import {SSZ} from "src/libraries/SimpleSerialize.sol"; import {LightClient, LightClientStep, LightClientRotate} from "src/lightclient/LightClient.sol"; import {LightClientFixture} from "test/lightclient/LightClientFixture.sol"; import {Strings} from "openzeppelin-contracts/utils/Strings.sol"; -import {EigenLayerBeaconOracle} from "src/integrations/eigenlayer/EigenLayerBeaconOracle.sol"; +import {EigenLayerBeaconOracle} from "external/integrations/eigenlayer/EigenLayerBeaconOracle.sol"; import {EigenLayerBeaconOracleProxy} from - "src/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol"; + "external/integrations/eigenlayer/EigenLayerBeaconOracleProxy.sol"; import {UUPSProxy} from "src/libraries/Proxy.sol"; import {LightClientMock} from "src/lightclient/LightClientMock.sol";